letter_avatar 0.3.5 → 0.3.9
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 +5 -5
- data/CHANGELOG.md +17 -0
- data/README.md +27 -1
- data/lib/letter_avatar/avatar.rb +11 -6
- data/lib/letter_avatar/colors.rb +18 -3
- data/lib/letter_avatar/configuration.rb +35 -1
- data/lib/letter_avatar/version.rb +1 -1
- data/lib/letter_avatar.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: b6dacffd37b1ed6ffe0bd73e45b53e78633bad53c59ab6efd0aa130e468fde8c
|
|
4
|
+
data.tar.gz: 73a8007813254f22ab63d4c4146fd4ee864f7f3d391fc6d3b268112ad3f521b9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 06a5a887dfcba06b5e1832127ca346ab8f95ff425dca8cb366c1dcab7bab967d3d47112c46f3ddc8c8915ea037a33d8bf96b80fd1163b2f4b69317d9e4c769b4
|
|
7
|
+
data.tar.gz: 4152a78ea6534e2391434a3923932e6548b59228ecf515e131220e1ea390ce20691122654310a634018a58f99d15b699321f8de900dcf25e651272753258f082
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
0.3.8
|
|
2
|
+
-----
|
|
3
|
+
|
|
4
|
+
- added `LetterAvatar.font` config option.
|
|
5
|
+
|
|
6
|
+
0.3.7
|
|
7
|
+
-----
|
|
8
|
+
|
|
9
|
+
- added `LetterAvatar.custom_palette` config option.
|
|
10
|
+
- bumped `FULLSIZE` to 600.
|
|
11
|
+
|
|
12
|
+
0.3.6
|
|
13
|
+
-----
|
|
14
|
+
|
|
15
|
+
- added `LetterAvatar.letters_count` config option.
|
|
16
|
+
- added `LetterAvatar.pointsize` config option.
|
|
17
|
+
|
|
1
18
|
0.3.5
|
|
2
19
|
-----
|
|
3
20
|
|
data/README.md
CHANGED
|
@@ -4,6 +4,7 @@ Gem for creating letter avatar from user's name (or any other strong / character
|
|
|
4
4
|
|
|
5
5
|
Code extracted from [discourse](https://www.discourse.org/) source (thanks guys!) - I needed this functionality in three projects, so here's the gem! :-)
|
|
6
6
|
|
|
7
|
+
[](https://badge.fury.io/rb/letter_avatar)
|
|
7
8
|
[](https://codeclimate.com/github/ksz2k/letter_avatar)
|
|
8
9
|
|
|
9
10
|
## Examples
|
|
@@ -53,17 +54,40 @@ LetterAvatar.setup do |config|
|
|
|
53
54
|
config.colors_palette = :iwanthue # default is :google
|
|
54
55
|
config.weight = 500 # default is 300
|
|
55
56
|
config.annotate_position = '-0+10' # default is -0+5
|
|
57
|
+
config.letters_count = 2 # default is 1
|
|
58
|
+
config.pointsize = 70 # default is 140
|
|
56
59
|
end
|
|
57
60
|
```
|
|
58
61
|
|
|
59
62
|
#### Color palette
|
|
60
63
|
|
|
61
|
-
We have
|
|
64
|
+
We have three color palettes implemented: `iwanthue`, `google` and `custom`.
|
|
62
65
|
|
|
63
66
|
Each of them have different colors, but the `iwanthue` also differently calculates the color for specified username.
|
|
64
67
|
|
|
65
68
|
The `google` selected will generate the same avatar for both, "Krzysiek" and "ksz2k" usernames given (both of them starts with letter "k"), but `iwanthue` will calculate it's md5 and then selects color, so there's huge chance that these usernames get different colors.
|
|
66
69
|
|
|
70
|
+
##### Custom palette definition
|
|
71
|
+
|
|
72
|
+
You can define your own `custom` palette:
|
|
73
|
+
|
|
74
|
+
```ruby
|
|
75
|
+
LetterAvatar.setup do |config|
|
|
76
|
+
config.colors_palette = :custom
|
|
77
|
+
config.custom_palette = [[120, 132, 205], [91, 149, 249], [72, 194, 249], [69, 208, 226]]
|
|
78
|
+
end
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
##### Custom font definition
|
|
82
|
+
|
|
83
|
+
You can define your own `custom` palette:
|
|
84
|
+
|
|
85
|
+
```ruby
|
|
86
|
+
LetterAvatar.setup do |config|
|
|
87
|
+
config.font = File.join(File.expand_path('../../', File.dirname(__FILE__)), 'app/assets/fonts', 'font_name.ext')
|
|
88
|
+
end
|
|
89
|
+
```
|
|
90
|
+
|
|
67
91
|
## Usage
|
|
68
92
|
|
|
69
93
|
```ruby
|
|
@@ -99,6 +123,8 @@ There's also helper for this. To use it, you need:
|
|
|
99
123
|
Say, you have a model `User` (which must have attribute or method `name`)
|
|
100
124
|
|
|
101
125
|
```ruby
|
|
126
|
+
require 'letter_avatar/has_avatar'
|
|
127
|
+
|
|
102
128
|
class User
|
|
103
129
|
include LetterAvatar::HasAvatar
|
|
104
130
|
...
|
data/lib/letter_avatar/avatar.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
|
|
1
3
|
module LetterAvatar
|
|
2
4
|
class Avatar
|
|
3
5
|
# BUMP UP if avatar algorithm changes
|
|
@@ -5,7 +7,7 @@ module LetterAvatar
|
|
|
5
7
|
|
|
6
8
|
# Largest avatar generated, one day when pixel ratio hit 3
|
|
7
9
|
# we will need to change this
|
|
8
|
-
FULLSIZE =
|
|
10
|
+
FULLSIZE = 600
|
|
9
11
|
|
|
10
12
|
FILL_COLOR = 'rgba(255, 255, 255, 0.65)'.freeze
|
|
11
13
|
|
|
@@ -18,7 +20,8 @@ module LetterAvatar
|
|
|
18
20
|
def self.from_username(username)
|
|
19
21
|
identity = new
|
|
20
22
|
identity.color = LetterAvatar::Colors.for(username)
|
|
21
|
-
|
|
23
|
+
letters = username.split(/\s+/).map {|word| word[0]}.join('')[0..LetterAvatar.letters_count - 1]
|
|
24
|
+
identity.letter = letters.upcase
|
|
22
25
|
|
|
23
26
|
identity
|
|
24
27
|
end
|
|
@@ -40,9 +43,11 @@ module LetterAvatar
|
|
|
40
43
|
return filename if cache && File.exist?(filename)
|
|
41
44
|
|
|
42
45
|
fullsize = fullsize_path(identity)
|
|
43
|
-
|
|
46
|
+
if !cache || !File.exist?(fullsize)
|
|
47
|
+
generate_fullsize(identity)
|
|
48
|
+
end
|
|
49
|
+
LetterAvatar.resize(fullsize, filename, size, size) if size != FULLSIZE
|
|
44
50
|
|
|
45
|
-
LetterAvatar.resize(fullsize, filename, size, size)
|
|
46
51
|
filename
|
|
47
52
|
end
|
|
48
53
|
|
|
@@ -65,8 +70,8 @@ module LetterAvatar
|
|
|
65
70
|
convert
|
|
66
71
|
-size #{FULLSIZE}x#{FULLSIZE}
|
|
67
72
|
xc:#{to_rgb(identity.color)}
|
|
68
|
-
-pointsize
|
|
69
|
-
-font #{
|
|
73
|
+
-pointsize #{LetterAvatar.pointsize}
|
|
74
|
+
-font #{LetterAvatar.font}
|
|
70
75
|
-weight #{LetterAvatar.weight}
|
|
71
76
|
-fill '#{LetterAvatar.fill_color}'
|
|
72
77
|
-gravity Center
|
data/lib/letter_avatar/colors.rb
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
require 'digest'
|
|
2
|
+
|
|
1
3
|
module LetterAvatar
|
|
2
4
|
module Colors
|
|
3
|
-
PALETTES = [:google, :iwanthue]
|
|
5
|
+
PALETTES = [:google, :iwanthue, :custom]
|
|
4
6
|
|
|
5
7
|
GOOGLE_COLORS = [
|
|
6
8
|
[226, 95, 81], # A
|
|
@@ -256,7 +258,7 @@ module LetterAvatar
|
|
|
256
258
|
|
|
257
259
|
def self.with_iwanthue(username)
|
|
258
260
|
iwanthue[
|
|
259
|
-
Digest::MD5.hexdigest(username)[0...15].to_i(16) % iwanthue.length
|
|
261
|
+
::Digest::MD5.hexdigest(username)[0...15].to_i(16) % iwanthue.length
|
|
260
262
|
]
|
|
261
263
|
end
|
|
262
264
|
|
|
@@ -270,10 +272,23 @@ module LetterAvatar
|
|
|
270
272
|
elsif /[\d]/ =~ char
|
|
271
273
|
google[char.to_i]
|
|
272
274
|
else
|
|
273
|
-
google[Digest::MD5.hexdigest(username)[0...15].to_i(16) % google.length]
|
|
275
|
+
google[::Digest::MD5.hexdigest(username)[0...15].to_i(16) % google.length]
|
|
274
276
|
end
|
|
275
277
|
end
|
|
276
278
|
|
|
279
|
+
def self.with_custom(username)
|
|
280
|
+
custom_palette = LetterAvatar.custom_palette
|
|
281
|
+
custom_palette[::Digest::MD5.hexdigest(username)[0...15].to_i(16) % custom_palette.length]
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
def self.valid_custom_palette?(palette)
|
|
285
|
+
return false unless palette.is_a?(Array)
|
|
286
|
+
return palette.all? do |color|
|
|
287
|
+
false unless color.is_a?(Array)
|
|
288
|
+
color.all? { |i| i.is_a?(Integer) }
|
|
289
|
+
end
|
|
290
|
+
end
|
|
291
|
+
|
|
277
292
|
# Colors form Google Inbox
|
|
278
293
|
# https://inbox.google.com
|
|
279
294
|
def self.google
|
|
@@ -8,6 +8,14 @@ module LetterAvatar
|
|
|
8
8
|
@cache_base_path = v
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
+
def font
|
|
12
|
+
@font || Avatar::FONT_FILENAME
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def font=(v)
|
|
16
|
+
@font = v
|
|
17
|
+
end
|
|
18
|
+
|
|
11
19
|
def fill_color
|
|
12
20
|
@fill_color || Avatar::FILL_COLOR
|
|
13
21
|
end
|
|
@@ -21,9 +29,19 @@ module LetterAvatar
|
|
|
21
29
|
end
|
|
22
30
|
|
|
23
31
|
def colors_palette=(v)
|
|
24
|
-
@colors_palette = v if
|
|
32
|
+
@colors_palette = v if Colors::PALETTES.include?(v)
|
|
25
33
|
end
|
|
26
34
|
|
|
35
|
+
def custom_palette
|
|
36
|
+
@custom_palette ||= nil
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def custom_palette=(v)
|
|
40
|
+
@custom_palette = v
|
|
41
|
+
raise "Missing Custom Palette, please set config.custom_palette if using :custom" if @custom_palette.nil? && @colors_palette == :custom
|
|
42
|
+
raise "Invalid Custom Palette, please update config.custom_palette" unless Colors::valid_custom_palette?(@custom_palette)
|
|
43
|
+
end
|
|
44
|
+
|
|
27
45
|
def weight
|
|
28
46
|
@weight ||= 300
|
|
29
47
|
end
|
|
@@ -39,5 +57,21 @@ module LetterAvatar
|
|
|
39
57
|
def annotate_position=(v)
|
|
40
58
|
@annotate_position = v
|
|
41
59
|
end
|
|
60
|
+
|
|
61
|
+
def letters_count
|
|
62
|
+
@letters_count ||= 1
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def letters_count=(v)
|
|
66
|
+
@letters_count = v
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def pointsize
|
|
70
|
+
@pointsize ||= 140
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def pointsize=(v)
|
|
74
|
+
@pointsize = v
|
|
75
|
+
end
|
|
42
76
|
end
|
|
43
77
|
end
|
data/lib/letter_avatar.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: letter_avatar
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Discourse Developers
|
|
@@ -11,7 +11,7 @@ authors:
|
|
|
11
11
|
autorequire:
|
|
12
12
|
bindir: bin
|
|
13
13
|
cert_chain: []
|
|
14
|
-
date:
|
|
14
|
+
date: 2021-09-06 00:00:00.000000000 Z
|
|
15
15
|
dependencies: []
|
|
16
16
|
description: Gem for creating letter avatar from user's name
|
|
17
17
|
email:
|
|
@@ -49,8 +49,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
49
49
|
- !ruby/object:Gem::Version
|
|
50
50
|
version: '0'
|
|
51
51
|
requirements: []
|
|
52
|
-
|
|
53
|
-
rubygems_version: 2.5.1
|
|
52
|
+
rubygems_version: 3.1.3
|
|
54
53
|
signing_key:
|
|
55
54
|
specification_version: 4
|
|
56
55
|
summary: Create nice initals avatars from your users usernames
|