cf3 0.0.4 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/{CHANGELOG → CHANGELOG.md} +13 -0
  4. data/Gemfile +1 -1
  5. data/README.md +21 -21
  6. data/Rakefile +7 -3
  7. data/bin/cf3samples +4 -4
  8. data/cf3ruby.gemspec +12 -13
  9. data/docs/.sass-cache/cd612fe6616e7f514a2421dc73159618de35b85d/jekyll-theme-cayman.scssc +0 -0
  10. data/docs/.sass-cache/cd612fe6616e7f514a2421dc73159618de35b85d/normalize.scssc +0 -0
  11. data/docs/.sass-cache/cd612fe6616e7f514a2421dc73159618de35b85d/rouge-github.scssc +0 -0
  12. data/docs/.sass-cache/cd612fe6616e7f514a2421dc73159618de35b85d/variables.scssc +0 -0
  13. data/docs/README.md +1 -0
  14. data/docs/_config.yml +31 -0
  15. data/docs/_site/README.md +1 -0
  16. data/docs/_site/about/index.html +52 -0
  17. data/docs/_site/assets/css/style.css +809 -0
  18. data/docs/_site/assets/y.png +0 -0
  19. data/docs/_site/example/index.html +113 -0
  20. data/docs/_site/favicon.ico +0 -0
  21. data/docs/_site/feed.xml +10 -0
  22. data/docs/_site/index.html +51 -0
  23. data/docs/_site/robots.txt +1 -0
  24. data/docs/_site/sitemap.xml +12 -0
  25. data/docs/about.md +14 -0
  26. data/docs/assets/y.png +0 -0
  27. data/docs/example.md +73 -0
  28. data/docs/favicon.ico +0 -0
  29. data/docs/index.md +10 -0
  30. data/lib/cf3/version.rb +1 -1
  31. data/lib/cf3.rb +85 -100
  32. data/samples/Rakefile +30 -0
  33. data/samples/accident.rb +34 -30
  34. data/samples/alhambra.rb +32 -29
  35. data/samples/bar_code.rb +26 -22
  36. data/samples/city.rb +14 -11
  37. data/samples/creature.rb +10 -6
  38. data/samples/dark_star.rb +5 -3
  39. data/samples/data/java_args.txt +1 -2
  40. data/samples/dragon.rb +8 -4
  41. data/samples/escher.rb +115 -116
  42. data/samples/fern.rb +13 -9
  43. data/samples/hex_tube.rb +16 -13
  44. data/samples/isosceles.rb +16 -11
  45. data/samples/levy.rb +5 -2
  46. data/samples/pcr.rb +28 -24
  47. data/samples/rubystar.rb +23 -17
  48. data/samples/sierpinski.rb +15 -11
  49. data/samples/spiral.rb +14 -10
  50. data/samples/star.rb +10 -6
  51. data/samples/tree.rb +20 -17
  52. data/samples/tree4.rb +12 -8
  53. data/samples/vine.rb +11 -7
  54. data/samples/xcross.rb +10 -7
  55. data/samples/y.rb +13 -9
  56. data/test/test_cf3.rb +11 -7
  57. metadata +50 -42
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 7e17853f9381b6ed49bc8167e843761fa8a14f21
4
- data.tar.gz: 5dc00b417e9f3bfe81809b418507f30d015fd72c
2
+ SHA256:
3
+ metadata.gz: d80640e4fdd9eeaafb72601432d9523a01b2aea81c479a10680bef3169357882
4
+ data.tar.gz: 5b233c6c88c67edb19c50abaeb2cd12ca81502708f8877b41aad689096dab03f
5
5
  SHA512:
6
- metadata.gz: 042745bf5d971d9f3f3d63d55f6ca0a99c1604e888b223ee29e2b6cf062f41cab21b7a6d5170d470a8dcff0dceab6b33e461e38a2d6a2271e7985741a3231c5a
7
- data.tar.gz: f7bc02c7d7492ebef52e4c29c3ccffbefeb80ee1f42f8e7c8685b7fcd0d289b5c1a89bfccb3be6d28bce80a6a43128c7bd4ecb6c4d7d65e542abbc9fbe116f38
6
+ metadata.gz: 04f17206aa306cb9b7a1e7fe0d735ce880bbce1ef8b50d65965088aa70f62cb6ba4d197b4addbf7d6fa4665c1ea699f1589f4ae8be396d3a97509eb15abad09f
7
+ data.tar.gz: febdfc1482e63dba911869f0f3212ce8b7c6a57ab0bdb873ccff838298c098b97e2289913a0a1341246b93f459dc359c98366a8a6d3b67103e29cec4990270ce
data/.gitignore CHANGED
@@ -18,3 +18,5 @@ spec/reports
18
18
  test/tmp
19
19
  test/version_tmp
20
20
  tmp
21
+ docs/_site
22
+
@@ -1,3 +1,13 @@
1
+ v1.2.0 Update to more recent JRuby, JRubyArt versions
2
+
3
+ v1.0.1 Created a website in docs folder (gemfile points to new website, that links to wiki and back to repo). Re-factored `class_eval` to `instance_eval` and added guards, somewhat simplifies code
4
+
5
+ v1.0.0 About time for a regular release number, fixed and update some examples NB: see also [Funatsufumiya san sketches][funniti]
6
+
7
+ v0.0.7 Update for processing3 and JRubyArt by Funatsufumiya san (aka [funniti][funniti])
8
+
9
+ v0.0.6 Some tidy up remove @finished
10
+
1
11
  v0.0.4 Introduce :w and :h as options to supplement size
