cabal-version:       2.4
-- Initial package description 'context-free-art.cabal' generated by 'cabal
--  init'.  For further documentation, see
-- http://haskell.org/cabal/users-guide/

name:                context-free-art
version:             0.2.0.2
synopsis:            Generate art from context-free grammars
description:
    .
    Create art via context free grammar production rules.
    .
    == Context free grammar primer
    .
    Context free grammars consist of a set of terminal symbols, a set of
    non-terminal symbols, and production rules that map non-terminals to
    other symbols.
    .
    With a context-free grammar, we can generate strings of terminals that
    conform to the specified language.
    .
    Our language will describe graphics.
    .
    == Example
    .
    > import Art.ContextFree
    > import Data.List.NonEmpty
    >
    > -- Let's define a Production rule
    > a = Circle 1
    >
    > -- This will produce an IO Svg from the blaze-svg package
    > -- to turn it into a string we can use one of the `blaze-svg` renderers
    > graphic1 = interpret $ Circle 1
    >
    > -- let's create a non-terminal, 'a', which renders a terminal, 'Circle 1'
    > -- and has an 85% chance of rendering another circle, placed to its right
    > a = NonTerminal $ (100, Circle 1) :| [(85, b)]
    > b = Mod [Move (2, 0)] a

homepage:            https://github.com/414owen/context-free-art
-- bug-reports:
license:             BSD-3-Clause
license-file:        LICENSE
author:              Owen Shepherd
maintainer:          414owen@gmail.com
-- copyright:
category:            Graphics
extra-source-files:  CHANGELOG.md

executable tests
  main-is:             Tests.hs
  other-modules:       Art.Interpreter
                       , Art.Geometry
                       , Art.Grammar
                       , Art.Util
  build-depends:       base >= 4.12 && < 5
                       , blaze-svg >= 0.3.6
                       , random >= 1.1
                       , blaze-markup
                       , bifunctors >= 5.5
                       , text-show >= 3.8
                       , text >= 1.2
                       , HUnit >= 1.6
  default-language:    Haskell2010

library
  exposed-modules:     Art.ContextFree
  other-modules:       Art.Geometry
                       , Art.Util
                       , Art.Interpreter
                       , Art.Grammar
  build-depends:       base >= 4.12 && < 5
                       , blaze-svg >= 0.3.6
                       , random >= 1.1
                       , blaze-markup
                       , bifunctors >= 5.5
                       , text-show >= 3.8
                       , text >= 1.2
  default-language:    Haskell2010