module BishBosh.UI.ReportObject (
ReportObject(..),
range,
autoComplete
) where
import qualified BishBosh.Property.FixedMembership as Property.FixedMembership
import qualified BishBosh.Text.AutoComplete as Text.AutoComplete
import qualified Control.Arrow
import qualified Control.DeepSeq
import qualified Data.List.Extra
availableMovesTag :: String
availableMovesTag :: String
availableMovesTag = String
"availableMoves"
boardTag :: String
boardTag :: String
boardTag = String
"board"
epdTag :: String
epdTag :: String
epdTag = String
"epd"
fenTag :: String
fenTag :: String
fenTag = String
"fen"
gameTag :: String
gameTag :: String
gameTag = String
"game"
maxPositionInstancesTag :: String
maxPositionInstancesTag :: String
maxPositionInstancesTag = String
"maxPositionInstances"
movesTag :: String
movesTag :: String
movesTag = String
"moves"
pgnTag :: String
pgnTag :: String
pgnTag = String
"pgn"
reversiblePlyCountTag :: String
reversiblePlyCountTag :: String
reversiblePlyCountTag = String
"reversiblePlyCount"
data ReportObject
= AvailableMoves
| Board
| EPD
| FEN
| Game
| MaxPositionInstances
| Moves
| PGN
| ReversiblePlyCount
deriving ReportObject -> ReportObject -> Bool
(ReportObject -> ReportObject -> Bool)
-> (ReportObject -> ReportObject -> Bool) -> Eq ReportObject
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ReportObject -> ReportObject -> Bool
$c/= :: ReportObject -> ReportObject -> Bool
== :: ReportObject -> ReportObject -> Bool
$c== :: ReportObject -> ReportObject -> Bool
Eq
instance Control.DeepSeq.NFData ReportObject where
rnf :: ReportObject -> ()
rnf ReportObject
_ = ()
instance Show ReportObject where
show :: ReportObject -> String
show ReportObject
AvailableMoves = String
availableMovesTag
show ReportObject
Board = String
boardTag
show ReportObject
EPD = String
epdTag
show ReportObject
FEN = String
fenTag
show ReportObject
Game = String
gameTag
show ReportObject
MaxPositionInstances = String
maxPositionInstancesTag
show ReportObject
Moves = String
movesTag
show ReportObject
PGN = String
pgnTag
show ReportObject
ReversiblePlyCount = String
reversiblePlyCountTag
instance Read ReportObject where
readsPrec :: Int -> ReadS ReportObject
readsPrec Int
_ String
s = case ShowS -> (String, String) -> (String, String)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (b, d) (c, d)
Control.Arrow.first ShowS
Data.List.Extra.lower ((String, String) -> (String, String))
-> [(String, String)] -> [(String, String)]
forall a b. (a -> b) -> [a] -> [b]
`map` ReadS String
lex String
s of
[(String
"availablemoves", String
remainder)] -> [(ReportObject
AvailableMoves, String
remainder)]
[(String
"board", String
remainder)] -> [(ReportObject
Board, String
remainder)]
[(String
"epd", String
remainder)] -> [(ReportObject
EPD, String
remainder)]
[(String
"fen", String
remainder)] -> [(ReportObject
FEN, String
remainder)]
[(String
"game", String
remainder)] -> [(ReportObject
Game, String
remainder)]
[(String
"maxpositioninstances", String
remainder)] -> [(ReportObject
MaxPositionInstances, String
remainder)]
[(String
"moves", String
remainder)] -> [(ReportObject
Moves, String
remainder)]
[(String
"pgn", String
remainder)] -> [(ReportObject
PGN, String
remainder)]
[(String
"reversibleplycount", String
remainder)] -> [(ReportObject
ReversiblePlyCount, String
remainder)]
[(String, String)]
_ -> []
range :: [ReportObject]
range :: [ReportObject]
range = [ReportObject
AvailableMoves, ReportObject
Board, ReportObject
EPD, ReportObject
FEN, ReportObject
Game, ReportObject
MaxPositionInstances, ReportObject
Moves, ReportObject
PGN, ReportObject
ReversiblePlyCount]
instance Property.FixedMembership.FixedMembership ReportObject where
members :: [ReportObject]
members = [ReportObject]
range
autoComplete :: ShowS
autoComplete :: ShowS
autoComplete = [String] -> ShowS
Text.AutoComplete.autoComplete [
String
availableMovesTag,
String
boardTag,
String
epdTag,
String
fenTag,
String
gameTag,
String
maxPositionInstancesTag,
String
movesTag,
String
pgnTag,
String
reversiblePlyCountTag
]