class Word
The core structure that stores information of the string to owoify and performs actual owoification.
Public Class Methods
new(word)
click to toggle source
# File lib/structures/word.rb, line 7 def initialize(word) @replaced_words = Set.new @word = word end
Public Instance Methods
replace(search_value, replace_value, replace_replaced_words = false)
click to toggle source
# File lib/structures/word.rb, line 30 def replace(search_value, replace_value, replace_replaced_words = false) return self if !replace_replaced_words && search_value_contains_replaced_words(search_value, replace_value) replacing_word = @word replacing_word = @word.gsub(search_value, replace_value) if search_value.match? @word collection = @word.scan(search_value).flatten replaced_words = collection.length > 1 ? collection.map { |x| x.gsub(x, replace_value) } : [] if replacing_word != @word replaced_words.each do |word| @replaced_words.add(word) end @word = replacing_word end self end
replace_with_func_multiple(search_value, func, replace_replaced_words = false)
click to toggle source
# File lib/structures/word.rb, line 68 def replace_with_func_multiple(search_value, func, replace_replaced_words = false) return self unless search_value.match? @word word = @word captures = search_value.match(word) replace_value = func.call(captures[1], captures[2]) return self if !replace_replaced_words && search_value_contains_replaced_words(search_value, replace_value) replacing_word = @word.gsub(captures[0], replace_value) collection = @word.scan(search_value).flatten replaced_words = collection.length > 1 ? collection.map { |x| x.gsub(x, replace_value) } : [] if replacing_word != @word replaced_words.each do |w| @replaced_words.add(w) end @word = replacing_word end self end
replace_with_func_single(search_value, func, replace_replaced_words = false)
click to toggle source
# File lib/structures/word.rb, line 47 def replace_with_func_single(search_value, func, replace_replaced_words = false) replace_value = func.call return self if !replace_replaced_words && search_value_contains_replaced_words(search_value, replace_value) replacing_word = @word if search_value.match? @word match = @word.match(search_value)[0] replacing_word = @word.gsub(match, replace_value) end collection = @word.scan(search_value).flatten replaced_words = collection.length > 1 ? collection.map { |x| x.gsub(x, replace_value) } : [] if replacing_word != @word replaced_words.each do |word| @replaced_words.add(word) end @word = replacing_word end self end
to_s()
click to toggle source
# File lib/structures/word.rb, line 12 def to_s @word end
Private Instance Methods
search_value_contains_replaced_words(search_value, replace_value)
click to toggle source
# File lib/structures/word.rb, line 18 def search_value_contains_replaced_words(search_value, replace_value) @replaced_words.any? do |word| if search_value.match? word match_result = search_value.match(word)[0] return word.gsub(match_result, replace_value) == replace_value end false end end