owoify_rb 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9c5ef42f5ec72bae1411fdcaece64ee8c7c0ce9c4d55e730cd18fb2116b29405
4
+ data.tar.gz: 230cf5823096322fbc244f5a36a41ca2df9dd78de5c432ffef8b5c439d1ddb2d
5
+ SHA512:
6
+ metadata.gz: 0deeed2549bb1f785ac43912b2e3a5061ebe74871f4483adb3bf6adfc3b523bf37477f6d5d5f84ff7428ccc77152e5e0f159ce0df12f8c19a3608b3e09d18929
7
+ data.tar.gz: 770217b7781da31d1fbed9f3c68ea57b4271721a936551eae1372444bdded626e0b4cc4eb06b2484ad5d839dbe4115f9355f3d0c5655b13156215225a233e4da
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'structures/word'
4
+ require 'utility/interleave_arrays'
5
+ require 'utility/presets'
6
+
7
+ module Owoify
8
+ def self.owoify(source, level = 'owo')
9
+ word_matches = source.scan(/[^\s]+/).flatten
10
+ space_matches = source.scan(/\s+/).flatten
11
+ words = word_matches.map { |x| Word.new(x) }
12
+ spaces = space_matches.map { |x| Word.new(x) }
13
+ _level = level.downcase
14
+ words.map! do |w|
15
+ SPECIFIC_WORD_MAPPING_LIST.each do |f|
16
+ w = f.call(w)
17
+ end
18
+ case _level
19
+ when 'owo'
20
+ OWO_MAPPING_LIST.each do |f|
21
+ w = f.call(w)
22
+ end
23
+ when 'uwu'
24
+ UWU_MAPPING_LIST.each do |f|
25
+ w = f.call(w)
26
+ end
27
+ OWO_MAPPING_LIST.each do |f|
28
+ w = f.call(w)
29
+ end
30
+ when 'uvu'
31
+ UVU_MAPPING_LIST.each do |f|
32
+ w = f.call(w)
33
+ end
34
+ UWU_MAPPING_LIST.each do |f|
35
+ w = f.call(w)
36
+ end
37
+ OWO_MAPPING_LIST.each do |f|
38
+ w = f.call(w)
39
+ end
40
+ else
41
+ raise ArgumentError, 'The specified owoify level is not supported.'
42
+ end
43
+ w
44
+ end
45
+
46
+ result = interleave_arrays(words, spaces)
47
+ result_strings = result.map(&:to_s)
48
+ result_strings.join
49
+ end
50
+ end
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'set'
4
+
5
+ class Word
6
+ def initialize(word)
7
+ @replaced_words = Set.new
8
+ @word = word
9
+ end
10
+
11
+ def to_s
12
+ @word
13
+ end
14
+
15
+ private
16
+
17
+ def search_value_contains_replaced_words(search_value, replace_value)
18
+ @replaced_words.any? do |word|
19
+ if search_value.match? word
20
+ match_result = search_value.match(word)[0]
21
+ return word.gsub(match_result, replace_value) == replace_value
22
+ end
23
+ false
24
+ end
25
+ end
26
+
27
+ public
28
+
29
+ def replace(search_value, replace_value, replace_replaced_words = false)
30
+ return self if !replace_replaced_words && search_value_contains_replaced_words(search_value, replace_value)
31
+
32
+ replacing_word = @word
33
+ replacing_word = @word.gsub(search_value, replace_value) if search_value.match? @word
34
+ collection = @word.scan(search_value).flatten
35
+ replaced_words = collection.length > 1 ? collection.map { |x| x.gsub(x, replace_value) } : []
36
+
37
+ if replacing_word != @word
38
+ replaced_words.each do |word|
39
+ @replaced_words.add(word)
40
+ end
41
+ @word = replacing_word
42
+ end
43
+ self
44
+ end
45
+
46
+ def replace_with_func_single(search_value, func, replace_replaced_words = false)
47
+ replace_value = func.call
48
+
49
+ return self if !replace_replaced_words && search_value_contains_replaced_words(search_value, replace_value)
50
+
51
+ replacing_word = @word
52
+ if search_value.match? @word
53
+ match = @word.match(search_value)[0]
54
+ replacing_word = @word.gsub(match, replace_value)
55
+ end
56
+ collection = @word.scan(search_value).flatten
57
+ replaced_words = collection.length > 1 ? collection.map { |x| x.gsub(x, replace_value) } : []
58
+ if replacing_word != @word
59
+ replaced_words.each do |word|
60
+ @replaced_words.add(word)
61
+ end
62
+ @word = replacing_word
63
+ end
64
+ self
65
+ end
66
+
67
+ def replace_with_func_multiple(search_value, func, replace_replaced_words = false)
68
+ return self unless search_value.match? @word
69
+
70
+ word = @word
71
+ captures = search_value.match(word)
72
+ replace_value = func.call(captures[1], captures[2])
73
+
74
+ return self if !replace_replaced_words && search_value_contains_replaced_words(search_value, replace_value)
75
+
76
+ replacing_word = @word.gsub(captures[0], replace_value)
77
+ collection = @word.scan(search_value).flatten
78
+ replaced_words = collection.length > 1 ? collection.map { |x| x.gsub(x, replace_value) } : []
79
+ if replacing_word != @word
80
+ replaced_words.each do |w|
81
+ @replaced_words.add(w)
82
+ end
83
+ @word = replacing_word
84
+ end
85
+ self
86
+ end
87
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ def interleave_arrays(a, b)
4
+ arr = []
5
+ observed = a
6
+ other = b
7
+ temp = []
8
+
9
+ while observed.length.positive?
10
+ arr.push(observed.delete_at(0))
11
+ temp = observed
12
+ observed = other
13
+ other = temp
14
+ end
15
+
16
+ arr += other.length.positive? ? other : []
17
+ arr
18
+ end
@@ -0,0 +1,266 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'structures/word'
4
+
5
+ O_TO_OWO = /o/.freeze
6
+ EW_TO_UWU = /ew/.freeze
7
+ HEY_TO_HAY = /([Hh])ey/.freeze
8
+ DEAD_TO_DED_UPPER = /Dead/.freeze
9
+ DEAD_TO_DED_LOWER = /dead/.freeze
10
+ N_VOWEL_T_TO_ND = /n[aeiou]*t/.freeze
11
+ READ_TO_WEAD_UPPER = /Read/.freeze
12
+ READ_TO_WEAD_LOWER = /read/.freeze
13
+ BRACKETS_TO_STARTRAILS_FORE = /[({<]/.freeze
14
+ BRACKETS_TO_STARTRAILS_REAR = /[)}>]/.freeze
15
+ PERIOD_COMMA_EXCLAMATION_SEMICOLON_TO_KAOMOJIS_FIRST = /[.,](?![0-9])/.freeze
16
+ PERIOD_COMMA_EXCLAMATION_SEMICOLON_TO_KAOMOJIS_SECOND = /[!;]+/.freeze
17
+ THAT_TO_DAT_UPPER = /That/.freeze
18
+ THAT_TO_DAT_LOWER = /that/.freeze
19
+ TH_TO_F_UPPER = /TH(?!E)/.freeze
20
+ TH_TO_F_LOWER = /[Tt]h(?![Ee])/.freeze
21
+ LE_TO_WAL = /le$/.freeze
22
+ VE_TO_WE_UPPER = /Ve/.freeze
23
+ VE_TO_WE_LOWER = /ve/.freeze
24
+ RY_TO_WWY = /ry/.freeze
25
+ RORL_TO_W_UPPER = /(?:R|L)/.freeze
26
+ RORL_TO_W_LOWER = /(?:r|l)/.freeze
27
+ LL_TO_WW = /ll/.freeze
28
+ VOWEL_OR_R_EXCEPT_O_L_TO_WL_UPPER = /[AEIUR]([lL])$/.freeze
29
+ VOWEL_OR_R_EXCEPT_O_L_TO_WL_LOWER = /[aeiur]l$/.freeze
30
+ OLD_TO_OWLD_UPPER = /OLD/.freeze
31
+ OLD_TO_OWLD_LOWER = /([Oo])ld/.freeze
32
+ OL_TO_OWL_UPPER = /OL/.freeze
33
+ OL_TO_OWL_LOWER = /([Oo])l/.freeze
34
+ LORR_O_TO_WO_UPPER = /[LR]([oO])/.freeze
35
+ LORR_O_TO_WO_LOWER = /[lr]o/.freeze
36
+ SPECIFIC_CONSONANTS_O_TO_LETTER_AND_WO_UPPER = /([BCDFGHJKMNPQSTXYZ])([oO])/.freeze
37
+ SPECIFIC_CONSONANTS_O_TO_LETTER_AND_WO_LOWER = /([bcdfghjkmnpqstxyz])o/.freeze
38
+ VORW_LE_TO_WAL = /[vw]le/.freeze
39
+ FI_TO_FWI_UPPER = /FI/.freeze
40
+ FI_TO_FWI_LOWER = /([Ff])i/.freeze
41
+ VER_TO_WER = /([Ff])i/.freeze
42
+ POI_TO_PWOI = /([Pp])oi/.freeze
43
+ SPECIFIC_CONSONANTS_LE_TO_LETTER_AND_WAL = /([DdFfGgHhJjPpQqRrSsTtXxYyZz])le$/.freeze
44
+ CONSONANT_R_TO_CONSONANT_W = /([BbCcDdFfGgKkPpQqSsTtWwXxZz])r/.freeze
45
+ LY_TO_WY_UPPER = /Ly/.freeze
46
+ LY_TO_WY_LOWER = /ly/.freeze
47
+ PLE_TO_PWE = /([Pp])le/.freeze
48
+ NR_TO_NW_UPPER = /NR/.freeze
49
+ NR_TO_NW_LOWER = /nr/.freeze
50
+ FUC_TO_FWUC = /([Ff])uc/.freeze
51
+ MOM_TO_MWOM = /([Mm])om/.freeze
52
+ ME_TO_MWE = /([Mm])e/.freeze
53
+ N_VOWEL_TO_NY_FIRST = /n([aeiou])/.freeze
54
+ N_VOWEL_TO_NY_SECOND = /N([aeiou])/.freeze
55
+ N_VOWEL_TO_NY_THIRD = /N([AEIOU])/.freeze
56
+ OVE_TO_UV_UPPER = /OVE/.freeze
57
+ OVE_TO_UV_LOWER = /ove/.freeze
58
+ HAHA_TO_HEHE_XD = /\b(ha|hah|heh|hehe)+\b/.freeze
59
+ THE_TO_TEH = /\b([Tt])he\b/.freeze
60
+ YOU_TO_U_UPPER = /\bYou\b/.freeze
61
+ YOU_TO_U_LOWER = /\byou\b/.freeze
62
+ TIME_TO_TIM = /\b([Tt])ime\b/.freeze
63
+ OVER_TO_OWOR = /([Oo])ver/.freeze
64
+ WORSE_TO_WOSE = /([Ww])orse/.freeze
65
+
66
+ FACES = [
67
+ '(・`ω´・)', ';;w;;', 'owo', 'UwU', '>w<', '^w^', '(* ^ ω ^)',
68
+ '(⌒ω⌒)', 'ヽ(*・ω・)ノ', '(o´∀`o)', '(o・ω・o)', '\(^▽^)/',
69
+ '(*^ω^)', '(◕‿◕✿)', '(◕ᴥ◕)', 'ʕ•ᴥ•ʔ', 'ʕ→ᴥ←ʔ', '(*^.^*)', '(。♥‿♥。)',
70
+ 'OwO', 'uwu', 'uvu', 'UvU', '(* ̄з ̄)', '(つ✧ω✧)つ', '(/ =ω=)/',
71
+ '(╯°□°)╯︵ ┻━┻', '┬─┬ ノ( ゜-゜ノ)', '¯\_(ツ)_/¯'
72
+ ].freeze
73
+
74
+ module Mapping
75
+
76
+ MAP_O_TO_OWO = lambda do |input|
77
+ replacement = rand(2) > 0 ? 'owo' : 'o'
78
+ input.replace(O_TO_OWO, replacement)
79
+ end
80
+
81
+ MAP_EW_TO_UWU = lambda do |input|
82
+ input.replace(EW_TO_UWU, 'uwu')
83
+ end
84
+
85
+ MAP_HEY_TO_HAY = lambda do |input|
86
+ input.replace(HEY_TO_HAY, '\1ay')
87
+ end
88
+
89
+ MAP_DEAD_TO_DED = lambda do |input|
90
+ input = input.replace(DEAD_TO_DED_UPPER, 'Ded')
91
+ input.replace(DEAD_TO_DED_LOWER, 'ded')
92
+ end
93
+
94
+ MAP_N_VOWEL_T_TO_ND = lambda do |input|
95
+ input.replace(N_VOWEL_T_TO_ND, 'nd')
96
+ end
97
+
98
+ MAP_READ_TO_WEAD = lambda do |input|
99
+ input = input.replace(READ_TO_WEAD_UPPER, 'Wead')
100
+ input.replace(READ_TO_WEAD_LOWER, 'wead')
101
+ end
102
+
103
+ MAP_BRACKETS_TO_STAR_TRAILS = lambda do |input|
104
+ input = input.replace(BRACKETS_TO_STARTRAILS_FORE, '。・:*:・゚★,。・:*:・゚☆')
105
+ input.replace(BRACKETS_TO_STARTRAILS_REAR, '☆゚・:*:・。,★゚・:*:・。')
106
+ end
107
+
108
+ MAP_PERIOD_COMMA_EXCLAMATION_SEMICOLON_TO_KAOMOJIS = lambda do |input|
109
+ num = rand * FACES.length
110
+ index = num.floor
111
+ input = input.replace_with_func_single(PERIOD_COMMA_EXCLAMATION_SEMICOLON_TO_KAOMOJIS_FIRST, lambda { " #{FACES[index]}" })
112
+
113
+ num = rand * FACES.length
114
+ index = num.floor
115
+ input.replace_with_func_single(PERIOD_COMMA_EXCLAMATION_SEMICOLON_TO_KAOMOJIS_SECOND, lambda { " #{FACES[index]}" })
116
+ end
117
+
118
+ MAP_THAT_TO_DAT = lambda do |input|
119
+ input = input.replace(THAT_TO_DAT_LOWER, 'dat')
120
+ input.replace(THAT_TO_DAT_UPPER, 'Dat')
121
+ end
122
+
123
+ MAP_TH_TO_F = lambda do |input|
124
+ input = input.replace(TH_TO_F_LOWER, 'f')
125
+ input.replace(TH_TO_F_UPPER, 'F')
126
+ end
127
+
128
+ MAP_LE_TO_WAL = lambda do |input|
129
+ input.replace(LE_TO_WAL, 'wal')
130
+ end
131
+
132
+ MAP_VE_TO_WE = lambda do |input|
133
+ input = input.replace(VE_TO_WE_LOWER, 'we')
134
+ input.replace(VE_TO_WE_UPPER, 'We')
135
+ end
136
+
137
+ MAP_RY_TO_WWY = lambda do |input|
138
+ input.replace(RY_TO_WWY, 'wwy')
139
+ end
140
+
141
+ MAP_R_OR_L_TO_W = lambda do |input|
142
+ input = input.replace(RORL_TO_W_LOWER, 'w')
143
+ input.replace(RORL_TO_W_UPPER, 'W')
144
+ end
145
+
146
+ MAP_LL_TO_WW = lambda do |input|
147
+ input.replace(LL_TO_WW, 'ww')
148
+ end
149
+
150
+ MAP_VOWEL_OR_R_EXCEPT_O_L_TO_WL = lambda do |input|
151
+ input = input.replace(VOWEL_OR_R_EXCEPT_O_L_TO_WL_LOWER, 'wl')
152
+ input.replace(VOWEL_OR_R_EXCEPT_O_L_TO_WL_UPPER, 'W\1')
153
+ end
154
+
155
+ MAP_OLD_TO_OWLD = lambda do |input|
156
+ input = input.replace(OLD_TO_OWLD_LOWER, '\1wld')
157
+ input.replace(OLD_TO_OWLD_UPPER, 'OWLD')
158
+ end
159
+
160
+ MAP_OL_TO_OWL = lambda do |input|
161
+ input = input.replace(OL_TO_OWL_LOWER, '\1wl')
162
+ input.replace(OL_TO_OWL_UPPER, 'OWL')
163
+ end
164
+
165
+ MAP_L_OR_R_O_TO_WO = lambda do |input|
166
+ input = input.replace(LORR_O_TO_WO_LOWER, 'wo')
167
+ input.replace(LORR_O_TO_WO_UPPER, 'W\1')
168
+ end
169
+
170
+ MAP_SPECIFIC_CONSONANTS_O_TO_LETTER_AND_WO = lambda do |input|
171
+ input = input.replace(SPECIFIC_CONSONANTS_O_TO_LETTER_AND_WO_LOWER, '\1wo')
172
+ input.replace_with_func_multiple(SPECIFIC_CONSONANTS_O_TO_LETTER_AND_WO_UPPER, lambda do |s1, s2|
173
+ msg = s1
174
+ msg += s2.upcase == s2 ? 'W' : 'w'
175
+ msg += s2
176
+ msg
177
+ end)
178
+ end
179
+
180
+ MAP_V_OR_W_LE_TO_WAL = lambda do |input|
181
+ input.replace(VORW_LE_TO_WAL, 'wal')
182
+ end
183
+
184
+ MAP_FI_TO_FWI = lambda do |input|
185
+ input = input.replace(FI_TO_FWI_LOWER, '\1wi')
186
+ input.replace(FI_TO_FWI_UPPER, 'FWI')
187
+ end
188
+
189
+ MAP_VER_TO_WER = lambda do |input|
190
+ input.replace(VER_TO_WER, 'wer')
191
+ end
192
+
193
+ MAP_POI_TO_PWOI = lambda do |input|
194
+ input.replace(POI_TO_PWOI, '\1woi')
195
+ end
196
+
197
+ MAP_SPECIFIC_CONSONANTS_LE_TO_LETTER_AND_WAL = lambda do |input|
198
+ input.replace(SPECIFIC_CONSONANTS_LE_TO_LETTER_AND_WAL, '\1wal')
199
+ end
200
+
201
+ MAP_CONSONANT_R_TO_CONSONANT_W = lambda do |input|
202
+ input.replace(CONSONANT_R_TO_CONSONANT_W, '\1w')
203
+ end
204
+
205
+ MAP_LY_TO_WY = lambda do |input|
206
+ input = input.replace(LY_TO_WY_LOWER, 'wy')
207
+ input.replace(LY_TO_WY_UPPER, 'Wy')
208
+ end
209
+
210
+ MAP_PLE_TO_PWE = lambda do |input|
211
+ input.replace(PLE_TO_PWE, '\1we')
212
+ end
213
+
214
+ MAP_NR_TO_NW = lambda do |input|
215
+ input = input.replace(NR_TO_NW_LOWER, 'nw')
216
+ input.replace(NR_TO_NW_UPPER, 'NW')
217
+ end
218
+
219
+ MAP_FUC_TO_FWUC = lambda do |input|
220
+ input.replace(FUC_TO_FWUC, '\1wuc')
221
+ end
222
+
223
+ MAP_MOM_TO_MWOM = lambda do |input|
224
+ input.replace(MOM_TO_MWOM, '\1wom')
225
+ end
226
+
227
+ MAP_ME_TO_MWE = lambda do |input|
228
+ input.replace(ME_TO_MWE, '\1we')
229
+ end
230
+
231
+ MAP_N_VOWEL_TO_NY = lambda do |input|
232
+ input = input.replace(N_VOWEL_TO_NY_FIRST, 'ny\1')
233
+ input = input.replace(N_VOWEL_TO_NY_SECOND, 'Ny\1')
234
+ input.replace(N_VOWEL_TO_NY_THIRD, 'NY\1')
235
+ end
236
+
237
+ MAP_OVE_TO_UV = lambda do |input|
238
+ input = input.replace(OVE_TO_UV_LOWER, 'uv')
239
+ input.replace(OVE_TO_UV_UPPER, 'UV')
240
+ end
241
+
242
+ MAP_HAHA_TO_HEHE_XD = lambda do |input|
243
+ input.replace(HAHA_TO_HEHE_XD, 'hehe xD')
244
+ end
245
+
246
+ MAP_THE_TO_TEH = lambda do |input|
247
+ input.replace(THE_TO_TEH, '\1eh')
248
+ end
249
+
250
+ MAP_YOU_TO_U = lambda do |input|
251
+ input = input.replace(YOU_TO_U_UPPER, 'U')
252
+ input.replace(YOU_TO_U_LOWER, 'u')
253
+ end
254
+
255
+ MAP_TIME_TO_TIM = lambda do |input|
256
+ input.replace(TIME_TO_TIM, '\1im')
257
+ end
258
+
259
+ MAP_OVER_TO_OWOR = lambda do |input|
260
+ input.replace(OVER_TO_OWOR, '\1wor')
261
+ end
262
+
263
+ MAP_WORSE_TO_WOSE = lambda do |input|
264
+ input.replace(WORSE_TO_WOSE, '\1ose')
265
+ end
266
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'utility/mapping'
4
+
5
+ SPECIFIC_WORD_MAPPING_LIST = [
6
+ Mapping::MAP_FUC_TO_FWUC, Mapping::MAP_MOM_TO_MWOM, Mapping::MAP_TIME_TO_TIM, Mapping::MAP_ME_TO_MWE,
7
+ Mapping::MAP_N_VOWEL_TO_NY, Mapping::MAP_OVER_TO_OWOR, Mapping::MAP_OVE_TO_UV, Mapping::MAP_HAHA_TO_HEHE_XD,
8
+ Mapping::MAP_THE_TO_TEH, Mapping::MAP_YOU_TO_U, Mapping::MAP_READ_TO_WEAD, Mapping::MAP_WORSE_TO_WOSE
9
+ ].freeze
10
+
11
+ UVU_MAPPING_LIST = [
12
+ Mapping::MAP_O_TO_OWO, Mapping::MAP_EW_TO_UWU, Mapping::MAP_HEY_TO_HAY, Mapping::MAP_DEAD_TO_DED,
13
+ Mapping::MAP_N_VOWEL_T_TO_ND
14
+ ].freeze
15
+
16
+ UWU_MAPPING_LIST = [
17
+ Mapping::MAP_BRACKETS_TO_STAR_TRAILS, Mapping::MAP_PERIOD_COMMA_EXCLAMATION_SEMICOLON_TO_KAOMOJIS,
18
+ Mapping::MAP_THAT_TO_DAT, Mapping::MAP_TH_TO_F, Mapping::MAP_LE_TO_WAL, Mapping::MAP_VE_TO_WE, Mapping::MAP_RY_TO_WWY,
19
+ Mapping::MAP_R_OR_L_TO_W
20
+ ].freeze
21
+
22
+ OWO_MAPPING_LIST = [
23
+ Mapping::MAP_LL_TO_WW, Mapping::MAP_VOWEL_OR_R_EXCEPT_O_L_TO_WL, Mapping::MAP_OLD_TO_OWLD,
24
+ Mapping::MAP_OL_TO_OWL, Mapping::MAP_L_OR_R_O_TO_WO, Mapping::MAP_SPECIFIC_CONSONANTS_O_TO_LETTER_AND_WO,
25
+ Mapping::MAP_V_OR_W_LE_TO_WAL, Mapping::MAP_FI_TO_FWI, Mapping::MAP_VER_TO_WER, Mapping::MAP_POI_TO_PWOI,
26
+ Mapping::MAP_SPECIFIC_CONSONANTS_LE_TO_LETTER_AND_WAL, Mapping::MAP_CONSONANT_R_TO_CONSONANT_W,
27
+ Mapping::MAP_LY_TO_WY, Mapping::MAP_PLE_TO_PWE, Mapping::MAP_NR_TO_NW
28
+ ].freeze
metadata ADDED
@@ -0,0 +1,49 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: owoify_rb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Chehui Chou
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-08-16 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: This is a Ruby port of mohan-cao's owoify-js, which will help you turn
14
+ any string into nonsensical babyspeak similar to LeafySweet's infamous Chrome extension.
15
+ email:
16
+ - tetsuki.syu1126@gmail.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - lib/owoify_rb.rb
22
+ - lib/structures/word.rb
23
+ - lib/utility/interleave_arrays.rb
24
+ - lib/utility/mapping.rb
25
+ - lib/utility/presets.rb
26
+ homepage: https://github.com/deadshot465/owoify_rb
27
+ licenses:
28
+ - MIT
29
+ metadata: {}
30
+ post_install_message:
31
+ rdoc_options: []
32
+ require_paths:
33
+ - lib
34
+ required_ruby_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ requirements: []
45
+ rubygems_version: 3.1.2
46
+ signing_key:
47
+ specification_version: 4
48
+ summary: Turning your worst nightmare into a Ruby gem.
49
+ test_files: []