geo_pattern 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c9f7a1d68763d9687409b3287d684ca2a7b2a431
4
- data.tar.gz: 4838fb061e33e3cd85619b79e2c173172bb238a9
3
+ metadata.gz: 81c3c62556904d41859cbdc5f24b309d27643d61
4
+ data.tar.gz: 13208f9b302c0294458d5c6d33ed41c5ea6bddf2
5
5
  SHA512:
6
- metadata.gz: dde60ae59a8baa0fe2600bffe0f90faaf7100dd05d9e99047d7b03659496913021247d9fd6f0995024c3989051c24cd41a7763c3430aa1c246417f4d25da29aa
7
- data.tar.gz: 8dc34dcf622481ab135da5d1545be848f9b26f03204dfabd7343c7e5056e2aab09345fd3645b8400c63b6f35fa2deb183bc6bfef6d769a904eacc36896a851dd
6
+ metadata.gz: 429e50e9f25823d253761aae3b9fedf5a113271bd1cbeb495a32b4f7d828af56a7c9a8308553e85e50f93266d3e2c19f90fb93a72504c096d029aec6c962f3d2
7
+ data.tar.gz: 77b6992af30dba44823e148850fa32e7de5b0b04454c091818d4ce99714a8bb4e07b89f148d47ae06903389472063b23e0b94b455e6cca194991c6a44dbc3eb9
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format Fuubar
2
+ --order rand
3
+ --color
@@ -0,0 +1,13 @@
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
data/Gemfile CHANGED
@@ -2,3 +2,23 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in geopatterns.gemspec
4
4
  gemspec
5
+
6
+ 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
+
17
+ if RUBY_VERSION >= "2"
18
+ gem 'byebug'
19
+ gem 'pry-byebug'
20
+ else
21
+ gem 'debugger'
22
+ gem 'pry-debugger'
23
+ end
24
+ end
data/README.md CHANGED
@@ -28,25 +28,25 @@ Or install it yourself as:
28
28
  Make a new pattern:
29
29
 
30
30
  ```ruby
31
- pattern = GeoPattern.generate("Mastering Markdown")
31
+ pattern = GeoPattern.generate('Mastering Markdown')
32
32
  ```
33
33
 
34
34
  To specify a base background color (with a hue and saturation that adjusts depending on the string):
35
35
 
36
36
  ```ruby
37
- pattern = GeoPattern.generate("Mastering Markdown", {:base_color => "#fc0"})
37
+ pattern = GeoPattern.generate('Mastering Markdown', base_color: '#fc0')
38
38
  ```
39
39
 
40
40
  To use a specific background color (w/o any hue or saturation adjustments):
41
41
 
42
42
  ```ruby
43
- pattern = GeoPattern.generate("Mastering Markdown", {:color => "#fc0"})
43
+ pattern = GeoPattern.generate('Mastering Markdown', color: '#fc0')
44
44
  ```
45
45
 
