identicon 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/identicon.gemspec +8 -8
  3. data/lib/identicon.rb +84 -65
  4. metadata +11 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cc364d61b90b314a193e1970d488c6dc4531364c
4
- data.tar.gz: 4ada24b1a13a39a1bd182167fbd51d516cc2a197
3
+ metadata.gz: 089111120e3ecd928f381fb37796dc024b33a89e
4
+ data.tar.gz: 6e9af318764806f81014b5c03b2e287d07f3da0f
5
5
  SHA512:
6
- metadata.gz: 92ffa1913b4049cac62664a1319a1971058fbadbbbe4742602970f8d03b09b770c0785cafe178937ecf16266cb6204ff359051b18f12276db3ba5af4cd060e28
7
- data.tar.gz: ba5b800412da3caa320438ed9f32139ecd4df7b5bf4d6d366957b2ab789c835032f2867aa0a6d9323204e8a52e452048a00e269caaa3e60885602f4cf5f10c68
6
+ metadata.gz: f3db94a2ec35df83d71ec3b8d62db038b63930d543a7b09cc098c6c0bf1ee1330cff26476c3ed81f217c9cc5024aa60513581f8cabf3b1b2540a4d43812bd465
7
+ data.tar.gz: 3c7885d97bcc5dbd30286564efff9d8d41149acfae6b4bdab33df44a4d2723fea37d65347c3b1559d36dc51efc002385cb1e9ed182302a7b5c0446a1cf5c64b7
data/identicon.gemspec CHANGED
@@ -3,18 +3,18 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "identicon"
6
- s.version = "0.0.2"
6
+ s.version = "0.0.3"
7
7
  s.authors = ["Victor Gama"]
8
- s.email = ["victor@insitelabs.com.br"]
8
+ s.email = ["hey@vito.io"]
9
9
 
10
10
  s.description = "A simple github-like identicons generator."
11
- s.summary = "A simple github-like identicons generator."
11
+ s.summary = "A simple github-like identicons generator."
12
12
  s.homepage = "http://github.com/victorgama/identicon"
13
- s.license = "MIT"
13
+ s.license = "MIT"
14
14
 
15
- s.files = `git ls-files`.split($/)
15
+ s.files = `git ls-files`.split($/)
16
16
  s.executables = s.files.grep(%r{^bin/}) { |file| File.basename(file) }
17
- s.require_paths = ["lib"]
17
+ s.require_paths = ["lib"]
18
18
 
19
- s.add_dependency "chunky_png", "~> 1.2.8"
20
- end
19
+ s.add_dependency "chunky_png"
20
+ end
data/lib/identicon.rb CHANGED
@@ -3,64 +3,72 @@ require 'chunky_png'
3
3
 
4
4
  # Generates GitHub-like identicons using MD5 hashes
5
5
  class Identicon
6
+
7
+ attr_accessor :size, :data, :background
8
+
9
+ CHARS_REGEX = /(\w)(\w)/
10
+
11
+ COLORS = {
12
+ :a => [196, 108, 168],
13
+ :b => [127, 219, 107],
14
+ :c => [83, 89, 215],
15
+ :d => [111, 198, 148],
16
+ :e => [186, 130, 82],
17
+ :f => [113, 66, 197],
18
+ :"0" => [201, 186, 84],
19
+ :"1" => [114, 153, 205],
20
+ :"2" => [141, 108, 204],
21
+ :"3" => [75, 183, 114],
22
+ :"4" => [192, 86, 82],
23
+ :"5" => [199, 115, 209],
24
+ :"6" => [206, 77, 94],
25
+ :"7" => [211, 135, 162],
26
+ :"8" => [71, 194, 197],
27
+ :"9" => [188, 110, 93]
28
+ }
29
+
6
30
  class << self
7
31
  # Generates a identicon using the data:image protocol.
8
32
  # Usefull for web applications.
9
33
  #
10
34
  # === Parameters
