{-# language OverloadedStrings #-}
{-# language RecordWildCards #-}

module FastDownward.SAS.Variable ( Variable(..), toSAS ) where

import Data.Sequence ( Seq )
import qualified Data.Sequence as Seq
import qualified Data.Text.Lazy
import qualified Data.Text.Lazy.Builder
import qualified Data.Text.Lazy.Builder.Int


data Variable =
  Variable
    { Variable -> Text
name :: Data.Text.Lazy.Text
    , Variable -> Seq Text
domain :: Seq Data.Text.Lazy.Text
    , Variable -> Int
axiomLayer :: Int
    }
  deriving
    ( Int -> Variable -> ShowS
[Variable] -> ShowS
Variable -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Variable] -> ShowS
$cshowList :: [Variable] -> ShowS
show :: Variable -> String
$cshow :: Variable -> String
showsPrec :: Int -> Variable -> ShowS
$cshowsPrec :: Int -> Variable -> ShowS
Show )


toSAS :: Variable -> Data.Text.Lazy.Builder.Builder
toSAS :: Variable -> Builder
toSAS Variable{Int
Seq Text
Text
axiomLayer :: Int
domain :: Seq Text
name :: Text
axiomLayer :: Variable -> Int
domain :: Variable -> Seq Text
name :: Variable -> Text
..} =
    Builder
"begin_variable\n"
  forall a. Semigroup a => a -> a -> a
<> Text -> Builder
Data.Text.Lazy.Builder.fromLazyText Text
name forall a. Semigroup a => a -> a -> a
<> Builder
"\n"
  forall a. Semigroup a => a -> a -> a
<> forall a. Integral a => a -> Builder
Data.Text.Lazy.Builder.Int.decimal Int
axiomLayer forall a. Semigroup a => a -> a -> a
<> Builder
"\n"
  forall a. Semigroup a => a -> a -> a
<> forall a. Integral a => a -> Builder
Data.Text.Lazy.Builder.Int.decimal ( forall a. Seq a -> Int
Seq.length Seq Text
domain ) forall a. Semigroup a => a -> a -> a
<> Builder
"\n"
  forall a. Semigroup a => a -> a -> a
<> forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap ( \Text
val -> Text -> Builder
Data.Text.Lazy.Builder.fromLazyText Text
val forall a. Semigroup a => a -> a -> a
<> Builder
"\n" ) Seq Text
domain
  forall a. Semigroup a => a -> a -> a
<> Builder
"end_variable"