rage_flip 2.2.1 → 2.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bacd83eb3112e708d5138f1fe307f889327576c832b47812ac7ab01bc3531dbd
4
- data.tar.gz: 6215ece7dd6b78a99a623714c7f5c511a11e37bd59580cd738b5a82cc6847749
3
+ metadata.gz: db5be08744369388bbc29752411e903e25ad018bcf024f49401f0181519b5642
4
+ data.tar.gz: b9117dc053c098d74625f71cdbf32cd4ef50542fe2c5d315f93d0f37f584af91
5
5
  SHA512:
6
- metadata.gz: 5b48335ed029e627c0674d0d8574e02b8ee9939d9e917cb0a6507c9cdc308976ebceca0536a79c13c36258002ee163198e3e0f968bae7ac089757f7aaf2b4a2c
7
- data.tar.gz: e10e1b704946ce5156cdf6e0d09ed8e1f9da2fddb2d397c5169db581b42c0490c8f7380a8d239363c56ca6906d3cc69f464ae86e2dbd0054d4ddb7dcb442d094
6
+ metadata.gz: ed8150e74a80e424f5c97c153bf349a1a25261c67af53c26b2cce71849e31406ddbf8db651fb6532d16ffd80a71cb9a9ef9e7c5e1e154709ad3f25c716980b5f
7
+ data.tar.gz: 2bc6ba4473e0a81a8a9dbf86e18921d04d693bf3fcc566297ee477e3d7fc5287ceb8dbe9e55c6b7615ba620f0b890d5c9e6858c8fe82d19e7722a71ab6261c91
data/README.md CHANGED
@@ -47,7 +47,7 @@ The classic table flip command flips text upside down with the iconic table flip
47
47
 
48
48
  ```bash
49
49
  table_flip "Hello World"
50
- # Output: (╯°□°)╯︵┻plɹoM ollǝH
50
+ # Output: (╯°□°)╯︵ plɹoM ollǝH ┻━┻
51
51
  # Result is automatically copied to clipboard
52
52
  ```
53
53
 
@@ -71,9 +71,7 @@ The emote system provides a comprehensive collection of emoticons, text substitu
71
71
 
