geo_pattern 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ruby.yml +30 -0
  3. data/.gitignore +1 -0
  4. data/.simplecov +1 -0
  5. data/Gemfile +17 -19
  6. data/README.md +35 -12
  7. data/Rakefile +45 -49
  8. data/geo_pattern.gemspec +18 -22
  9. data/lib/geo_pattern/background.rb +9 -7
  10. data/lib/geo_pattern/background_generators/solid_generator.rb +4 -2
  11. data/lib/geo_pattern/color.rb +3 -1
  12. data/lib/geo_pattern/color_generators/base_color_generator.rb +12 -10
  13. data/lib/geo_pattern/color_generators/simple_generator.rb +2 -0
  14. data/lib/geo_pattern/color_preset.rb +7 -1
  15. data/lib/geo_pattern/errors.rb +2 -0
  16. data/lib/geo_pattern/geo_pattern_task.rb +11 -9
  17. data/lib/geo_pattern/helpers.rb +7 -5
  18. data/lib/geo_pattern/pattern.rb +6 -4
  19. data/lib/geo_pattern/pattern_generator.rb +14 -12
  20. data/lib/geo_pattern/pattern_helpers.rb +11 -8
  21. data/lib/geo_pattern/pattern_preset.rb +3 -1
  22. data/lib/geo_pattern/pattern_sieve.rb +5 -3
  23. data/lib/geo_pattern/pattern_store.rb +20 -18
  24. data/lib/geo_pattern/pattern_validator.rb +4 -2
  25. data/lib/geo_pattern/rake_task.rb +19 -16
  26. data/lib/geo_pattern/roles/comparable_metadata.rb +2 -0
  27. data/lib/geo_pattern/roles/named_generator.rb +3 -1
  28. data/lib/geo_pattern/seed.rb +2 -0
  29. data/lib/geo_pattern/structure.rb +9 -7
  30. data/lib/geo_pattern/structure_generators/base_generator.rb +17 -14
  31. data/lib/geo_pattern/structure_generators/chevrons_generator.rb +19 -17
  32. data/lib/geo_pattern/structure_generators/concentric_circles_generator.rb +19 -17
  33. data/lib/geo_pattern/structure_generators/diamonds_generator.rb +23 -17
  34. data/lib/geo_pattern/structure_generators/hexagons_generator.rb +25 -23
  35. data/lib/geo_pattern/structure_generators/mosaic_squares_generator.rb +35 -35
  36. data/lib/geo_pattern/structure_generators/nested_squares_generator.rb +23 -21
  37. data/lib/geo_pattern/structure_generators/octagons_generator.rb +12 -11
  38. data/lib/geo_pattern/structure_generators/overlapping_circles_generator.rb +13 -11
  39. data/lib/geo_pattern/structure_generators/overlapping_rings_generator.rb +15 -13
  40. data/lib/geo_pattern/structure_generators/plaid_generator.rb +18 -18
  41. data/lib/geo_pattern/structure_generators/plus_signs_generator.rb +24 -18
  42. data/lib/geo_pattern/structure_generators/sine_waves_generator.rb +17 -15
  43. data/lib/geo_pattern/structure_generators/squares_generator.rb +10 -9
  44. data/lib/geo_pattern/structure_generators/tessellation_generator.rb +36 -34
  45. data/lib/geo_pattern/structure_generators/triangles_generator.rb +22 -19
  46. data/lib/geo_pattern/structure_generators/xes_generator.rb +26 -19
  47. data/lib/geo_pattern/svg_image.rb +10 -8
  48. data/lib/geo_pattern/version.rb +3 -1
  49. data/lib/geo_pattern.rb +53 -51
  50. data/script/console +4 -3
  51. data/spec/background_generators/solid_generator_spec.rb +16 -14
  52. data/spec/background_spec.rb +13 -11
  53. data/spec/color_generators/base_color_generator_spec.rb +10 -8
  54. data/spec/color_generators/simple_generator_spec.rb +5 -3
  55. data/spec/color_preset_spec.rb +17 -15
  56. data/spec/color_spec.rb +8 -6
  57. data/spec/geo_pattern_spec.rb +59 -58
  58. data/spec/helpers_spec.rb +30 -28
  59. data/spec/pattern_preset_spec.rb +15 -13
  60. data/spec/pattern_sieve_spec.rb +13 -11
  61. data/spec/pattern_spec.rb +20 -18
  62. data/spec/pattern_store_spec.rb +21 -19
  63. data/spec/pattern_validator_spec.rb +11 -9
  64. data/spec/seed_spec.rb +6 -4
  65. data/spec/spec_helper.rb +9 -8
  66. data/spec/structure_generators/chevrons_generator_spec.rb +4 -2
  67. data/spec/structure_generators/concentric_circles_generator_spec.rb +4 -2
  68. data/spec/structure_generators/diamonds_generator_spec.rb +4 -2
  69. data/spec/structure_generators/hexagons_generator_spec.rb +4 -2
  70. data/spec/structure_generators/mosaic_squares_generator_spec.rb +4 -2
  71. data/spec/structure_generators/nested_squares_generator_spec.rb +4 -2
  72. data/spec/structure_generators/octagons_generator_spec.rb +4 -2
  73. data/spec/structure_generators/overlapping_circles_generator_spec.rb +4 -2
  74. data/spec/structure_generators/overlapping_rings_generator_spec.rb +4 -2
  75. data/spec/structure_generators/plaid_generator_spec.rb +4 -2
  76. data/spec/structure_generators/plus_signs_generator_spec.rb +4 -2
  77. data/spec/structure_generators/sine_waves_generator_spec.rb +4 -2
  78. data/spec/structure_generators/squares_generator_spec.rb +4 -2
  79. data/spec/structure_generators/tessellation_generator_spec.rb +4 -2
  80. data/spec/structure_generators/triangles_generator_spec.rb +4 -2
  81. data/spec/structure_generators/xes_generator_spec.rb +4 -2
  82. data/spec/structure_spec.rb +18 -16
  83. data/spec/support/aruba.rb +6 -6
  84. data/spec/support/helpers/fixtures.rb +3 -1
  85. data/spec/support/kernel.rb +8 -2
  86. data/spec/support/matchers/image.rb +4 -2
  87. data/spec/support/matchers/name.rb +3 -1
  88. data/spec/support/rspec.rb +4 -2
  89. data/spec/support/shared_examples/generator.rb +12 -10
  90. data/spec/support/shared_examples/pattern.rb +7 -5
  91. data/spec/support/shared_examples/pattern_name.rb +4 -2
  92. data/spec/support/shared_examples/structure.rb +12 -10
  93. data/spec/support/string.rb +3 -2
  94. data/spec/svg_spec.rb +5 -3
  95. metadata +11 -59
  96. data/.rubocop.yml +0 -71
  97. data/.travis.yml +0 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 505b039dc31f17e65a619928b123b061077629ad
