colos 0.0.6 → 0.0.7
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.
- checksums.yaml +4 -4
- data/lib/colos/version.rb +1 -1
- data/lib/colos.rb +52 -18
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cfa71c2fe49fceab591edb2e9a5b8ceee220c807
|
4
|
+
data.tar.gz: 808ced25842577be602ba36dd9a49411f40fc521
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67b32de676420cb93d9fd5bddc7ab68473c3181f5c3a4de19d8db4d1a901e763e94444aeae8d5d26bcf9feada37f4fc84f7a87c646ce51b549315e4a86318da7
|
7
|
+
data.tar.gz: 55ffa8a1277e14e6f7cee299f2677fe0f4044923eee775a78a3be533d1c09ad4ef023e245e49cb6b56210a76586cf0b10bce2f277555548e4c7e80666de04e7f
|
data/lib/colos/version.rb
CHANGED
data/lib/colos.rb
CHANGED
@@ -3,7 +3,7 @@ require "cityhash"
|
|
3
3
|
class Colos
|
4
4
|
|
5
5
|
# Options store
|
6
|
-
|
6
|
+
attr_reader :options
|
7
7
|
|
8
8
|
# Initializer
|
9
9
|
#
|
@@ -15,7 +15,6 @@ class Colos
|
|
15
15
|
# options: (Hash)
|
16
16
|
def initialize options = {}
|
17
17
|
default_options = {
|
18
|
-
hash: CityHash,
|
19
18
|
frequency: 1.4,
|
20
19
|
randomizr: 0,
|
21
20
|
format: :hex
|
@@ -24,11 +23,14 @@ class Colos
|
|
24
23
|
# merge
|
25
24
|
@options = default_options.merge options
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
26
|
+
check_options
|
27
|
+
end
|
28
|
+
|
29
|
+
# Options setter
|
30
|
+
def options= key, value
|
31
|
+
@options[key] = value
|
32
|
+
|
33
|
+
check_options
|
32
34
|
end
|
33
35
|
|
34
36
|
# Convert IPv4 to color
|
@@ -45,9 +47,13 @@ class Colos
|
|
45
47
|
|
46
48
|
raise "Invalid IP" unless ip.size == 4
|
47
49
|
|
48
|
-
|
50
|
+
number = ip.permutation(3).to_a[@options[:randomizr]]
|
49
51
|
|
50
|
-
|
52
|
+
if @options[:format] == :hex
|
53
|
+
make_color number
|
54
|
+
else
|
55
|
+
to_rgb make_color number
|
56
|
+
end
|
51
57
|
end
|
52
58
|
|
53
59
|
# Convert IPv4 to colors
|
@@ -60,15 +66,21 @@ class Colos
|
|
60
66
|
# str: (String)
|
61
67
|
def ips str
|
62
68
|
ip = str.split '.'
|
63
|
-
|
69
|
+
colors = []
|
64
70
|
|
65
71
|
raise "Invalid IP" unless ip.size == 4
|
66
72
|
|
67
|
-
ip.permutation(3).to_a.each do |
|
68
|
-
|
73
|
+
ip.permutation(3).to_a.each do |number|
|
74
|
+
colors << make_color(number)
|
69
75
|
end
|
70
76
|
|
71
|
-
|
77
|
+
if @options[:format] == :hex
|
78
|
+
colors
|
79
|
+
else
|
80
|
+
colors.map do |hex|
|
81
|
+
to_rgb hex
|
82
|
+
end
|
83
|
+
end
|
72
84
|
end
|
73
85
|
|
74
86
|
# Convert string to color
|
@@ -81,7 +93,13 @@ class Colos
|
|
81
93
|
# str: (String)
|
82
94
|
def color str
|
83
95
|
hash = CityHash.hash32 str
|
84
|
-
(hash**(1.0 / @options[:frequency])).to_i.to_s 16
|
96
|
+
hex = (hash**(1.0 / @options[:frequency])).to_i.to_s 16
|
97
|
+
|
98
|
+
if @options[:format] == :hex
|
99
|
+
hex
|
100
|
+
else
|
101
|
+
to_rgb hex
|
102
|
+
end
|
85
103
|
end
|
86
104
|
|
87
105
|
# Convert string to colors
|
@@ -101,21 +119,37 @@ class Colos
|
|
101
119
|
colors << q.to_s(16) if q.to_s(16).size == 6
|
102
120
|
end
|
103
121
|
|
104
|
-
|
122
|
+
if @options[:format] == :hex
|
123
|
+
colors
|
124
|
+
else
|
125
|
+
colors.map do |hex|
|
126
|
+
to_rgb hex
|
127
|
+
end
|
128
|
+
end
|
105
129
|
end
|
106
130
|
|
107
131
|
private
|
108
132
|
|
109
|
-
def
|
133
|
+
def check_options
|
134
|
+
raise "Frequency option should be from 1.2 to 1.6" unless (1.2..1.6).include? @options[:frequency]
|
135
|
+
raise "Randomizr option should be from 0 to 23" unless (0..23).include? @options[:randomizr]
|
136
|
+
raise "Format can be hex or rgb" unless [:hex, :rgb].include? @options[:format]
|
137
|
+
end
|
138
|
+
|
139
|
+
def make_color number
|
110
140
|
hex = ""
|
111
141
|
|
112
|
-
|
142
|
+
number.map(&:to_i).each do |b|
|
113
143
|
b = b.to_s 16
|
114
144
|
b = "0#{b}" unless b.size == 2
|
115
|
-
hex
|
145
|
+
hex << b
|
116
146
|
end
|
117
147
|
|
118
148
|
hex
|
119
149
|
end
|
120
150
|
|
151
|
+
def to_rgb hex
|
152
|
+
hex.match(/(..)(..)(..)/).to_a.map(&:hex)[1..-1]
|
153
|
+
end
|
154
|
+
|
121
155
|
end
|
metadata
CHANGED
@@ -1,16 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: colos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuri Artemev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
12
|
-
dependencies:
|
13
|
-
|
11
|
+
date: 2013-04-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: cityhash
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.7.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.7.0
|
27
|
+
description: Convert Ruby string to color
|
14
28
|
email:
|
15
29
|
- i@artemeff.com
|
16
30
|
executables: []
|
@@ -38,9 +52,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
38
52
|
version: '0'
|
39
53
|
requirements: []
|
40
54
|
rubyforge_project:
|
41
|
-
rubygems_version: 2.0.
|
55
|
+
rubygems_version: 2.0.3
|
42
56
|
signing_key:
|
43
57
|
specification_version: 4
|
44
|
-
summary:
|
58
|
+
summary: String to color
|
45
59
|
test_files: []
|
46
60
|
has_rdoc:
|