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.1
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.
> -- At every layer, this will have an 85% chance
> -- of rendering another circle
> a = Mod [Move (2, 0)] b
> b = NonTerminal $ (85, c) :| []
> c = NonTerminal $ (100, Circle 1) :| [(100, 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.0.0
, 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.0.0
, blaze-svg ^>= 0.3.6
, random ^>= 1.1
, blaze-markup
, bifunctors ^>= 5.5
, text-show ^>= 3.8
, text ^>= 1.2
default-language: Haskell2010