geo_pattern 1.3.2 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ruby.yml +30 -0
  3. data/.gitignore +1 -0
  4. data/.simplecov +26 -0
  5. data/Gemfile +17 -17
  6. data/README.md +154 -29
  7. data/Rakefile +72 -13
  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 +19 -17
  27. data/lib/geo_pattern/background.rb +27 -0
  28. data/lib/geo_pattern/background_generators/solid_generator.rb +54 -0
  29. data/lib/geo_pattern/color.rb +27 -0
  30. data/lib/geo_pattern/color_generators/base_color_generator.rb +57 -0
  31. data/lib/geo_pattern/color_generators/simple_generator.rb +29 -0
  32. data/lib/geo_pattern/color_preset.rb +32 -0
  33. data/lib/geo_pattern/errors.rb +9 -0
  34. data/lib/geo_pattern/geo_pattern_task.rb +61 -0
  35. data/lib/geo_pattern/helpers.rb +50 -1
  36. data/lib/geo_pattern/pattern.rb +86 -0
  37. data/lib/geo_pattern/pattern_generator.rb +34 -81
  38. data/lib/geo_pattern/pattern_helpers.rb +34 -2
  39. data/lib/geo_pattern/pattern_preset.rb +25 -0
  40. data/lib/geo_pattern/pattern_sieve.rb +38 -0
  41. data/lib/geo_pattern/pattern_store.rb +65 -0
  42. data/lib/geo_pattern/pattern_validator.rb +29 -0
  43. data/lib/geo_pattern/rake_task.rb +112 -0
  44. data/lib/geo_pattern/roles/comparable_metadata.rb +37 -0
  45. data/lib/geo_pattern/roles/named_generator.rb +15 -0
  46. data/lib/geo_pattern/seed.rb +23 -0
  47. data/lib/geo_pattern/structure.rb +27 -0
  48. data/lib/geo_pattern/structure_generators/base_generator.rb +88 -0
  49. data/lib/geo_pattern/structure_generators/chevrons_generator.rb +57 -0
  50. data/lib/geo_pattern/structure_generators/concentric_circles_generator.rb +58 -0
  51. data/lib/geo_pattern/structure_generators/diamonds_generator.rb +72 -0
  52. data/lib/geo_pattern/structure_generators/hexagons_generator.rb +69 -0
  53. data/lib/geo_pattern/structure_generators/mosaic_squares_generator.rb +85 -0
  54. data/lib/geo_pattern/structure_generators/nested_squares_generator.rb +62 -0
  55. data/lib/geo_pattern/structure_generators/octagons_generator.rb +45 -0
  56. data/lib/geo_pattern/structure_generators/overlapping_circles_generator.rb +57 -0
  57. data/lib/geo_pattern/structure_generators/overlapping_rings_generator.rb +57 -0
  58. data/lib/geo_pattern/structure_generators/plaid_generator.rb +55 -0
  59. data/lib/geo_pattern/structure_generators/plus_signs_generator.rb +68 -0
  60. data/lib/geo_pattern/structure_generators/sine_waves_generator.rb +45 -0
  61. data/lib/geo_pattern/structure_generators/squares_generator.rb +37 -0
  62. data/lib/geo_pattern/structure_generators/tessellation_generator.rb +105 -0
  63. data/lib/geo_pattern/structure_generators/triangles_generator.rb +64 -0
  64. data/lib/geo_pattern/structure_generators/xes_generator.rb +74 -0
  65. data/lib/geo_pattern/svg_image.rb +103 -0
  66. data/lib/geo_pattern/version.rb +3 -1
  67. data/lib/geo_pattern.rb +54 -30
  68. data/script/bootstrap +30 -0
  69. data/script/console +9 -0
  70. data/script/test +21 -0
  71. data/spec/background_generators/solid_generator_spec.rb +52 -0
  72. data/spec/background_spec.rb +27 -0
  73. data/spec/color_generators/base_color_generator_spec.rb +33 -0
  74. data/spec/color_generators/simple_generator_spec.rb +14 -0
  75. data/spec/color_preset_spec.rb +55 -0
  76. data/spec/color_spec.rb +17 -0
  77. data/spec/geo_pattern_spec.rb +98 -26
  78. data/spec/helpers_spec.rb +67 -0
  79. data/spec/pattern_preset_spec.rb +43 -0
  80. data/spec/pattern_sieve_spec.rb +68 -0
  81. data/spec/pattern_spec.rb +74 -0
  82. data/spec/pattern_store_spec.rb +49 -0
  83. data/spec/pattern_validator_spec.rb +30 -0
  84. data/spec/seed_spec.rb +16 -0
  85. data/spec/spec_helper.rb +9 -13
  86. data/spec/structure_generators/chevrons_generator_spec.rb +7 -0
  87. data/spec/structure_generators/concentric_circles_generator_spec.rb +7 -0
  88. data/spec/structure_generators/diamonds_generator_spec.rb +7 -0
  89. data/spec/structure_generators/hexagons_generator_spec.rb +7 -0
  90. data/spec/structure_generators/mosaic_squares_generator_spec.rb +7 -0
  91. data/spec/structure_generators/nested_squares_generator_spec.rb +7 -0
  92. data/spec/structure_generators/octagons_generator_spec.rb +7 -0
  93. data/spec/structure_generators/overlapping_circles_generator_spec.rb +7 -0
  94. data/spec/structure_generators/overlapping_rings_generator_spec.rb +7 -0
  95. data/spec/structure_generators/plaid_generator_spec.rb +7 -0
  96. data/spec/structure_generators/plus_signs_generator_spec.rb +7 -0
  97. data/spec/structure_generators/sine_waves_generator_spec.rb +7 -0
  98. data/spec/structure_generators/squares_generator_spec.rb +7 -0
  99. data/spec/structure_generators/tessellation_generator_spec.rb +7 -0
  100. data/spec/structure_generators/triangles_generator_spec.rb +7 -0
  101. data/spec/structure_generators/xes_generator_spec.rb +7 -0
  102. data/spec/structure_spec.rb +40 -0
  103. data/spec/support/aruba.rb +6 -6
  104. data/spec/support/helpers/fixtures.rb +14 -0
  105. data/spec/support/kernel.rb +46 -0
  106. data/spec/support/matchers/image.rb +19 -0
  107. data/spec/support/matchers/name.rb +17 -0
  108. data/spec/support/rspec.rb +4 -2
  109. data/spec/support/shared_examples/generator.rb +48 -0
  110. data/spec/support/shared_examples/pattern.rb +33 -0
  111. data/spec/support/shared_examples/pattern_name.rb +9 -0
  112. data/spec/support/shared_examples/structure.rb +50 -0
  113. data/spec/support/string.rb +3 -2
  114. data/spec/svg_spec.rb +8 -6
  115. metadata +105 -37
  116. data/.rubocop.yml +0 -13
  117. data/lib/geo_pattern/pattern/base_pattern.rb +0 -47
  118. data/lib/geo_pattern/pattern/chevron_pattern.rb +0 -45
  119. data/lib/geo_pattern/pattern/concentric_circles_pattern.rb +0 -47
  120. data/lib/geo_pattern/pattern/diamond_pattern.rb +0 -56
  121. data/lib/geo_pattern/pattern/hexagon_pattern.rb +0 -57
  122. data/lib/geo_pattern/pattern/mosaic_squares_pattern.rb +0 -76
  123. data/lib/geo_pattern/pattern/nested_squares_pattern.rb +0 -51
  124. data/lib/geo_pattern/pattern/octagon_pattern.rb +0 -35
  125. data/lib/geo_pattern/pattern/overlapping_circles_pattern.rb +0 -46
  126. data/lib/geo_pattern/pattern/overlapping_rings_pattern.rb +0 -46
  127. data/lib/geo_pattern/pattern/plaid_pattern.rb +0 -49
  128. data/lib/geo_pattern/pattern/plus_sign_pattern.rb +0 -53
  129. data/lib/geo_pattern/pattern/sine_wave_pattern.rb +0 -36
  130. data/lib/geo_pattern/pattern/square_pattern.rb +0 -27
  131. data/lib/geo_pattern/pattern/tessellation_pattern.rb +0 -93
  132. data/lib/geo_pattern/pattern/triangle_pattern.rb +0 -51
  133. data/lib/geo_pattern/pattern/xes_pattern.rb +0 -58
  134. data/lib/geo_pattern/svg.rb +0 -77
  135. data/spec/support/helpers.rb +0 -34
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe StructureGenerators::OverlappingRingsGenerator do
6
+ it_behaves_like "a structure generator", :overlapping_rings
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe StructureGenerators::PlaidGenerator do
6
+ it_behaves_like "a structure generator", :plaid
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe StructureGenerators::PlusSignsGenerator do
6
+ it_behaves_like "a structure generator", :plus_signs
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe StructureGenerators::SineWavesGenerator do
6
+ it_behaves_like "a structure generator", :sine_waves
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe StructureGenerators::SquaresGenerator do
6
+ it_behaves_like "a structure generator", :squares
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe StructureGenerators::TessellationGenerator do
6
+ it_behaves_like "a structure generator", :tessellation
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe StructureGenerators::TrianglesGenerator do
6
+ it_behaves_like "a structure generator", :triangles
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe StructureGenerators::XesGenerator do
6
+ it_behaves_like "a structure generator", :xes
7
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe Structure do
6
+ subject(:metadata) { described_class.new(image: svg_image, preset: preset, generator: generator, name: name) }
7
+
8
+ let(:svg_image) { instance_double("GeoPattern::SvgImage") }
9
+ let(:svg_image_content) { fixtures_path("generated_patterns/sine_waves.svg").read.chomp }
10
+ let(:preset) { instance_double("GeoPattern::PatternPreset") }
11
+ let(:generator) { stub_const("GeoPattern::StructureGenerators::ChevronGenerator", Class.new) }
12
+
13
+ let(:name) { :chevron }
14
+ let(:fill_color_dark) { "#222" }
15
+ let(:fill_color_light) { "#ddd" }
16
+ let(:stroke_color) { "#000" }
17
+ let(:stroke_opacity) { 0.02 }
18
+ let(:opacity_min) { 0.02 }
19
+ let(:opacity_max) { 0.15 }
20
+
21
+ it { is_expected.not_to be_nil }
22
+
23
+ before :each do
24
+ allow(preset).to receive(:fill_color_dark).and_return(fill_color_dark)
25
+ allow(preset).to receive(:fill_color_light).and_return(fill_color_light)
26
+ allow(preset).to receive(:stroke_color).and_return(stroke_color)
27
+ allow(preset).to receive(:stroke_opacity).and_return(stroke_opacity)
28
+ allow(preset).to receive(:opacity_min).and_return(opacity_min)
29
+ allow(preset).to receive(:opacity_max).and_return(opacity_max)
30
+ end
31
+
32
+ it_behaves_like "a metadata argument", :name
33
+ it_behaves_like "a metadata argument", :generator
34
+ it_behaves_like "a forwarded metadata argument", :fill_color_dark
35
+ it_behaves_like "a forwarded metadata argument", :fill_color_light
36
+ it_behaves_like "a forwarded metadata argument", :stroke_color
37
+ it_behaves_like "a forwarded metadata argument", :stroke_opacity
38
+ it_behaves_like "a forwarded metadata argument", :opacity_min
39
+ it_behaves_like "a forwarded metadata argument", :opacity_max
40
+ end
@@ -1,6 +1,7 @@
1
- # encoding: utf-8
2
- require 'aruba/api'
3
- require 'aruba/reporting'
1
+ # frozen_string_literal: true
2
+
3
+ require "aruba/rspec"
4
+ require "aruba/api"
4
5
 