11
- # * data = The data that will be converted to a identicon
12
- # * size = (Optional) The image size. Defaults to 420px
13
- # * background = (Optional) The background color to be used in a rgb array. ([255, 255, 255])
14
-
35
+ # data - The data that will be converted to a identicon
36
+ # size - (Optional) The image size. Defaults to 420px
37
+ # background - (Optional) The background color to be used in a rgb array.
38
+ # Ex: [255, 255, 255]
15
39
  def data_url_for(data, size = 420, background = nil)
16
- img = self.new data, size
40
+ img = self.new(data, size)
17
41
  img.background = background unless background.nil?
18
42
  img.generate_image
19
43
  img.to_data_url
20
44
  end
21
45
 
46
+
22
47
  # Generates a identicon and stores it in a file
23
- # Usefull for web applications.
48
+ # Useful for web applications.
24
49
  #
25
50
  # === Parameters
26
- # * data = The data that will be converted to a identicon
27
- # * path = The path where the file will be stored
28
- # * size = (Optional) The image size. Defaults to 420px
29
- # * background = (Optional) The background color to be used in a rgb array. ([255, 255, 255])
51
+ # data - The data that will be converted to a identicon
52
+ # path - The path where the file will be stored
53
+ # size - (Optional) The image size. Defaults to 420px
54
+ # background - (Optional) The background color to be used in a rgb array.
55
+ # Ex: [255, 255, 255]
56
+ #
57
+ # Returns nothing
30
58
  def file_for(data, path, size = 420, background = nil)
31
- img = self.new data, size
59
+ img = self.new(data, size)
32
60
  img.background = background unless background.nil?
33
61
  img.generate_image
34
62
  img.save(path)
35
63
  end
36
64
  end
37
- attr_accessor :size, :data, :background
38
- CHARS_REGEX = /(\w)(\w)/
39
-
40
- COLORS = {
41
- :a => [196, 108, 168],
42
- :b => [127, 219, 107],
43
- :c => [83, 89, 215],
44
- :d => [111, 198, 148],
45
- :e => [186, 130, 82],
46
- :f => [113, 66, 197],
47
- :"0" => [201, 186, 84],
48
- :"1" => [114, 153, 205],
49
- :"2" => [141, 108, 204],
50
- :"3" => [75, 183, 114],
51
- :"4" => [192, 86, 82],
52
- :"5" => [199, 115, 209],
53
- :"6" => [206, 77, 94],
54
- :"7" => [211, 135, 162],
55
- :"8" => [71, 194, 197],
56
- :"9" => [188, 110, 93]
57
- }
58
-
59
- # The +new+ method initializes a new Identicon instance
65
+
66
+
67
+ # Constructs a new Identicon instance
60
68
  #
61
69
  # === Parameters
62
- # * data = The data that will be converted to a identicon
63
- # * size = The image size
70
+ # data - The data that will be converted to a identicon
71
+ # size - The image size
64
72
  def initialize(data, size)
65
73
  @hash = Digest::MD5.hexdigest(data.to_s)
66
74
  @chars = @hash.scan(CHARS_REGEX)
@@ -80,6 +88,7 @@ class Identicon
80
88
  value
81
89
  end
82
90
 
91
+
83
92
  def data=(value)
84
93
  @hash = Digest::MD5.hexdigest(data.to_s)
85
94
  @chars = @hash.scan(CHARS_REGEX)
@@ -87,6 +96,45 @@ class Identicon
87
96
  value
88
97
  end
89
98
 
