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.
- checksums.yaml +5 -5
- data/.github/workflows/ruby.yml +30 -0
- data/.gitignore +1 -0
- data/.simplecov +26 -0
- data/Gemfile +17 -17
- data/README.md +154 -29
- data/Rakefile +72 -13
- data/fixtures/generated_patterns/chevrons.svg +1 -0
- data/fixtures/generated_patterns/concentric_circles.svg +1 -0
- data/fixtures/generated_patterns/diamonds.svg +1 -0
- data/fixtures/generated_patterns/diamonds_with_base_color.svg +1 -0
- data/fixtures/generated_patterns/diamonds_with_color.svg +1 -0
- data/fixtures/generated_patterns/hexagons.svg +1 -0
- data/fixtures/generated_patterns/mosaic_squares.svg +1 -0
- data/fixtures/generated_patterns/nested_squares.svg +1 -0
- data/fixtures/generated_patterns/octagons.svg +1 -0
- data/fixtures/generated_patterns/overlapping_circles.svg +1 -0
- data/fixtures/generated_patterns/overlapping_rings.svg +1 -0
- data/fixtures/generated_patterns/plaid.svg +1 -0
- data/fixtures/generated_patterns/plus_signs.svg +1 -0
- data/fixtures/generated_patterns/sine_waves.svg +1 -0
- data/fixtures/generated_patterns/squares.svg +1 -0
- data/fixtures/generated_patterns/tessellation.svg +1 -0
- data/fixtures/generated_patterns/triangles.svg +1 -0
- data/fixtures/generated_patterns/xes.svg +1 -0
- data/geo_pattern.gemspec +19 -17
- data/lib/geo_pattern/background.rb +27 -0
- data/lib/geo_pattern/background_generators/solid_generator.rb +54 -0
- data/lib/geo_pattern/color.rb +27 -0
- data/lib/geo_pattern/color_generators/base_color_generator.rb +57 -0
- data/lib/geo_pattern/color_generators/simple_generator.rb +29 -0
- data/lib/geo_pattern/color_preset.rb +32 -0
- data/lib/geo_pattern/errors.rb +9 -0
- data/lib/geo_pattern/geo_pattern_task.rb +61 -0
- data/lib/geo_pattern/helpers.rb +50 -1
- data/lib/geo_pattern/pattern.rb +86 -0
- data/lib/geo_pattern/pattern_generator.rb +34 -81
- data/lib/geo_pattern/pattern_helpers.rb +34 -2
- data/lib/geo_pattern/pattern_preset.rb +25 -0
- data/lib/geo_pattern/pattern_sieve.rb +38 -0
- data/lib/geo_pattern/pattern_store.rb +65 -0
- data/lib/geo_pattern/pattern_validator.rb +29 -0
- data/lib/geo_pattern/rake_task.rb +112 -0
- data/lib/geo_pattern/roles/comparable_metadata.rb +37 -0
- data/lib/geo_pattern/roles/named_generator.rb +15 -0
- data/lib/geo_pattern/seed.rb +23 -0
- data/lib/geo_pattern/structure.rb +27 -0
- data/lib/geo_pattern/structure_generators/base_generator.rb +88 -0
- data/lib/geo_pattern/structure_generators/chevrons_generator.rb +57 -0
- data/lib/geo_pattern/structure_generators/concentric_circles_generator.rb +58 -0
- data/lib/geo_pattern/structure_generators/diamonds_generator.rb +72 -0
- data/lib/geo_pattern/structure_generators/hexagons_generator.rb +69 -0
- data/lib/geo_pattern/structure_generators/mosaic_squares_generator.rb +85 -0
- data/lib/geo_pattern/structure_generators/nested_squares_generator.rb +62 -0
- data/lib/geo_pattern/structure_generators/octagons_generator.rb +45 -0
- data/lib/geo_pattern/structure_generators/overlapping_circles_generator.rb +57 -0
- data/lib/geo_pattern/structure_generators/overlapping_rings_generator.rb +57 -0
- data/lib/geo_pattern/structure_generators/plaid_generator.rb +55 -0
- data/lib/geo_pattern/structure_generators/plus_signs_generator.rb +68 -0
- data/lib/geo_pattern/structure_generators/sine_waves_generator.rb +45 -0
- data/lib/geo_pattern/structure_generators/squares_generator.rb +37 -0
- data/lib/geo_pattern/structure_generators/tessellation_generator.rb +105 -0
- data/lib/geo_pattern/structure_generators/triangles_generator.rb +64 -0
- data/lib/geo_pattern/structure_generators/xes_generator.rb +74 -0
- data/lib/geo_pattern/svg_image.rb +103 -0
- data/lib/geo_pattern/version.rb +3 -1
- data/lib/geo_pattern.rb +54 -30
- data/script/bootstrap +30 -0
- data/script/console +9 -0
- data/script/test +21 -0
- data/spec/background_generators/solid_generator_spec.rb +52 -0
- data/spec/background_spec.rb +27 -0
- data/spec/color_generators/base_color_generator_spec.rb +33 -0
- data/spec/color_generators/simple_generator_spec.rb +14 -0
- data/spec/color_preset_spec.rb +55 -0
- data/spec/color_spec.rb +17 -0
- data/spec/geo_pattern_spec.rb +98 -26
- data/spec/helpers_spec.rb +67 -0
- data/spec/pattern_preset_spec.rb +43 -0
- data/spec/pattern_sieve_spec.rb +68 -0
- data/spec/pattern_spec.rb +74 -0
- data/spec/pattern_store_spec.rb +49 -0
- data/spec/pattern_validator_spec.rb +30 -0
- data/spec/seed_spec.rb +16 -0
- data/spec/spec_helper.rb +9 -13
- data/spec/structure_generators/chevrons_generator_spec.rb +7 -0
- data/spec/structure_generators/concentric_circles_generator_spec.rb +7 -0
- data/spec/structure_generators/diamonds_generator_spec.rb +7 -0
- data/spec/structure_generators/hexagons_generator_spec.rb +7 -0
- data/spec/structure_generators/mosaic_squares_generator_spec.rb +7 -0
- data/spec/structure_generators/nested_squares_generator_spec.rb +7 -0
- data/spec/structure_generators/octagons_generator_spec.rb +7 -0
- data/spec/structure_generators/overlapping_circles_generator_spec.rb +7 -0
- data/spec/structure_generators/overlapping_rings_generator_spec.rb +7 -0
- data/spec/structure_generators/plaid_generator_spec.rb +7 -0
- data/spec/structure_generators/plus_signs_generator_spec.rb +7 -0
- data/spec/structure_generators/sine_waves_generator_spec.rb +7 -0
- data/spec/structure_generators/squares_generator_spec.rb +7 -0
- data/spec/structure_generators/tessellation_generator_spec.rb +7 -0
- data/spec/structure_generators/triangles_generator_spec.rb +7 -0
- data/spec/structure_generators/xes_generator_spec.rb +7 -0
- data/spec/structure_spec.rb +40 -0
- data/spec/support/aruba.rb +6 -6
- data/spec/support/helpers/fixtures.rb +14 -0
- data/spec/support/kernel.rb +46 -0
- data/spec/support/matchers/image.rb +19 -0
- data/spec/support/matchers/name.rb +17 -0
- data/spec/support/rspec.rb +4 -2
- data/spec/support/shared_examples/generator.rb +48 -0
- data/spec/support/shared_examples/pattern.rb +33 -0
- data/spec/support/shared_examples/pattern_name.rb +9 -0
- data/spec/support/shared_examples/structure.rb +50 -0
- data/spec/support/string.rb +3 -2
- data/spec/svg_spec.rb +8 -6
- metadata +105 -37
- data/.rubocop.yml +0 -13
- data/lib/geo_pattern/pattern/base_pattern.rb +0 -47
- data/lib/geo_pattern/pattern/chevron_pattern.rb +0 -45
- data/lib/geo_pattern/pattern/concentric_circles_pattern.rb +0 -47
- data/lib/geo_pattern/pattern/diamond_pattern.rb +0 -56
- data/lib/geo_pattern/pattern/hexagon_pattern.rb +0 -57
- data/lib/geo_pattern/pattern/mosaic_squares_pattern.rb +0 -76
- data/lib/geo_pattern/pattern/nested_squares_pattern.rb +0 -51
- data/lib/geo_pattern/pattern/octagon_pattern.rb +0 -35
- data/lib/geo_pattern/pattern/overlapping_circles_pattern.rb +0 -46
- data/lib/geo_pattern/pattern/overlapping_rings_pattern.rb +0 -46
- data/lib/geo_pattern/pattern/plaid_pattern.rb +0 -49
- data/lib/geo_pattern/pattern/plus_sign_pattern.rb +0 -53
- data/lib/geo_pattern/pattern/sine_wave_pattern.rb +0 -36
- data/lib/geo_pattern/pattern/square_pattern.rb +0 -27
- data/lib/geo_pattern/pattern/tessellation_pattern.rb +0 -93
- data/lib/geo_pattern/pattern/triangle_pattern.rb +0 -51
- data/lib/geo_pattern/pattern/xes_pattern.rb +0 -58
- data/lib/geo_pattern/svg.rb +0 -77
- data/spec/support/helpers.rb +0 -34
@@ -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
|
data/spec/support/aruba.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
require
|
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
|
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
|
-
|
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
|
data/spec/support/rspec.rb
CHANGED
@@ -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 =
|
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
|
data/spec/support/string.rb
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
#
|
2
|
-
|
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
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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.
|
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:
|
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: '
|
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: '
|
40
|
+
version: '2.2'
|
41
41
|
description: Generate SVG beautiful patterns
|
42
42
|
email:
|
43
|
-
-
|
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
|
-
- ".
|
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
|
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/
|
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: '
|
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
|
-
|
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: []
|