5
6
  # Spec Helpers
6
7
  module SpecHelper
@@ -9,7 +10,7 @@ module SpecHelper
9
10
  include ::Aruba::Api
10
11
 
11
12
  def dirs
12
- @dirs ||= %w(tmp rspec)
13
+ @dirs ||= %w[tmp rspec]
13
14
  end
14
15
  end
15
16
  end
@@ -18,7 +19,6 @@ RSpec.configure do |c|
18
19
  c.include SpecHelper::Aruba
19
20
 
20
21
  c.before :each do
21
- clean_current_dir
22
- restore_env
22
+ setup_aruba
23
23
  end
24
24
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SpecHelper
4
+ module Fixtures
5
+ def fixtures_path(name)
6
+ base_path = Pathname.new(File.expand_path("../../../fixtures", __dir__))
7
+ base_path + Pathname.new(name)
8
+ end
9
+ end
10
+ end
11
+
12
+ RSpec.configure do |c|
13
+ c.include SpecHelper::Fixtures
14
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Style/EvalWithLocation
4
+
5
+ module Kernel
6
+ # Captures the given stream and returns it:
7
+ #
8
+ # @param [String] stream
9
+ #
10
+ # The name of the stream to be captured
11
+ #
12
+ # @example Capture output
13
+ #
14
+ # stream = capture(:stdout) { puts 'notice' }
15
+ # stream # => "notice\n"
16
+ #
17
+ # stream = capture(:stderr) { warn 'error' }
18
+ # stream # => "error\n"
19
+ #
20
+ # @example Capture output for subprocesses
21
+ #
22
+ # stream = capture(:stdout) { system('echo notice') }
23
+ # stream # => "notice\n"
24
+ #
25
+ # stream = capture(:stderr) { system('echo error 1>&2') }
26
+ # stream # => "error\n"
27
+ def capture(stream)
28
+ stream = stream.to_s
29
+ captured_stream = Tempfile.new(stream)
30
+ stream_io = eval("$#{stream}") # rubocop:disable Security/Eval
31
+ origin_stream = stream_io.dup
32
+ stream_io.reopen(captured_stream)
33
+
34
+ yield
35
+
36
+ stream_io.rewind
37
+ captured_stream.read
38
+ ensure
39
+ captured_stream.close
40
+ captured_stream.unlink
41
+ stream_io.reopen(origin_stream)
42
+ end
43
+ alias_method :silence, :capture
44
+ end
45
+
46
+ # rubocop:enable Style/EvalWithLocation
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rspec/expectations"
4
+
5
+ RSpec::Matchers.define :have_image_with_rgb_color do |*expected|
6
+ expected = format("rgb(%s, %s, %s)", *expected.flatten) # rubocop:disable Style/FormatStringToken
7
+
8
+ match do |actual|
9
+ actual.image.include? expected
10
+ end
11
+
12
+ failure_message_when_negated do |actual|
13
+ "expected that #{actual} includes color #{expected}"
14
+ end
15
+
16
+ failure_message do |actual|
17
+ "expected that #{actual} not includes color #{expected}"
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rspec/expectations"
4
+
5
+ RSpec::Matchers.define :have_name do |expected|
6
+ match do |actual|
7
+ actual.name? expected
8
+ end
9
+
10
+ failure_message_when_negated do |actual|
11
+ "expected that #{actual} does not nave name \"#{expected}\""
12
+ end
13
+
14
+ failure_message do |actual|
15
+ "expected that #{actual} has name \"#{expected}\""
16
+ end
17
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.configure do |config|
2
4
  config.expect_with :rspec do |expectations|
3
5
  expectations.include_chain_clauses_in_custom_matcher_descriptions = true
@@ -14,10 +16,10 @@ RSpec.configure do |config|
14
16
  config.warnings = false
15
17
 
16
18
  if config.files_to_run.one?
17
- config.default_formatter = 'doc'
19
+ config.default_formatter = "doc"
18
20
  end
19
21
 
20
- config.profile_examples = 10
22
+ config.profile_examples = 10 if ENV.key? "RSPEC_PROFILE"
21
23
 
22
24
  config.order = :random
23
25
  Kernel.srand config.seed
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples "a structure generator" do |name|
4
+ subject { described_class.new(seed, preset, svg_image) }
5
+
6
+ let(:seed) { instance_double("GeoPattern::Seed") }
7
+ let(:preset) { instance_double("GeoPattern::PatternPreset") }
8
+ let(:svg_image) { SvgImage.new }
9
+ let(:pattern) { instance_double("GeoPattern::Pattern") }
10
+
11
+ let(:name) { name }
12
+
13
+ let(:fill_color_dark) { "#222" }
14
+ let(:fill_color_light) { "#ddd" }
15
+ let(:stroke_color) { "#000" }
16
+ let(:stroke_opacity) { 0.02 }
17
+ let(:opacity_min) { 0.02 }
18
+ let(:opacity_max) { 0.15 }
19
+
20
+ before :each do
21
+ allow(preset).to receive(:fill_color_dark).and_return(fill_color_dark)
22
+ allow(preset).to receive(:fill_color_light).and_return(fill_color_light)
23
+ allow(preset).to receive(:stroke_color).and_return(stroke_color)
24
+ allow(preset).to receive(:stroke_opacity).and_return(stroke_opacity)
25
+ allow(preset).to receive(:opacity_min).and_return(opacity_min)
26
+ allow(preset).to receive(:opacity_max).and_return(opacity_max)
27
+
28
+ allow(seed).to receive(:to_i).and_return(1)
29
+ end
30
+
31
+ it { is_expected.not_to be_nil }
32
+ it { is_expected.to respond_to(:generate) }
33
+
34
+ it do
35
+ expect(pattern).to receive(:structure=).with(kind_of(Structure))
36
+ expect(pattern).to receive(:height=).with(kind_of(Numeric))
37
+ expect(pattern).to receive(:width=).with(kind_of(Numeric))
38
+
39
+ subject.generate(pattern)
40
+ end
41
+
42
+ it_behaves_like "a named generator", name
43
+ end
44
+
45
+ RSpec.shared_examples "a named generator" do |name|
46
+ it { is_expected.to have_name name }
47
+ it { is_expected.to have_name name.to_s }
48
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples "a chosen pattern" do |name|
4
+ subject(:pattern) { GeoPattern.generate(input, patterns: name) }
5
+
6
+ let(:file_name) { "#{name}.svg" }
7
+
8
+ before :each do
9
+ write_file file_name, pattern.to_s
10
+ end
11
+
12
+ it { expect(pattern.structure).to be_name name }
13
+ it { expect(file_name).to have_same_file_content_as("%/generated_patterns/#{name}.svg") }
14
+ end
15
+
16
+ RSpec.shared_examples "an invalid pattern" do |chosen_pattern|
17
+ subject(:pattern) { GeoPattern.generate(input, patterns: chosen_pattern) }
18
+
19
+ it { expect { subject }.to raise_error InvalidPatternError }
20
+ end
21
+
22
+ RSpec.shared_examples "an old style pattern" do |chosen_pattern, name|
23
+ subject(:pattern) { GeoPattern.generate(input, patterns: chosen_pattern) }
24
+
25
+ let(:file_name) { "#{name}.svg" }
26
+
27
+ before :each do
28
+ write_file file_name, pattern.to_s
29
+ end
30
+
31
+ it { expect(pattern.structure).to be_name name }
32
+ it { expect(file_name).to have_same_file_content_as("%/generated_patterns/#{name}.svg") }
33
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples "a known pattern name" do
4
+ it { silence(:stderr) { expect(pattern_store[pattern_name]).not_to be_nil } }
5
+ end
6
+
7
+ RSpec.shared_examples "an unknown pattern name" do
8
+ it { silence(:stderr) { expect(pattern_store[pattern_name]).to be_nil } }
9
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples "a metadata argument" do |argument|
4
+ describe "##{argument}" do
5
+ it { expect(metadata.public_send(argument)).to eq public_send(argument) }
6
+ end
7
+
8
+ describe "##{argument}?" do
9
+ context "when #{argument} is not defined" do
10
+ let(argument) { nil }
11
+ it { expect { metadata }.to raise_error ArgumentError, "Argument #{argument} is missing" }
12
+ end
13
+
14
+ context "when #{argument} is defined" do
15
+ context "when argument is not given" do
16
+ it { is_expected.to public_send(:"be_#{argument}", nil) }
17
+ end
18
+
19
+ context "when argument is the same as the defined one" do
20
+ it { is_expected.to public_send(:"be_#{argument}", public_send(argument)) }
21
+ end
22
+
23
+ context "when argument is different from the defined one" do
24
+ it { is_expected.not_to public_send(:"be_#{argument}", "blub") }
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ RSpec.shared_examples "a forwarded metadata argument" do |argument|
31
+ describe "##{argument}" do
32
+ it { expect(metadata.public_send(argument)).to eq public_send(argument) }
33
+ end
34
+
35
+ describe "##{argument}?" do
36
+ context "when #{argument} is defined" do
37
+ context "when argument is not given" do
38
+ it { is_expected.to public_send(:"be_#{argument}", nil) }
39
+ end
40
+
41
+ context "when argument is the same as the defined one" do
42
+ it { is_expected.to public_send(:"be_#{argument}", public_send(argument)) }
43
+ end
44
+
45
+ context "when argument is different from the defined one" do
46
+ it { is_expected.not_to public_send(:"be_#{argument}", "blub") }
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,2 +1,3 @@
1
- # encoding: utf-8
2
- require 'active_support/core_ext/string/strip'
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/core_ext/string/strip"
data/spec/svg_spec.rb CHANGED
@@ -1,10 +1,12 @@
1
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- RSpec.describe SVG do
4
- context '#<=>' do
5
- it 'is comparable' do
6
- svg1 = SVG.new
7
- svg2 = SVG.new
3
+ require "spec_helper"
4
+
5
+ RSpec.describe SvgImage do
6
+ context "#<=>" do
7
+ it "is comparable" do
8
+ svg1 = SvgImage.new
9
+ svg2 = SvgImage.new
8
10
 