4
- data.tar.gz: 549237f81df720c5ef2a9a2767b4d7be0ee3a96f
2
+ SHA256:
3
+ metadata.gz: 673c02d78cab6a2a0d4739661a9a4e93845fd6c3dafff82f36f36e15e759e032
4
+ data.tar.gz: da40879b6a7e41a039e00741d5b48e4be51a584f339bc84572bf5d47cb1b44cc
5
5
  SHA512:
6
- metadata.gz: 982753d4976ffe9aeef807a814aecc5e4a8a64f972228a05eef69dde285c4ec42d9b8dd328f5b0fbd5dbe6218fdad26a6956b729f443b21cb9fa54ea8628a3bc
7
- data.tar.gz: 185373a809c450c8427928f72e0c4d4941b1c3182d78ddac129f797a5e67477ab66bfcd232c03358ee996e0c98efd1e578402de00d570dca58f0c968829ed6c4
6
+ metadata.gz: 87e2bac49b72b2dbb068ab84abdbdbf6a2240fe13f6898de4be9fc72c40d1239654cee649718d8620598257bdaa1cc24366054ed4f320346ddf68b9b11c8a66b
7
+ data.tar.gz: f69912aeb10d51c3110edd472b8a02dee9653e2b3cb0b8127d817a45a9d878e7ade1b85922a3aaf0a8ef8568912e57661f84b050220171632665fe784b3420a5
@@ -0,0 +1,30 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ jobs:
10
+ test:
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
15
+ ruby: [2.6, 2.7, '3.0', 3.1, 3.2, head]
16
+
17
+ runs-on: ubuntu-latest
18
+
19
+ steps:
20
+ - uses: actions/checkout@v2
21
+
22
+ - name: Set up Ruby
23
+ uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: ${{ matrix.ruby }}
26
+ rubygems: latest
27
+ bundler-cache: true
28
+
29
+ - name: Run tests
30
+ run: bundle exec rake
data/.gitignore CHANGED
@@ -16,3 +16,4 @@ test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
18
  test.rb
