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.
@@ -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] }.flatten.join
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
@@ -1,3 +1,3 @@
1
1
  module RageFlip
2
- VERSION = "1.0.1"
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
- require 'shellwords'
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
@@ -1,52 +1,70 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  RSpec.describe RageFlip do
4
4
  describe RageFlip::Flipper do
5
- describe '.flip' do
6
- it 'flips text upside down' do
7
- result = RageFlip::Flipper.flip('Hello')
8
- expect(result).to eq('oʅʅǝH')
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 '.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('')
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 '.process' do
23
- it 'alternates case of characters' do
24
- result = RageFlip::Sarcasm.process('hello')
25
- expect(result).to eq('HeLlO')
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 '.process' do
32
- it 'adds strikethrough characters' do
33
- result = RageFlip::Strikethrough.process('test')
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 '.single_underline' do
41
- it 'adds single underline characters' do
42
- result = RageFlip::Underline.single_underline('test')
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 '.double_underline' do
48
- it 'adds double underline characters' do
49
- result = RageFlip::Underline.double_underline('test')
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 '.process' do
69
- it 'adds combining characters for chaos effect' do
70
- result = RageFlip::Chaos.process('test', 5)
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 'uses default chaos level when no file exists' do
75
- result = RageFlip::Chaos.process('test')
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 '.set_chaos_level' do
81
- it 'sets chaos level to specific number' do
82
- result = RageFlip::Chaos.set_chaos_level('15')
83
- expect(File.read(chaos_file).strip).to eq('15')
84
- expect(result).to eq('chaos level is now 15')
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 'increases chaos level with more' do
88
- RageFlip::Chaos.set_chaos_level('10')
89
- result = RageFlip::Chaos.set_chaos_level('more')
90
- expect(File.read(chaos_file).strip).to eq('11')
91
- expect(result).to eq('chaos level is now 11')
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 'decreases chaos level with less' do
95
- RageFlip::Chaos.set_chaos_level('10')
96
- result = RageFlip::Chaos.set_chaos_level('less')
97
- expect(File.read(chaos_file).strip).to eq('9')
98
- expect(result).to eq('chaos level is now 9')
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 'does not go below 1' do
102
- RageFlip::Chaos.set_chaos_level('1')
103
- result = RageFlip::Chaos.set_chaos_level('less')
104
- expect(File.read(chaos_file).strip).to eq('1')
105
- expect(result).to eq('chaos level is now 1')
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 '.read_chaos_level' do
110
- it 'returns default when file does not exist' do
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 'reads level from file when it exists' do
115
- File.write(chaos_file, '25')
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
- 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
188
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,5 @@
1
- require 'rspec'
2
- require_relative '../lib/rage_flip'
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.1
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