9
11
  expect(svg1).to eq svg2
10
12
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geo_pattern
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Long
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-09 00:00:00.000000000 Z
11
+ date: 2023-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: color
@@ -30,57 +30,134 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.5'
33
+ version: '2.2'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.5'
40
+ version: '2.2'
41
41
  description: Generate SVG beautiful patterns
42
42
  email:
43
- - jlong@github.com
43
+ - jason@jasonlong.me
44
44
  executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
+ - ".github/workflows/ruby.yml"
48
49
  - ".gitignore"
49
50
  - ".rspec"
50
- - ".rubocop.yml"
51
+ - ".simplecov"
51
52
  - Gemfile
52
53
  - LICENSE.txt
53
54
  - README.md
54
55
  - Rakefile
56
+ - fixtures/generated_patterns/chevrons.svg
57
+ - fixtures/generated_patterns/concentric_circles.svg
58
+ - fixtures/generated_patterns/diamonds.svg
59
+ - fixtures/generated_patterns/diamonds_with_base_color.svg
60
+ - fixtures/generated_patterns/diamonds_with_color.svg
61
+ - fixtures/generated_patterns/hexagons.svg
62
+ - fixtures/generated_patterns/mosaic_squares.svg
63
+ - fixtures/generated_patterns/nested_squares.svg
64
+ - fixtures/generated_patterns/octagons.svg
65
+ - fixtures/generated_patterns/overlapping_circles.svg
66
+ - fixtures/generated_patterns/overlapping_rings.svg
67
+ - fixtures/generated_patterns/plaid.svg
68
+ - fixtures/generated_patterns/plus_signs.svg
69
+ - fixtures/generated_patterns/sine_waves.svg
70
+ - fixtures/generated_patterns/squares.svg
71
+ - fixtures/generated_patterns/tessellation.svg
72
+ - fixtures/generated_patterns/triangles.svg
73
+ - fixtures/generated_patterns/xes.svg
55
74
  - geo_pattern.gemspec
