geo_pattern 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (132) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +58 -0
  3. data/.simplecov +25 -0
  4. data/.travis.yml +12 -0
  5. data/Gemfile +3 -1
  6. data/README.md +125 -23
  7. data/Rakefile +72 -9
  8. data/fixtures/generated_patterns/chevrons.svg +1 -0
  9. data/fixtures/generated_patterns/concentric_circles.svg +1 -0
  10. data/fixtures/generated_patterns/diamonds.svg +1 -0
  11. data/fixtures/generated_patterns/diamonds_with_base_color.svg +1 -0
  12. data/fixtures/generated_patterns/diamonds_with_color.svg +1 -0
  13. data/fixtures/generated_patterns/hexagons.svg +1 -0
  14. data/fixtures/generated_patterns/mosaic_squares.svg +1 -0
  15. data/fixtures/generated_patterns/nested_squares.svg +1 -0
  16. data/fixtures/generated_patterns/octagons.svg +1 -0
  17. data/fixtures/generated_patterns/overlapping_circles.svg +1 -0
  18. data/fixtures/generated_patterns/overlapping_rings.svg +1 -0
  19. data/fixtures/generated_patterns/plaid.svg +1 -0
  20. data/fixtures/generated_patterns/plus_signs.svg +1 -0
  21. data/fixtures/generated_patterns/sine_waves.svg +1 -0
  22. data/fixtures/generated_patterns/squares.svg +1 -0
  23. data/fixtures/generated_patterns/tessellation.svg +1 -0
  24. data/fixtures/generated_patterns/triangles.svg +1 -0
  25. data/fixtures/generated_patterns/xes.svg +1 -0
  26. data/geo_pattern.gemspec +8 -2
  27. data/lib/geo_pattern.rb +42 -20
  28. data/lib/geo_pattern/background.rb +25 -0
  29. data/lib/geo_pattern/background_generators/solid_generator.rb +52 -0
  30. data/lib/geo_pattern/color.rb +25 -0
  31. data/lib/geo_pattern/color_generators/base_color_generator.rb +55 -0
  32. data/lib/geo_pattern/color_generators/simple_generator.rb +27 -0
  33. data/lib/geo_pattern/color_preset.rb +26 -0
  34. data/lib/geo_pattern/errors.rb +7 -0
  35. data/lib/geo_pattern/geo_pattern_task.rb +59 -0
  36. data/lib/geo_pattern/helpers.rb +47 -0
  37. data/lib/geo_pattern/pattern.rb +84 -0
  38. data/lib/geo_pattern/pattern_generator.rb +33 -82
  39. data/lib/geo_pattern/pattern_helpers.rb +31 -2
  40. data/lib/geo_pattern/pattern_preset.rb +23 -0
  41. data/lib/geo_pattern/pattern_sieve.rb +36 -0
  42. data/lib/geo_pattern/pattern_store.rb +63 -0
  43. data/lib/geo_pattern/pattern_validator.rb +27 -0
  44. data/lib/geo_pattern/rake_task.rb +109 -0
  45. data/lib/geo_pattern/roles/comparable_metadata.rb +35 -0
  46. data/lib/geo_pattern/roles/named_generator.rb +13 -0
  47. data/lib/geo_pattern/seed.rb +21 -0
  48. data/lib/geo_pattern/structure.rb +25 -0
  49. data/lib/geo_pattern/structure_generators/base_generator.rb +85 -0
  50. data/lib/geo_pattern/structure_generators/chevrons_generator.rb +55 -0
  51. data/lib/geo_pattern/structure_generators/concentric_circles_generator.rb +56 -0
  52. data/lib/geo_pattern/structure_generators/diamonds_generator.rb +66 -0
  53. data/lib/geo_pattern/structure_generators/hexagons_generator.rb +67 -0
  54. data/lib/geo_pattern/structure_generators/mosaic_squares_generator.rb +85 -0
  55. data/lib/geo_pattern/structure_generators/nested_squares_generator.rb +60 -0
  56. data/lib/geo_pattern/structure_generators/octagons_generator.rb +44 -0
  57. data/lib/geo_pattern/structure_generators/overlapping_circles_generator.rb +55 -0
  58. data/lib/geo_pattern/structure_generators/overlapping_rings_generator.rb +55 -0
  59. data/lib/geo_pattern/structure_generators/plaid_generator.rb +55 -0
  60. data/lib/geo_pattern/structure_generators/plus_signs_generator.rb +62 -0
  61. data/lib/geo_pattern/structure_generators/sine_waves_generator.rb +43 -0
  62. data/lib/geo_pattern/structure_generators/squares_generator.rb +36 -0
  63. data/lib/geo_pattern/structure_generators/tessellation_generator.rb +103 -0
  64. data/lib/geo_pattern/structure_generators/triangles_generator.rb +61 -0
  65. data/lib/geo_pattern/structure_generators/xes_generator.rb +67 -0
  66. data/lib/geo_pattern/svg_image.rb +101 -0
  67. data/lib/geo_pattern/version.rb +1 -1
  68. data/script/bootstrap +30 -0
  69. data/script/console +8 -0
  70. data/script/test +21 -0
  71. data/spec/background_generators/solid_generator_spec.rb +50 -0
  72. data/spec/background_spec.rb +25 -0
  73. data/spec/color_generators/base_color_generator_spec.rb +31 -0
  74. data/spec/color_generators/simple_generator_spec.rb +12 -0
  75. data/spec/color_preset_spec.rb +53 -0
  76. data/spec/color_spec.rb +15 -0
  77. data/spec/geo_pattern_spec.rb +95 -24
  78. data/spec/helpers_spec.rb +65 -0
  79. data/spec/pattern_preset_spec.rb +41 -0
  80. data/spec/pattern_sieve_spec.rb +66 -0
  81. data/spec/pattern_spec.rb +72 -0
  82. data/spec/pattern_store_spec.rb +47 -0
  83. data/spec/pattern_validator_spec.rb +28 -0
  84. data/spec/seed_spec.rb +14 -0
  85. data/spec/spec_helper.rb +1 -6
  86. data/spec/structure_generators/chevrons_generator_spec.rb +5 -0
  87. data/spec/structure_generators/concentric_circles_generator_spec.rb +5 -0
  88. data/spec/structure_generators/diamonds_generator_spec.rb +5 -0
  89. data/spec/structure_generators/hexagons_generator_spec.rb +5 -0
  90. data/spec/structure_generators/mosaic_squares_generator_spec.rb +5 -0
  91. data/spec/structure_generators/nested_squares_generator_spec.rb +5 -0
  92. data/spec/structure_generators/octagons_generator_spec.rb +5 -0
  93. data/spec/structure_generators/overlapping_circles_generator_spec.rb +5 -0
  94. data/spec/structure_generators/overlapping_rings_generator_spec.rb +5 -0
  95. data/spec/structure_generators/plaid_generator_spec.rb +5 -0
  96. data/spec/structure_generators/plus_signs_generator_spec.rb +5 -0
  97. data/spec/structure_generators/sine_waves_generator_spec.rb +5 -0
  98. data/spec/structure_generators/squares_generator_spec.rb +5 -0
  99. data/spec/structure_generators/tessellation_generator_spec.rb +5 -0
  100. data/spec/structure_generators/triangles_generator_spec.rb +5 -0
  101. data/spec/structure_generators/xes_generator_spec.rb +5 -0
  102. data/spec/structure_spec.rb +38 -0
  103. data/spec/support/helpers/fixtures.rb +12 -0
  104. data/spec/support/kernel.rb +40 -0
  105. data/spec/support/matchers/image.rb +17 -0
  106. data/spec/support/matchers/name.rb +15 -0
  107. data/spec/support/rspec.rb +1 -1
  108. data/spec/support/shared_examples/generator.rb +46 -0
  109. data/spec/support/shared_examples/pattern.rb +31 -0
  110. data/spec/support/shared_examples/pattern_name.rb +7 -0
  111. data/spec/support/shared_examples/structure.rb +48 -0
  112. data/spec/svg_spec.rb +3 -3
  113. metadata +141 -25
  114. data/lib/geo_pattern/pattern/base_pattern.rb +0 -47
  115. data/lib/geo_pattern/pattern/chevron_pattern.rb +0 -45
  116. data/lib/geo_pattern/pattern/concentric_circles_pattern.rb +0 -47
  117. data/lib/geo_pattern/pattern/diamond_pattern.rb +0 -56
  118. data/lib/geo_pattern/pattern/hexagon_pattern.rb +0 -57
  119. data/lib/geo_pattern/pattern/mosaic_squares_pattern.rb +0 -76
  120. data/lib/geo_pattern/pattern/nested_squares_pattern.rb +0 -51
  121. data/lib/geo_pattern/pattern/octagon_pattern.rb +0 -35
  122. data/lib/geo_pattern/pattern/overlapping_circles_pattern.rb +0 -46
  123. data/lib/geo_pattern/pattern/overlapping_rings_pattern.rb +0 -46
  124. data/lib/geo_pattern/pattern/plaid_pattern.rb +0 -49
  125. data/lib/geo_pattern/pattern/plus_sign_pattern.rb +0 -53
  126. data/lib/geo_pattern/pattern/sine_wave_pattern.rb +0 -36
  127. data/lib/geo_pattern/pattern/square_pattern.rb +0 -27
  128. data/lib/geo_pattern/pattern/tessellation_pattern.rb +0 -93
  129. data/lib/geo_pattern/pattern/triangle_pattern.rb +0 -51
  130. data/lib/geo_pattern/pattern/xes_pattern.rb +0 -58
  131. data/lib/geo_pattern/svg.rb +0 -77
  132. data/spec/support/helpers.rb +0 -34
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 81c3c62556904d41859cbdc5f24b309d27643d61
4
- data.tar.gz: 13208f9b302c0294458d5c6d33ed41c5ea6bddf2
3
+ metadata.gz: 505b039dc31f17e65a619928b123b061077629ad
4
+ data.tar.gz: 549237f81df720c5ef2a9a2767b4d7be0ee3a96f
5
5
  SHA512:
6
- metadata.gz: 429e50e9f25823d253761aae3b9fedf5a113271bd1cbeb495a32b4f7d828af56a7c9a8308553e85e50f93266d3e2c19f90fb93a72504c096d029aec6c962f3d2
7
- data.tar.gz: 77b6992af30dba44823e148850fa32e7de5b0b04454c091818d4ce99714a8bb4e07b89f148d47ae06903389472063b23e0b94b455e6cca194991c6a44dbc3eb9
6
+ metadata.gz: 982753d4976ffe9aeef807a814aecc5e4a8a64f972228a05eef69dde285c4ec42d9b8dd328f5b0fbd5dbe6218fdad26a6956b729f443b21cb9fa54ea8628a3bc
7
+ data.tar.gz: 185373a809c450c8427928f72e0c4d4941b1c3182d78ddac129f797a5e67477ab66bfcd232c03358ee996e0c98efd1e578402de00d570dca58f0c968829ed6c4
@@ -1,6 +1,7 @@
1
1
  AllCops:
2
2
  Exclude:
3
3
  - 'tmp/**/*'
4
+ DisplayCopNames: true
4
5
 
5
6
  # Configuration parameters: MaxSlashes.
6
7
  Style/RegexpLiteral:
@@ -11,3 +12,60 @@ Metrics/AbcSize:
11
12
 
