omnibar 0.0.4 → 0.0.5
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/Gemfile.lock +18 -2
- data/README.md +10 -0
- data/lib/omnibar.rb +15 -0
- data/lib/omnibar/calculate.rb +1 -1
- data/lib/omnibar/emoji.rb +353 -0
- data/lib/omnibar/popular.rb +0 -2
- data/lib/omnibar/query.rb +4 -0
- data/lib/omnibar/renderer.rb +10 -2
- data/lib/omnibar/snippet.rb +26 -0
- data/lib/omnibar/spell.rb +21 -0
- data/lib/omnibar/system.rb +27 -0
- data/lib/omnibar/version.rb +1 -1
- data/omnibar.gemspec +4 -2
- metadata +45 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ac95e6ea1b99df44bf41c79f7a3790b3f579753
|
4
|
+
data.tar.gz: 3d3b992d0cd08ae4e45f6e6df63b8de5ad9a2af3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aad77472a565a347b6b9ae4db75294b9f3976ae515be84e5a17d2f40cc9075c1c96904a732694d838d2d76a237c80912afa2b96fc16866c04e8041d1c5881b06
|
7
|
+
data.tar.gz: 779c6a126717a08620abf45d43575d32a3900c30119c25c38d5c723a7a6577750b783479527d8799b5c4cd6c175b6a2f7a3534c2f9866b9537d85ecd9401f55b
|
data/Gemfile.lock
CHANGED
@@ -1,18 +1,34 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
omnibar (0.0.
|
4
|
+
omnibar (0.0.5)
|
5
|
+
amatch (~> 0.4.0)
|
5
6
|
dry-configurable (~> 0.7.0)
|
6
|
-
|
7
|
+
ffi-aspell (~> 1.1, >= 1.1.0)
|
8
|
+
fuzzy_match (~> 2.1, >= 2.1.0)
|
7
9
|
|
8
10
|
GEM
|
9
11
|
remote: https://rubygems.org/
|
10
12
|
specs:
|
13
|
+
amatch (0.4.0)
|
14
|
+
mize
|
15
|
+
tins (~> 1.0)
|
11
16
|
concurrent-ruby (1.0.5)
|
12
17
|
dry-configurable (0.7.0)
|
13
18
|
concurrent-ruby (~> 1.0)
|
19
|
+
ffi (1.9.18)
|
20
|
+
ffi-aspell (1.1.0)
|
21
|
+
ffi
|
14
22
|
fuzzy_match (2.1.0)
|
23
|
+
mize (0.3.4)
|
24
|
+
protocol
|
25
|
+
protocol (1.0.1)
|
26
|
+
ruby_parser (~> 3.0)
|
15
27
|
rake (10.5.0)
|
28
|
+
ruby_parser (3.10.1)
|
29
|
+
sexp_processor (~> 4.9)
|
30
|
+
sexp_processor (4.10.0)
|
31
|
+
tins (1.15.0)
|
16
32
|
|
17
33
|
PLATFORMS
|
18
34
|
ruby
|
data/README.md
CHANGED
@@ -36,6 +36,16 @@ end
|
|
36
36
|
| render.highlight.bg | Symbol | `:yellow` |
|
37
37
|
| events.after_perform | Lambda | `-> {}` |
|
38
38
|
|
39
|
+
## OS Limitations
|
40
|
+
|
41
|
+
This gem has been developed on Ubuntu, and should work on most linux distributions.
|
42
|
+
All the code is in ruby, but there are several dependencies that are linux-only.
|
43
|
+
|
44
|
+
| Library | Usage |
|
45
|
+
|---------|-------|
|
46
|
+
| xdg-open | Opening urls and files |
|
47
|
+
| GNU aspell | Spell checking and suggestions |
|
48
|
+
|
39
49
|
## Contributing
|
40
50
|
|
41
51
|
Bug reports and pull requests are welcome on GitHub at https://github.com/shreve/omnibar.
|
data/lib/omnibar.rb
CHANGED
@@ -1,9 +1,16 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
require 'dry-configurable'
|
3
|
+
require 'fuzzy_match'
|
4
|
+
require 'amatch'
|
2
5
|
|
3
6
|
require 'omnibar/version'
|
4
7
|
require 'omnibar/app'
|
5
8
|
|
6
9
|
require 'omnibar/calculate'
|
10
|
+
require 'omnibar/emoji'
|
11
|
+
require 'omnibar/spell'
|
12
|
+
require 'omnibar/system'
|
13
|
+
require 'omnibar/snippet'
|
7
14
|
require 'omnibar/github'
|
8
15
|
require 'omnibar/popular'
|
9
16
|
require 'omnibar/duck_duck_go'
|
@@ -20,6 +27,12 @@ module Omnibar
|
|
20
27
|
setting :sites, []
|
21
28
|
end
|
22
29
|
|
30
|
+
setting :spell do
|
31
|
+
setting :dict, '/usr/share/dict/american-english'
|
32
|
+
end
|
33
|
+
|
34
|
+
setting :snippets, 'shrug' => '¯\_(ツ)_/¯'
|
35
|
+
|
23
36
|
setting :render do
|
24
37
|
setting :prompt, ->(width) { ('-' * width) << '>' }
|
25
38
|
|
@@ -38,3 +51,5 @@ module Omnibar
|
|
38
51
|
rescue LoadError => _
|
39
52
|
end
|
40
53
|
end
|
54
|
+
|
55
|
+
FuzzyMatch.engine = :amatch
|
data/lib/omnibar/calculate.rb
CHANGED
@@ -0,0 +1,353 @@
|
|
1
|
+
module Omnibar
|
2
|
+
class Emoji < Query
|
3
|
+
|
4
|
+
def result
|
5
|
+
key = search.find(input)
|
6
|
+
value = DICTIONARY[key]
|
7
|
+
|
8
|
+
"#{key} :: #{value}" if (key and value)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.search
|
12
|
+
@fm ||= FuzzyMatch.new(DICTIONARY.keys)
|
13
|
+
end
|
14
|
+
|
15
|
+
def search
|
16
|
+
self.class.search
|
17
|
+
end
|
18
|
+
|
19
|
+
def perform!
|
20
|
+
copy_to_clipboard DICTIONARY[search.find(input)]
|
21
|
+
end
|
22
|
+
|
23
|
+
DICTIONARY = {
|
24
|
+
"grinning" => "\u{1f600}",
|
25
|
+
"smiley" => "\u{1f603}",
|
26
|
+
"smile" => "\u{1f604}",
|
27
|
+
"grin" => "\u{1f601}",
|
28
|
+
"laughing" => "\u{1f606}",
|
29
|
+
"sweat_smile" => "\u{1f605}",
|
30
|
+
"joy" => "\u{1f602}",
|
31
|
+
"rofl" => "\u{1f923}",
|
32
|
+
"relaxed" => "\u{263a}",
|
33
|
+
"blush" => "\u{1f60a}",
|
34
|
+
"innocent" => "\u{1f607}",
|
35
|
+
"slight_smile" => "\u{1f642}",
|
36
|
+
"upside_down" => "\u{1f643}",
|
37
|
+
"wink" => "\u{1f609}",
|
38
|
+
"relieved" => "\u{1f60c}",
|
39
|
+
"heart_eyes" => "\u{1f60d}",
|
40
|
+
"kissing_heart" => "\u{1f618}",
|
41
|
+
"kissing" => "\u{1f617}",
|
42
|
+
"kissing_smiling_eyes" => "\u{1f619}",
|
43
|
+
"kissing_closed_eyes" => "\u{1f61a}",
|
44
|
+
"yum" => "\u{1f60b}",
|
45
|
+
"stuck_out_tongue_winking_eye" => "\u{1f61c}",
|
46
|
+
"stuck_out_tongue_closed_eyes" => "\u{1f61d}",
|
47
|
+
"stuck_out_tongue" => "\u{1f61b}",
|
48
|
+
"money_mouth" => "\u{1f911}",
|
49
|
+
"hugging" => "\u{1f917}",
|
50
|
+
"nerd" => "\u{1f913}",
|
51
|
+
"sunglasses" => "\u{1f60e}",
|
52
|
+
"clown" => "\u{1f921}",
|
53
|
+
"cowboy" => "\u{1f920}",
|
54
|
+
"smirk" => "\u{1f60f}",
|
55
|
+
"unamused" => "\u{1f612}",
|
56
|
+
"disappointed" => "\u{1f61e}",
|
57
|
+
"pensive" => "\u{1f614}",
|
58
|
+
"worried" => "\u{1f61f}",
|
59
|
+
"confused" => "\u{1f615}",
|
60
|
+
"slight_frown" => "\u{1f641}",
|
61
|
+
"frowning2" => "\u{2639}",
|
62
|
+
"persevere" => "\u{1f623}",
|
63
|
+
"confounded" => "\u{1f616}",
|
64
|
+
"tired_face" => "\u{1f62b}",
|
65
|
+
"weary" => "\u{1f629}",
|
66
|
+
"triumph" => "\u{1f624}",
|
67
|
+
"angry" => "\u{1f620}",
|
68
|
+
"rage" => "\u{1f621}",
|
69
|
+
"no_mouth" => "\u{1f636}",
|
70
|
+
"neutral_face" => "\u{1f610}",
|
71
|
+
"expressionless" => "\u{1f611}",
|
72
|
+
"hushed" => "\u{1f62f}",
|
73
|
+
"frowning" => "\u{1f626}",
|
74
|
+
"anguished" => "\u{1f627}",
|
75
|
+
"open_mouth" => "\u{1f62e}",
|
76
|
+
"astonished" => "\u{1f632}",
|
77
|
+
"dizzy_face" => "\u{1f635}",
|
78
|
+
"flushed" => "\u{1f633}",
|
79
|
+
"scream" => "\u{1f631}",
|
80
|
+
"fearful" => "\u{1f628}",
|
81
|
+
"cold_sweat" => "\u{1f630}",
|
82
|
+
"cry" => "\u{1f622}",
|
83
|
+
"disappointed_relieved" => "\u{1f625}",
|
84
|
+
"drooling_face" => "\u{1f924}",
|
85
|
+
"sob" => "\u{1f62d}",
|
86
|
+
"sweat" => "\u{1f613}",
|
87
|
+
"sleepy" => "\u{1f62a}",
|
88
|
+
"sleeping" => "\u{1f634}",
|
89
|
+
"rolling_eyes" => "\u{1f644}",
|
90
|
+
"thinking" => "\u{1f914}",
|
91
|
+
"lying_face" => "\u{1f925}",
|
92
|
+
"grimacing" => "\u{1f62c}",
|
93
|
+
"zipper_mouth" => "\u{1f910}",
|
94
|
+
"nauseated_face" => "\u{1f922}",
|
95
|
+
"sneezing_face" => "\u{1f927}",
|
96
|
+
"mask" => "\u{1f637}",
|
97
|
+
"thermometer_face" => "\u{1f912}",
|
98
|
+
"head_bandage" => "\u{1f915}",
|
99
|
+
"smiling_imp" => "\u{1f608}",
|
100
|
+
"imp" => "\u{1f47f}",
|
101
|
+
"japanese_ogre" => "\u{1f479}",
|
102
|
+
"japanese_goblin" => "\u{1f47a}",
|
103
|
+
"poop" => "\u{1f4a9}",
|
104
|
+
"ghost" => "\u{1f47b}",
|
105
|
+
"skull" => "\u{1f480}",
|
106
|
+
"skull_crossbones" => "\u{2620}",
|
107
|
+
"alien" => "\u{1f47d}",
|
108
|
+
"space_invader" => "\u{1f47e}",
|
109
|
+
"robot" => "\u{1f916}",
|
110
|
+
"jack_o_lantern" => "\u{1f383}",
|
111
|
+
"smiley_cat" => "\u{1f63a}",
|
112
|
+
"smile_cat" => "\u{1f638}",
|
113
|
+
"joy_cat" => "\u{1f639}",
|
114
|
+
"heart_eyes_cat" => "\u{1f63b}",
|
115
|
+
"smirk_cat" => "\u{1f63c}",
|
116
|
+
"kissing_cat" => "\u{1f63d}",
|
117
|
+
"scream_cat" => "\u{1f640}",
|
118
|
+
"crying_cat_face" => "\u{1f63f}",
|
119
|
+
"pouting_cat" => "\u{1f63e}",
|
120
|
+
"open_hands" => "\u{1f450}",
|
121
|
+
"raised_hands" => "\u{1f64c}",
|
122
|
+
"clap" => "\u{1f44f}",
|
123
|
+
"pray" => "\u{1f64f}",
|
124
|
+
"handshake" => "\u{1f91d}",
|
125
|
+
"thumbsup" => "\u{1f44d}",
|
126
|
+
"thumbsdown" => "\u{1f44e}",
|
127
|
+
"punch" => "\u{1f44a}",
|
128
|
+
"fist" => "\u{270a}",
|
129
|
+
"left_facing_fist" => "\u{1f91b}",
|
130
|
+
"right_facing_fist" => "\u{1f91c}",
|
131
|
+
"fingers_crossed" => "\u{1f91e}",
|
132
|
+
"v" => "\u{270c}",
|
133
|
+
"metal" => "\u{1f918}",
|
134
|
+
"ok_hand" => "\u{1f44c}",
|
135
|
+
"point_left" => "\u{1f448}",
|
136
|
+
"point_right" => "\u{1f449}",
|
137
|
+
"point_up_2" => "\u{1f446}",
|
138
|
+
"point_down" => "\u{1f447}",
|
139
|
+
"point_up" => "\u{261d}",
|
140
|
+
"raised_hand" => "\u{270b}",
|
141
|
+
"raised_back_of_hand" => "\u{1f91a}",
|
142
|
+
"hand_splayed" => "\u{1f590}",
|
143
|
+
"vulcan" => "\u{1f596}",
|
144
|
+
"wave" => "\u{1f44b}",
|
145
|
+
"call_me" => "\u{1f919}",
|
146
|
+
"muscle" => "\u{1f4aa}",
|
147
|
+
"middle_finger" => "\u{1f595}",
|
148
|
+
"writing_hand" => "\u{270d}",
|
149
|
+
"selfie" => "\u{1f933}",
|
150
|
+
"nail_care" => "\u{1f485}",
|
151
|
+
"ring" => "\u{1f48d}",
|
152
|
+
"lipstick" => "\u{1f484}",
|
153
|
+
"kiss" => "\u{1f48b}",
|
154
|
+
"lips" => "\u{1f444}",
|
155
|
+
"tongue" => "\u{1f445}",
|
156
|
+
"ear" => "\u{1f442}",
|
157
|
+
"nose" => "\u{1f443}",
|
158
|
+
"footprints" => "\u{1f463}",
|
159
|
+
"eye" => "\u{1f441}",
|
160
|
+
"eyes" => "\u{1f440}",
|
161
|
+
"speaking_head" => "\u{1f5e3}",
|
162
|
+
"bust_in_silhouette" => "\u{1f464}",
|
163
|
+
"busts_in_silhouette" => "\u{1f465}",
|
164
|
+
"baby" => "\u{1f476}",
|
165
|
+
"boy" => "\u{1f466}",
|
166
|
+
"girl" => "\u{1f467}",
|
167
|
+
"man" => "\u{1f468}",
|
168
|
+
"woman" => "\u{1f469}",
|
169
|
+
"blond haired_woman" => "\u{1f471 2640}",
|
170
|
+
"blond_haired_person" => "\u{1f471}",
|
171
|
+
"older_man" => "\u{1f474}",
|
172
|
+
"older_woman" => "\u{1f475}",
|
173
|
+
"man_with_chinese_cap" => "\u{1f472}",
|
174
|
+
"woman_wearing_turban" => "\u{1f473 2640}",
|
175
|
+
"person_wearing_turban" => "\u{1f473}",
|
176
|
+
"woman_police_officer" => "\u{1f46e 2640}",
|
177
|
+
"police_officer" => "\u{1f46e}",
|
178
|
+
"woman_construction_worker" => "\u{1f477 2640}",
|
179
|
+
"construction_worker" => "\u{1f477}",
|
180
|
+
"woman_guard" => "\u{1f482 2640}",
|
181
|
+
"guard" => "\u{1f482}",
|
182
|
+
"woman_detective" => "\u{1f575 2640}",
|
183
|
+
"detective" => "\u{1f575}",
|
184
|
+
"woman_health_worker" => "\u{1f469 2695}",
|
185
|
+
"man_health_worker" => "\u{1f468 2695}",
|
186
|
+
"woman_farmer" => "\u{1f469 1f33e}",
|
187
|
+
"man_farmer" => "\u{1f468 1f33e}",
|
188
|
+
"woman_cook" => "\u{1f469 1f373}",
|
189
|
+
"man_cook" => "\u{1f468 1f373}",
|
190
|
+
"woman_student" => "\u{1f469 1f393}",
|
191
|
+
"man_student" => "\u{1f468 1f393}",
|
192
|
+
"woman_singer" => "\u{1f469 1f3a4}",
|
193
|
+
"man_singer" => "\u{1f468 1f3a4}",
|
194
|
+
"woman_teacher" => "\u{1f469 1f3eb}",
|
195
|
+
"man_teacher" => "\u{1f468 1f3eb}",
|
196
|
+
"woman_factory_worker" => "\u{1f469 1f3ed}",
|
197
|
+
"man_factory_worker" => "\u{1f468 1f3ed}",
|
198
|
+
"woman_technologist" => "\u{1f469 1f4bb}",
|
199
|
+
"man_technologist" => "\u{1f468 1f4bb}",
|
200
|
+
"woman_office_worker" => "\u{1f469 1f4bc}",
|
201
|
+
"man_office_worker" => "\u{1f468 1f4bc}",
|
202
|
+
"woman_mechanic" => "\u{1f469 1f527}",
|
203
|
+
"man_mechanic" => "\u{1f468 1f527}",
|
204
|
+
"woman_scientist" => "\u{1f469 1f52c}",
|
205
|
+
"man_scientist" => "\u{1f468 1f52c}",
|
206
|
+
"woman_artist" => "\u{1f469 1f3a8}",
|
207
|
+
"man_artist" => "\u{1f468 1f3a8}",
|
208
|
+
"woman_firefighter" => "\u{1f469 1f692}",
|
209
|
+
"man_firefighter" => "\u{1f468 1f692}",
|
210
|
+
"woman_pilot" => "\u{1f469 2708}",
|
211
|
+
"man_pilot" => "\u{1f468 2708}",
|
212
|
+
"woman_astronaut" => "\u{1f469 1f680}",
|
213
|
+
"man_astronaut" => "\u{1f468 1f680}",
|
214
|
+
"woman_judge" => "\u{1f469 2696}",
|
215
|
+
"man_judge" => "\u{1f468 2696}",
|
216
|
+
"mrs_claus" => "\u{1f936}",
|
217
|
+
"santa" => "\u{1f385}",
|
218
|
+
"princess" => "\u{1f478}",
|
219
|
+
"prince" => "\u{1f934}",
|
220
|
+
"bride_with_veil" => "\u{1f470}",
|
221
|
+
"man_in_tuxedo" => "\u{1f935}",
|
222
|
+
"angel" => "\u{1f47c}",
|
223
|
+
"pregnant_woman" => "\u{1f930}",
|
224
|
+
"woman_bowing" => "\u{1f647 2640}",
|
225
|
+
"person_bowing" => "\u{1f647}",
|
226
|
+
"person_tipping_hand" => "\u{1f481}",
|
227
|
+
"man_tipping_hand" => "\u{1f481 2642}",
|
228
|
+
"person_gesturing_no" => "\u{1f645}",
|
229
|
+
"man_gesturing_no" => "\u{1f645 2642}",
|
230
|
+
"person_gesturing_ok" => "\u{1f646}",
|
231
|
+
"man_gesturing_ok" => "\u{1f646 2642}",
|
232
|
+
"person_raising_hand" => "\u{1f64b}",
|
233
|
+
"man_raising_hand" => "\u{1f64b 2642}",
|
234
|
+
"woman_facepalming" => "\u{1f926 2640}",
|
235
|
+
"man_facepalming" => "\u{1f926 2642}",
|
236
|
+
"woman_shrugging" => "\u{1f937 2640}",
|
237
|
+
"man_shrugging" => "\u{1f937 2642}",
|
238
|
+
"person_pouting" => "\u{1f64e}",
|
239
|
+
"man_pouting" => "\u{1f64e 2642}",
|
240
|
+
"person_frowning" => "\u{1f64d}",
|
241
|
+
"man_frowning" => "\u{1f64d 2642}",
|
242
|
+
"person_getting_haircut" => "\u{1f487}",
|
243
|
+
"man_getting_haircut" => "\u{1f487 2642}",
|
244
|
+
"person_getting_massage" => "\u{1f486}",
|
245
|
+
"man_getting_face_massage" => "\u{1f486 2642}",
|
246
|
+
"levitate" => "\u{1f574}",
|
247
|
+
"dancer" => "\u{1f483}",
|
248
|
+
"man_dancing" => "\u{1f57a}",
|
249
|
+
"people_with_bunny_ears_partying" => "\u{1f46f}",
|
250
|
+
"men_with_bunny_ears_partying" => "\u{1f46f 2642}",
|
251
|
+
"woman_walking" => "\u{1f6b6 2640}",
|
252
|
+
"person_walking" => "\u{1f6b6}",
|
253
|
+
"woman_running" => "\u{1f3c3 2640}",
|
254
|
+
"person_running" => "\u{1f3c3}",
|
255
|
+
"couple" => "\u{1f46b}",
|
256
|
+
"two_women_holding_hands" => "\u{1f46d}",
|
257
|
+
"two_men_holding_hands" => "\u{1f46c}",
|
258
|
+
"couple_with_heart" => "\u{1f491}",
|
259
|
+
"couple_ww" => "\u{1f469 2764 1f469}",
|
260
|
+
"couple_mm" => "\u{1f468 2764 1f468}",
|
261
|
+
"couplekiss" => "\u{1f48f}",
|
262
|
+
"kiss_ww" => "\u{1f469 2764 1f48b 1f469}",
|
263
|
+
"kiss_mm" => "\u{1f468 2764 1f48b 1f468}",
|
264
|
+
"family" => "\u{1f46a}",
|
265
|
+
"family_mwg" => "\u{1f468 1f469 1f467}",
|
266
|
+
"family_mwgb" => "\u{1f468 1f469 1f467 1f466}",
|
267
|
+
"family_mwbb" => "\u{1f468 1f469 1f466 1f466}",
|
268
|
+
"family_mwgg" => "\u{1f468 1f469 1f467 1f467}",
|
269
|
+
"family_wwb" => "\u{1f469 1f469 1f466}",
|
270
|
+
"family_wwg" => "\u{1f469 1f469 1f467}",
|
271
|
+
"family_wwgb" => "\u{1f469 1f469 1f467 1f466}",
|
272
|
+
"family_wwbb" => "\u{1f469 1f469 1f466 1f466}",
|
273
|
+
"family_wwgg" => "\u{1f469 1f469 1f467 1f467}",
|
274
|
+
"family_mmb" => "\u{1f468 1f468 1f466}",
|
275
|
+
"family_mmg" => "\u{1f468 1f468 1f467}",
|
276
|
+
"family_mmgb" => "\u{1f468 1f468 1f467 1f466}",
|
277
|
+
"family_mmbb" => "\u{1f468 1f468 1f466 1f466}",
|
278
|
+
"family_mmgg" => "\u{1f468 1f468 1f467 1f467}",
|
279
|
+
"family_woman_boy" => "\u{1f469 1f466}",
|
280
|
+
"family_woman_girl" => "\u{1f469 1f467}",
|
281
|
+
"family_woman_girl_boy" => "\u{1f469 1f467 1f466}",
|
282
|
+
"family_woman_boy_boy" => "\u{1f469 1f466 1f466}",
|
283
|
+
"family_woman_girl_girl" => "\u{1f469 1f467 1f467}",
|
284
|
+
"family_man_boy" => "\u{1f468 1f466}",
|
285
|
+
"family_man_girl" => "\u{1f468 1f467}",
|
286
|
+
"family_man_girl_boy" => "\u{1f468 1f467 1f466}",
|
287
|
+
"family_man_boy_boy" => "\u{1f468 1f466 1f466}",
|
288
|
+
"family_man_girl_girl" => "\u{1f468 1f467 1f467}",
|
289
|
+
"womans_clothes" => "\u{1f45a}",
|
290
|
+
"shirt" => "\u{1f455}",
|
291
|
+
"jeans" => "\u{1f456}",
|
292
|
+
"necktie" => "\u{1f454}",
|
293
|
+
"dress" => "\u{1f457}",
|
294
|
+
"bikini" => "\u{1f459}",
|
295
|
+
"kimono" => "\u{1f458}",
|
296
|
+
"high_heel" => "\u{1f460}",
|
297
|
+
"sandal" => "\u{1f461}",
|
298
|
+
"boot" => "\u{1f462}",
|
299
|
+
"mans_shoe" => "\u{1f45e}",
|
300
|
+
"athletic_shoe" => "\u{1f45f}",
|
301
|
+
"womans_hat" => "\u{1f452}",
|
302
|
+
"tophat" => "\u{1f3a9}",
|
303
|
+
"mortar_board" => "\u{1f393}",
|
304
|
+
"crown" => "\u{1f451}",
|
305
|
+
"helmet_with_cross" => "\u{26d1}",
|
306
|
+
"school_satchel" => "\u{1f392}",
|
307
|
+
"pouch" => "\u{1f45d}",
|
308
|
+
"purse" => "\u{1f45b}",
|
309
|
+
"handbag" => "\u{1f45c}",
|
310
|
+
"briefcase" => "\u{1f4bc}",
|
311
|
+
"eyeglasses" => "\u{1f453}",
|
312
|
+
"dark_sunglasses" => "\u{1f576}",
|
313
|
+
"closed_umbrella" => "\u{1f302}",
|
314
|
+
"umbrella2" => "\u{2602}",
|
315
|
+
"face_with_raised_eyebrow" => "\u{1f928}",
|
316
|
+
"star_struck" => "\u{1f929}",
|
317
|
+
"crazy_face" => "\u{1f92a}",
|
318
|
+
"shushing_face" => "\u{1f92b}",
|
319
|
+
"face_with_symbols_over_mouth" => "\u{1f92c}",
|
320
|
+
"face_with_hand_over_mouth" => "\u{1f92d}",
|
321
|
+
"face_vomiting" => "\u{1f92e}",
|
322
|
+
"exploding_head" => "\u{1f92f}",
|
323
|
+
"face_with_monocle" => "\u{1f9d0}",
|
324
|
+
"adult" => "\u{1f9d1}",
|
325
|
+
"child" => "\u{1f9d2}",
|
326
|
+
"older_adult" => "\u{1f9d3}",
|
327
|
+
"bearded_person" => "\u{1f9d4}",
|
328
|
+
"woman_with_headscarf" => "\u{1f9d5}",
|
329
|
+
"brain" => "\u{1f9e0}",
|
330
|
+
"billed_cap" => "\u{1f9e2}",
|
331
|
+
"scarf" => "\u{1f9e3}",
|
332
|
+
"gloves" => "\u{1f9e4}",
|
333
|
+
"coat" => "\u{1f9e5}",
|
334
|
+
"socks" => "\u{1f9e6}",
|
335
|
+
"love_you_gesture" => "\u{1f91f}",
|
336
|
+
"palms_up_together" => "\u{1f932}",
|
337
|
+
"woman_mage" => "\u{1f9d9 2640}",
|
338
|
+
"man_mage" => "\u{1f9d9 2642}",
|
339
|
+
"woman_fairy" => "\u{1f9da 2640}",
|
340
|
+
"man_fairy" => "\u{1f9da 2642}",
|
341
|
+
"woman_vampire" => "\u{1f9db 2640}",
|
342
|
+
"man_vampire" => "\u{1f9db 2642}",
|
343
|
+
"mermaid" => "\u{1f9dc 2640}",
|
344
|
+
"merman" => "\u{1f9dc 2642}",
|
345
|
+
"woman_elf" => "\u{1f9dd 2640}",
|
346
|
+
"man_elf" => "\u{1f9dd 2642}",
|
347
|
+
"woman_genie" => "\u{1f9de 2640}",
|
348
|
+
"man_genie" => "\u{1f9de 2642}",
|
349
|
+
"woman_zombie" => "\u{1f9df 2640}",
|
350
|
+
"man_zombie" => "\u{1f9df 2642}"
|
351
|
+
}.freeze
|
352
|
+
end
|
353
|
+
end
|
data/lib/omnibar/popular.rb
CHANGED
data/lib/omnibar/query.rb
CHANGED
data/lib/omnibar/renderer.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module Omnibar
|
2
2
|
class Renderer
|
3
|
+
NON_ASCII_REGEX = /[^\x00-\x7F]/.freeze
|
4
|
+
|
3
5
|
attr_reader :input, :results, :selection
|
4
6
|
|
5
7
|
def initialize(input, results, selection)
|
@@ -38,15 +40,21 @@ module Omnibar
|
|
38
40
|
end
|
39
41
|
|
40
42
|
def rpad(text, length = ANSI.size[:width])
|
41
|
-
text + (
|
43
|
+
textlength = text.length + non_ascii_chars(text).length
|
44
|
+
text + (' ' * [0, (length - textlength)].max)
|
42
45
|
end
|
43
46
|
|
44
47
|
def lpad(text, length = ANSI.size[:width])
|
45
|
-
|
48
|
+
textlength = text.length + non_ascii_chars(text).length
|
49
|
+
(' ' * [0, (length - textlength)].max) + text
|
46
50
|
end
|
47
51
|
|
48
52
|
def max_label_length
|
49
53
|
@mll ||= results.map(&:first).map(&:length).max || 10
|
50
54
|
end
|
55
|
+
|
56
|
+
def non_ascii_chars(string)
|
57
|
+
string.chars.select { |c| c.match?(NON_ASCII_REGEX) }
|
58
|
+
end
|
51
59
|
end
|
52
60
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Omnibar
|
2
|
+
class Snippet < Query
|
3
|
+
def result
|
4
|
+
key = search.find(input)
|
5
|
+
value = snippets[key]
|
6
|
+
"#{key} :: #{value}" if (key and value)
|
7
|
+
end
|
8
|
+
|
9
|
+
def snippets
|
10
|
+
Omnibar.config.snippets
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.search
|
14
|
+
@fz ||= FuzzyMatch.new(Omnibar.config.snippets.keys)
|
15
|
+
end
|
16
|
+
|
17
|
+
def search
|
18
|
+
self.class.search
|
19
|
+
end
|
20
|
+
|
21
|
+
def perform!
|
22
|
+
key = search.find(input)
|
23
|
+
copy_to_clipboard snippets[key]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'ffi/aspell'
|
2
|
+
|
3
|
+
module Omnibar
|
4
|
+
class Spell < Query
|
5
|
+
def result
|
6
|
+
speller.suggestions(input.split(' ').last).first if input.match?(/^spe?l?l? \w+/)
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.speller
|
10
|
+
@sp ||= FFI::Aspell::Speller.new('en_US')
|
11
|
+
end
|
12
|
+
|
13
|
+
def speller
|
14
|
+
self.class.speller
|
15
|
+
end
|
16
|
+
|
17
|
+
def perform!
|
18
|
+
copy_to_clipboard result
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Omnibar
|
2
|
+
#
|
3
|
+
# System Commands
|
4
|
+
#
|
5
|
+
# Interact with your system
|
6
|
+
#
|
7
|
+
class System < Query
|
8
|
+
COMMANDS = {
|
9
|
+
'sleep' => 'xset -display :0.0 dpms force off',
|
10
|
+
'reboot' => 'reboot',
|
11
|
+
'shutdown' => 'shutdown now',
|
12
|
+
'power off' => 'shutdown now'
|
13
|
+
}.freeze
|
14
|
+
|
15
|
+
def result
|
16
|
+
search.find(input)
|
17
|
+
end
|
18
|
+
|
19
|
+
def search
|
20
|
+
@fz ||= FuzzyMatch.new(COMMANDS.keys)
|
21
|
+
end
|
22
|
+
|
23
|
+
def perform!
|
24
|
+
puts COMMANDS[result]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/omnibar/version.rb
CHANGED
data/omnibar.gemspec
CHANGED
@@ -20,8 +20,10 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ['lib']
|
22
22
|
|
23
|
-
spec.
|
24
|
-
spec.
|
23
|
+
spec.add_runtime_dependency 'dry-configurable', '~> 0.7.0'
|
24
|
+
spec.add_runtime_dependency 'fuzzy_match', '~> 2.1', '>= 2.1.0'
|
25
|
+
spec.add_runtime_dependency 'amatch', '~> 0.4.0'
|
26
|
+
spec.add_runtime_dependency 'ffi-aspell', '~> 1.1', '>= 1.1.0'
|
25
27
|
|
26
28
|
spec.add_development_dependency 'bundler', '~> 1.16.a'
|
27
29
|
spec.add_development_dependency 'rake', '~> 10.0'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omnibar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jacob Evan Shreve
|
@@ -29,6 +29,9 @@ dependencies:
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.1'
|
34
|
+
- - ">="
|
32
35
|
- !ruby/object:Gem::Version
|
33
36
|
version: 2.1.0
|
34
37
|
type: :runtime
|
@@ -36,8 +39,45 @@ dependencies:
|
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
41
|
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '2.1'
|
44
|
+
- - ">="
|
39
45
|
- !ruby/object:Gem::Version
|
40
46
|
version: 2.1.0
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: amatch
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.4.0
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 0.4.0
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: ffi-aspell
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '1.1'
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 1.1.0
|
71
|
+
type: :runtime
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.1'
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: 1.1.0
|
41
81
|
- !ruby/object:Gem::Dependency
|
42
82
|
name: bundler
|
43
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,11 +128,15 @@ files:
|
|
88
128
|
- lib/omnibar/app.rb
|
89
129
|
- lib/omnibar/calculate.rb
|
90
130
|
- lib/omnibar/duck_duck_go.rb
|
131
|
+
- lib/omnibar/emoji.rb
|
91
132
|
- lib/omnibar/github.rb
|
92
133
|
- lib/omnibar/google.rb
|
93
134
|
- lib/omnibar/popular.rb
|
94
135
|
- lib/omnibar/query.rb
|
95
136
|
- lib/omnibar/renderer.rb
|
137
|
+
- lib/omnibar/snippet.rb
|
138
|
+
- lib/omnibar/spell.rb
|
139
|
+
- lib/omnibar/system.rb
|
96
140
|
- lib/omnibar/version.rb
|
97
141
|
- omnibar.gemspec
|
98
142
|
homepage: https://github.com/shreve/omnibar
|