56
75
  - lib/geo_pattern.rb
76
+ - lib/geo_pattern/background.rb
77
+ - lib/geo_pattern/background_generators/solid_generator.rb
78
+ - lib/geo_pattern/color.rb
79
+ - lib/geo_pattern/color_generators/base_color_generator.rb
80
+ - lib/geo_pattern/color_generators/simple_generator.rb
81
+ - lib/geo_pattern/color_preset.rb
82
+ - lib/geo_pattern/errors.rb
83
+ - lib/geo_pattern/geo_pattern_task.rb
57
84
  - lib/geo_pattern/helpers.rb
58
- - lib/geo_pattern/pattern/base_pattern.rb
59
- - lib/geo_pattern/pattern/chevron_pattern.rb
60
- - lib/geo_pattern/pattern/concentric_circles_pattern.rb
61
- - lib/geo_pattern/pattern/diamond_pattern.rb
62
- - lib/geo_pattern/pattern/hexagon_pattern.rb
63
- - lib/geo_pattern/pattern/mosaic_squares_pattern.rb
64
- - lib/geo_pattern/pattern/nested_squares_pattern.rb
65
- - lib/geo_pattern/pattern/octagon_pattern.rb
66
- - lib/geo_pattern/pattern/overlapping_circles_pattern.rb
67
- - lib/geo_pattern/pattern/overlapping_rings_pattern.rb
68
- - lib/geo_pattern/pattern/plaid_pattern.rb
69
- - lib/geo_pattern/pattern/plus_sign_pattern.rb
70
- - lib/geo_pattern/pattern/sine_wave_pattern.rb
71
- - lib/geo_pattern/pattern/square_pattern.rb
72
- - lib/geo_pattern/pattern/tessellation_pattern.rb
73
- - lib/geo_pattern/pattern/triangle_pattern.rb
74
- - lib/geo_pattern/pattern/xes_pattern.rb
85
+ - lib/geo_pattern/pattern.rb
75
86
  - lib/geo_pattern/pattern_generator.rb