12
13
  Lint/Debugger:
13
14
  Enabled: false
15
+
16
+ # Offense count: 1
17
+ # Configuration parameters: AllowSafeAssignment.
18
+ Lint/AssignmentInCondition:
19
+ Enabled: false
20
+
21
+ # Offense count: 2
22
+ Lint/Eval:
23
+ Enabled: false
24
+
25
+ # Offense count: 6
26
+ Metrics/BlockNesting:
27
+ Max: 4
28
+
29
+ # Offense count: 8
30
+ Metrics/CyclomaticComplexity:
31
+ Max: 22
32
+
33
+ # Offense count: 155
34
+ # Configuration parameters: AllowURI, URISchemes.
35
+ Metrics/LineLength:
36
+ Max: 406
37
+
38
+ # Offense count: 24
39
+ # Configuration parameters: CountComments.
40
+ Metrics/MethodLength:
41
+ Max: 78
42
+
43
+ # Offense count: 6
44
+ Metrics/PerceivedComplexity:
45
+ Max: 10
46
+
47
+ # Offense count: 2
48
+ Style/AccessorMethodName:
49
+ Enabled: false
50
+
51
+ # Offense count: 36
52
+ Style/Documentation:
53
+ Enabled: false
54
+
55
+ # Offense count: 1
56
+ Style/EmptyElse:
57
+ Enabled: false
58
+
59
+ # Offense count: 10
60
+ Style/EvenOdd:
61
+ Enabled: false
62
+
63
+ # Offense count: 28
64
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
65
+ Style/For:
66
+ Enabled: false
67
+
68
+ # Offense count: 3
69
+ # Configuration parameters: MaxLineLength.
70
+ Style/IfUnlessModifier:
71
+ Enabled: false
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ class ExcludeRegexFilter < SimpleCov::Filter
4
+ def matches?(source_file)
5
+ source_file.filename !~ filter_argument
6
+ end
7
+ end
8
+
9
+ class IncludeRegexFilter < SimpleCov::Filter
10
+ def matches?(source_file)
11
+ source_file.filename =~ filter_argument
12
+ end
13
+ end
14
+
15
+ SimpleCov.start do
16
+ add_filter "/features/"
17
+ add_filter "/fixtures/"
18
+ add_filter "/spec/"
19
+ add_filter "/tmp"
20
+ add_filter "/vendor"
21
+
22
+ generator_filter = %r{/background_generators/|/structure_generators/}
23
+ add_group "lib", ExcludeRegexFilter.new(generator_filter)
24
+ add_group "generators", IncludeRegexFilter.new(generator_filter)
25
+ end
@@ -0,0 +1,12 @@
1
+ sudo: false
2
+ env:
3
+ - CI=1
4
+ language: ruby
5
+ bundler_args: --without debug
6
+ rvm:
7
+ - 2.0.0
8
+ - 2.1.5
9
+ - 2.2.0
10
+ install: script/bootstrap
11
+ script: script/test
12
+ cache: bundler
data/Gemfile CHANGED
@@ -13,8 +13,10 @@ group :development, :test do
13
13
  gem 'inch'