72
72
  ```bash
73
73
  emote # List all available emotes
74
- emote list # List all available emotes
75
- emote categories # List all emote categories
76
- emote category food # List emotes in the food category
74
+ emote list # List all available emotes
77
75
  emote disapproval # Output: (ಠ_ಠ)
78
76
  emote rage # Output: ಠ益ಠ
79
77
  emote flip # Output: (╯°□°)╯︵ ┻━┻
@@ -129,143 +127,22 @@ emote yuno # Output: ლ(ಠ益ಠლ)
129
127
 
130
128
  All emotes are accessed through the `emote` command followed by the emote name. Use `emote list` to see the complete collection of available emotes.
131
129
 
132
- #### Multi-Emote Combinations
133
-
134
- The emote system supports combining multiple emoji-only emotes into compound expressions. This allows you to create custom combinations on the fly:
135
-
136
- **With Hyphens:**
137
- ```bash
138
- emote bullshit-catshit # Output: 🐄💩🐱💩
139
- emote omg-cat # Output: 😱🐱
140
- emote dog-panda-cat # Output: 🐶🐼🐱
141
- ```
142
-
143
- **Without Separators:**
144
- ```bash
145
- emote bullshitcatshit # Output: 🐄💩🐱💩
146
- emote omgcat # Output: 😱🐱 (also available as a standalone emote)
147
- emote dogpandacat # Output: 🐶🐼🐱
148
- ```
149
-
150
- The system uses dynamic programming to automatically detect and combine emoji-only emotes. Note that:
151
- - Only emoji-only emotes can be combined (ASCII art emotes like `shrug` or `kungfuhamster` cannot be combined)
152
- - The longest matching emote names are prioritized
153
- - If an exact emote name exists (like `omgcat`), it will be used instead of parsing as a combination
154
-
155
- **Example emoji-only emotes that can be combined:**
156
- `bullshit`, `catshit`, `dogshit`, `pandashit`, `horseshit`, `koalashit`, `batshit`, `shboatload`, `popcorn`, `omg`, `omgcat`, `deer`, `middlefinger`, `noevil`
157
-
158
- #### Emote Categories
159
-
160
- The emote collection is organized into categories to help you discover and browse the 1,600+ available emotes:
161
-
162
- ```bash
163
- # List all available categories
164
- emote categories
165
- # Shows all categories with descriptions and emote counts
166
-
167
- # List emotes in a specific category
168
- emote category food
169
- # Shows all food & drink related emotes
170
-
171
- emote category animals
172
- # Shows all animal & nature emotes
173
- ```
174
-
175
- **Available Categories:**
176
-
177
- - **custom** - Custom ASCII Art and Text Emotes (17 emotes)
178
- - Classic text-based emotes like `shrug`, `flip`, `disapproval`, `kungfuhamster`
179
-
180
- - **keyboard** - Keyboard Shortcuts (8 emotes)
181
- - Mac keyboard symbols: `cmd`, `option`, `shift`, `control`
182
-
183
- - **smileys** - Smileys & People (215 emotes)
184
- - Emoji faces and people: `smile`, `laugh`, `wink`, `thumbsup`, `facepalm`, etc.
185
-
186
- - **animals** - Animals & Nature (210 emotes)
187
- - Animals, plants, and nature: `cat`, `dog`, `deer`, `tree`, `flower`, etc.
188
-
189
- - **combined** - Combined/Custom Emotes (9 emotes)
190
- - Special combinations: `bullshit`, `catshit`, `dogshit`, `omgcat`, etc.
191
-
192
- - **food** - Food & Drink (132 emotes)
193
- - Food and beverages: `pizza`, `beer`, `coffee`, `taco`, `popcorn`, etc.
194
-
195
- - **activity** - Activity (101 emotes)
196
- - Sports and activities: `soccer`, `basketball`, `running`, `gaming`, etc.
197
-
198
- - **travel** - Travel & Places (209 emotes)
199
- - Locations and transportation: `car`, `plane`, `building`, `mountain`, etc.
200
-
201
- - **objects** - Objects (242 emotes)
202
- - Everyday objects: `phone`, `computer`, `book`, `gift`, etc.
203
-
204
- - **symbols** - Symbols (216 emotes)
205
- - Symbols and signs: `heart`, `star`, `check`, `warning`, etc.
206
-
207
- - **flags** - Flags (261 emotes)
208
- - Country and regional flags: `usa`, `canada`, `uk`, `japan`, etc.
209
-
210
- Use `emote categories` to see the full list with emote counts, or `emote category <name>` to explore emotes within a specific category. This makes it easy to discover new emotes without having to browse the entire collection.
211
-
212
- #### Custom Emotes
213
-
214
- You can define your own custom emotes that persist across sessions:
215
-
216
- ```bash
217
- # Initialize a custom emote configuration file
218
- emote init-custom
219
- # Creates ~/.config/rage_flip/emote.json with sample emotes
220
-
221
- # List only your custom emotes
222
- emote list-custom
223
- # Shows all custom emotes and the config file location
224
- ```
225
-
226
- **Configuration Format:**
227
-
228
- Custom emotes can be defined in either JSON or YAML format:
229
-
230
- **JSON** (`~/.config/rage_flip/emote.json`):
231
- ```json
232
- {
233
- "myemote": "🎉🎊",
234
- "team": "👥💪",
235
- "coffee": "☕"
236
- }
237
- ```
238
-
239
- **YAML** (`~/.config/rage_flip/emote.yml`):
240
- ```yaml
241
- myemote: "🎉🎊"
242
- team: "👥💪"
243
- coffee: "☕"
244
- ```
130
+ ### sarcasm
245
131
 
246
- Custom emotes:
247
- - Are automatically merged with built-in emotes
248
- - Can override built-in emotes (use with caution)
249
- - Support all emoji and Unicode characters
250
- - Work with multi-emote combinations if they are emoji-only
251
- - Persist across terminal sessions and system reboots
132
+ Alternates between uppercase and lowercase characters:
252
133
 
253
- **Usage:**
254
134
  ```bash