19
+ .ruby-version
data/.simplecov CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  class ExcludeRegexFilter < SimpleCov::Filter
4
5
  def matches?(source_file)
data/Gemfile CHANGED
@@ -1,26 +1,24 @@
1
- source 'https://rubygems.org'
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
2
4
 
3
5
  # Specify your gem's dependencies in geopatterns.gemspec
4
6
  gemspec
5
7
 
6
8
  group :development, :test do
7
- gem 'rspec'
8
- gem 'aruba'
9
- gem 'rake'
10
- gem 'rubocop'
11
- gem 'simplecov'
12
- gem 'fuubar'
13
- gem 'inch'
14
- gem 'activesupport'
15
- gem 'pry'
16
- gem 'pry-rescue'
17
- gem 'pry-stack_explorer'
9
+ gem "activesupport", "~> 6"
10
+ gem "aruba"
11
+ gem "fuubar"
12
+ gem "inch"
13
+ gem "pry"
14
+ gem "pry-rescue"
15
+ gem "pry-stack_explorer"
16
+ gem "rake"
17
+ gem "rspec"
18
+ gem "standard"
19
+ gem "simplecov"
18
20
 
19
- if RUBY_VERSION >= '2'
20
- gem 'byebug'
21
- gem 'pry-byebug'
22
- else
23
- gem 'debugger'
24
- gem 'pry-debugger'
25
- end
21
+ gem "byebug"
22
+ gem "irb"
23
+ gem "pry-byebug"
26
24
  end