76
87
  - lib/geo_pattern/pattern_helpers.rb
77
- - lib/geo_pattern/svg.rb
88
+ - lib/geo_pattern/pattern_preset.rb
89
+ - lib/geo_pattern/pattern_sieve.rb
90
+ - lib/geo_pattern/pattern_store.rb
91
+ - lib/geo_pattern/pattern_validator.rb
92
+ - lib/geo_pattern/rake_task.rb
93
+ - lib/geo_pattern/roles/comparable_metadata.rb
94
+ - lib/geo_pattern/roles/named_generator.rb
95
+ - lib/geo_pattern/seed.rb
96
+ - lib/geo_pattern/structure.rb
97
+ - lib/geo_pattern/structure_generators/base_generator.rb
98
+ - lib/geo_pattern/structure_generators/chevrons_generator.rb
99
+ - lib/geo_pattern/structure_generators/concentric_circles_generator.rb
100
+ - lib/geo_pattern/structure_generators/diamonds_generator.rb
101
+ - lib/geo_pattern/structure_generators/hexagons_generator.rb
102
+ - lib/geo_pattern/structure_generators/mosaic_squares_generator.rb
103
+ - lib/geo_pattern/structure_generators/nested_squares_generator.rb
104
+ - lib/geo_pattern/structure_generators/octagons_generator.rb
105
+ - lib/geo_pattern/structure_generators/overlapping_circles_generator.rb
106
+ - lib/geo_pattern/structure_generators/overlapping_rings_generator.rb
107
+ - lib/geo_pattern/structure_generators/plaid_generator.rb
108
+ - lib/geo_pattern/structure_generators/plus_signs_generator.rb
109
+ - lib/geo_pattern/structure_generators/sine_waves_generator.rb
110
+ - lib/geo_pattern/structure_generators/squares_generator.rb
111
+ - lib/geo_pattern/structure_generators/tessellation_generator.rb
112
+ - lib/geo_pattern/structure_generators/triangles_generator.rb
113
+ - lib/geo_pattern/structure_generators/xes_generator.rb
114
+ - lib/geo_pattern/svg_image.rb
78
115
  - lib/geo_pattern/version.rb