46
46
  To use a specific [pattern generator](#available-patterns):
47
47
 
48
48
  ```ruby
49
- pattern = GeoPattern.generate("Mastering Markdown", {:generator => GeoPattern::SineWavePattern})
49
+ pattern = GeoPattern.generate('Mastering Markdown', generator: GeoPattern::SineWavePattern)
50
50
  ```
51
51
 
52
52
  Get the SVG string:
data/Rakefile CHANGED
@@ -1 +1,23 @@
1
- require "bundler/gem_tasks"
1
+ require 'rubocop/rake_task'
2
+ require 'inch/rake'
3
+ require 'rspec/core/rake_task'
4
+
5
+ desc 'Default task running Tests'
6
+ task default: :test
7
+
8
+ desc 'Run test suite'
9
+ task test: 'test:rspec'
10
+ # task test: %w(test:rspec test:rubocop)
11
+
12
+ namespace :test do
13
+
14
+ RSpec::Core::RakeTask.new(:rspec)
15
+
16
+ RuboCop::RakeTask.new
17
+
18
+ Inch::Rake::Suggest.new
19
+ end
20
+
21
+ namespace :gem do
22
+ require 'bundler/gem_tasks'
23
+ end
@@ -4,22 +4,20 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'geo_pattern/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "geo_pattern"
7
+ spec.name = 'geo_pattern'
8
8
  spec.version = GeoPattern::VERSION
9
- spec.authors = ["Jason Long"]
10
- spec.email = ["jlong@github.com"]
9
+ spec.authors = ['Jason Long']
10
+ spec.email = ['jlong@github.com']
11
11
  spec.summary = %q{Generate SVG beautiful patterns}
12
12
  spec.description = %q{Generate SVG beautiful patterns}
13
- spec.homepage = "https://github.com/jasonlong/geo_pattern"
14
- spec.license = "MIT"
13
+ spec.homepage = 'https://github.com/jasonlong/geo_pattern'
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency "color", "~> 1.5"
22
-
23
- spec.add_development_dependency "bundler", "~> 1.5"
24
- spec.add_development_dependency "rake"
21
+ spec.add_dependency 'color', '~> 1.5'
22
+ spec.add_development_dependency 'bundler', '~> 1.5'
25
23
  end
@@ -1,7 +1,31 @@
1
- require "geo_pattern/version"
2
- require "geo_pattern/svg"
3
- require 'geo_pattern/pattern/pattern_helpers'
4
- require "geo_pattern/pattern_generator"
1
+ require 'base64'
2
+ require 'digest/sha1'
3
+ require 'color'
4
+
5
+ require 'geo_pattern/version'
6
+ require 'geo_pattern/svg'
7
+ require 'geo_pattern/pattern_helpers'
8
+ require 'geo_pattern/helpers'
9
+
10
+ require 'geo_pattern/pattern/base_pattern'
11
+ require 'geo_pattern/pattern/chevron_pattern'
12
+ require 'geo_pattern/pattern/concentric_circles_pattern'
13
+ require 'geo_pattern/pattern/diamond_pattern'
14
+ require 'geo_pattern/pattern/hexagon_pattern'
15
+ require 'geo_pattern/pattern/mosaic_squares_pattern'
16
+ require 'geo_pattern/pattern/nested_squares_pattern'
17
+ require 'geo_pattern/pattern/octagon_pattern'
18
+ require 'geo_pattern/pattern/overlapping_circles_pattern'
19
+ require 'geo_pattern/pattern/overlapping_rings_pattern'
20
+ require 'geo_pattern/pattern/plaid_pattern'
21
+ require 'geo_pattern/pattern/plus_sign_pattern'
22
+ require 'geo_pattern/pattern/sine_wave_pattern'
23
+ require 'geo_pattern/pattern/square_pattern'
24
+ require 'geo_pattern/pattern/tessellation_pattern'
25
+ require 'geo_pattern/pattern/triangle_pattern'
26
+ require 'geo_pattern/pattern/xes_pattern'
27
+
28
+ require 'geo_pattern/pattern_generator'
5
29
 
6
30
  module GeoPattern
7
31
  def self.generate(string=Time.now, opts={})
@@ -0,0 +1,7 @@
1
+ module GeoPattern
2
+ module Helpers
3
+ def require_files_matching_pattern(pattern)
4
+ Dir.glob(pattern).each { |f| require_relative f }
5
+ end
6
+ end
7
+ end
@@ -1,7 +1,3 @@
1
- require 'base64'
2
- require 'digest/sha1'
3
- require 'color'
4
-
5
1
  module GeoPattern
6
2
  class PatternGenerator
7
3
  DEFAULTS = {
@@ -1,5 +1,3 @@
1
- Dir[File.join(File.dirname(__FILE__), '**', '*.rb')].each { |file| require file }
2
-
3
1
  module GeoPattern
4
2
  module PatternHelpers
5
3
  def self.hex_val(hash, index, length)
@@ -1,5 +1,7 @@
1
1
  module GeoPattern
2
2
  class SVG
3
+ include Comparable
4
+
3
5
  def initialize
4
6
  @width = 100
5
7
  @height = 100
@@ -67,5 +69,9 @@ module GeoPattern
67
69
  def self.as_comment(str)
68
70
  "<!-- #{str} -->"
69
71
  end
72
+
73
+ def <=>(other)
74
+ to_s <=> other.to_s
75
+ end
70
76
  end
71
77
  end
@@ -1,3 +1,3 @@
1
1
  module GeoPattern
2
- VERSION = "1.3.1"
2
+ VERSION = "1.3.2"
3
3
  end
@@ -0,0 +1,44 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe GeoPattern do
5
+ let(:string) { 'Mastering Markdown' }
6
+
7
+ context '.generate' do
8
+ it 'generates a pattern for a string' do
9
+ pattern = GeoPattern.generate(string)
10
+ expect(pattern).not_to be_nil
11
+ end
12
+
13
+ it 'is always the same' do
14
+ pattern1 = GeoPattern.generate(string)
15
+ pattern2 = GeoPattern.generate(string)
16
+
17
+ expect(pattern1.svg_string).to eq pattern2.svg_string
18
+ end
19
+
20
+ it 'sets background color with adjusting hue and saturation based on string' do
21
+ html_base_color = '#fc0'
22
+ rgb_base_color = html_to_rgb_for_string(string, html_base_color)
23
+ pattern = GeoPattern.generate(string, base_color: html_base_color)
24
+
25
+ expect(pattern.svg_string).to include(rgb_base_color)
26
+ end
27
+
28
+ it 'sets background color' do
29
+ html_base_color = '#fc0'
30
+ rgb_base_color = html_to_rgb(html_base_color)
31
+ pattern = GeoPattern.generate(string, color: html_base_color)
32
+
33
+ expect(pattern.svg_string).to include(rgb_base_color)
34
+ end
35
+
36
+ it 'uses the specified generator' do
37
+
38
+ pattern1 = GeoPattern.generate(string, generator: GeoPattern::SineWavePattern)
39
+ pattern2 = GeoPattern.generate(string)
40
+
41
+ expect(pattern1.svg_string).not_to eq pattern2.svg_string
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+ $LOAD_PATH << File.expand_path('../../lib', __FILE__)
3
+
4
+ require 'simplecov'
5
+ SimpleCov.command_name 'rspec'
6
+ SimpleCov.start
7
+
8
+ # Pull in all of the gems including those in the `test` group
9
+ require 'bundler'
10
+ Bundler.require :default, :test, :development
11
+
12
+ require 'geo_pattern'
13
+
14
+ # Make some helpers available
15
+ include GeoPattern::Helpers
16
+
17
+ # Loading support files
18
+ #::File.expand_path('../support/*.rb', __FILE__)
19
+ require_files_matching_pattern ::File.expand_path('../support/*.rb', __FILE__)
20
+ require_files_matching_pattern ::File.expand_path('../shared_examples/*.rb', __FILE__)
21
+
22
+ # No need to add the namespace to every class tested
23
+ include GeoPattern
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ require 'aruba/api'
3
+ require 'aruba/reporting'
4
+
5
+ # Spec Helpers
6
+ module SpecHelper
7
+ # Helpers for aruba
8
+ module Aruba
9
+ include ::Aruba::Api
10
+
11
+ def dirs
12
+ @dirs ||= %w(tmp rspec)
13
+ end
14
+ end
15
+ end
16
+
17
+ RSpec.configure do |c|
18
+ c.include SpecHelper::Aruba
19
+
20
+ c.before :each do
21
+ clean_current_dir
22
+ restore_env
23
+ end
24
+ end
@@ -0,0 +1,34 @@
1
+ module SpecHelpers
2
+ def html_to_rgb(color)
3
+ generate_rgb_string(Color::RGB.from_html(color))
4
+ end
5
+
6
+ def html_to_rgb_for_string(string, base_color)
7
+ hash = Digest::SHA1.hexdigest string
8
+
9
+ hue_offset = GeoPattern::PatternHelpers.map(GeoPattern::PatternHelpers.hex_val(hash, 14, 3), 0, 4095, 0, 359)
10
+ sat_offset = GeoPattern::PatternHelpers.hex_val(hash, 17, 1)
11
+ base_color = Color::RGB.from_html(base_color).to_hsl
12
+ base_color.hue = base_color.hue - hue_offset;
13
+
14
+ if (sat_offset % 2 == 0)
15
+ base_color.saturation = base_color.saturation + sat_offset
16
+ else
17
+ base_color.saturation = base_color.saturation - sat_offset
18
+ end
19
+
20
+ generate_rgb_string(base_color.to_rgb)
21
+ end
22
+
23
+ def generate_rgb_string(rgb)
24
+ r = (rgb.r * 255).round
25
+ g = (rgb.g * 255).round
26
+ b = (rgb.b * 255).round
27
+
28
+ format("rgb(%d, %d, %d)", r, g, b)
29
+ end
30
+ end
31
+
32
+ RSpec.configure do |config|
33
+ config.include SpecHelpers
34
+ end
@@ -0,0 +1,24 @@
1
+ RSpec.configure do |config|
2
+ config.expect_with :rspec do |expectations|
3
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
4
+ end
5
+
6
+ config.mock_with :rspec do |mocks|
7
+ mocks.verify_partial_doubles = true
8
+ end
9
+
10
+ config.filter_run :focus
11
+ config.run_all_when_everything_filtered = true
12
+
13
+ config.disable_monkey_patching!
14
+ config.warnings = false
15
+
16
+ if config.files_to_run.one?
17
+ config.default_formatter = 'doc'
18
+ end
19
+
20
+ config.profile_examples = 10
21
+
22
+ config.order = :random
23
+ Kernel.srand config.seed
24
+ end
@@ -0,0 +1,2 @@
1
+ # encoding: utf-8
2
+ require 'active_support/core_ext/string/strip'
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe SVG do
4
+ context '#<=>' do
5
+ it 'is comparable' do
6
+ svg1 = SVG.new
7
+ svg2 = SVG.new
8
+
9
+ expect(svg1).to eq svg2
10
+ end
11
+ end
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.1
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Long
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-29 00:00:00.000000000 Z
11
+ date: 2015-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: color
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.5'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
41
  description: Generate SVG beautiful patterns
56
42
  email:
57
43
  - jlong@github.com
@@ -60,12 +46,15 @@ extensions: []
60
46
  extra_rdoc_files: []
61
47
  files:
62
48
  - ".gitignore"
49
+ - ".rspec"
50
+ - ".rubocop.yml"
63
51
  - Gemfile
64
52
  - LICENSE.txt
65
53
  - README.md
66
54
  - Rakefile
67
55
  - geo_pattern.gemspec
68
56
  - lib/geo_pattern.rb
57
+ - lib/geo_pattern/helpers.rb
69
58
  - lib/geo_pattern/pattern/base_pattern.rb
70
59
  - lib/geo_pattern/pattern/chevron_pattern.rb
71
60
  - lib/geo_pattern/pattern/concentric_circles_pattern.rb
@@ -76,7 +65,6 @@ files:
76
65
  - lib/geo_pattern/pattern/octagon_pattern.rb
77
66
  - lib/geo_pattern/pattern/overlapping_circles_pattern.rb
78
67
  - lib/geo_pattern/pattern/overlapping_rings_pattern.rb
79
- - lib/geo_pattern/pattern/pattern_helpers.rb
80
68
  - lib/geo_pattern/pattern/plaid_pattern.rb
81
69
  - lib/geo_pattern/pattern/plus_sign_pattern.rb
82
70
  - lib/geo_pattern/pattern/sine_wave_pattern.rb
@@ -85,8 +73,16 @@ files:
85
73
  - lib/geo_pattern/pattern/triangle_pattern.rb
86
74
  - lib/geo_pattern/pattern/xes_pattern.rb
87
75
  - lib/geo_pattern/pattern_generator.rb
76
+ - lib/geo_pattern/pattern_helpers.rb
88
77
  - lib/geo_pattern/svg.rb
89
78
  - lib/geo_pattern/version.rb
79
+ - spec/geo_pattern_spec.rb
80
+ - spec/spec_helper.rb
81
+ - spec/support/aruba.rb
82
+ - spec/support/helpers.rb
83
+ - spec/support/rspec.rb
84
+ - spec/support/string.rb
85
+ - spec/svg_spec.rb
90
86
  homepage: https://github.com/jasonlong/geo_pattern
91
87
  licenses:
92
88
  - MIT
@@ -111,4 +107,12 @@ rubygems_version: 2.2.0
111
107
  signing_key:
112
108
  specification_version: 4
113
109
  summary: Generate SVG beautiful patterns
114
- test_files: []
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: