calyx 0.17.1 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. checksums.yaml +5 -5
  2. data/docs/_data/breadcrumbs.yml +9 -0
  3. data/docs/_data/docs.yml +35 -0
  4. data/docs/_data/examples.yml +9 -0
  5. data/docs/_includes/breadcrumbs.html +36 -0
  6. data/docs/_includes/contents.html +12 -0
  7. data/docs/_includes/icon-github.html +4 -0
  8. data/docs/_includes/icon-rubygems.html +9 -0
  9. data/docs/_includes/navbar.html +24 -0
  10. data/docs/_includes/pagebar.html +12 -0
  11. data/docs/_layouts/default.html +3 -23
  12. data/docs/_layouts/docs.html +14 -0
  13. data/docs/_layouts/home.html +13 -0
  14. data/docs/_layouts/page.html +20 -0
  15. data/docs/_posts/2017-09-14-welcome-to-jekyll.markdown +1 -1
  16. data/docs/_posts/2017-09-21-0.17.0-released.md +10 -0
  17. data/docs/_styles/card.scss +7 -0
  18. data/docs/_styles/colors.scss +18 -0
  19. data/docs/_styles/content.scss +57 -0
  20. data/docs/_styles/cta.scss +25 -0
  21. data/docs/_styles/grid.scss +22 -0
  22. data/docs/_styles/media.scss +50 -0
  23. data/docs/_styles/menu.scss +54 -0
  24. data/docs/_styles/modifiers.scss +3 -0
  25. data/docs/_styles/navbar.scss +161 -0
  26. data/docs/_styles/pagebar.scss +32 -0
  27. data/docs/_styles/reset.scss +92 -0
  28. data/docs/_styles/scale.scss +23 -0
  29. data/docs/_styles/spread.scss +55 -0
  30. data/docs/_styles/styleguide.scss +52 -0
  31. data/docs/_styles/syntax.scss +84 -0
  32. data/docs/_styles/typography.scss +49 -0
  33. data/docs/_styles/yard.scss +36 -0
  34. data/docs/api.html +9662 -0
  35. data/docs/assets/calyx-docs.css +253 -162
  36. data/docs/assets/calyx-flower-outline.svg +202 -0
  37. data/docs/assets/calyx-flower-reverse.svg +202 -0
  38. data/docs/assets/calyx-flower.svg +202 -0
  39. data/docs/assets/logo-small.png +0 -0
  40. data/docs/assets/logos/calyx-flower-1.svg +22 -0
  41. data/docs/assets/logos/calyx-flower-2.svg +21 -0
  42. data/docs/content/documentation.html +20 -0
  43. data/docs/content/examples.html +12 -0
  44. data/docs/content/examples/any-gradient.md +32 -0
  45. data/docs/content/examples/faker.md +16 -0
  46. data/docs/content/examples/tiny-woodland-bot.md +24 -0
  47. data/docs/{guide → content/guides}/context.md +2 -2
  48. data/docs/{guide → content/guides}/expressions.md +2 -2
  49. data/docs/content/guides/features.md +50 -0
  50. data/docs/{guide → content/guides}/formats.md +1 -1
  51. data/docs/content/guides/installation.md +51 -0
  52. data/docs/{guide → content/guides}/random.md +1 -1
  53. data/docs/{guide → content/guides}/results.md +1 -1
  54. data/docs/content/index.html +44 -0
  55. data/docs/content/introduction.md +23 -0
  56. data/docs/content/introduction/concepts.md +82 -0
  57. data/docs/content/introduction/contributing.md +43 -0
  58. data/docs/content/introduction/tutorial.md +129 -0
  59. data/docs/content/styleguide.html +71 -0
  60. data/docs/docs.scss +94 -0
  61. data/docs/index.html +1 -23
  62. data/docs/package.json +1 -1
  63. data/lib/calyx/production/choices.rb +7 -0
  64. data/lib/calyx/production/unique.rb +0 -2
  65. data/lib/calyx/registry.rb +5 -0
  66. data/lib/calyx/rule.rb +4 -0
  67. data/lib/calyx/version.rb +1 -1
  68. metadata +59 -13
  69. data/docs/about.md +0 -18
  70. data/docs/calyx-docs.scss +0 -66
  71. data/docs/guide/examples.md +0 -59
  72. data/docs/guide/getting-started.md +0 -129
  73. data/docs/guide/installation.md +0 -19