116
+ - script/bootstrap
117
+ - script/console
118
+ - script/test
119
+ - spec/background_generators/solid_generator_spec.rb
120
+ - spec/background_spec.rb
121
+ - spec/color_generators/base_color_generator_spec.rb
122
+ - spec/color_generators/simple_generator_spec.rb
123
+ - spec/color_preset_spec.rb
124
+ - spec/color_spec.rb
79
125
  - spec/geo_pattern_spec.rb
126
+ - spec/helpers_spec.rb
127
+ - spec/pattern_preset_spec.rb
128
+ - spec/pattern_sieve_spec.rb
129
+ - spec/pattern_spec.rb
130
+ - spec/pattern_store_spec.rb
131
+ - spec/pattern_validator_spec.rb
132
+ - spec/seed_spec.rb
80
133
  - spec/spec_helper.rb
134
+ - spec/structure_generators/chevrons_generator_spec.rb
135
+ - spec/structure_generators/concentric_circles_generator_spec.rb
136
+ - spec/structure_generators/diamonds_generator_spec.rb
137
+ - spec/structure_generators/hexagons_generator_spec.rb
138
+ - spec/structure_generators/mosaic_squares_generator_spec.rb
139
+ - spec/structure_generators/nested_squares_generator_spec.rb
140
+ - spec/structure_generators/octagons_generator_spec.rb
141
+ - spec/structure_generators/overlapping_circles_generator_spec.rb
142
+ - spec/structure_generators/overlapping_rings_generator_spec.rb
143
+ - spec/structure_generators/plaid_generator_spec.rb
144
+ - spec/structure_generators/plus_signs_generator_spec.rb
145
+ - spec/structure_generators/sine_waves_generator_spec.rb
146
+ - spec/structure_generators/squares_generator_spec.rb
147
+ - spec/structure_generators/tessellation_generator_spec.rb
148
+ - spec/structure_generators/triangles_generator_spec.rb
149
+ - spec/structure_generators/xes_generator_spec.rb
150
+ - spec/structure_spec.rb
81
151
  - spec/support/aruba.rb