99
+
100
+ # Process the specified data and generates the result
101
+ def generate_image
102
+ pImage = ChunkyPNG::Image.new(@image_size, @image_size, ChunkyPNG::Color::rgb(@background[0], @background[1], @background[2]))
103
+ @image = ChunkyPNG::Image.new(@size, @size, ChunkyPNG::Color::rgb(@background[0], @background[1], @background[2]))
104
+ @square_array.each_key { |lineKey|
105
+ lineValue = @square_array[lineKey]
106
+ lineValue.each_index { |colKey|
107
+ colValue = lineValue[colKey]
108
+ if(colValue)
109
+ pImage.rect(
110
+ colKey * @pixel_ratio,
111
+ lineKey * @pixel_ratio,
112
+ (colKey + 1) * @pixel_ratio,
113
+ (lineKey + 1) * @pixel_ratio,
114
+ ChunkyPNG::Color::TRANSPARENT,
115
+ ChunkyPNG::Color.rgb(@color[0], @color[1], @color[2])
116
+ )
117
+ end
118
+ }
119
+ }
120
+ @image.compose!(pImage, @pixel_ratio / 2, @pixel_ratio / 2)
121
+ end
122
+
123
+
124
+ # Exports the result to a data:image format.
125
+ def to_data_url
126
+ @image.to_data_url
127
+ end
128
+
129
+
130
+ # Exports the result to a file
131
+ # === Parameters
132
+ # path - Path where the image will be stored
133
+ def save(path)
134
+ @image.save(path)
135
+ end
136
+
137
+
90
138
  private
91
139
  def convert_hash
92
140
  chars = @chars.map { |p|
@@ -115,33 +163,4 @@ class Identicon
115
163
  def h_to_b(value)
116
164
  value.bytes.first % 2 == 0
117
165
  end
118
-
119
- public
120
- # Process the specified data and generates the result
121
- def generate_image
122
- pImage = ChunkyPNG::Image.new(@image_size, @image_size, ChunkyPNG::Color::rgb(@background[0], @background[1], @background[2]))
123
- @image = ChunkyPNG::Image.new(@size, @size, ChunkyPNG::Color::rgb(@background[0], @background[1], @background[2]))
124
- @square_array.each_key { |lineKey|
125
- lineValue = @square_array[lineKey]
126
- lineValue.each_index { |colKey|
127
- colValue = lineValue[colKey]
128
- if(colValue)
129
- pImage.rect(colKey * @pixel_ratio, lineKey * @pixel_ratio, (colKey + 1) * @pixel_ratio, (lineKey + 1) * @pixel_ratio, ChunkyPNG::Color::TRANSPARENT, ChunkyPNG::Color.rgb(@color[0], @color[1], @color[2]))
130
- end
131
- }
132
- }
133
- @image.compose!(pImage, @pixel_ratio / 2, @pixel_ratio / 2)
134
- end
135
-
136
- # Exports the result to a data:image format.
137
- def to_data_url
138
- @image.to_data_url
139
- end
140
-
141
- # Exports the result to a file
142
- # === Parameters
143
- # * path = Path where the image will be stored
144
- def save(path)
145
- @image.save(path)
146
- end
147
166
  end
metadata CHANGED
@@ -1,37 +1,37 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: identicon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Gama
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-05 00:00:00.000000000 Z
11
+ date: 2014-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chunky_png
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.2.8
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.2.8
26
+ version: '0'
27
27
  description: A simple github-like identicons generator.
28
28
  email:
29
- - victor@insitelabs.com.br
29
+ - hey@vito.io
30
30
  executables: []
31
31
  extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
- - .gitignore
34
+ - ".gitignore"
35
35
  - LICENSE
36
36
  - README.md
37
37
  - identicon.gemspec
@@ -46,17 +46,17 @@ require_paths:
46
46
  - lib
47
47
  required_ruby_version: !ruby/object:Gem::Requirement
48
48
  requirements:
49
- - - ! '>='
49
+ - - ">="
50
50
  - !ruby/object:Gem::Version
51
51
  version: '0'
52
52
  required_rubygems_version: !ruby/object:Gem::Requirement
53
53
  requirements:
54
- - - ! '>='
54
+ - - ">="
55
55
  - !ruby/object:Gem::Version
56
56
  version: '0'
57
57
  requirements: []
58
58
  rubyforge_project:
59
- rubygems_version: 2.0.7
59
+ rubygems_version: 2.2.2
60
60
  signing_key:
61
61
  specification_version: 4
62
62
  summary: A simple github-like identicons generator.