@@ -1,18 +0,0 @@
1
- ---
2
- layout: page
3
- title: About
4
- permalink: /about/
5
- ---
6
-
7
- This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](https://jekyllrb.com/)
8
-
9
- You can find the source code for Minima at GitHub:
10
- [jekyll][jekyll-organization] /
11
- [minima](https://github.com/jekyll/minima)
12
-
13
- You can find the source code for Jekyll at GitHub:
14
- [jekyll][jekyll-organization] /
15
- [jekyll](https://github.com/jekyll/jekyll)
16
-
17
-
18
- [jekyll-organization]: https://github.com/jekyll
@@ -1,66 +0,0 @@
1
- $green: #218764;
2
-
3
- $family-monospace: "Oxygen Mono", "Monaco", Inconsolata, monospace;
4
- $family-sans-serif: "Libre Franklin", sans-serif;
5
-
6
- $background: #fafafa;
7
-
8
- $content-pre-padding: 0;
9
- $content-heading-color: #218764;
10
- $content-heading-weight: 700;
11
-
12
- $navbar-item-color: #fff;
13
- $navbar-background-color: #1BDE81;
14
- $navbar-item-hover-color: $navbar-item-color;
15
- $navbar-item-hover-background-color: darken($navbar-background-color, 6%);
16
- $navbar-item-active-background-color: #1BDE81;
17
-
18
- @import "bulma";
19
- @import "syntax";
20
- @import "styleguide";
21
-
22
- body {
23
- font-weight: 500;
24
- height: 100%;
25
- background-color: $background;
26
- }
27
-
28
- .sidebar {
29
- background-color: #eee;
30
- height: calc(100vh - 3.25rem);
31
- }
32
-
33
- .navbar-item {
34
- font-weight: 500;
35
- }
36
-
37
- .navbar-brand {
38
- .navbar-item {
39
- font-family: "Work Sans";
40
- font-weight: 800;
41
- font-size: 24px;
42
- line-height: 24px;
43
-
44
- span {
45
- margin-left: 6px;
46
- }
47
- }
48
- }
49
-
50
- .content {
51
- h1, h2, h3 {
52
- letter-spacing: -1px;
53
- font-family: "Work Sans";
54
- font-weight: 700;
55
- }
56
-
57
- .highlighter-rouge {
58
- margin-bottom: 1rem;
59
- }
60
-
61
- pre {
62
- code {
63
- font-size: 1em;
64
- }
65
- }
66
- }
@@ -1,59 +0,0 @@
1
- ---
2
- layout: default
3
- title: Examples
4
- permalink: /examples/
5
- ---
6
-
7
- # Examples
8
-
9
- The best way to get started quickly is to install the gem and run the examples locally.
10
-
11
- ## Any Gradient
12
-
13
- Requires Roda and Rack to be available.
14
-
15
- ```
16
- gem install roda
17
- ```
18
-
19
- Demonstrates how to use Calyx to construct SVG graphics. **Any Gradient** generates a rectangle with a linear gradient of random colours.
20
-
21
- Run as a web server and preview the output in a browser (`http://localhost:9292`):
22
-
23
- ```
24
- ruby examples/any_gradient.rb
25
- ```
26
-
27
- Or generate SVG files via a command line pipe:
28
-
29
- ```
30
- ruby examples/any_gradient > gradient1.xml
31
- ```
32
-
33
- ## Tiny Woodland Bot
34
-
35
- Requires the Twitter client gem and API access configured for a specific Twitter handle.
36
-
37
- ```
38
- gem install twitter
39
- ```
40
-
41
- Demonstrates how to use Calyx to make a minimal Twitter bot that periodically posts unique tweets. See [@tiny_woodland on Twitter](https://twitter.com/tiny_woodland) and the [writeup here](http://maetl.net/notes/storyboard/tiny-woodlands).
42
-
43
- ```
44
- TWITTER_CONSUMER_KEY=XXX-XXX
45
- TWITTER_CONSUMER_SECRET=XXX-XXX
46
- TWITTER_ACCESS_TOKEN=XXX-XXX
47
- TWITTER_CONSUMER_SECRET=XXX-XXX
48
- ruby examples/tiny_woodland_bot.rb
49
- ```
50
-
51
- ## Faker
52
-
53
- [Faker](https://github.com/stympy/faker) is a popular library for generating fake names and associated sample data like internet addresses, company names and locations.
54
-
55
- This example demonstrates how to use Calyx to reproduce the same functionality using custom lists defined in a YAML configuration file.
56
-
57
- ```
58
- ruby examples/faker.rb
59
- ```
@@ -1,129 +0,0 @@
1
- ---
2
- layout: default
3
- title: Getting Started
4
- permalink: /getting-started/
5
- ---
6
-
7
- # Getting Started
8
-
9
- Require the library and inherit from `Calyx::Grammar` to construct a set of rules to generate a text.
10
-
11
- ```ruby
12
- require 'calyx'
13
-
14
- class HelloWorld < Calyx::Grammar
15
- start 'Hello world.'
16
- end
17
- ```
18
-
19
- To generate the text itself, initialize the object and call the `generate` method.
20
-
21
- ```ruby
22
- hello = HelloWorld.new
23
- hello.generate
24
- # > "Hello world."
25
- ```
26
-
27
- Obviously, this hardcoded sentence isn’t very interesting by itself. Possible variations can be added to the text by adding additional rules which provide a named set of text strings. The rule delimiter syntax (`{}`) can be used to substitute the generated content of other rules.
28
-
29
- ```ruby
30
- class HelloWorld < Calyx::Grammar
31
- start '{greeting} world.'
32
- greeting 'Hello', 'Hi', 'Hey', 'Yo'
33
- end
34
- ```
35
-
36
- Each time `#generate` runs, it evaluates the tree and randomly selects variations of rules to construct a resulting string.
37
-
38
- ```ruby
39
- hello = HelloWorld.new
40
-
41
- hello.generate
42
- # > "Hi world."
43
-
44
- hello.generate
45
- # > "Hello world."
46
-
47
- hello.generate
48
- # > "Yo world."
49
- ```
50
-
51
- By convention, the `start` rule specifies the default starting point for generating the final text. You can start from any other named rule by passing it explicitly to the generate method.
52
-
53
- ```ruby
54
- class HelloWorld < Calyx::Grammar
55
- hello 'Hello world.'
56
- end
57
-
58
- hello = HelloWorld.new
59
- hello.generate(:hello)
60
- ```
61
-
62
- ## Block Constructors
63
-
64
- As an alternative to subclassing, you can also construct rules unique to an instance by passing a block when initializing the class:
65
-
66
- ```ruby
67
- hello = Calyx::Grammar.new do
68
- start '{greeting} world.'
69
- greeting 'Hello', 'Hi', 'Hey', 'Yo'
70
- end
71
-
72
- hello.generate
73
- ```
74
-
75
- ## Template Expressions
76
-
77
- Basic rule substitution uses single curly brackets as delimiters for template expressions:
78
-
79
- ```ruby
80
- fruit = Calyx::Grammar.new do
81
- start '{colour} {fruit}'
82
- colour 'red', 'green', 'yellow'
83
- fruit 'apple', 'pear', 'tomato'
84
- end
85
-
86
- 6.times { fruit.generate }
87
- # => "yellow pear"
88
- # => "red apple"
89
- # => "green tomato"
90
- # => "red pear"
91
- # => "yellow tomato"
92
- # => "green apple"
93
- ```
94
-
95
- ## Nesting and Substitution
96
-
97
- Rules are recursive. They can be arbitrarily nested and connected to generate larger and more complex texts.
98
-
99
- ```ruby
100
- class HelloWorld < Calyx::Grammar
101
- start '{greeting} {world_phrase}.'
102
- greeting 'Hello', 'Hi', 'Hey', 'Yo'
103
- world_phrase '{happy_adj} world', '{sad_adj} world', 'world'
104
- happy_adj 'wonderful', 'amazing', 'bright', 'beautiful'
105
- sad_adj 'cruel', 'miserable'
106
- end
107
- ```
108
-
109
- Nesting and hierarchy can be manipulated to balance consistency with novelty. The exact same word atoms can be combined in a variety of ways to produce strikingly different resulting texts.
110
-
111
- ```ruby
112
- module HelloWorld
113
- class Sentiment < Calyx::Grammar
114
- start '{happy_phrase}', '{sad_phrase}'
115
- happy_phrase '{happy_greeting} {happy_adj} world.'
116
- happy_greeting 'Hello', 'Hi', 'Hey', 'Yo'
117
- happy_adj 'wonderful', 'amazing', 'bright', 'beautiful'
118
- sad_phrase '{sad_greeting} {sad_adj} world.'
119
- sad_greeting 'Goodbye', 'So long', 'Farewell'
120
- sad_adj 'cruel', 'miserable'
121
- end
122
-
123
- class Mixed < Calyx::Grammar
124
- start '{greeting} {adj} world.'
125
- greeting 'Hello', 'Hi', 'Hey', 'Yo', 'Goodbye', 'So long', 'Farewell'
126
- adj 'wonderful', 'amazing', 'bright', 'beautiful', 'cruel', 'miserable'
127
- end
128
- end
129
- ```
@@ -1,19 +0,0 @@
1
- ---
2
- layout: default
3
- title: Install
4
- permalink: /installation/
5
- ---
6
-
7
- # Install
8
-
9
- ## Command Line
10
-
11
- ```
12
- gem install calyx
13
- ```
14
-
15
- ## Gemfile
16
-
17
- ```
18
- gem 'calyx'
19
- ```