14
14
  gem 'activesupport'
15
15
  gem 'pry'
16
+ gem 'pry-rescue'
17
+ gem 'pry-stack_explorer'
16
18
 
17
- if RUBY_VERSION >= "2"
19
+ if RUBY_VERSION >= '2'
18
20
  gem 'byebug'
19
21
  gem 'pry-byebug'
20
22
  else
data/README.md CHANGED
@@ -1,13 +1,24 @@
1
1
  [![](http://img.shields.io/gem/v/geo_pattern.svg?style=flat)](http://rubygems.org/gems/geo_pattern)
2
+ [![](https://img.shields.io/travis/jasonlong/geo_pattern.svg?style=flat)](https://travis-ci.org/jasonlong/geo_pattern)
2
3
  [![](http://img.shields.io/gem/dt/geo_pattern.svg?style=flat)](http://rubygems.org/gems/geo_pattern)
3
4
 
4
5
  # GeoPattern
5
6
 
6
- Generate beautiful tiling SVG patterns from a string. The string is converted into a SHA and a color and pattern are determined based on the values in the hash. The color is determined by shifting the hue and saturation from a default (or passed in) base color. One of 16 patterns is used (or you can specify one) and the sizing of the pattern elements is also determined by the hash values.
7
+ Generate beautiful tiling SVG patterns from a string. The string is converted
8
+ into a SHA and a color and pattern are determined based on the values in the
9
+ hash. The color is determined by shifting the hue and saturation from a default
10
+ (or passed in) base color. One of 16 patterns is used (or you can specify one)
11
+ and the sizing of the pattern elements is also determined by the hash values.
7
12
 
8
- You can use the generated pattern as the `background-image` for a container. Using the `base64` representation of the pattern still results in SVG rendering, so it looks great on retina displays.
13
+ You can use the generated pattern as the `background-image` for a container.
14
+ Using the `base64` representation of the pattern still results in SVG
15
+ rendering, so it looks great on retina displays.
9
16
 
10
- See the [GitHub Guides](http://guides.github.com) site and the [Explore section of GitHub](https://github.com/explore) are examples of this library in action. Brandon Mills has put together an awesome [live preview page](http://btmills.github.io/geopattern/geopattern.html) that's built on his Javascript port.
17
+ See the [GitHub Guides](http://guides.github.com) site and the [Explore section
18
+ of GitHub](https://github.com/explore) are examples of this library in action.
19
+ Brandon Mills has put together an awesome [live preview
20
+ page](http://btmills.github.io/geopattern/geopattern.html) that's built on his
21
+ Javascript port.
11
22
 
12
23
  ## Installation
13
24
 
@@ -46,93 +57,175 @@ pattern = GeoPattern.generate('Mastering Markdown', color: '#fc0')
46
57
  To use a specific [pattern generator](#available-patterns):
47
58
 
48
59
  ```ruby
49
- pattern = GeoPattern.generate('Mastering Markdown', generator: GeoPattern::SineWavePattern)
60
+ pattern = GeoPattern.generate('Mastering Markdown', patterns: :sine_waves)
61
+ ```
62
+
63
+ To use a subset of the [available patterns](#available-patterns):
64
+
65
+ ```ruby
66
+ pattern = GeoPattern.generate('Mastering Markdown', patterns: [:sine_waves, :xes])
50
67
  ```
51
68
 
52
69
  Get the SVG string:
53
70
 
54
71
  ```ruby
55
- puts pattern.svg_string
72
+ puts pattern.to_svg
56
73
  # => <svg xmlns="http://www.w3.org/2000/svg" ...
57
74
  ```
58
75
 
59
76
  Get the Base64 encoded string:
60
77
 
61
78
  ```ruby
62
- puts pattern.base64_string
79
+ puts pattern.to_base64
63
80
  # => PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC...
64
81
  ```
65
82
 
66
83
  You can then use this string to set the background:
67
84
 
68
85
  ```html
69
- <div style="background-image: <%= pattern.uri_image %>"></div>
86
+ <div style="background-image: <%= pattern.to_data_uri %>"></div>
70
87
  ```
71
88
 
72
89
  ## Available patterns
73
90
 
74
- *Note: As of version `1.3.0`, string references (e.g. `overlapping_circles`) are deprecated in favor of class references (e.g. `GeoPattern::OverlappingCirclesPattern`).*
91
+ *Note: As of version `1.3.0`, string references (e.g. `overlapping_circles`)
92
+ are deprecated in favor of symbol references (e.g. `:overlapping_circles`).*
93
+
94
+ ### :chevrons
95
+
96
+ ![](http://jasonlong.github.io/geo_pattern/examples/chevrons.png)
75
97
 
76
- ### GeoPattern::OctagonPattern
98
+
99
+ ### :octagons
77
100
 
78
101
  ![](http://jasonlong.github.io/geo_pattern/examples/octogons.png)
79
102
 
80
- ### GeoPattern::OverlappingCirclesPattern
103
+ ### :overlapping_circles
81
104
 
82
105
  ![](http://jasonlong.github.io/geo_pattern/examples/overlapping_circles.png)
83
106
 
84
- ### GeoPattern::PlusSignPattern
107
+ ### :plus_signs
85
108
 
86
109
  ![](http://jasonlong.github.io/geo_pattern/examples/plus_signs.png)
87
110
 
88
- ### GeoPattern::XesPattern
111
+ ### :xes
89
112
 
90
113
  ![](http://jasonlong.github.io/geo_pattern/examples/xes.png)
91
114
 
92
- ### GeoPattern::SineWavePattern
115
+ ### :sine_waves
93
116
 
94
117
  ![](http://jasonlong.github.io/geo_pattern/examples/sine_waves.png)
95
118
 
96
- ### GeoPattern::HexagonPattern
119
+ ### :hexagons
97
120
 
98
121
  ![](http://jasonlong.github.io/geo_pattern/examples/hexagons.png)
99
122
 
100
- ### GeoPattern::OverlappingCirclesPattern
123
+ ### :overlapping_rings
101
124
 
102
125
  ![](http://jasonlong.github.io/geo_pattern/examples/overlapping_rings.png)
103
126
 
104
- ### GeoPattern::PlaidPattern
127
+ ### :plaid
105
128
 
106
129
  ![](http://jasonlong.github.io/geo_pattern/examples/plaid.png)
107
130
 
108
- ### GeoPattern::TrianglePattern
131
+ ### :triangles
109
132
 
110
133
  ![](http://jasonlong.github.io/geo_pattern/examples/triangles.png)
111
134
 
112
- ### GeoPattern::SquarePattern
135
+ ### :squares
113
136
 
114
137
  ![](http://jasonlong.github.io/geo_pattern/examples/squares.png)
115
138
 
116
- ### GeoPattern::NestedSquaresPattern
139
+ ### :nested_squares
117
140
 
118
141
  ![](http://jasonlong.github.io/geo_pattern/examples/nested_squares.png)
119
142
 
120
- ### GeoPattern::MosaicSquaresPattern
143
+ ### :mosaic_squares
121
144
 
122
145
  ![](http://jasonlong.github.io/geo_pattern/examples/mosaic_squares.png)
123
146
 
124
- ### GeoPattern::ConcentricCirclesPattern
147
+ ### :concentric_circles
125
148
 
126
149
  ![](http://jasonlong.github.io/geo_pattern/examples/concentric_circles.png)
127
150
 
128
- ### GeoPattern::DiamondPattern
151
+ ### :diamonds
129
152
 
130
153
  ![](http://jasonlong.github.io/geo_pattern/examples/diamonds.png)
131
154
 
132
- ### GeoPattern::TessellationPattern
155
+ ### :tessellation
133
156
 
134
157
  ![](http://jasonlong.github.io/geo_pattern/examples/tessellation.png)
135
158
 
159
+ ### GeoPattern::ChevronPattern
160
+
161
+ ![](http://jasonlong.github.io/geo_pattern/examples/chevrons.png)
162
+
163
+
164
+ ## Inspection of pattern
165
+
166
+ If you want to get some more information about a pattern, please use the
167
+ following methods.
168
+
169
+ ```ruby
170
+ pattern = GeoPattern.generate('Mastering Markdown', patterns: [:sine_waves, :xes])
171
+
172
+ # The color of the background in html notation
173
+ pattern.background.color.to_html
174
+
175
+ # The color of the background in svg notation
176
+ pattern.background.color.to_svg
177
+
178
+
179
+ # The input colors
180
+ pattern.background.preset.color
181
+ pattern.background.preset.base_color
182
+
183
+ # The generator
184
+ pattern.background.generator
185
+ ```
186
+
187
+ To get more information about the structure of the pattern, please use the following methods:
188
+
189
+ ```ruby
190
+ pattern = GeoPattern.generate('Mastering Markdown', patterns: [:sine_waves, :xes])
191
+
192
+ # The name of the structure
193
+ pattern.structure.name
194
+
195
+ # The generator of the structure
196
+ pattern.structure.generator
197
+ ```
198
+
199
+ ## Rake Support
200
+
201
+ ```ruby
202
+ string = 'Mastering markdown'
203
+
204
+ require 'geo_pattern/geo_pattern_task'
205
+
206
+ GeoPattern::GeoPatternTask.new(
207
+ name: 'generate',
208
+ description: 'Generate patterns to make them available as fixtures',
209
+ data: {
210
+ 'fixtures/generated_patterns/diamonds_with_color.svg' => { input: string, patterns: [:diamonds], color: '#00ff00' },
211
+ 'fixtures/generated_patterns/diamonds_with_base_color.svg' => { input: string, patterns: [:diamonds], base_color: '#00ff00' }
212
+ }
213
+ )
214
+ ```
215
+
216
+ ## Developing
217
+
218
+ ### Generate Fixtures
219
+
220
+ ```ruby
221
+ rake fixtures:generate
222
+ ```
223
+
224
+ ### Run tests
225
+
226
+ ```ruby
227
+ rake test
228
+ ```
136
229
 
137
230
  ## Contributing
138
231
 
@@ -142,6 +235,15 @@ You can then use this string to set the background:
142
235
  4. Push to the branch (`git push origin my-new-feature`)
143
236
  5. Create new Pull Request
144
237
 
238
+ ## Development
239
+
240
+ Prefix rspec-commandline with `RSPEC_PROFILE=1` to output the ten slowest
241
+ examples of the test suite.
242
+
243
+ ```bash
244
+ RSPEC_PROFILE=1 bundle exec rspec
245
+ ```
246
+
145
247
  ## Ports
146
248
 
147
249
  JavaScript port by Brandon Mills:
data/Rakefile CHANGED
@@ -1,23 +1,86 @@
1
- require 'rubocop/rake_task'
2
- require 'inch/rake'
3
- require 'rspec/core/rake_task'
1
+ $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
4
2
 
5
3
  desc 'Default task running Tests'
6
4
  task default: :test
7
5
 
8
6
  desc 'Run test suite'
9
- task test: 'test:rspec'
10
- # task test: %w(test:rspec test:rubocop)
11
-
7
+ task test: ['test:rubocop', 'test:rspec']
8
+ task 'test:ci' => ['bootstrap:gem_requirements', :test]
12
9
  namespace :test do
10
+ task :rspec do
11
+ sh 'rspec'
12
+ end
13
13
 
14
- RSpec::Core::RakeTask.new(:rspec)
14
+ task :rubocop do
15
+ sh 'rubocop'
16
+ end
15
17
 
16
- RuboCop::RakeTask.new
18
+ task 'rubocop:autocorrect' do
19
+ sh 'rubocop --auto-correct'
20
+ end
17
21
 
18
- Inch::Rake::Suggest.new
22
+ task 'inch' do
23
+ sh 'inch'
24
+ end
19
25
  end
20
26
 
21
27
  namespace :gem do
22
28
  require 'bundler/gem_tasks'
23
29
  end
30
+
31
+ unless ENV.key?('CI')
32
+ require 'geo_pattern/geo_pattern_task'
33
+
34
+ namespace :fixtures do
35
+ string = 'Mastering Markdown'
36
+
37
+ GeoPattern::GeoPatternTask.new(
38
+ name: 'generate',
39
+ description: 'Generate patterns to make them available as fixtures',
40
+ data: {
41
+ 'fixtures/generated_patterns/chevrons.svg' => { input: string, patterns: [:chevrons] },
42
+ 'fixtures/generated_patterns/concentric_circles.svg' => { input: string, patterns: [:concentric_circles] },
43
+ 'fixtures/generated_patterns/diamonds.svg' => { input: string, patterns: [:diamonds] },
44
+ 'fixtures/generated_patterns/hexagons.svg' => { input: string, patterns: [:hexagons] },
45
+ 'fixtures/generated_patterns/mosaic_squares.svg' => { input: string, patterns: [:mosaic_squares] },
46
+ 'fixtures/generated_patterns/nested_squares.svg' => { input: string, patterns: [:nested_squares] },
47
+ 'fixtures/generated_patterns/octagons.svg' => { input: string, patterns: [:octagons] },
48
+ 'fixtures/generated_patterns/overlapping_circles.svg' => { input: string, patterns: [:overlapping_circles] },
49
+ 'fixtures/generated_patterns/overlapping_rings.svg' => { input: string, patterns: [:overlapping_rings] },
50
+ 'fixtures/generated_patterns/plaid.svg' => { input: string, patterns: [:plaid] },
51
+ 'fixtures/generated_patterns/plus_signs.svg' => { input: string, patterns: [:plus_signs] },
52
+ 'fixtures/generated_patterns/sine_waves.svg' => { input: string, patterns: [:sine_waves] },
53
+ 'fixtures/generated_patterns/squares.svg' => { input: string, patterns: [:squares] },
54
+ 'fixtures/generated_patterns/tessellation.svg' => { input: string, patterns: [:tessellation] },
55
+ 'fixtures/generated_patterns/triangles.svg' => { input: string, patterns: [:triangles] },
56
+ 'fixtures/generated_patterns/xes.svg' => { input: string, patterns: [:xes] },
57
+ 'fixtures/generated_patterns/diamonds_with_color.svg' => { input: string, patterns: [:diamonds], color: '#00ff00' },
58
+ 'fixtures/generated_patterns/diamonds_with_base_color.svg' => { input: string, patterns: [:diamonds], base_color: '#00ff00' }
59
+ }
60
+ )
61
+ end
62
+ end
63
+
64
+ desc 'Bootstrap project'
65
+ task bootstrap: %w(bootstrap:bundler)
66
+
67
+ desc 'Bootstrap project for ci'
68
+ task 'bootstrap:ci' do
69
+ Rake::Task['bootstrap'].invoke
70
+ end
71
+
72
+ namespace :bootstrap do
73
+ desc 'Bootstrap bundler'
74
+ task :bundler do |t|
75
+ puts t.comment
76
+ sh 'gem install bundler'
77
+ sh 'bundle install'
78
+ end
79
+
80
+ desc 'Require gems'
81
+ task :gem_requirements do |t|
82
+ puts t.comment
83
+ require 'bundler'
84
+ Bundler.require
85
+ end
86
+ end