rage_flip 1.0.1 → 1.2.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/Gemfile +2 -1
- data/README.md +620 -98
- data/Rakefile +23 -23
- data/exe/chaos +4 -5
- data/exe/chaos_level +4 -4
- data/exe/disapproval +17 -0
- data/exe/doubleunderline +4 -5
- data/exe/emote +31 -0
- data/exe/flip +17 -0
- data/exe/flip_text +20 -0
- data/exe/rage_flip +4 -5
- data/exe/sarcasm +4 -5
- data/exe/strikethrough +4 -5
- data/exe/table_flip +20 -0
- data/exe/underline +4 -5
- data/lib/rage_flip/chaos.rb +13 -13
- data/lib/rage_flip/clipboard.rb +1 -1
- data/lib/rage_flip/emote.rb +69 -0
- data/lib/rage_flip/flipper.rb +19 -8
- data/lib/rage_flip/sarcasm.rb +1 -1
- data/lib/rage_flip/strikethrough.rb +3 -3
- data/lib/rage_flip/text_substitution.rb +61 -0
- data/lib/rage_flip/underline.rb +5 -5
- data/lib/rage_flip/version.rb +2 -2
- data/lib/rage_flip.rb +4 -2
- data/spec/rage_flip_spec.rb +128 -60
- data/spec/spec_helper.rb +3 -3
- metadata +13 -1
data/lib/rage_flip/underline.rb
CHANGED
@@ -2,18 +2,18 @@ module RageFlip
|
|
2
2
|
class Underline
|
3
3
|
UNDERLINE_CHAR = "\u0332"
|
4
4
|
DOUBLE_UNDERLINE_CHAR = "\u0333"
|
5
|
-
|
5
|
+
|
6
6
|
def self.process(text, double: false)
|
7
7
|
underline_char = double ? DOUBLE_UNDERLINE_CHAR : UNDERLINE_CHAR
|
8
|
-
text.each_char.map { |c| [c, underline_char] }.
|
8
|
+
text.each_char.map { |c| [c, underline_char] }.join
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def self.single_underline(text)
|
12
12
|
process(text, double: false)
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def self.double_underline(text)
|
16
16
|
process(text, double: true)
|
17
17
|
end
|
18
18
|
end
|
19
|
-
end
|
19
|
+
end
|
data/lib/rage_flip/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module RageFlip
|
2
|
-
VERSION = "1.0
|
3
|
-
end
|
2
|
+
VERSION = "1.2.0"
|
3
|
+
end
|
data/lib/rage_flip.rb
CHANGED
@@ -5,8 +5,10 @@ require_relative "rage_flip/strikethrough"
|
|
5
5
|
require_relative "rage_flip/underline"
|
6
6
|
require_relative "rage_flip/chaos"
|
7
7
|
require_relative "rage_flip/clipboard"
|
8
|
-
|
8
|
+
require_relative "rage_flip/emote"
|
9
|
+
require_relative "rage_flip/text_substitution"
|
10
|
+
require "shellwords"
|
9
11
|
|
10
12
|
module RageFlip
|
11
13
|
class Error < StandardError; end
|
12
|
-
end
|
14
|
+
end
|
data/spec/rage_flip_spec.rb
CHANGED
@@ -1,52 +1,70 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
RSpec.describe RageFlip do
|
4
4
|
describe RageFlip::Flipper do
|
5
|
-
describe
|
6
|
-
it
|
7
|
-
result = RageFlip::Flipper.flip(
|
8
|
-
expect(result).to eq(
|
5
|
+
describe ".flip" do
|
6
|
+
it "flips text upside down" do
|
7
|
+
result = RageFlip::Flipper.flip("Hello")
|
8
|
+
expect(result).to eq("oʅʅǝH")
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
describe
|
13
|
-
it
|
14
|
-
result = RageFlip::Flipper.rage_flip(
|
15
|
-
expect(result).to include(
|
16
|
-
expect(result).to include(
|
12
|
+
describe ".rage_flip" do
|
13
|
+
it "adds rage emoticons to flipped text" do
|
14
|
+
result = RageFlip::Flipper.rage_flip("test")
|
15
|
+
expect(result).to include("(ノಠ益ಠ)ノ彡┻")
|
16
|
+
expect(result).to include("┻")
|
17
|
+
end
|
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("┻")
|
17
35
|
end
|
18
36
|
end
|
19
37
|
end
|
20
38
|
|
21
39
|
describe RageFlip::Sarcasm do
|
22
|
-
describe
|
23
|
-
it
|
24
|
-
result = RageFlip::Sarcasm.process(
|
25
|
-
expect(result).to eq(
|
40
|
+
describe ".process" do
|
41
|
+
it "alternates case of characters" do
|
42
|
+
result = RageFlip::Sarcasm.process("hello")
|
43
|
+
expect(result).to eq("HeLlO")
|
26
44
|
end
|
27
45
|
end
|
28
46
|
end
|
29
47
|
|
30
48
|
describe RageFlip::Strikethrough do
|
31
|
-
describe
|
32
|
-
it
|
33
|
-
result = RageFlip::Strikethrough.process(
|
49
|
+
describe ".process" do
|
50
|
+
it "adds strikethrough characters" do
|
51
|
+
result = RageFlip::Strikethrough.process("test")
|
34
52
|
expect(result).to include("\u0336")
|
35
53
|
end
|
36
54
|
end
|
37
55
|
end
|
38
56
|
|
39
57
|
describe RageFlip::Underline do
|
40
|
-
describe
|
41
|
-
it
|
42
|
-
result = RageFlip::Underline.single_underline(
|
58
|
+
describe ".single_underline" do
|
59
|
+
it "adds single underline characters" do
|
60
|
+
result = RageFlip::Underline.single_underline("test")
|
43
61
|
expect(result).to include("\u0332")
|
44
62
|
end
|
45
63
|
end
|
46
64
|
|
47
|
-
describe
|
48
|
-
it
|
49
|
-
result = RageFlip::Underline.double_underline(
|
65
|
+
describe ".double_underline" do
|
66
|
+
it "adds double underline characters" do
|
67
|
+
result = RageFlip::Underline.double_underline("test")
|
50
68
|
expect(result).to include("\u0333")
|
51
69
|
end
|
52
70
|
end
|
@@ -54,67 +72,117 @@ RSpec.describe RageFlip do
|
|
54
72
|
|
55
73
|
describe RageFlip::Chaos do
|
56
74
|
let(:chaos_file) { File.expand_path("~/.chaos_level.txt") }
|
57
|
-
|
75
|
+
|
58
76
|
before do
|
59
77
|
# Clean up chaos file before each test
|
60
78
|
File.delete(chaos_file) if File.exist?(chaos_file)
|
61
79
|
end
|
62
|
-
|
80
|
+
|
63
81
|
after do
|
64
82
|
# Clean up chaos file after each test
|
65
83
|
File.delete(chaos_file) if File.exist?(chaos_file)
|
66
84
|
end
|
67
85
|
|
68
|
-
describe
|
69
|
-
it
|
70
|
-
result = RageFlip::Chaos.process(
|
86
|
+
describe ".process" do
|
87
|
+
it "adds combining characters for chaos effect" do
|
88
|
+
result = RageFlip::Chaos.process("test", 5)
|
71
89
|
expect(result.length).to be > 4 # Should be longer than original
|
72
90
|
end
|
73
|
-
|
74
|
-
it
|
75
|
-
result = RageFlip::Chaos.process(
|
91
|
+
|
92
|
+
it "uses default chaos level when no file exists" do
|
93
|
+
result = RageFlip::Chaos.process("test")
|
76
94
|
expect(result.length).to be > 4 # Should be longer than original
|
77
95
|
end
|
78
96
|
end
|
79
97
|
|
80
|
-
describe
|
81
|
-
it
|
82
|
-
result = RageFlip::Chaos.set_chaos_level(
|
83
|
-
expect(File.read(chaos_file).strip).to eq(
|
84
|
-
expect(result).to eq(
|
98
|
+
describe ".set_chaos_level" do
|
99
|
+
it "sets chaos level to specific number" do
|
100
|
+
result = RageFlip::Chaos.set_chaos_level("15")
|
101
|
+
expect(File.read(chaos_file).strip).to eq("15")
|
102
|
+
expect(result).to eq("chaos level is now 15")
|
85
103
|
end
|
86
|
-
|
87
|
-
it
|
88
|
-
RageFlip::Chaos.set_chaos_level(
|
89
|
-
result = RageFlip::Chaos.set_chaos_level(
|
90
|
-
expect(File.read(chaos_file).strip).to eq(
|
91
|
-
expect(result).to eq(
|
104
|
+
|
105
|
+
it "increases chaos level with more" do
|
106
|
+
RageFlip::Chaos.set_chaos_level("10")
|
107
|
+
result = RageFlip::Chaos.set_chaos_level("more")
|
108
|
+
expect(File.read(chaos_file).strip).to eq("11")
|
109
|
+
expect(result).to eq("chaos level is now 11")
|
92
110
|
end
|
93
|
-
|
94
|
-
it
|
95
|
-
RageFlip::Chaos.set_chaos_level(
|
96
|
-
result = RageFlip::Chaos.set_chaos_level(
|
97
|
-
expect(File.read(chaos_file).strip).to eq(
|
98
|
-
expect(result).to eq(
|
111
|
+
|
112
|
+
it "decreases chaos level with less" do
|
113
|
+
RageFlip::Chaos.set_chaos_level("10")
|
114
|
+
result = RageFlip::Chaos.set_chaos_level("less")
|
115
|
+
expect(File.read(chaos_file).strip).to eq("9")
|
116
|
+
expect(result).to eq("chaos level is now 9")
|
99
117
|
end
|
100
|
-
|
101
|
-
it
|
102
|
-
RageFlip::Chaos.set_chaos_level(
|
103
|
-
result = RageFlip::Chaos.set_chaos_level(
|
104
|
-
expect(File.read(chaos_file).strip).to eq(
|
105
|
-
expect(result).to eq(
|
118
|
+
|
119
|
+
it "does not go below 1" do
|
120
|
+
RageFlip::Chaos.set_chaos_level("1")
|
121
|
+
result = RageFlip::Chaos.set_chaos_level("less")
|
122
|
+
expect(File.read(chaos_file).strip).to eq("1")
|
123
|
+
expect(result).to eq("chaos level is now 1")
|
106
124
|
end
|
107
125
|
end
|
108
126
|
|
109
|
-
describe
|
110
|
-
it
|
127
|
+
describe ".read_chaos_level" do
|
128
|
+
it "returns default when file does not exist" do
|
111
129
|
expect(RageFlip::Chaos.read_chaos_level).to eq(10)
|
112
130
|
end
|
113
|
-
|
114
|
-
it
|
115
|
-
File.write(chaos_file,
|
131
|
+
|
132
|
+
it "reads level from file when it exists" do
|
133
|
+
File.write(chaos_file, "25")
|
116
134
|
expect(RageFlip::Chaos.read_chaos_level).to eq(25)
|
117
135
|
end
|
118
136
|
end
|
119
137
|
end
|
120
|
-
|
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
|
188
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require_relative
|
1
|
+
require "rspec"
|
2
|
+
require_relative "../lib/rage_flip"
|
3
3
|
|
4
4
|
RSpec.configure do |config|
|
5
5
|
config.expect_with :rspec do |c|
|
@@ -13,4 +13,4 @@ RSpec.configure do |config|
|
|
13
13
|
config.disable_monkey_patching!
|
14
14
|
config.order = :random
|
15
15
|
Kernel.srand config.seed
|
16
|
-
end
|
16
|
+
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.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Powell
|
@@ -45,10 +45,15 @@ email:
|
|
45
45
|
executables:
|
46
46
|
- chaos
|
47
47
|
- chaos_level
|
48
|
+
- disapproval
|
48
49
|
- doubleunderline
|
50
|
+
- emote
|
51
|
+
- flip
|
52
|
+
- flip_text
|
49
53
|
- rage_flip
|
50
54
|
- sarcasm
|
51
55
|
- strikethrough
|
56
|
+
- table_flip
|
52
57
|
- underline
|
53
58
|
extensions: []
|
54
59
|
extra_rdoc_files: []
|
@@ -62,17 +67,24 @@ files:
|
|
62
67
|
- bin/version
|
63
68
|
- exe/chaos
|
64
69
|
- exe/chaos_level
|
70
|
+
- exe/disapproval
|
65
71
|
- exe/doubleunderline
|
72
|
+
- exe/emote
|
73
|
+
- exe/flip
|
74
|
+
- exe/flip_text
|
66
75
|
- exe/rage_flip
|
67
76
|
- exe/sarcasm
|
68
77
|
- exe/strikethrough
|
78
|
+
- exe/table_flip
|
69
79
|
- exe/underline
|
70
80
|
- lib/rage_flip.rb
|
71
81
|
- lib/rage_flip/chaos.rb
|
72
82
|
- lib/rage_flip/clipboard.rb
|
83
|
+
- lib/rage_flip/emote.rb
|
73
84
|
- lib/rage_flip/flipper.rb
|
74
85
|
- lib/rage_flip/sarcasm.rb
|
75
86
|
- lib/rage_flip/strikethrough.rb
|
87
|
+
- lib/rage_flip/text_substitution.rb
|
76
88
|
- lib/rage_flip/underline.rb
|
77
89
|
- lib/rage_flip/version.rb
|
78
90
|
- spec/rage_flip_spec.rb
|