@@ -14,22 +14,14 @@ def to_unicode
14
14
end
15
15
16
16
class Array
17
- def to_ruby
18
- self . map ( &:to_i ) . int_to_hex . map { |d | "\\ u{#{ d } }" } . join ( '' )
19
- end
20
-
21
- def int_to_hex
22
- self . map { |item | item . is_a? ( Numeric ) ? item . to_unicode : item . to_s }
23
- end
24
-
25
- def to_emoji
26
- self . map ( &:to_i ) . pack ( 'U*' ) + "\ufe0f "
17
+ def to_codepoint_string
18
+ self . map { |item | item . is_a? ( Numeric ) ? '0x' + item . to_unicode : item . to_s } . join ( ', ' )
27
19
end
28
20
end
29
21
30
22
PWD = Pathname . new File . expand_path ( File . dirname ( __FILE__ ) )
31
23
EMOJI_DB_PATH = PWD . join ( './emoji-db/' )
32
- MARSHAL_TMP_FILE = File . expand_path ( './alfred-emoji-marshal -cache' , Dir . tmpdir )
24
+ MARSHAL_TMP_FILE = File . expand_path ( './alfred-emoji-workflow -cache' , Dir . tmpdir )
33
25
34
26
STDERR . puts '===='
35
27
STDERR . puts "ARGV: `#{ ARGV } `"
@@ -42,8 +34,12 @@ def to_emoji
42
34
opts . summary_indent = " "
43
35
opts . summary_width = 20
44
36
45
- opts . on ( "-t" , "--tone [1-5]" , [ '1' , '2' , '3' , '4' , '5' ] , "Include skin tone" ) do |t |
46
- $skin_tone = t . to_i
37
+ opts . on ( "-t" , "--tone [number]" , /^\d +$/ , "Include skin tone" ) do |t |
38
+ if t . to_i % 11 == 0
39
+ $skin_tone = ( t . to_i / 11 ) . to_s
40
+ else
41
+ $skin_tone = t
42
+ end
47
43
end
48
44
49
45
opts . on ( "-d" , "--debug" , "Run in debug mode (no cache)" ) do |_o |
@@ -60,6 +56,8 @@ def reset_marshal_cache
60
56
}
61
57
62
58
fc [ 'db' ] . each do |k , v |
59
+ puts [ k , v ]
60
+
63
61
fc [ 'db' ] [ k ] [ 'name' ] = fc [ 'db' ] [ k ] [ 'name' ] || ''
64
62
fc [ 'search_strings' ] [ k ] = [
65
63
'' ,
@@ -77,7 +75,9 @@ def reset_marshal_cache
77
75
end
78
76
79
77
if fc [ 'db' ] [ k ] [ 'fitz' ]
80
- fc [ 'db' ] [ k ] [ 'fitz' ] . map! { |p | EMOJI_DB_PATH . join ( p ) }
78
+ fc [ 'db' ] [ k ] [ 'fitz' ] . each do |k , v |
79
+ v . merge! ( { 'image' => EMOJI_DB_PATH . join ( v [ 'image' ] ) } )
80
+ end
81
81
end
82
82
end
83
83
f . rewind
@@ -94,7 +94,6 @@ def reset_marshal_cache
94
94
puts JSON . pretty_generate ( {
95
95
:items => [
96
96
{
97
- # :arg => unicode_txt,
98
97
:uid => '__debug__' ,
99
98
:title => "Debug \u{1f41b} " ,
100
99
:subtitle => "Emoji database has been reset" ,
@@ -136,68 +135,73 @@ def reset_marshal_cache
136
135
end
137
136
end
138
137
139
- items = ( exact_matches + matches ) . map do |emojilib_key |
140
- STDERR . puts "CODEPOINT: `#{ emojilib_key } `"
141
- emoji = EMOJI_OBJ [ 'db' ] [ emojilib_key ]
138
+ STDERR . puts JSON . pretty_generate ( ENV . to_h )
142
139
143
- path = emoji [ 'image' ]
144
- codepoints = [ emoji [ 'codepoints' ] ]
145
-
146
- fitz = if $skin_tone && emoji [ 'fitz' ]
147
- [
148
- nil ,
149
- 0x1f3fb ,
150
- 0x1f3fc ,
151
- 0x1f3fd ,
152
- 0x1f3fe ,
153
- 0x1f3ff ,
154
- ] [ $skin_tone]
140
+ items = ( exact_matches + matches ) . map do |emoji_key |
141
+ STDERR . puts "CODEPOINT: `#{ emoji_key } `"
142
+ emoji = EMOJI_OBJ [ 'db' ] [ emoji_key ]
143
+
144
+ if $skin_tone && emoji [ 'fitz' ] && emoji [ 'fitz' ] [ $skin_tone]
145
+ emoji = emoji [ 'fitz' ] [ $skin_tone]
155
146
end
156
147
157
- path = emoji [ 'fitz' ] [ $skin_tone - 1 ] if fitz
148
+ path = emoji [ 'image' ]
149
+ codepoints = emoji [ 'codepoints' ]
158
150
159
- STDERR . puts "KEYWORDS: `#{ EMOJI_OBJ [ 'search_strings' ] [ emojilib_key ] } `"
151
+ STDERR . puts "KEYWORDS: `#{ EMOJI_OBJ [ 'search_strings' ] [ emoji_key ] } `"
160
152
STDERR . puts path
161
153
162
- codepoints = [ *emoji [ 'codepoints' ] , fitz ] . compact
163
154
164
155
emojilib_name = emoji [ 'emojilib_name' ] ? ":#{ emoji [ 'emojilib_name' ] } :" : ''
165
156
166
- unicode_txt = codepoints . to_emoji
167
- ruby_txt = codepoints . to_ruby
157
+ unicode_txt = codepoints . pack ( 'U*' )
158
+ codepoint_txt = codepoints . to_codepoint_string
159
+
160
+ subtitle = "Copy #{ unicode_txt } to clipboard"
161
+ mods = {
162
+ :ctrl => {
163
+ :valid => true ,
164
+ :arg => emoji_key ,
165
+ :subtitle => "Copy #{ emoji_key } to clipboard" ,
166
+ :variables => {
167
+ :active_key => 'ctrl'
168
+ } ,
169
+ } ,
170
+ :shift => {
171
+ :valid => !!emoji [ 'emojilib_name' ] ,
172
+ :arg => emoji [ 'emojilib_name' ] ,
173
+ :subtitle => emoji [ 'emojilib_name' ] ? "Copy #{ emojilib_name } to clipboard" : "No emojilib name :..(" ,
174
+ :variables => {
175
+ :active_key => 'shift'
176
+ } ,
177
+ } ,
178
+ :alt => {
179
+ :valid => true ,
180
+ :arg => codepoint_txt ,
181
+ :subtitle => "Copy '#{ codepoint_txt } ' to clipboard" ,
182
+ } ,
183
+ :cmd => {
184
+ :valid => true ,
185
+ :arg => path ,
186
+ :subtitle => "Reveal image for #{ unicode_txt } in Finder" ,
187
+ :variables => {
188
+ :active_key => 'cmd'
189
+ } ,
190
+ } ,
191
+ }
168
192
169
193
{
170
194
:arg => unicode_txt ,
171
- :uid => emojilib_key ,
195
+ :uid => emoji_key ,
196
+ :variables => { } ,
172
197
:icon => {
173
198
:path => path ,
174
199
} ,
175
200
# :type => 'file:skipcheck',
176
201
:title => emoji [ 'name' ] ,
177
202
:quicklookurl => path ,
178
- :subtitle => "Copy #{ unicode_txt } to clipboard" ,
179
- :mods => {
180
- :alt => {
181
- :valid => true ,
182
- :arg => ruby_txt ,
183
- :subtitle => "Copy #{ ruby_txt } to clipboard"
184
- } ,
185
- :ctrl => {
186
- :valid => true ,
187
- :arg => emojilib_key ,
188
- :subtitle => "Copy #{ emojilib_key } to clipboard"
189
- } ,
190
- :shift => {
191
- :valid => !!emoji [ 'emojilib_name' ] ,
192
- :arg => emoji [ 'emojilib_name' ] ,
193
- :subtitle => emoji [ 'emojilib_name' ] ? "Copy #{ emojilib_name } to clipboard" : "No emojilib name :..("
194
- } ,
195
- :cmd => {
196
- :valid => true ,
197
- :arg => path ,
198
- :subtitle => "Reveal image for #{ unicode_txt } in Finder"
199
- }
200
- }
203
+ :subtitle => subtitle ,
204
+ :mods => mods ,
201
205
}
202
206
end
203
207
0 commit comments