rage_flip 1.0.1 → 1.1.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 +4 -4
- data/CHANGELOG.md +21 -0
- data/README.md +60 -0
- data/exe/emote +32 -0
- data/exe/flip_text +21 -0
- data/exe/table_flip +21 -0
- data/lib/rage_flip/emote.rb +39 -0
- data/lib/rage_flip/flipper.rb +11 -0
- data/lib/rage_flip/version.rb +1 -1
- data/lib/rage_flip.rb +1 -0
- data/spec/rage_flip_spec.rb +68 -0
- metadata +8 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1511661bf220838be2dabc493a7ba1769a2780909ad33f285d21b0482c79038b
|
4
|
+
data.tar.gz: 61a701d70ad291b667144056763746f4c09ab7c70955b07d66e45c9df3390e87
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65378ff0cd33a514d229c313366227dcb38051355bfc403ad47bac9b82811682adee897bba7ec84bfbaba7fba5e14f5551b3ba87b59fbf67b5b1175d8e612e08
|
7
|
+
data.tar.gz: 2dce9f11ceafea826aae4604fae2a71dd132d85e01648075bb061f157e48eb39d1e4b097fae9275af2559f224ec182407315b1ef3c6743bb8b2976d58c8a8611
|
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
### Added
|
11
|
+
- `flip_text` command for flipping text without any emoticons
|
12
|
+
- `emote` command system with disapproval and animal+poop combinations
|
13
|
+
- `emote disapproval` outputs `(ಠ_ಠ)`
|
14
|
+
- `emote bullshit`, `catshit`, `dogshit`, `pandashit`, `horseshit`, `batshit` commands
|
15
|
+
- `emote list` to display all available emotes
|
16
|
+
- `table_flip` command with classic `(╯°□°)╯︵` and `┻━┻` emoticons
|
17
|
+
|
18
|
+
## [1.0.1] - 2025-10-04
|
19
|
+
|
20
|
+
### Added
|
21
|
+
- Persistent chaos level storage in `~/.chaos_level.txt`
|
22
|
+
- `chaos_level show` command to display current chaos level
|
23
|
+
- Chaos level minimum enforcement (cannot go below 1)
|
24
|
+
|
25
|
+
### Changed
|
26
|
+
- Chaos level now persists across terminal sessions and reboots
|
27
|
+
- Removed dependency on `CHAOS_LEVEL` environment variable
|
28
|
+
|
29
|
+
## [1.0.0] - 2025-10-03
|
30
|
+
|
10
31
|
### Added
|
11
32
|
- Version management and release automation
|
12
33
|
|
data/README.md
CHANGED
@@ -41,6 +41,48 @@ The flip transformation:
|
|
41
41
|
- Maps characters to their upside-down equivalents
|
42
42
|
- Wraps the result with `(ノಠ益ಠ)ノ彡┻` and `┻`
|
43
43
|
|
44
|
+
### table_flip
|
45
|
+
|
46
|
+
The classic table flip command flips text upside down with the iconic table flip emoticons:
|
47
|
+
|
48
|
+
```bash
|
49
|
+
table_flip "Hello World"
|
50
|
+
# Output: (╯°□°)╯︵ plɹoM ollǝH ┻━┻
|
51
|
+
# Result is automatically copied to clipboard
|
52
|
+
```
|
53
|
+
|
54
|
+
Uses the classic `(╯°□°)╯︵` and `┻━┻` emoticons for a more traditional table flip style.
|
55
|
+
|
56
|
+
### flip_text
|
57
|
+
|
58
|
+
Flips text upside down without any emoticons:
|
59
|
+
|
60
|
+
```bash
|
61
|
+
flip_text "Hello World"
|
62
|
+
# Output: plɹoM ollǝH
|
63
|
+
# Result is automatically copied to clipboard
|
64
|
+
```
|
65
|
+
|
66
|
+
Just the pure flipped text without any rage or table flip decorations.
|
67
|
+
|
68
|
+
### emote
|
69
|
+
|
70
|
+
The emote system provides various emoticons and emoji sequences:
|
71
|
+
|
72
|
+
```bash
|
73
|
+
emote # List all available emotes
|
74
|
+
emote list # List all available emotes
|
75
|
+
emote disapproval # Output: (ಠ_ಠ)
|
76
|
+
emote bullshit # Output: 🐄💩
|
77
|
+
emote catshit # Output: �💩
|
78
|
+
emote dogshit # Output: �💩
|
79
|
+
emote pandashit # Output: 🐼💩
|
80
|
+
emote horseshit # Output: 🐴💩
|
81
|
+
emote batshit # Output: 🦇💩
|
82
|
+
```
|
83
|
+
|
84
|
+
All emotes are accessed through the `emote` command followed by the emote name.
|
85
|
+
|
44
86
|
### sarcasm
|
45
87
|
|
46
88
|
Alternates between uppercase and lowercase characters:
|
@@ -136,10 +178,18 @@ require 'rage_flip'
|
|
136
178
|
RageFlip::Flipper.rage_flip("Hello World")
|
137
179
|
# => "(ノಠ益ಠ)ノ彡┻plɹoM ollǝH┻"
|
138
180
|
|
181
|
+
# Flip text with classic table flip emoticons
|
182
|
+
RageFlip::Flipper.table_flip("Hello World")
|
183
|
+
# => "(╯°□°)╯︵ plɹoM ollǝH ┻━┻"
|
184
|
+
|
139
185
|
# Just flip without emoticons
|
140
186
|
RageFlip::Flipper.flip("Hello")
|
141
187
|
# => "ollǝH"
|
142
188
|
|
189
|
+
# Flip text (same as flip)
|
190
|
+
RageFlip::Flipper.flip_text("Hello")
|
191
|
+
# => "ollǝH"
|
192
|
+
|
143
193
|
# Sarcastic text
|
144
194
|
RageFlip::Sarcasm.process("hello world")
|
145
195
|
# => "HeLlO WoRlD"
|
@@ -159,6 +209,16 @@ RageFlip::Underline.double_underline("text")
|
|
159
209
|
RageFlip::Chaos.process("text", 5)
|
160
210
|
# => "t̸e̷x̸t̷"
|
161
211
|
|
212
|
+
# Emotes
|
213
|
+
RageFlip::Emote.process("disapproval")
|
214
|
+
# => "(ಠ_ಠ)"
|
215
|
+
|
216
|
+
RageFlip::Emote.process("bullshit")
|
217
|
+
# => "🐄💩"
|
218
|
+
|
219
|
+
RageFlip::Emote.list_emotes
|
220
|
+
# => "Available emotes:\n disapproval - (ಠ_ಠ)\n bullshit - 🐄💩\n..."
|
221
|
+
|
162
222
|
# Copy to clipboard
|
163
223
|
RageFlip::Clipboard.copy("text to copy")
|
164
224
|
```
|
data/exe/emote
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require_relative '../lib/rage_flip'
|
4
|
+
|
5
|
+
if ARGV.length == 0
|
6
|
+
puts RageFlip::Emote.list_emotes
|
7
|
+
exit 0
|
8
|
+
end
|
9
|
+
|
10
|
+
emote_name = ARGV[0].downcase
|
11
|
+
|
12
|
+
if emote_name == 'list'
|
13
|
+
puts RageFlip::Emote.list_emotes
|
14
|
+
exit 0
|
15
|
+
end
|
16
|
+
|
17
|
+
result = RageFlip::Emote.process(emote_name)
|
18
|
+
|
19
|
+
if result
|
20
|
+
# Copy to clipboard
|
21
|
+
if RageFlip::Clipboard.copy(result)
|
22
|
+
puts result
|
23
|
+
else
|
24
|
+
puts "Failed to copy to clipboard, but here's your emote:"
|
25
|
+
puts result
|
26
|
+
end
|
27
|
+
else
|
28
|
+
puts "Unknown emote: #{emote_name}"
|
29
|
+
puts ""
|
30
|
+
puts RageFlip::Emote.list_emotes
|
31
|
+
exit 1
|
32
|
+
end
|
data/exe/flip_text
ADDED
@@ -0,0 +1,21 @@
|
|
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: flip_text <text_to_flip>"
|
9
|
+
exit 1
|
10
|
+
end
|
11
|
+
|
12
|
+
# Just flip the text without any emoticons
|
13
|
+
result = RageFlip::Flipper.flip_text(text)
|
14
|
+
|
15
|
+
# Copy to clipboard
|
16
|
+
if RageFlip::Clipboard.copy(result)
|
17
|
+
puts result
|
18
|
+
else
|
19
|
+
puts "Failed to copy to clipboard, but here's your flipped text:"
|
20
|
+
puts result
|
21
|
+
end
|
data/exe/table_flip
ADDED
@@ -0,0 +1,21 @@
|
|
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: table_flip <text_to_flip>"
|
9
|
+
exit 1
|
10
|
+
end
|
11
|
+
|
12
|
+
# Create the table flip with classic table flip emoticons
|
13
|
+
result = RageFlip::Flipper.table_flip(text)
|
14
|
+
|
15
|
+
# Copy to clipboard
|
16
|
+
if RageFlip::Clipboard.copy(result)
|
17
|
+
puts result
|
18
|
+
else
|
19
|
+
puts "Failed to copy to clipboard, but here's your table flipped text:"
|
20
|
+
puts result
|
21
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module RageFlip
|
2
|
+
class Emote
|
3
|
+
EMOTES = {
|
4
|
+
'disapproval' => '(ಠ_ಠ)',
|
5
|
+
'bullshit' => '🐄💩',
|
6
|
+
'catshit' => '🐱💩',
|
7
|
+
'dogshit' => '🐶💩',
|
8
|
+
'pandashit' => '🐼💩',
|
9
|
+
'horseshit' => '🐴💩',
|
10
|
+
'batshit' => '🦇💩'
|
11
|
+
}.freeze
|
12
|
+
|
13
|
+
def self.process(emote_name)
|
14
|
+
emote_name = emote_name.downcase
|
15
|
+
|
16
|
+
if EMOTES.key?(emote_name)
|
17
|
+
EMOTES[emote_name]
|
18
|
+
else
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.list_emotes
|
24
|
+
output = ["Available emotes:"]
|
25
|
+
EMOTES.each do |name, emote|
|
26
|
+
output << " #{name.ljust(12)} - #{emote}"
|
27
|
+
end
|
28
|
+
output.join("\n")
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.emote_exists?(name)
|
32
|
+
EMOTES.key?(name.downcase)
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.emote_names
|
36
|
+
EMOTES.keys
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/rage_flip/flipper.rb
CHANGED
@@ -29,5 +29,16 @@ module RageFlip
|
|
29
29
|
|
30
30
|
"#{rageflip_front}#{flip(text)}#{rageflip_back}"
|
31
31
|
end
|
32
|
+
|
33
|
+
def self.table_flip(text)
|
34
|
+
table_flip_front = "(╯°□°)╯︵ "
|
35
|
+
table_flip_back = " ┻━┻"
|
36
|
+
|
37
|
+
"#{table_flip_front}#{flip(text)}#{table_flip_back}"
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.flip_text(text)
|
41
|
+
flip(text)
|
42
|
+
end
|
32
43
|
end
|
33
44
|
end
|
data/lib/rage_flip/version.rb
CHANGED
data/lib/rage_flip.rb
CHANGED
data/spec/rage_flip_spec.rb
CHANGED
@@ -16,6 +16,24 @@ RSpec.describe RageFlip do
|
|
16
16
|
expect(result).to include('┻')
|
17
17
|
end
|
18
18
|
end
|
19
|
+
|
20
|
+
describe '.table_flip' do
|
21
|
+
it 'adds table flip emoticons to flipped text' do
|
22
|
+
result = RageFlip::Flipper.table_flip('test')
|
23
|
+
expect(result).to include('(╯°□°)╯︵')
|
24
|
+
expect(result).to include('┻━┻')
|
25
|
+
expect(result).to include('ʇsǝʇ') # flipped version of 'test'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '.flip_text' do
|
30
|
+
it 'flips text without any emoticons' do
|
31
|
+
result = RageFlip::Flipper.flip_text('test')
|
32
|
+
expect(result).to eq('ʇsǝʇ')
|
33
|
+
expect(result).not_to include('(')
|
34
|
+
expect(result).not_to include('┻')
|
35
|
+
end
|
36
|
+
end
|
19
37
|
end
|
20
38
|
|
21
39
|
describe RageFlip::Sarcasm do
|
@@ -117,4 +135,54 @@ RSpec.describe RageFlip do
|
|
117
135
|
end
|
118
136
|
end
|
119
137
|
end
|
138
|
+
|
139
|
+
describe RageFlip::Emote do
|
140
|
+
describe '.process' do
|
141
|
+
it 'returns correct emote for disapproval' do
|
142
|
+
result = RageFlip::Emote.process('disapproval')
|
143
|
+
expect(result).to eq('(ಠ_ಠ)')
|
144
|
+
end
|
145
|
+
|
146
|
+
it 'returns correct emote for bullshit' do
|
147
|
+
result = RageFlip::Emote.process('bullshit')
|
148
|
+
expect(result).to eq('🐄💩')
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'returns correct emote for dogshit' do
|
152
|
+
result = RageFlip::Emote.process('dogshit')
|
153
|
+
expect(result).to eq('🐶💩')
|
154
|
+
end
|
155
|
+
|
156
|
+
it 'handles case insensitive input' do
|
157
|
+
result = RageFlip::Emote.process('DISAPPROVAL')
|
158
|
+
expect(result).to eq('(ಠ_ಠ)')
|
159
|
+
end
|
160
|
+
|
161
|
+
it 'returns nil for unknown emote' do
|
162
|
+
result = RageFlip::Emote.process('unknown')
|
163
|
+
expect(result).to be_nil
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
describe '.list_emotes' do
|
168
|
+
it 'returns formatted list of all emotes' do
|
169
|
+
result = RageFlip::Emote.list_emotes
|
170
|
+
expect(result).to include('Available emotes:')
|
171
|
+
expect(result).to include('disapproval')
|
172
|
+
expect(result).to include('(ಠ_ಠ)')
|
173
|
+
expect(result).to include('bullshit')
|
174
|
+
expect(result).to include('🐄💩')
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
describe '.emote_exists?' do
|
179
|
+
it 'returns true for existing emote' do
|
180
|
+
expect(RageFlip::Emote.emote_exists?('disapproval')).to be true
|
181
|
+
end
|
182
|
+
|
183
|
+
it 'returns false for non-existing emote' do
|
184
|
+
expect(RageFlip::Emote.emote_exists?('nonexistent')).to be false
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
120
188
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rage_flip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Powell
|
@@ -46,9 +46,12 @@ executables:
|
|
46
46
|
- chaos
|
47
47
|
- chaos_level
|
48
48
|
- doubleunderline
|
49
|
+
- emote
|
50
|
+
- flip_text
|
49
51
|
- rage_flip
|
50
52
|
- sarcasm
|
51
53
|
- strikethrough
|
54
|
+
- table_flip
|
52
55
|
- underline
|
53
56
|
extensions: []
|
54
57
|
extra_rdoc_files: []
|
@@ -63,13 +66,17 @@ files:
|
|
63
66
|
- exe/chaos
|
64
67
|
- exe/chaos_level
|
65
68
|
- exe/doubleunderline
|
69
|
+
- exe/emote
|
70
|
+
- exe/flip_text
|
66
71
|
- exe/rage_flip
|
67
72
|
- exe/sarcasm
|
68
73
|
- exe/strikethrough
|
74
|
+
- exe/table_flip
|
69
75
|
- exe/underline
|
70
76
|
- lib/rage_flip.rb
|
71
77
|
- lib/rage_flip/chaos.rb
|
72
78
|
- lib/rage_flip/clipboard.rb
|
79
|
+
- lib/rage_flip/emote.rb
|
73
80
|
- lib/rage_flip/flipper.rb
|
74
81
|
- lib/rage_flip/sarcasm.rb
|
75
82
|
- lib/rage_flip/strikethrough.rb
|