255
- emote myemote # Output: 🎉🎊
256
- emote coffee # Output:
257
- emote team-coffee # Multi-emote combination: 👥💪☕
135
+ sarcasm "this is sarcastic"
136
+ # Output: ThIs Is SaRcAsTiC
258
137
  ```
259
138
 
260
- The `init-custom` command creates a sample configuration file with examples to get you started. Edit the file to add your own custom emotes, then use `emote list` to see all available emotes (both built-in and custom) or `emote list-custom` to see only your custom emotes.
261
-
262
- ### sarcasm
139
+ ### frustrated
263
140
 
264
- Alternates between uppercase and lowercase characters:
141
+ Converts text to uppercase with periods between words to express frustration:
265
142
 
266
143
  ```bash
267
- sarcasm "this is sarcastic"
268
- # Output: ThIs Is SaRcAsTiC
144
+ frustrated "one more day"
145
+ # Output: ONE. MORE. DAY.
269
146
  ```
270
147
 
271
148
  ### strikethrough
@@ -326,22 +203,10 @@ The gem automatically detects your platform and uses the appropriate clipboard c
326
203
 
327
204
  - **macOS**: Uses `pbcopy`
328
205
  - **Linux**: Uses `xclip` or `xsel` (install one of these first)
329
- - **Windows**: Uses `clip` with proper UTF-16LE encoding for Unicode support
206
+ - **Windows**: Uses `clip`
330
207
 
331
208
  All commands automatically copy their output to the clipboard and display the result.
332
209
 
333
- ### Unicode Support on Windows
334
-
335
- The Windows clipboard implementation has been specifically enhanced to handle Unicode characters correctly. The gem automatically converts text to UTF-16LE encoding with BOM (Byte Order Mark) before passing it to the Windows `clip` command. This ensures that Unicode characters such as:
336
-
337
- - Rage flip emoticons: `(ノಠ益ಠ)ノ彡┻━┻`
338
- - Flipped text characters: `ʇsǝʇ`
339
- - Emoji characters: `🐄💩`
340
- - Accented characters: `café résumé naïve`
341
- - International text: `こんにちは`, `测试文本`
342
-
343
- ...are properly preserved when copied to the clipboard and can be pasted correctly into other applications.
344
-
345
210
  ## Character Mappings
346
211
 
347
212
  The flip functionality uses comprehensive character mappings including:
@@ -403,6 +268,10 @@ RageFlip::Flipper.flip_text("Hello")
403
268
  RageFlip::Sarcasm.process("hello world")
404
269
  # => "HeLlO WoRlD"
405
270
 
271
+ # Frustrated text
272
+ RageFlip::Frustrated.process("one more day")
273
+ # => "ONE. MORE. DAY."
274
+
406
275
  # Strikethrough
407
276
  RageFlip::Strikethrough.process("text")
408
277
  # => "t̶e̶x̶t̶"
@@ -431,16 +300,6 @@ RageFlip::Emote.process("cmd")
431
300
  RageFlip::Emote.process("shrug")
432
301
  # => "¯\_(ツ)_/¯"
433
302
 
434
- # Multi-emote combinations
435
- RageFlip::Emote.process("bullshit-catshit")
436
- # => "🐄💩🐱💩"
437
-
438
- RageFlip::Emote.process("bullshitcatshit")
439
- # => "🐄💩🐱💩"
440
-
441
- RageFlip::Emote.process("omg-deer-popcorn")
442
- # => "😱🦌🍿"
443
-
444
303
  RageFlip::Emote.list_emotes
445
304
  # => "Available emotes:\n batshit - 🦇💩\n bugeyes - (⊙_◎)\n..."
446
305
 
@@ -452,22 +311,6 @@ RageFlip::Emote.emote_exists?("rage")
452
311
  RageFlip::Emote.emote_names
453
312
  # => ["disapproval", "bullshit", "catshit", ...]
454
313
 
455
- # Custom emotes
456
- RageFlip::Emote.init_custom_config
457
- # => "Custom emote config initialized: ~/.config/rage_flip/emote.json\nEdit this file..."
458
-
459
- RageFlip::Emote.list_custom_emotes
460
- # => "Custom emotes:\n myemote - 🎉🎊\n..."
461
-
462
- RageFlip::Emote.load_custom_emotes
463
- # => {"myemote" => "🎉🎊", "team" => "👥💪", ...}
464
-
465
- RageFlip::Emote.all_emotes
466
- # => {"disapproval" => "(ಠ_ಠ)", "bullshit" => "🐄💩", "myemote" => "🎉🎊", ...}
467
-
468
- RageFlip::Emote.refresh_emotes
469
- # Reloads custom emotes from disk (useful after editing config file)
470
-
471
314
  # Copy to clipboard
472
315
  RageFlip::Clipboard.copy("text to copy")
473
316
  ```
