Class: String
- Inherits:
-
Object
- Object
- String
- Defined in:
- lib/hrules.rb
Instance Method Summary collapse
- #append_character(character) ⇒ Object
- #delete_at_position(position) ⇒ Object
- #delete_first ⇒ Object
- #delete_last ⇒ Object
- #dup_block_back(position) ⇒ Object
- #dup_block_forward(position) ⇒ Object
- #dup_first_n_times(times) ⇒ Object
- #dup_last_n_times(times) ⇒ Object
- #duplicate ⇒ Object
- #duplicate_all ⇒ Object
- #duplicate_n_times(times) ⇒ Object
- #extract_from_position(positions) ⇒ Object
- #insert_at_x(positions) ⇒ Object
- #inverted_capitalize ⇒ Object
- #mutate(rule_string) ⇒ Object
- #omit_from_position(positions) ⇒ Object
- #overwrite_at_x(positions) ⇒ Object
- #prepend_character(character) ⇒ Object
- #purge_instances_of_x(character) ⇒ Object
- #reflect ⇒ Object
- #replace_with_char(characters) ⇒ Object
- #rotate_left ⇒ Object
- #rotate_right ⇒ Object
- #swap(characters) ⇒ Object
- #toggle_at_position(position) ⇒ Object
- #truncate_from_x(position) ⇒ Object
Instance Method Details
#append_character(character) ⇒ Object
69 70 71 |
# File 'lib/hrules.rb', line 69 def append_character(character) "#{self}#{character}" end |
#delete_at_position(position) ⇒ Object
85 86 87 |
# File 'lib/hrules.rb', line 85 def delete_at_position(position) self.split("").reject.with_index { |v, i| i == position.to_i }.join("") end |
#delete_first ⇒ Object
77 78 79 |
# File 'lib/hrules.rb', line 77 def delete_first self[1..-1] end |
#delete_last ⇒ Object
81 82 83 |
# File 'lib/hrules.rb', line 81 def delete_last self[0..-2] end |
#dup_block_back(position) ⇒ Object
189 190 191 192 193 |
# File 'lib/hrules.rb', line 189 def dup_block_back(position) block = self[position.to_i..-1] self.insert(-1, block) if block self end |
#dup_block_forward(position) ⇒ Object
195 196 197 198 199 |
# File 'lib/hrules.rb', line 195 def dup_block_forward(position) block = self[0..position.to_i] self.insert(0, block) if block self end |
#dup_first_n_times(times) ⇒ Object
135 136 137 138 139 140 |
# File 'lib/hrules.rb', line 135 def dup_first_n_times(times) self[0] = self[0] * times.to_i return self rescue IndexError self end |
#dup_last_n_times(times) ⇒ Object
142 143 144 145 146 147 |
# File 'lib/hrules.rb', line 142 def dup_last_n_times(times) self[-1] = (self[-1] + (self[-1] * times.to_i)) return self rescue IndexError self end |
#duplicate ⇒ Object
40 41 42 |
# File 'lib/hrules.rb', line 40 def duplicate return "#{self}#{self}" end |
#duplicate_all ⇒ Object
149 150 151 152 153 154 155 156 157 |
# File 'lib/hrules.rb', line 149 def duplicate_all returned = "" self.split("").each.with_index do |v, i| returned << self[i] = v * 2 end returned rescue IndexError self end |
#duplicate_n_times(times) ⇒ Object
53 54 55 |
# File 'lib/hrules.rb', line 53 def duplicate_n_times(times) return self * times.to_i end |
#extract_from_position(positions) ⇒ Object
89 90 91 92 |
# File 'lib/hrules.rb', line 89 def extract_from_position(positions) start_p, end_p = positions[0].to_i, positions[1].to_i self[start_p..end_p] end |
#insert_at_x(positions) ⇒ Object
100 101 102 103 104 105 106 |
# File 'lib/hrules.rb', line 100 def insert_at_x(positions) loc, char = positions[0].to_i, positions[1] if loc.between?(0, (self.length - 1)) self.insert(loc, char) end self end |
#inverted_capitalize ⇒ Object
44 45 46 |
# File 'lib/hrules.rb', line 44 def inverted_capitalize self.capitalize.swapcase end |
#mutate(rule_string) ⇒ Object
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'lib/hrules.rb', line 159 def mutate(rule_string) to_return = self skip = 0 rule_string.each_char.with_index do |character, index| if index < skip next end rule = Rules.find_rule(character) next unless rule if rule.takes_parameters? thing = rule_string[ ((index +1 )..(index + rule.param_count)) ] to_return = to_return.send(rule.mutation, thing ) skip = index + rule.param_count + 1 else to_return = to_return.send(rule.mutation) end end return to_return end |
#omit_from_position(positions) ⇒ Object
94 95 96 97 98 |
# File 'lib/hrules.rb', line 94 def omit_from_position(positions) start_p, end_p = positions[0].to_i, positions[1].to_i range = (start_p..end_p).to_a self.split("").reject.with_index { |v, i| range.include?(i) }.join("") end |
#overwrite_at_x(positions) ⇒ Object
108 109 110 111 112 113 114 |
# File 'lib/hrules.rb', line 108 def overwrite_at_x(positions) loc, char = positions[0].to_i, positions[1] self[loc] = char self rescue IndexError self end |
#prepend_character(character) ⇒ Object
73 74 75 |
# File 'lib/hrules.rb', line 73 def prepend_character(character) "#{character}#{self}" end |
#purge_instances_of_x(character) ⇒ Object
129 130 131 132 133 |
# File 'lib/hrules.rb', line 129 def purge_instances_of_x(character) self.gsub(character, "") rescue IndexError self end |
#reflect ⇒ Object
57 58 59 |
# File 'lib/hrules.rb', line 57 def reflect "#{self}#{self.reverse}" end |
#replace_with_char(characters) ⇒ Object
122 123 124 125 126 127 |
# File 'lib/hrules.rb', line 122 def replace_with_char(characters) replace, replace_with = characters.split("")[0], characters.split("")[1] self.gsub(replace, replace_with) rescue IndexError self end |
#rotate_left ⇒ Object
61 62 63 |
# File 'lib/hrules.rb', line 61 def rotate_left self.split("").rotate(1).join("") end |
#rotate_right ⇒ Object
65 66 67 |
# File 'lib/hrules.rb', line 65 def rotate_right self.split("").rotate(-1).join("") end |
#swap(characters) ⇒ Object
179 180 181 182 183 184 185 186 187 |
# File 'lib/hrules.rb', line 179 def swap(characters) pos1, pos2 = characters.split("")[0].to_i, characters.split("")[1].to_i if pos1.between?(0, (self.length - 1)) and pos2.between?(0, (self.length - 1)) self[pos1] = self[pos2] end self rescue IndexError self end |
#toggle_at_position(position) ⇒ Object
48 49 50 51 |
# File 'lib/hrules.rb', line 48 def toggle_at_position(position) if self[position.to_i] then self[position.to_i] = self[position.to_i]&.upcase end return self end |
#truncate_from_x(position) ⇒ Object
116 117 118 119 120 |
# File 'lib/hrules.rb', line 116 def truncate_from_x(position) self[0..position.to_i] rescue IndexError self end |