data/README.md CHANGED
@@ -1,6 +1,13 @@
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)
3
- [![](http://img.shields.io/gem/dt/geo_pattern.svg?style=flat)](http://rubygems.org/gems/geo_pattern)
1
+ ### This project is largely unmaintained now.
2
+
3
+ #### I'll happily accept PRs to keep things in working order, but I no longer plan to make updates.
4
+
5
+ ----
6
+
7
+ [![](https://img.shields.io/gem/v/geo_pattern.svg?style=flat)](http://rubygems.org/gems/geo_pattern)
8
+ ![Ruby](https://github.com/jasonlong/geo_pattern/workflows/Ruby/badge.svg)
9
+ [![](https://img.shields.io/gem/dt/geo_pattern.svg?style=flat)](http://rubygems.org/gems/geo_pattern)
10
+ [![Ruby Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://github.com/testdouble/standard)
4
11
 
5
12
  # GeoPattern
6
13
 
@@ -14,7 +21,7 @@ You can use the generated pattern as the `background-image` for a container.
14
21
  Using the `base64` representation of the pattern still results in SVG
15
22
  rendering, so it looks great on retina displays.
16
23
 
17
- See the [GitHub Guides](http://guides.github.com) site and the [Explore section
24
+ See the [GitHub Guides](https://guides.github.com/) site and the [Explore section
18
25
  of GitHub](https://github.com/explore) are examples of this library in action.
19
26
  Brandon Mills has put together an awesome [live preview
20
27
  page](http://btmills.github.io/geopattern/geopattern.html) that's built on his
@@ -22,6 +29,8 @@ Javascript port.
22
29
 
23
30
  ## Installation
24
31
 
32
+ **Note:** as of version `1.4.0`, Ruby version 2 or greater is required.
33
+
25
34
  Add this line to your application's Gemfile:
26
35
 
27
36
  gem 'geo_pattern'
@@ -156,10 +165,6 @@ are deprecated in favor of symbol references (e.g. `:overlapping_circles`).*
156
165
 
157
166
  ![](http://jasonlong.github.io/geo_pattern/examples/tessellation.png)
158
167
 
159
- ### GeoPattern::ChevronPattern
160
-
161
- ![](http://jasonlong.github.io/geo_pattern/examples/chevrons.png)
162
-
163
168
 
164
169
  ## Inspection of pattern
165
170
 
@@ -229,7 +234,7 @@ rake test
229
234
 
230
235
  ## Contributing
231
236
 
232
- 1. Fork it ( http://github.com/jasonlong/geo_pattern/fork )
237
+ 1. Fork it ( https://github.com/jasonlong/geo_pattern/fork )
233
238
  2. Create your feature branch (`git checkout -b my-new-feature`)
234
239
  3. Commit your changes (`git commit -am 'Add some feature'`)
235
240
  4. Push to the branch (`git push origin my-new-feature`)
@@ -244,19 +249,37 @@ examples of the test suite.
244
249
  RSPEC_PROFILE=1 bundle exec rspec
245
250
  ```
246
251
 
247
- ## Ports
252
+ ## Ports & related projects
248
253
 
249
254
  JavaScript port by Brandon Mills:
250
- https://github.com/btmills/geopatterns-js
255
+ https://github.com/btmills/geopattern
256
+
257
+ TypeScript port by MooYeol Lee:
258
+ https://github.com/mooyoul/geo-pattern
251
259
 
252
260
  Python port by Bryan Veloso:
253
261
  https://github.com/bryanveloso/geopatterns
254
262
 
263
+ Elixir port by Anne Johnson:
264
+ https://github.com/annejohnson/geo_pattern
265
+
255
266
  PHP port by Anand Capur:
256
267
  https://github.com/redeyeventures/geopattern-php
257
268
 
258
269
  Go port by Pravendra Singh:
259
- https://github.com/pravj/geo_pattern
270
+ https://github.com/pravj/geopattern
260
271
 
261
272
  CoffeeScript port by Aleks (muchweb):
262
273
  https://github.com/muchweb/geo-pattern-coffee
274
+
275
+ Cocoa port by Matt Faluotico:
276
+ https://github.com/mattfxyz/GeoPattern-Cocoa
277
+
278
+ Middleman extension by @maxmeyer:
279
+ https://github.com/fedux-org/middleman-geo_pattern
280
+
281
+ Dart(Flutter) port by @suyash:
282
+ https://github.com/suyash/geopattern
283
+
284
+ Lua port by Ivan Azoyan:
285
+ https://github.com/azoyan/geopattern
data/Rakefile CHANGED
@@ -1,86 +1,82 @@
1
- $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
2
 
3
- desc 'Default task running Tests'
3
+ $LOAD_PATH.unshift File.expand_path("lib", __dir__)
4
+
5
+ desc "Default task running Tests"
4
6
  task default: :test
5
7
 
6
- desc 'Run test suite'
7
- task test: ['test:rubocop', 'test:rspec']
8
- task 'test:ci' => ['bootstrap:gem_requirements', :test]
8
+ desc "Run test suite"
9
+ task test: ["test:standard", "test:rspec"]
10
+ task "test:ci" => ["bootstrap:gem_requirements", :test]
9
11
  namespace :test do
10
12
  task :rspec do
11
- sh 'rspec'
12
- end
13
-
14
- task :rubocop do
15
- sh 'rubocop'
13
+ sh "rspec"
16
14
  end
17
15
 
18
- task 'rubocop:autocorrect' do
19
- sh 'rubocop --auto-correct'
16
+ task "inch" do
17
+ sh "inch"
20
18
  end
21
19
 
22
- task 'inch' do
23
- sh 'inch'
24
- end
20
+ require "standard/rake"
25
21
  end
26
22
 
27
23
  namespace :gem do
28
- require 'bundler/gem_tasks'
24
+ require "bundler/gem_tasks"
29
25
  end
30
26
 
31
- unless ENV.key?('CI')
32
- require 'geo_pattern/geo_pattern_task'
27
+ unless ENV.key?("CI")
28
+ require "geo_pattern/geo_pattern_task"
33
29
 
34
30
  namespace :fixtures do
35
- string = 'Mastering Markdown'
31
+ string = "Mastering Markdown"
36
32
 
37
33
  GeoPattern::GeoPatternTask.new(
38
- name: 'generate',
39
- description: 'Generate patterns to make them available as fixtures',
34
+ name: "generate",
35
+ description: "Generate patterns to make them available as fixtures",
40
36
  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' }
37
+ "fixtures/generated_patterns/chevrons.svg" => {input: string, patterns: [:chevrons]},
38
+ "fixtures/generated_patterns/concentric_circles.svg" => {input: string, patterns: [:concentric_circles]},
39
+ "fixtures/generated_patterns/diamonds.svg" => {input: string, patterns: [:diamonds]},
40
+ "fixtures/generated_patterns/hexagons.svg" => {input: string, patterns: [:hexagons]},
41
+ "fixtures/generated_patterns/mosaic_squares.svg" => {input: string, patterns: [:mosaic_squares]},
42
+ "fixtures/generated_patterns/nested_squares.svg" => {input: string, patterns: [:nested_squares]},
43
+ "fixtures/generated_patterns/octagons.svg" => {input: string, patterns: [:octagons]},
44
+ "fixtures/generated_patterns/overlapping_circles.svg" => {input: string, patterns: [:overlapping_circles]},
45
+ "fixtures/generated_patterns/overlapping_rings.svg" => {input: string, patterns: [:overlapping_rings]},
46
+ "fixtures/generated_patterns/plaid.svg" => {input: string, patterns: [:plaid]},
47
+ "fixtures/generated_patterns/plus_signs.svg" => {input: string, patterns: [:plus_signs]},
48
+ "fixtures/generated_patterns/sine_waves.svg" => {input: string, patterns: [:sine_waves]},
49
+ "fixtures/generated_patterns/squares.svg" => {input: string, patterns: [:squares]},
50
+ "fixtures/generated_patterns/tessellation.svg" => {input: string, patterns: [:tessellation]},
51
+ "fixtures/generated_patterns/triangles.svg" => {input: string, patterns: [:triangles]},
52
+ "fixtures/generated_patterns/xes.svg" => {input: string, patterns: [:xes]},
53
+ "fixtures/generated_patterns/diamonds_with_color.svg" => {input: string, patterns: [:diamonds], color: "#00ff00"},
54
+ "fixtures/generated_patterns/diamonds_with_base_color.svg" => {input: string, patterns: [:diamonds], base_color: "#00ff00"}
59
55
  }
60
56
  )
61
57
  end
62
58
  end
63
59
 
64
- desc 'Bootstrap project'
65
- task bootstrap: %w(bootstrap:bundler)
60
+ desc "Bootstrap project"
61
+ task bootstrap: %w[bootstrap:bundler]
66
62
 
67
- desc 'Bootstrap project for ci'
68
- task 'bootstrap:ci' do
69
- Rake::Task['bootstrap'].invoke
63
+ desc "Bootstrap project for ci"
64
+ task "bootstrap:ci" do
65
+ Rake::Task["bootstrap"].invoke
70
66
  end
71
67
 
72
68
  namespace :bootstrap do
73
- desc 'Bootstrap bundler'
69
+ desc "Bootstrap bundler"
74
70
  task :bundler do |t|
75
71
  puts t.comment
76
- sh 'gem install bundler'
77
- sh 'bundle install'
72
+ sh "gem install bundler"
73
+ sh "bundle install"
78
74
  end
79
75
 
80
- desc 'Require gems'
76
+ desc "Require gems"
81
77
  task :gem_requirements do |t|
82
78
  puts t.comment
83
- require 'bundler'
79
+ require "bundler"
84
80
  Bundler.require
85
81
  end
86
82
  end
data/geo_pattern.gemspec CHANGED
@@ -1,29 +1,25 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path("lib", __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'geo_pattern/version'
5
+ require "geo_pattern/version"
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = 'geo_pattern'
8
- spec.version = GeoPattern::VERSION
9
- spec.authors = ['Jason Long']
10
- spec.email = ['jlong@github.com']
11
- spec.summary = 'Generate SVG beautiful patterns'
12
- spec.description = 'Generate SVG beautiful patterns'
13
- spec.homepage = 'https://github.com/jasonlong/geo_pattern'
14
- spec.license = 'MIT'
15
-
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ['lib']
8
+ spec.name = "geo_pattern"
9
+ spec.version = GeoPattern::VERSION
10
+ spec.authors = ["Jason Long"]
11
+ spec.email = ["jason@jasonlong.me"]
12
+ spec.summary = "Generate SVG beautiful patterns"
13
+ spec.description = "Generate SVG beautiful patterns"
14
+ spec.homepage = "https://github.com/jasonlong/geo_pattern"
15
+ spec.license = "MIT"
20
16
 
21
- spec.required_ruby_version = '~>2'
17
+ spec.files = `git ls-files -z`.split("\x0")
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.require_paths = ["lib"]
22
20
 
23
- spec.add_dependency 'color', '~> 1.5'
24
- spec.add_development_dependency 'bundler', '~> 1.5'
21
+ spec.required_ruby_version = ">= 2.6"
25
22
 
26
- spec.post_install_message = <<-EOS
27
- Class style pattern names are deprecated as of 1.3.1
28
- EOS
23
+ spec.add_dependency "color", "~> 1.5"
24
+ spec.add_development_dependency "bundler", "~> 2.2"
29
25
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GeoPattern
2
4
  class Background
3
5
  include Roles::ComparableMetadata
@@ -9,15 +11,15 @@ module GeoPattern
9
11
  def_delegators :@preset, :base_color
10
12
 
11
13
  def initialize(options)
12
- @image = options[:image]
13
- @preset = options[:preset]
14
- @color = options[:color]
14
+ @image = options[:image]
15
+ @preset = options[:preset]
16
+ @color = options[:color]
15
17
  @generator = options[:generator]
16
18
 
17
- fail ArgumentError, 'Argument color is missing' if @color.nil?
18
- fail ArgumentError, 'Argument image is missing' if @image.nil?
19
- fail ArgumentError, 'Argument preset is missing' if @preset.nil?
20
- fail ArgumentError, 'Argument generator is missing' if @generator.nil?
19
+ raise ArgumentError, "Argument color is missing" if @color.nil?
20
+ raise ArgumentError, "Argument image is missing" if @image.nil?
21
+ raise ArgumentError, "Argument preset is missing" if @preset.nil?
22
+ raise ArgumentError, "Argument generator is missing" if @generator.nil?
21
23
  end
22
24
 
23
25
  def_comparators :base_color, :color
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GeoPattern
2
4
  # Generating backgrounds
3
5
  module BackgroundGenerators
@@ -19,7 +21,7 @@ module GeoPattern
19
21
  # @param [ColorPreset] preset
20
22
  # A preset of values which are used during generating the background
21
23
  def initialize(seed, preset)
22
- @color = color_for(seed, preset)
24
+ @color = color_for(seed, preset)
23
25
  @preset = preset
24
26
  end
25
27
 
@@ -37,7 +39,7 @@ module GeoPattern
37
39
 
38
40
  def generate_background
39
41
  svg = SvgImage.new
40
- svg.rect(0, 0, '100%', '100%', 'fill' => color.to_svg)
42
+ svg.rect(0, 0, "100%", "100%", "fill" => color.to_svg)
41
43
 
42
44
  svg
43
45
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GeoPattern
2
4
  class Color
3
5
  private
@@ -15,7 +17,7 @@ module GeoPattern
15
17
  g = (color.g * 255).round
16
18
  b = (color.b * 255).round
17
19
 
18
- format('rgb(%d, %d, %d)', r, g, b)
20
+ format("rgb(%<r>d, %<g>d, %<b>d)", r: r, g: g, b: b)
19
21
  end
20
22
 
21
23
  def to_html
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GeoPattern
2
4
  # Color generators
3
5
  module ColorGenerators
@@ -14,8 +16,8 @@ module GeoPattern
14
16
  # @param [String] color
15
17
  # HTML color string, #0a0a0a
16
18
  def initialize(color, seed, creator = Color)
17
- @color = color
18
- @seed = seed
19
+ @color = color
20
+ @seed = seed
19
21
  @creator = creator
20
22
  end
21
23
 
@@ -27,23 +29,23 @@ module GeoPattern
27
29
  private
28
30
 
29
31
  def transform(color, seed)
30
- hue_offset = map(seed.to_i(14, 3), 0, 4095, 0, 359)
31
- sat_offset = seed.to_i(17, 1)
32
- new_color = ::Color::RGB.from_html(color).to_hsl
32
+ hue_offset = map(seed.to_i(14, 3), 0, 4095, 0, 359)
33
+ sat_offset = seed.to_i(17, 1)
34
+ new_color = ::Color::RGB.from_html(color).to_hsl
33
35
  new_color.hue = new_color.hue - hue_offset
34
36
 
35
- if (sat_offset % 2 == 0)
36
- new_color.saturation = new_color.saturation + sat_offset
37
+ new_color.saturation = if sat_offset % 2 == 0
38
+ new_color.saturation + sat_offset
37
39
  else
38
- new_color.saturation = new_color.saturation - sat_offset
40
+ new_color.saturation - sat_offset
39
41
  end
40
-
41
42
  new_color.html
42
43
  end
43
44
 
44
45
  # Ruby implementation of Processing's map function
45
46
  # http://processing.org/reference/map_.html
46
- def map(value, v_min, v_max, d_min, d_max) # v for value, d for desired
47
+ # v for value, d for desired
48
+ def map(value, v_min, v_max, d_min, d_max)
47
49
  v_value = value.to_f # so it returns float
48
50
 
49
51
  v_range = v_max - v_min
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GeoPattern
2
4
  # Color generators
3
5
  module ColorGenerators
@@ -1,9 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Lint/DuplicateMethods
4
+
1
5
  module GeoPattern
2
6
  class ColorPreset
3
7
  attr_accessor :color, :base_color, :mode
4
8
 
5
9
  def initialize(color: nil, base_color: nil)
6
- @color = color
10
+ @color = color
7
11
  @base_color = base_color
8
12
  end
9
13
 
@@ -24,3 +28,5 @@ module GeoPattern
24
28
  end
25
29
  end
26
30
  end
31
+
32
+ # rubocop:enable Lint/DuplicateMethods
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GeoPattern
2
4
  # user errors
3
5
  class UserError < StandardError; end
@@ -1,5 +1,7 @@
1
- require 'geo_pattern'
2
- require 'geo_pattern/rake_task'
1
+ # frozen_string_literal: true
2
+
3
+ require "geo_pattern"
4
+ require "geo_pattern/rake_task"
3
5
 
4
6
  module GeoPattern
5
7
  # GeoPatternTask
@@ -27,9 +29,9 @@ module GeoPattern
27
29
  def initialize(opts = {})
28
30
  super
29
31
 
30
- fail ArgumentError, :data if @options[:data].nil?
32
+ raise ArgumentError, :data if @options[:data].nil?
31
33
 
32
- @data = @options[:data]
34
+ @data = @options[:data]
33
35
  @allowed_patterns = @options[:allowed_patterns]
34
36
  end
35
37
 
@@ -37,15 +39,15 @@ module GeoPattern
37
39
  def run_task(_verbose)
38
40
  data.each do |path, string|
39
41
  opts = {}
40
- path = File.expand_path(path)
42
+ path = File.expand_path(path)
41
43
 
42
44
  if string.is_a?(Hash)
43
- input = string[:input]
44
- opts[:patterns] = string[:patterns] if string.key? :patterns
45
- opts[:color] = string[:color] if string.key? :color
45
+ input = string[:input]
46
+ opts[:patterns] = string[:patterns] if string.key? :patterns
47
+ opts[:color] = string[:color] if string.key? :color
46
48
  opts[:base_color] = string[:base_color] if string.key? :base_color
47
49
  else
48
- fail 'Invalid data structure for Rake Task'
50
+ raise "Invalid data structure for Rake Task"
49
51
  end
50
52
 
51
53
  pattern = GeoPattern.generate(input, opts)
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GeoPattern
2
4
  module Helpers
3
5
  def require_files_matching_pattern(pattern)
4
- Dir.glob(pattern).each { |f| require_relative f }
6
+ Dir.glob(pattern).sort.each { |f| require_relative f }
5
7
  end
6
8
 
7
9
  # Makes an underscored, lowercase form from the expression in the string.
@@ -10,9 +12,9 @@ module GeoPattern
10
12
  # It's MIT-Licensed
11
13
  #
12
14
  def underscore(camel_cased_word)
13
- return camel_cased_word unless camel_cased_word =~ /[A-Z-]/
15
+ return camel_cased_word unless /[A-Z-]/.match?(camel_cased_word)
14
16
 
15
- word = camel_cased_word.to_s
17
+ word = camel_cased_word.to_s.dup
16
18
 
17
19
  word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
18
20
  word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
@@ -38,8 +40,8 @@ module GeoPattern
38
40
  def demodulize(path)
39
41
  path = path.to_s
40
42
 
41
- if i = path.rindex('::')
42
- path[(i + 2)..-1]
43
+ if (i = path.rindex("::"))
44
+ path[(i + 2)..]
43
45
  else
44
46
  path
45
47
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GeoPattern
2
4
  class Pattern
3
5
  private
@@ -48,7 +50,7 @@ module GeoPattern
48
50
  # @see #to_data_uri
49
51
  # @deprecated
50
52
  def uri_image
51
- $stderr.puts 'Using "#uri_image" is deprecated as of 1.3.1. Please use "#to_data_uri" instead.'
53
+ warn 'Using "#uri_image" is deprecated as of 1.3.1. Please use "#to_data_uri" instead.'
52
54
 
53
55
  to_data_uri
54
56
  end
@@ -56,7 +58,7 @@ module GeoPattern
56
58
  # @see #to_svg
57
59
  # @deprecated
58
60
  def svg_string
59
- $stderr.puts 'Using "#svg_string" is deprecated as of 1.3.1. Please use "#to_svg" instead.'
61
+ warn 'Using "#svg_string" is deprecated as of 1.3.1. Please use "#to_svg" instead.'
60
62
 
61
63
  to_svg
62
64
  end
@@ -64,7 +66,7 @@ module GeoPattern
64
66
  # @see #to_base64
65
67
  # @deprecated
66
68
  def base64_string
67
- $stderr.puts 'Using "#base64_string" is deprecated as of 1.3.1. Please use "#to_base64" instead.'
69
+ warn 'Using "#base64_string" is deprecated as of 1.3.1. Please use "#to_base64" instead.'
68
70
 
69
71
  to_base64
70
72
  end
@@ -73,7 +75,7 @@ module GeoPattern
73
75
 
74
76
  def image
75
77
  svg_image.height = height
76
- svg_image.width = width
78
+ svg_image.width = width
77
79
 
78
80
  svg_image << background.image if background
79
81
  svg_image << structure.image if structure