data/exe/frustrated ADDED
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../lib/rage_flip"
4
+
5
+ text = ARGV.join(" ")
6
+
7
+ if text.empty?
8
+ puts "Usage: frustrated <text_to_frustrated>"
9
+ exit 1
10
+ end
11
+
12
+ result = RageFlip::Frustrated.process(text)
13
+
14
+ if RageFlip::Clipboard.copy(result)
15
+ else
16
+ puts "Failed to copy to clipboard, but here's your frustrated text:"
17
+ end
18
+ puts result
@@ -0,0 +1,7 @@
1
+ module RageFlip
2
+ class Frustrated
3
+ def self.process(text)
4
+ text.split.map(&:upcase).join(". ") + "."
5
+ end
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module RageFlip
2
- VERSION = "2.2.1"
2
+ VERSION = "2.3.0"
3
3
  end
data/lib/rage_flip.rb CHANGED
@@ -7,6 +7,7 @@ require_relative "rage_flip/chaos"
7
7
  require_relative "rage_flip/clipboard"
8
8
  require_relative "rage_flip/emote"
9
9
  require_relative "rage_flip/text_substitution"
10
+ require_relative "rage_flip/frustrated"
10
11
  require "shellwords"
11
12
 
12
13
  module RageFlip
@@ -45,6 +45,25 @@ RSpec.describe RageFlip do
45
45
  end
46
46
  end
47
47
 
48
+ describe RageFlip::Frustrated do
49
+ describe ".process" do
50
+ it "uppercases words and joins with periods" do
51
+ result = RageFlip::Frustrated.process("one more day")
52
+ expect(result).to eq("ONE. MORE. DAY.")
53
+ end
54
+
55
+ it "handles single word" do
56
+ result = RageFlip::Frustrated.process("hello")
57
+ expect(result).to eq("HELLO.")
58
+ end
59
+
60
+ it "handles multiple spaces" do
61
+ result = RageFlip::Frustrated.process("why is this")
62
+ expect(result).to eq("WHY. IS. THIS.")
63
+ end
64
+ end
65
+ end
66
+
48
67
  describe RageFlip::Strikethrough do
49
68
  describe ".process" do
50
69
  it "adds strikethrough characters" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rage_flip
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Powell
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-11-13 00:00:00.000000000 Z
11
+ date: 2026-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -50,6 +50,7 @@ executables:
50
50
  - emote
51
51
  - flip
52
52
  - flip_text
53
+ - frustrated
53
54
  - rage_flip
54
55
  - sarcasm
55
56
  - strikethrough
@@ -73,6 +74,7 @@ files:
73
74
  - exe/emote
74
75
  - exe/flip
75
76
  - exe/flip_text
77
+ - exe/frustrated
76
78
  - exe/rage_flip
77
79
  - exe/sarcasm
78
80
  - exe/strikethrough
@@ -83,6 +85,7 @@ files:
83
85
  - lib/rage_flip/clipboard.rb
84
86
  - lib/rage_flip/emote.rb
85
87
  - lib/rage_flip/flipper.rb
88
+ - lib/rage_flip/frustrated.rb
86
89
  - lib/rage_flip/sarcasm.rb
87
90
  - lib/rage_flip/strikethrough.rb
88
91
  - lib/rage_flip/text_substitution.rb