82
- - spec/support/helpers.rb
152
+ - spec/support/helpers/fixtures.rb
153
+ - spec/support/kernel.rb
154
+ - spec/support/matchers/image.rb
155
+ - spec/support/matchers/name.rb
83
156
  - spec/support/rspec.rb
157
+ - spec/support/shared_examples/generator.rb
158
+ - spec/support/shared_examples/pattern.rb
159
+ - spec/support/shared_examples/pattern_name.rb
160
+ - spec/support/shared_examples/structure.rb
84
161
  - spec/support/string.rb
85
162
  - spec/svg_spec.rb
86
163
  homepage: https://github.com/jasonlong/geo_pattern
@@ -95,24 +172,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
95
172
  requirements:
96
173
  - - ">="
97
174
  - !ruby/object:Gem::Version
98
- version: '0'
175
+ version: '2.6'
99
176
  required_rubygems_version: !ruby/object:Gem::Requirement
100
177
  requirements:
101
178
  - - ">="
102
179
  - !ruby/object:Gem::Version
103
180
  version: '0'
104
181
  requirements: []
105
- rubyforge_project:
106
- rubygems_version: 2.2.0
182
+ rubygems_version: 3.0.3.1
107
183
  signing_key:
108
184
  specification_version: 4
109
185
  summary: Generate SVG beautiful patterns
110
- test_files:
111
- - spec/geo_pattern_spec.rb
112
- - spec/spec_helper.rb
113
- - spec/support/aruba.rb
114
- - spec/support/helpers.rb
115
- - spec/support/rspec.rb
116
- - spec/support/string.rb
117
- - spec/svg_spec.rb
118
- has_rdoc:
186
+ test_files: []
data/.rubocop.yml DELETED
@@ -1,13 +0,0 @@
1
- AllCops:
2
- Exclude:
3
- - 'tmp/**/*'
4
-
5
- # Configuration parameters: MaxSlashes.
6
- Style/RegexpLiteral:
7
- MaxSlashes: 0
8
-
9
- Metrics/AbcSize:
10
- Enabled: false
11
-
12
- Lint/Debugger:
13
- Enabled: false