Class: Pascoale::Edits
- Inherits:
-
Object
- Object
- Pascoale::Edits
- Defined in:
- lib/pascoale/edits.rb
Constant Summary collapse
Instance Method Summary collapse
- #deletions ⇒ Object
- #editions ⇒ Object
- #editions2 ⇒ Object
-
#initialize(word) ⇒ Edits
constructor
A new instance of Edits.
- #insertions ⇒ Object
- #substitutions ⇒ Object
- #transpositions ⇒ Object
Constructor Details
#initialize(word) ⇒ Edits
Returns a new instance of Edits.
4 5 6 7 8 |
# File 'lib/pascoale/edits.rb', line 4 def initialize(word) @splits = (0..(word.size)).map do |i| [word[0, i].to_s, word[(i)..-1]] end end |
Instance Method Details
#deletions ⇒ Object
10 11 12 13 14 |
# File 'lib/pascoale/edits.rb', line 10 def deletions @splits.map do |(a, b)| a + b[1..-1] if b.size > 0 end.compact end |
#editions ⇒ Object
34 35 36 |
# File 'lib/pascoale/edits.rb', line 34 def editions Set.new(deletions + transpositions + substitutions + insertions) end |
#editions2 ⇒ Object
38 39 40 41 42 |
# File 'lib/pascoale/edits.rb', line 38 def editions2 editions.each_with_object(Set.new) do |it, result| result.merge(self.class.new(it).editions) end end |
#insertions ⇒ Object
28 29 30 31 32 |
# File 'lib/pascoale/edits.rb', line 28 def insertions LETTERS.product(@splits).map do |(letter, (a, b))| (a + letter + b).strip end end |
#substitutions ⇒ Object
22 23 24 25 26 |
# File 'lib/pascoale/edits.rb', line 22 def substitutions LETTERS.product(@splits).map do |(letter, (a, b))| (a + letter + b[1..-1]).strip if b.size > 0 end.compact end |
#transpositions ⇒ Object
16 17 18 19 20 |
# File 'lib/pascoale/edits.rb', line 16 def transpositions @splits.map do |(a, b)| a + b[1] + b[0] + b[2..-1] if b.size > 1 end.compact end |