2
12
  * start support for width and height options (:w, :h)
3
13
 
@@ -15,3 +25,6 @@ v0.0.2 Second Gem Release
15
25
  v0.0.1. First Gem Release
16
26
  * very much base on jashkenas context-free.rb updated
17
27
  * for ruby-1.9 syntax (and DSL nearer to CF3 than the original cfdg)
28
+
29
+
30
+ [funniti]:https://github.com/funatsufumiya/cf3ruby_sketches
data/Gemfile CHANGED
@@ -1,5 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in cf3ruby.gemspec
4
- ruby "1.9.3", :engine => "jruby", :engine_version => "1.7.4"
4
+ ruby "2.5.0", :engine => "jruby", :engine_version => "9.2.19.0"
5
5
  gemspec
data/README.md CHANGED
@@ -1,38 +1,42 @@
1
1
  # cf3ruby
2
2
 
3
- **context-free DSL for ruby-1.9 and CF3 syntax**
3
+ Now updated to be compatible with ruby 2.4, JRubyArt 1.4.4 (newer version of ruby-processing), and Processing 3+.*
4
+
5
+ **context-free DSL for ruby-2.4 and CF3 syntax**
6
+
7
+ Very much derived from [context-free.rb](https://github.com/jashkenas/context_free) by Jeremy Ashkenas this version is updated to be more in line with CF3 and ruby 2.3 syntax. NB this version will not work with original ruby-processing.
4
8
 
5
- Very much derived from [context-free.rb][] by Jeremy Ashkenas this version is updated to be more in line with CF3 and ruby 1.9 syntax. Tested as working with last rubygems release of ruby-processing (v 1.0.11) as well as the current [version][] (v 2.1.4).
6
- [context-free.rb]:https://github.com/jashkenas/context_free/
7
- [version]:https://github.com/monkstone/ruby-processing/releases/
8
9
  ## Installation
9
10
 
10
- To use this library you need install jruby (preferably jruby-1.7.4+), you will also need [ruby-processing][] to be installed (minimum version 1.0.11, preferred version 2.1.4). There are three ways you can install this library:-
11
+ To use this library you need install jruby (preferably jruby-9.1+), you will also need [ruby-processing/JRubyArt](https://github.com/ruby-processing/JRubyArt) to be installed (preferred version 1.4.4). There are three ways you can install this library:-
11
12
 
12
13
  ***rake test and gem install***
13
14
 
14
- Either clone this repository, or download a [snapshot][].
15
+ Clone this repository,
15
16
 
16
17
  ```bash
17
- cd cf3ruby
18
+ cd cf3ruby
18
19
  jruby -S rake test # builds and tests gem (mouse click on frame for test image to show)
19
- jruby -S gem install cf3-0.0.3.gem # may need sudo access
20
+ jruby -S gem install cf3-1.0.0.gem # may need sudo access
20
21
  ```
21
22
 
22
23
  ***local bundle install***
23
24
 
24
- Either clone this repository, or download a [snapshot].
25
+ Clone this repository,
25
26
 
26
27
  ```bash
27
- cd cf3
28
- bundle install # using regular installed bundler may need to set GEM_PATH
28
+ cd cf3ruby
29
+ # bundle install # using regular installed bundler may need to set GEM_PATH
29
30
  jruby -S bundle install # if you installed bundler with jruby
30
31
  ```
31
32
 
32
33
  ***gem install from rubygems***
34
+
33
35
  ```bash
34
- gem install cf3 # regular install may need to set GEM_PATH env variable
35
- jruby -S gem install cf3 # jruby install
36
+ # When rubygems is updatd for this release.
37
+
38
+ # gem install cf3 # regular install may need to set GEM_PATH env variable
39
+ # jruby -S gem install cf3 # jruby install
36
40
  ```
37
41
  it couldn't be easier could it?
38
42
 
@@ -44,19 +48,15 @@ cf3samples # should work
44
48
  jruby -S cf3samples # else if installed with jruby this should also work
45
49
  ```
46
50
 
47
- As for running ruby-processing, ( _it requires the external jruby flag prior to ruby-processing-2.1.2_ )
51
+ As for running ruby-processing,
48
52
  ```bash
49
- rp5 run city.rb # providing you installed both ruby-processing and cf3ruby using jruby
53
+ k9 --run city.rb # providing you installed both ruby-processing (JRubyArt) and cf3ruby using jruby
50
54
 
51
55
  ```
52
- You should read the [ruby-processing_documentation][] on using rubygems.
56
+ You should read the [JRubyArt documentation](https://github.com/ruby-processing/JRubyArt/blob/master/README.md) on using rubygems.
53
57
 
54
58
  ## Contributing
55
59
 
56
- [Contributing][]
57
- [contributing]:CONTRIBUTING.md
58
- [ruby-processing_documentation]:https://github.com/jashkenas/ruby-processing/wiki/Using-Rubygems/
59
- [snapshot]:https://github.com/monkstone/cf3ruby/releases
60
+ See [CONTRIBUTING.md](CONTRIBUTING.md)
60
61
 
61
62
  ![Y](http://3.bp.blogspot.com/-KNBKD7lArMA/UNBayboXQFI/AAAAAAAAD7A/YAgZCewTOxQ/s400/y.png)
62
-
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
- require "bundler/gem_tasks"
1
+ #require "bundler/gem_tasks"
2
2
 
3
3
  task :install => :build do
4
- sh "jruby -S gem install #{Dir.glob('*.gem').join(' ')} --no-ri --no-rdoc"
4
+ sh "jruby -S gem install #{Dir.glob('*.gem').join(' ')} --no-doc"
5
5
  end
6
6
 
7
7
  task :build do
@@ -9,7 +9,11 @@ task :build do
9
9
  end
10
10
 
11
11
  task :test do
12
- sh "jruby -S rp5 run test/test_cf3.rb"
12
+ sh "jruby -S k9 --run test/test_cf3.rb"
13
13
  end
14
14
 
15
+ task :clean do
16
+ sh "rm *.gem"
17
+ end
18
+
15
19
  task :default => [:install]
data/bin/cf3samples CHANGED
@@ -4,13 +4,13 @@
4
4
  #####
5
5
 
6
6
 
7
- home = ENV["HOME"]
7
+ home = ENV['HOME']
8
8
  local = home + '/cf3work'
9
9
  file = __FILE__
10
- require "pathname"
11
- require "fileutils"
10
+ require 'pathname'
11
+ require 'fileutils'
12
12
  file = Pathname.new(file).realpath
13
13
 
14
14
  sample_dir = File.expand_path(File.dirname(file) + "/../samples")
15
- FileUtils.mkdir local unless Dir.exists? local
15
+ FileUtils.mkdir local unless Dir.exist? local
16
16
  FileUtils.cp_r sample_dir, local
data/cf3ruby.gemspec CHANGED
@@ -4,26 +4,25 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'cf3/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "cf3"
7
+ spec.name = 'cf3'
8
8
  spec.version = Cf3::VERSION
9
- spec.authors = ["Jeremy Ashkenas", "Martin Prout"]
10
- spec.email = ["martin_p@lineone.net"]
9
+ spec.authors = ['Jeremy Ashkenas', 'Martin Prout, Funatsufumiya']
10
+ spec.email = ['mamba2928@yahoo.co.uk']
11
11
  spec.description = <<-EOF
12
- A library for ruby-processing, that allows the writing of context free
12
+ A library for JRubyArt, that allows the writing of context free
13
13
  sketches (like context free art) in a ruby DSL. It is a bit of a toy
14
- compared to the c++ version. However you can get quite a bit of
14
+ compared to the c++ version. However you can get quite a bit of
15
15
  satisfaction creating an interesting graphic, and you can't always
16
16
  predict what you are going to get.
17
17
  EOF
18
18
  spec.summary = %q{A ruby-DSL library for CF3 sketches}
19
- spec.homepage = "http://learning-ruby-processing.blogspot.co.uk/"
20
- spec.default_executable = "cf3samples"
21
- spec.license = "GPL3"
19
+ spec.homepage = "http://monkstone.github.io/cf3ruby/"
20
+ spec.default_executable = 'cf3samples'
21
+ spec.licenses = %w(GPL-3.0 LGPL-2.0)
22
22
  spec.files = `git ls-files`.split($/)
23
23
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
24
- spec.executables = ["cf3samples"]
25
- spec.require_paths = ["lib"]
26
- spec.add_runtime_dependency 'ruby-processing', '>= 1.0.11'
27
- spec.add_development_dependency "bundler", "~> 1.3"
28
- spec.add_development_dependency "rake"
24
+ spec.executables = ['cf3samples']
25
+ spec.require_paths = ['lib']
26
+ spec.add_runtime_dependency 'jruby_art', '~> 2.5'
27
+ spec.add_development_dependency 'rake', '~> 13.0'
29
28
  end
data/docs/README.md ADDED
@@ -0,0 +1 @@
1
+ ### Welcome to cf3ruby gem project
data/docs/_config.yml ADDED
@@ -0,0 +1,31 @@
1
+ # Site settings
2
+ port: 4000
3
+ title: ContextFreeArt gem for JRubyArt
4
+ email: mamba2928@yahoo.co.uk
5
+ description: > # this means to ignore newlines until "baseurl:"
6
+ The cf3ruby gem is a kind of ruby DSL for contextfreeart. It is just a toy
7
+ really see https://www.contextfreeart.org/ for original.
8
+ baseurl: "" # the subpath of your site, e.g. /blog
9
+ regenerate: true
10
+ url: "https://monkstone.github.io/cf3ruby"
11
+
12
+ urls:
13
+ bugs: https://github.com/monkstone/cf3ruby/issues
14
+ github: https://github.com/monkstone/cf3ruby
15
+ twitter_username: monkstoneT
16
+ github_username: monkstone
17
+
18
+ theme: jekyll-theme-cayman
19
+
20
+ syntax-highlighting:
21
+ enabled: true
22
+
23
+ sass:
24
+ sass_dir: _sass
25
+
26
+ # Build settings
27
+ markdown: kramdown
28
+ gems:
29
+ - jekyll-sitemap
30
+ - jekyll-feed
31
+ - jekyll-seo-tag
@@ -0,0 +1 @@
1
+ ### Welcome to cf3ruby gem project
@@ -0,0 +1,52 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en-US">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+
6
+ <!-- Begin Jekyll SEO tag v2.4.0 -->
7
+ <title>Welcome to cf3ruby gem website | ContextFreeArt gem for JRubyArt</title>
8
+ <meta name="generator" content="Jekyll v3.7.2" />
9
+ <meta property="og:title" content="Welcome to cf3ruby gem website" />
10
+ <meta property="og:locale" content="en_US" />
11
+ <meta name="description" content="The cf3ruby gem is a kind of ruby DSL for contextfreeart. It is just a toy really see https://www.contextfreeart.org/ for original." />
12
+ <meta property="og:description" content="The cf3ruby gem is a kind of ruby DSL for contextfreeart. It is just a toy really see https://www.contextfreeart.org/ for original." />
13
+ <link rel="canonical" href="http://localhost:4000/about/" />
14
+ <meta property="og:url" content="http://localhost:4000/about/" />
15
+ <meta property="og:site_name" content="ContextFreeArt gem for JRubyArt" />
16
+ <script type="application/ld+json">
17
+ {"name":"ContextFreeArt gem for JRubyArt","description":"The cf3ruby gem is a kind of ruby DSL for contextfreeart. It is just a toy really see https://www.contextfreeart.org/ for original.","@type":"WebSite","url":"http://localhost:4000/about/","headline":"Welcome to cf3ruby gem website","@context":"http://schema.org"}</script>
18
+ <!-- End Jekyll SEO tag -->
19
+
20
+ <meta name="description" content="The cf3ruby gem is a kind of ruby DSL for contextfreeart. It is just a toy really see https://www.contextfreeart.org/ for original.
21
+ "/>
22
+ <meta name="viewport" content="width=device-width, initial-scale=1">
23
+ <meta name="theme-color" content="#157878">
24
+ <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
25
+ <link rel="stylesheet" href="/assets/css/style.css?v=">
26
+ </head>
27
+ <body>
28
+ <section class="page-header">
29
+ <h1 class="project-name">ContextFreeArt gem for JRubyArt</h1>
30
+ <h2 class="project-tagline">The cf3ruby gem is a kind of ruby DSL for contextfreeart. It is just a toy really see https://www.contextfreeart.org/ for original.
31
+ </h2>
32
+
33
+
34
+ </section>
35
+
36
+ <section class="main-content">
37
+ <p>The inspiration for cf3ruby is <a href="http://www.contextfreeart.org/">contextfreeart</a> and the jashkenas <a href="https://github.com/jashkenas/context_free">original</a>, so what is context free art?</p>
38
+
39
+ <p>Chris Coyne created a small language for design grammars called CFDG. These grammars are sets of non-deterministic rules to produce images. The images are surprisingly beautiful, often from very simple grammars.
40
+ In the original version there were 3 terminals of a TRIANGLE, SQUARE and CIRCLE see cfdg <a href="http://www.contextfreeart.org/mediawiki/index.php/CFDG_HOWTO">how_to</a>.</p>
41
+
42
+
43
+
44
+ <footer class="site-footer">
45
+
46
+ <span class="site-footer-credits">This page was generated by <a href="https://pages.github.com">GitHub Pages</a>.</span>
47
+ </footer>
48
+ </section>
49
+
50
+
51
+ </body>
52
+ </html>
@@ -0,0 +1,809 @@
1
+ /*! normalize.css v3.0.2 | MIT License | git.io/normalize */
2
+ /**
3
+ * 1. Set default font family to sans-serif.
4
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
5
+ * user zoom.
6
+ */
7
+ html {
8
+ font-family: sans-serif;
9
+ /* 1 */
10
+ -ms-text-size-adjust: 100%;
11
+ /* 2 */
12
+ -webkit-text-size-adjust: 100%;
13
+ /* 2 */ }
14
+
15
+ /**
16
+ * Remove default margin.
17
+ */
18
+ body {
19
+ margin: 0; }
20
+
21
+ /* HTML5 display definitions
22
+ ========================================================================== */
23
+ /**
24
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
25
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
26
+ * and Firefox.
27
+ * Correct `block` display not defined for `main` in IE 11.
28
+ */
29
+ article,
30
+ aside,
31
+ details,
32
+ figcaption,
33
+ figure,
34
+ footer,
35
+ header,
36
+ hgroup,
37
+ main,
38
+ menu,
39
+ nav,
40
+ section,
41
+ summary {
42
+ display: block; }
43
+
44
+ /**
45
+ * 1. Correct `inline-block` display not defined in IE 8/9.
46
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
47
+ */
48
+ audio,
49
+ canvas,
50
+ progress,
51
+ video {
52
+ display: inline-block;
53
+ /* 1 */
54
+ vertical-align: baseline;
55
+ /* 2 */ }
56
+
57
+ /**
58
+ * Prevent modern browsers from displaying `audio` without controls.
59
+ * Remove excess height in iOS 5 devices.
60
+ */
61
+ audio:not([controls]) {
62
+ display: none;
63
+ height: 0; }
64
+
65
+ /**
66
+ * Address `[hidden]` styling not present in IE 8/9/10.
67
+ * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
68
+ */
69
+ [hidden],
70
+ template {
71
+ display: none; }
72
+
73
+ /* Links
74
+ ========================================================================== */
75
+ /**
76
+ * Remove the gray background color from active links in IE 10.
77
+ */
78
+ a {
79
+ background-color: transparent; }
80
+
81
+ /**
82
+ * Improve readability when focused and also mouse hovered in all browsers.
83
+ */
84
+ a:active,
85
+ a:hover {
86
+ outline: 0; }
87
+
88
+ /* Text-level semantics
89
+ ========================================================================== */
90
+ /**
91
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
92
+ */
93
+ abbr[title] {
94
+ border-bottom: 1px dotted; }
95
+
96
+ /**
97
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
98
+ */
99
+ b,
100
+ strong {
101
+ font-weight: bold; }
102
+
103
+ /**
104
+ * Address styling not present in Safari and Chrome.
105
+ */
106
+ dfn {
107
+ font-style: italic; }
108
+
109
+ /**
110
+ * Address variable `h1` font-size and margin within `section` and `article`
111
+ * contexts in Firefox 4+, Safari, and Chrome.
112
+ */
113
+ h1 {
114
+ font-size: 2em;
115
+ margin: 0.67em 0; }
116
+
117
+ /**
118
+ * Address styling not present in IE 8/9.
119
+ */
120
+ mark {
121
+ background: #ff0;
122
+ color: #000; }
123
+
124
+ /**
125
+ * Address inconsistent and variable font size in all browsers.
126
+ */
127
+ small {
128
+ font-size: 80%; }
129
+
130
+ /**
131
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
132
+ */
133
+ sub,
134
+ sup {
135
+ font-size: 75%;
136
+ line-height: 0;
137
+ position: relative;
138
+ vertical-align: baseline; }
139
+
140
+ sup {
141
+ top: -0.5em; }
142
+
143
+ sub {
144
+ bottom: -0.25em; }
145
+
146
+ /* Embedded content
147
+ ========================================================================== */
148
+ /**
149
+ * Remove border when inside `a` element in IE 8/9/10.
150
+ */
151
+ img {
152
+ border: 0; }
153
+
154
+ /**
155
+ * Correct overflow not hidden in IE 9/10/11.
156
+ */
157
+ svg:not(:root) {
158
+ overflow: hidden; }
159
+
160
+ /* Grouping content
161
+ ========================================================================== */
162
+ /**
163
+ * Address margin not present in IE 8/9 and Safari.
164
+ */
165
+ figure {
166
+ margin: 1em 40px; }
167
+
168
+ /**
169
+ * Address differences between Firefox and other browsers.
170
+ */
171
+ hr {
172
+ box-sizing: content-box;
173
+ height: 0; }
174
+
175
+ /**
176
+ * Contain overflow in all browsers.
177
+ */
178
+ pre {
179
+ overflow: auto; }
180
+
181
+ /**
182
+ * Address odd `em`-unit font size rendering in all browsers.
183
+ */
184
+ code,
185
+ kbd,
186
+ pre,
187
+ samp {
188
+ font-family: monospace, monospace;
189
+ font-size: 1em; }
190
+
191
+ /* Forms
192
+ ========================================================================== */
193
+ /**
194
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
195
+ * styling of `select`, unless a `border` property is set.
196
+ */
197
+ /**
198
+ * 1. Correct color not being inherited.
199
+ * Known issue: affects color of disabled elements.
200
+ * 2. Correct font properties not being inherited.
201
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
202
+ */
203
+ button,
204
+ input,
205
+ optgroup,
206
+ select,
207
+ textarea {
208
+ color: inherit;
209
+ /* 1 */
210
+ font: inherit;
211
+ /* 2 */
212
+ margin: 0;
213
+ /* 3 */ }
214
+
215
+ /**
216
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
217
+ */
218
+ button {
219
+ overflow: visible; }
220
+
221
+ /**
222
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
223
+ * All other form control elements do not inherit `text-transform` values.
224
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
225
+ * Correct `select` style inheritance in Firefox.
226
+ */
227
+ button,
228
+ select {
229
+ text-transform: none; }
230
+
231
+ /**
232
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
233
+ * and `video` controls.
234
+ * 2. Correct inability to style clickable `input` types in iOS.
235
+ * 3. Improve usability and consistency of cursor style between image-type
236
+ * `input` and others.
237
+ */
238
+ button,
239
+ html input[type="button"],
240
+ input[type="reset"],
241
+ input[type="submit"] {
242
+ -webkit-appearance: button;
243
+ /* 2 */
244
+ cursor: pointer;
245
+ /* 3 */ }
246
+
247
+ /**
248
+ * Re-set default cursor for disabled elements.
249
+ */
250
+ button[disabled],
251
+ html input[disabled] {
252
+ cursor: default; }
253
+
254
+ /**
255
+ * Remove inner padding and border in Firefox 4+.
256
+ */
257
+ button::-moz-focus-inner,
258
+ input::-moz-focus-inner {
259
+ border: 0;
260
+ padding: 0; }
261
+
262
+ /**
263
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
264
+ * the UA stylesheet.
265
+ */
266
+ input {
267
+ line-height: normal; }
268
+
269
+ /**
270
+ * It's recommended that you don't attempt to style these elements.
271
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
272
+ *
273
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
274
+ * 2. Remove excess padding in IE 8/9/10.
275
+ */
276
+ input[type="checkbox"],
277
+ input[type="radio"] {
278
+ box-sizing: border-box;
279
+ /* 1 */
280
+ padding: 0;
281
+ /* 2 */ }
282
+
283
+ /**
284
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
285
+ * `font-size` values of the `input`, it causes the cursor style of the
286
+ * decrement button to change from `default` to `text`.
287
+ */
288
+ input[type="number"]::-webkit-inner-spin-button,
289
+ input[type="number"]::-webkit-outer-spin-button {
290
+ height: auto; }
291
+
292
+ /**
293
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
294
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
295
+ * (include `-moz` to future-proof).
296
+ */
297
+ input[type="search"] {
298
+ -webkit-appearance: textfield;
299
+ /* 1 */
300
+ /* 2 */
301
+ box-sizing: content-box; }
302
+
303
+ /**
304
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
305
+ * Safari (but not Chrome) clips the cancel button when the search input has
306
+ * padding (and `textfield` appearance).
307
+ */
308
+ input[type="search"]::-webkit-search-cancel-button,
309
+ input[type="search"]::-webkit-search-decoration {
310
+ -webkit-appearance: none; }
311
+
312
+ /**
313
+ * Define consistent border, margin, and padding.
314
+ */
315
+ fieldset {
316
+ border: 1px solid #c0c0c0;
317
+ margin: 0 2px;
318
+ padding: 0.35em 0.625em 0.75em; }
319
+
320
+ /**
321
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
322
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
323
+ */
324
+ legend {
325
+ border: 0;
326
+ /* 1 */
327
+ padding: 0;
328
+ /* 2 */ }
329
+
330
+ /**
331
+ * Remove default vertical scrollbar in IE 8/9/10/11.
332
+ */
333
+ textarea {
334
+ overflow: auto; }
335
+
336
+ /**
337
+ * Don't inherit the `font-weight` (applied by a rule above).
338
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
339
+ */
340
+ optgroup {
341
+ font-weight: bold; }
342
+
343
+ /* Tables
344
+ ========================================================================== */
345
+ /**
346
+ * Remove most spacing between table cells.
347
+ */
348
+ table {
349
+ border-collapse: collapse;
350
+ border-spacing: 0; }
351
+
352
+ td,
353
+ th {
354
+ padding: 0; }
355
+
356
+ .highlight table td {
357
+ padding: 5px; }
358
+
359
+ .highlight table pre {
360
+ margin: 0; }
361
+
362
+ .highlight .cm {
363
+ color: #999988;
364
+ font-style: italic; }
365
+
366
+ .highlight .cp {
367
+ color: #999999;
368
+ font-weight: bold; }
369
+
370
+ .highlight .c1 {
371
+ color: #999988;
372
+ font-style: italic; }
373
+
374
+ .highlight .cs {
375
+ color: #999999;
376
+ font-weight: bold;
377
+ font-style: italic; }
378
+
379
+ .highlight .c, .highlight .cd {
380
+ color: #999988;
381
+ font-style: italic; }
382
+
383
+ .highlight .err {
384
+ color: #a61717;
385
+ background-color: #e3d2d2; }
386
+
387
+ .highlight .gd {
388
+ color: #000000;
389
+ background-color: #ffdddd; }
390
+
391
+ .highlight .ge {
392
+ color: #000000;
393
+ font-style: italic; }
394
+
395
+ .highlight .gr {
396
+ color: #aa0000; }
397
+
398
+ .highlight .gh {
399
+ color: #999999; }
400
+
401
+ .highlight .gi {
402
+ color: #000000;
403
+ background-color: #ddffdd; }
404
+
405
+ .highlight .go {
406
+ color: #888888; }
407
+
408
+ .highlight .gp {
409
+ color: #555555; }
410
+
411
+ .highlight .gs {
412
+ font-weight: bold; }
413
+
414
+ .highlight .gu {
415
+ color: #aaaaaa; }
416
+
417
+ .highlight .gt {
418
+ color: #aa0000; }
419
+
420
+ .highlight .kc {
421
+ color: #000000;
422
+ font-weight: bold; }
423
+
424
+ .highlight .kd {
425
+ color: #000000;
426
+ font-weight: bold; }
427
+
428
+ .highlight .kn {
429
+ color: #000000;
430
+ font-weight: bold; }
431
+
432
+ .highlight .kp {
433
+ color: #000000;
434
+ font-weight: bold; }
435
+
436
+ .highlight .kr {
437
+ color: #000000;
438
+ font-weight: bold; }
439
+
440
+ .highlight .kt {
441
+ color: #445588;
442
+ font-weight: bold; }
443
+
444
+ .highlight .k, .highlight .kv {
445
+ color: #000000;
446
+ font-weight: bold; }
447
+
448
+ .highlight .mf {
449
+ color: #009999; }
450
+
451
+ .highlight .mh {
452
+ color: #009999; }
453
+
454
+ .highlight .il {
455
+ color: #009999; }
456
+
457
+ .highlight .mi {
458
+ color: #009999; }
459
+
460
+ .highlight .mo {
461
+ color: #009999; }
462
+
463
+ .highlight .m, .highlight .mb, .highlight .mx {
464
+ color: #009999; }
465
+
466
+ .highlight .sb {
467
+ color: #d14; }
468
+
469
+ .highlight .sc {
470
+ color: #d14; }
471
+
472
+ .highlight .sd {
473
+ color: #d14; }
474
+
475
+ .highlight .s2 {
476
+ color: #d14; }
477
+
478
+ .highlight .se {
479
+ color: #d14; }
480
+
481
+ .highlight .sh {
482
+ color: #d14; }
483
+
484
+ .highlight .si {
485
+ color: #d14; }
486
+
487
+ .highlight .sx {
488
+ color: #d14; }
489
+
490
+ .highlight .sr {
491
+ color: #009926; }
492
+
493
+ .highlight .s1 {
494
+ color: #d14; }
495
+
496
+ .highlight .ss {
497
+ color: #990073; }
498
+
499
+ .highlight .s {
500
+ color: #d14; }
501
+
502
+ .highlight .na {
503
+ color: #008080; }
504
+
505
+ .highlight .bp {
506
+ color: #999999; }
507
+
508
+ .highlight .nb {
509
+ color: #0086B3; }
510
+
511
+ .highlight .nc {
512
+ color: #445588;
513
+ font-weight: bold; }
514
+
515
+ .highlight .no {
516
+ color: #008080; }
517
+
518
+ .highlight .nd {
519
+ color: #3c5d5d;
520
+ font-weight: bold; }
521
+
522
+ .highlight .ni {
523
+ color: #800080; }
524
+
525
+ .highlight .ne {
526
+ color: #990000;
527
+ font-weight: bold; }
528
+
529
+ .highlight .nf {
530
+ color: #990000;
531
+ font-weight: bold; }
532
+
533
+ .highlight .nl {
534
+ color: #990000;
535
+ font-weight: bold; }
536
+
537
+ .highlight .nn {
538
+ color: #555555; }
539
+
540
+ .highlight .nt {
541
+ color: #000080; }
542
+
543
+ .highlight .vc {
544
+ color: #008080; }
545
+
546
+ .highlight .vg {
547
+ color: #008080; }
548
+
549
+ .highlight .vi {
550
+ color: #008080; }
551
+
552
+ .highlight .nv {
553
+ color: #008080; }
554
+
555
+ .highlight .ow {
556
+ color: #000000;
557
+ font-weight: bold; }
558
+
559
+ .highlight .o {
560
+ color: #000000;
561
+ font-weight: bold; }
562
+
563
+ .highlight .w {
564
+ color: #bbbbbb; }
565
+
566
+ .highlight {
567
+ background-color: #f8f8f8; }
568
+
569
+ * {
570
+ box-sizing: border-box; }
571
+
572
+ body {
573
+ padding: 0;
574
+ margin: 0;
575
+ font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
576
+ font-size: 16px;
577
+ line-height: 1.5;
578
+ color: #606c71; }
579
+
580
+ a {
581
+ color: #1e6bb8;
582
+ text-decoration: none; }
583
+ a:hover {
584
+ text-decoration: underline; }
585
+
586
+ .btn {
587
+ display: inline-block;
588
+ margin-bottom: 1rem;
589
+ color: rgba(255, 255, 255, 0.7);
590
+ background-color: rgba(255, 255, 255, 0.08);
591
+ border-color: rgba(255, 255, 255, 0.2);
592
+ border-style: solid;
593
+ border-width: 1px;
594
+ border-radius: 0.3rem;
595
+ transition: color 0.2s, background-color 0.2s, border-color 0.2s; }
596
+ .btn:hover {
597
+ color: rgba(255, 255, 255, 0.8);
598
+ text-decoration: none;
599
+ background-color: rgba(255, 255, 255, 0.2);
600
+ border-color: rgba(255, 255, 255, 0.3); }
601
+ .btn + .btn {
602
+ margin-left: 1rem; }
603
+ @media screen and (min-width: 64em) {
604
+ .btn {
605
+ padding: 0.75rem 1rem; } }
606
+ @media screen and (min-width: 42em) and (max-width: 64em) {
607
+ .btn {
608
+ padding: 0.6rem 0.9rem;
609
+ font-size: 0.9rem; } }
610
+ @media screen and (max-width: 42em) {
611
+ .btn {
612
+ display: block;
613
+ width: 100%;
614
+ padding: 0.75rem;
615
+ font-size: 0.9rem; }
616
+ .btn + .btn {
617
+ margin-top: 1rem;
618
+ margin-left: 0; } }
619
+
620
+ .page-header {
621
+ color: #fff;
622
+ text-align: center;
623
+ background-color: #159957;
624
+ background-image: linear-gradient(120deg, #155799, #159957); }
625
+ @media screen and (min-width: 64em) {
626
+ .page-header {
627
+ padding: 5rem 6rem; } }
628
+ @media screen and (min-width: 42em) and (max-width: 64em) {
629
+ .page-header {
630
+ padding: 3rem 4rem; } }
631
+ @media screen and (max-width: 42em) {
632
+ .page-header {
633
+ padding: 2rem 1rem; } }
634
+
635
+ .project-name {
636
+ margin-top: 0;
637
+ margin-bottom: 0.1rem; }
638
+ @media screen and (min-width: 64em) {
639
+ .project-name {
640
+ font-size: 3.25rem; } }
641
+ @media screen and (min-width: 42em) and (max-width: 64em) {
642
+ .project-name {
643
+ font-size: 2.25rem; } }
644
+ @media screen and (max-width: 42em) {
645
+ .project-name {
646
+ font-size: 1.75rem; } }
647
+
648
+ .project-tagline {
649
+ margin-bottom: 2rem;
650
+ font-weight: normal;
651
+ opacity: 0.7; }
652
+ @media screen and (min-width: 64em) {
653
+ .project-tagline {
654
+ font-size: 1.25rem; } }
655
+ @media screen and (min-width: 42em) and (max-width: 64em) {
656
+ .project-tagline {
657
+ font-size: 1.15rem; } }
658
+ @media screen and (max-width: 42em) {
659
+ .project-tagline {
660
+ font-size: 1rem; } }
661
+
662
+ .main-content {
663
+ word-wrap: break-word; }
664
+ .main-content :first-child {
665
+ margin-top: 0; }
666
+ @media screen and (min-width: 64em) {
667
+ .main-content {
668
+ max-width: 64rem;
669
+ padding: 2rem 6rem;
670
+ margin: 0 auto;
671
+ font-size: 1.1rem; } }
672
+ @media screen and (min-width: 42em) and (max-width: 64em) {
673
+ .main-content {
674
+ padding: 2rem 4rem;
675
+ font-size: 1.1rem; } }
676
+ @media screen and (max-width: 42em) {
677
+ .main-content {
678
+ padding: 2rem 1rem;
679
+ font-size: 1rem; } }
680
+ .main-content img {
681
+ max-width: 100%; }
682
+ .main-content h1,
683
+ .main-content h2,
684
+ .main-content h3,
685
+ .main-content h4,
686
+ .main-content h5,
687
+ .main-content h6 {
688
+ margin-top: 2rem;
689
+ margin-bottom: 1rem;
690
+ font-weight: normal;
691
+ color: #159957; }
692
+ .main-content p {
693
+ margin-bottom: 1em; }
694
+ .main-content code {
695
+ padding: 2px 4px;
696
+ font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
697
+ font-size: 0.9rem;
698
+ color: #567482;
699
+ background-color: #f3f6fa;
700
+ border-radius: 0.3rem; }
701
+ .main-content pre {
702
+ padding: 0.8rem;
703
+ margin-top: 0;
704
+ margin-bottom: 1rem;
705
+ font: 1rem Consolas, "Liberation Mono", Menlo, Courier, monospace;
706
+ color: #567482;
707
+ word-wrap: normal;
708
+ background-color: #f3f6fa;
709
+ border: solid 1px #dce6f0;
710
+ border-radius: 0.3rem; }
711
+ .main-content pre > code {
712
+ padding: 0;
713
+ margin: 0;
714
+ font-size: 0.9rem;
715
+ color: #567482;
716
+ word-break: normal;
717
+ white-space: pre;
718
+ background: transparent;
719
+ border: 0; }
720
+ .main-content .highlight {
721
+ margin-bottom: 1rem; }
722
+ .main-content .highlight pre {
723
+ margin-bottom: 0;
724
+ word-break: normal; }
725
+ .main-content .highlight pre,
726
+ .main-content pre {
727
+ padding: 0.8rem;
728
+ overflow: auto;
729
+ font-size: 0.9rem;
730
+ line-height: 1.45;
731
+ border-radius: 0.3rem;
732
+ -webkit-overflow-scrolling: touch; }
733
+ .main-content pre code,
734
+ .main-content pre tt {
735
+ display: inline;
736
+ max-width: initial;
737
+ padding: 0;
738
+ margin: 0;
739
+ overflow: initial;
740
+ line-height: inherit;
741
+ word-wrap: normal;
742
+ background-color: transparent;
743
+ border: 0; }
744
+ .main-content pre code:before, .main-content pre code:after,
745
+ .main-content pre tt:before,
746
+ .main-content pre tt:after {
747
+ content: normal; }
748
+ .main-content ul,
749
+ .main-content ol {
750
+ margin-top: 0; }
751
+ .main-content blockquote {
752
+ padding: 0 1rem;
753
+ margin-left: 0;
754
+ color: #819198;
755
+ border-left: 0.3rem solid #dce6f0; }
756
+ .main-content blockquote > :first-child {
757
+ margin-top: 0; }
758
+ .main-content blockquote > :last-child {
759
+ margin-bottom: 0; }
760
+ .main-content table {
761
+ display: block;
762
+ width: 100%;
763
+ overflow: auto;
764
+ word-break: normal;
765
+ word-break: keep-all;
766
+ -webkit-overflow-scrolling: touch; }
767
+ .main-content table th {
768
+ font-weight: bold; }
769
+ .main-content table th,
770
+ .main-content table td {
771
+ padding: 0.5rem 1rem;
772
+ border: 1px solid #e9ebec; }
773
+ .main-content dl {
774
+ padding: 0; }
775
+ .main-content dl dt {
776
+ padding: 0;
777
+ margin-top: 1rem;
778
+ font-size: 1rem;
779
+ font-weight: bold; }
780
+ .main-content dl dd {
781
+ padding: 0;
782
+ margin-bottom: 1rem; }
783
+ .main-content hr {
784
+ height: 2px;
785
+ padding: 0;
786
+ margin: 1rem 0;
787
+ background-color: #eff0f1;
788
+ border: 0; }
789
+
790
+ .site-footer {
791
+ padding-top: 2rem;
792
+ margin-top: 2rem;
793
+ border-top: solid 1px #eff0f1; }
794
+ @media screen and (min-width: 64em) {
795
+ .site-footer {
796
+ font-size: 1rem; } }
797
+ @media screen and (min-width: 42em) and (max-width: 64em) {
798
+ .site-footer {
799
+ font-size: 1rem; } }
800
+ @media screen and (max-width: 42em) {
801
+ .site-footer {
802
+ font-size: 0.9rem; } }
803
+
804
+ .site-footer-owner {
805
+ display: block;
806
+ font-weight: bold; }
807
+
808
+ .site-footer-credits {
809
+ color: #819198; }