haskell-ci-0.6: Cabal package script generator for Travis-CI

Safe HaskellNone
LanguageHaskell2010

HaskellCI.YamlSyntax

Synopsis

Documentation

data Yaml ann Source #

This is not complete YAML document tree; only as much as we need in haskell-ci.

Constructors

YString ann String 
YBool ann Bool 
YList ann [Yaml ann] 
YKeyValues ann [(ann, String, Yaml ann)] 
YValue ann Value

inline JSON (for compactness)

Instances
Functor Yaml Source # 
Instance details

Defined in HaskellCI.YamlSyntax

Methods

fmap :: (a -> b) -> Yaml a -> Yaml b #

(<$) :: a -> Yaml b -> Yaml a #

Foldable Yaml Source # 
Instance details

Defined in HaskellCI.YamlSyntax

Methods

fold :: Monoid m => Yaml m -> m #

foldMap :: Monoid m => (a -> m) -> Yaml a -> m #

foldr :: (a -> b -> b) -> b -> Yaml a -> b #

foldr' :: (a -> b -> b) -> b -> Yaml a -> b #

foldl :: (b -> a -> b) -> b -> Yaml a -> b #

foldl' :: (b -> a -> b) -> b -> Yaml a -> b #

foldr1 :: (a -> a -> a) -> Yaml a -> a #

foldl1 :: (a -> a -> a) -> Yaml a -> a #

toList :: Yaml a -> [a] #

null :: Yaml a -> Bool #

length :: Yaml a -> Int #

elem :: Eq a => a -> Yaml a -> Bool #

maximum :: Ord a => Yaml a -> a #

minimum :: Ord a => Yaml a -> a #

sum :: Num a => Yaml a -> a #

product :: Num a => Yaml a -> a #

Traversable Yaml Source # 
Instance details

Defined in HaskellCI.YamlSyntax

Methods

traverse :: Applicative f => (a -> f b) -> Yaml a -> f (Yaml b) #

sequenceA :: Applicative f => Yaml (f a) -> f (Yaml a) #

mapM :: Monad m => (a -> m b) -> Yaml a -> m (Yaml b) #

sequence :: Monad m => Yaml (m a) -> m (Yaml a) #

Eq ann => Eq (Yaml ann) Source # 
Instance details

Defined in HaskellCI.YamlSyntax

Methods

(==) :: Yaml ann -> Yaml ann -> Bool #

(/=) :: Yaml ann -> Yaml ann -> Bool #

Show ann => Show (Yaml ann) Source # 
Instance details

Defined in HaskellCI.YamlSyntax

Methods

showsPrec :: Int -> Yaml ann -> ShowS #

show :: Yaml ann -> String #

showList :: [Yaml ann] -> ShowS #

Monoid ann => IsString (Yaml ann) Source # 
Instance details

Defined in HaskellCI.YamlSyntax

Methods

fromString :: String -> Yaml ann #

ann ~ [String] => ToYaml (Yaml ann) Source # 
Instance details

Defined in HaskellCI.YamlSyntax

Methods

toYaml :: Yaml ann -> Yaml [String] Source #

reann :: (ann -> ann) -> Yaml ann -> Yaml ann Source #

Re-annotate top-level term

class ToYaml a where Source #

Methods

toYaml :: a -> Yaml [String] Source #

Instances
ToYaml Bool Source # 
Instance details

Defined in HaskellCI.YamlSyntax

Methods

toYaml :: Bool -> Yaml [String] Source #

ToYaml Value Source # 
Instance details

Defined in HaskellCI.YamlSyntax

Methods

toYaml :: Value -> Yaml [String] Source #

ToYaml TravisAllowFailure Source # 
Instance details

Defined in HaskellCI.Travis.Yaml

ToYaml TravisAddons Source # 
Instance details

Defined in HaskellCI.Travis.Yaml

ToYaml TravisJob Source # 
Instance details

Defined in HaskellCI.Travis.Yaml

ToYaml TravisMatrix Source # 
Instance details

Defined in HaskellCI.Travis.Yaml

ToYaml TravisIRC Source # 
Instance details

Defined in HaskellCI.Travis.Yaml

ToYaml TravisNotifications Source # 
Instance details

Defined in HaskellCI.Travis.Yaml

ToYaml TravisBranches Source # 
Instance details

Defined in HaskellCI.Travis.Yaml

ToYaml TravisCache Source # 
Instance details

Defined in HaskellCI.Travis.Yaml

ToYaml TravisGit Source # 
Instance details

Defined in HaskellCI.Travis.Yaml

ToYaml Travis Source # 
Instance details

Defined in HaskellCI.Travis.Yaml

Methods

toYaml :: Travis -> Yaml [String] Source #

ToYaml a => ToYaml [a] Source # 
Instance details

Defined in HaskellCI.YamlSyntax

Methods

toYaml :: [a] -> Yaml [String] Source #

ann ~ [String] => ToYaml (Yaml ann) Source # 
Instance details

Defined in HaskellCI.YamlSyntax

Methods

toYaml :: Yaml ann -> Yaml [String] Source #

prettyYaml :: forall ann. (ann -> [String]) -> Yaml ann -> String Source #

Convert Yaml to String. ann can be converted to comments.

Examples

>>> let demo = putStr . prettyYaml lines
>>> demo "foo"
foo
>>> demo "foo: bar"
"foo: bar"
>>> demo $ YString "a comment" "foo"
# a comment
foo
>>> demo $ YBool "a comment" True
# a comment
true
>>> demo $ YList "" []
[]
>>> demo $ YList "" ["foo", "foo: bar"]
- foo
- "foo: bar"
>>> demo $ YList "comment1" [YString "comment2" "foo", YString "comment3" "foo: bar"]
# comment1
#
# comment2
- foo
# comment3
- "foo: bar"
>>> demo $ YKeyValues "" []
{}
>>> demo $ YKeyValues "" [("", "foo", "bar"), ("", "help", "welcome")]
foo: bar
help: welcome
>>> let nested = YKeyValues "comment1" [("comment2", "foo", YString "comment3" "bar"), ("comment4", "help", YString "comment5" "welcome")]
>>> demo nested
# comment1
#
# comment2
#
# comment3
foo: bar
# comment4
#
# comment5
help: welcome
>>> demo $ YKeyValues "top" [("", "nested", nested)]
# top
nested:
  # comment1
  # 
  # comment2
  # 
  # comment3
  foo: bar
  # comment4
  # 
  # comment5
  help: welcome
>>> demo $ YValue "inline json" $ Aeson.toJSON [True, False, True]
# inline json
[true,false,true]
>>> demo $ YKeyValues "" [ ("", "addons", YValue "" $ Aeson.toJSON $ [Just "foo", Just "bar", Nothing]) ]
addons: ["foo","bar",null]
>>> demo $ YString "" $ unlines ["foo","bar","baz"]
"foo\nbar\nbaz\n"
>>> let multiline = YString "" $ unlines ["foo", "bar", "baz"]
>>> demo $ YList "" [multiline, multiline]
- |
  foo
  bar
  baz
- |
  foo
  bar
  baz
>>> demo $ YKeyValues "" [("", "keyA", multiline), ("", "keyB", multiline)]
keyA: |
  foo
  bar
  baz
keyB: |
  foo
  bar
  baz