geo_pattern 1.3.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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