Class: String

Inherits:
Object show all
Defined in:
lib/picky/extensions/string.rb

Overview

Extending the String class.

Direct Known Subclasses

Picky::Backends::Redis::Float

Instance Method Summary collapse

Instance Method Details

#double_metaphoneObject

Returns a single double metaphone code for this string.



8
9
10
11
# File 'lib/picky/extensions/string.rb', line 8

def double_metaphone
  codes = Text::Metaphone.double_metaphone self
  codes.first unless codes.empty?
end

#each_intoken(min_length = 1, max_length = -1) ⇒ Object

‘keys’.each_intoken # => yields each of [‘keys’, ‘key’, ‘eys’, ‘ke’, ‘ey’, ‘ys’, ‘k’, ‘e’, ‘y’, ‘s’] ‘keys’.each_intoken(2) # => yields each of [‘keys’, ‘key’, ‘eys’, ‘ke’, ‘ey’, ‘ys’] ‘keys’.each_intoken(2, 3) # => yields each of [‘key’, ‘eys’, ‘ke’, ‘ey’, ‘ys’] ‘keys’.each_intoken(10, 12) # => yields nothing (min larger than str)



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/picky/extensions/string.rb', line 54

def each_intoken min_length = 1, max_length = -1
  max_length = size + max_length + 1 if max_length < 0
  max_length = size if size < max_length
  max_length = 1 if max_length < 1

  min_length = size + min_length + 1 if min_length < 0
  min_length = 1 if min_length < 1

  this_many = size - max_length + 1
  max_length.downto(min_length) do |length|
    this_many.times do |offset|
      yield self[offset, length]
    end
    this_many += 1
  end
end

#each_subtoken(from_length = 1, range = nil) {|sub| ... } ⇒ Object

‘keys’.each_subtoken # => yields each of [‘keys’, ‘key’, ‘ke’, ‘k’] ‘keys’.each_subtoken(2) # => yields each of [‘keys’, ‘key’, ‘ke’]

Yields:

  • (sub)


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/picky/extensions/string.rb', line 28

def each_subtoken from_length = 1, range = nil
  sub = self
  
  if range
    unless (range.first.zero? && range.last == -1)
      sub = sub[range]
    end
  end
  
  yield sub
  
  size = sub.size
  from_length = size + from_length + 1 if from_length < 0
  from_length = size if size < from_length
  from_length = 1 if from_length < 1

  size.downto(from_length + 1) { yield sub = sub.chop }
  
  sub = nil
end

#metaphoneObject

Returns a metaphone code for this string.



15
16
17
# File 'lib/picky/extensions/string.rb', line 15

def metaphone
  Text::Metaphone.metaphone self
end

#soundexObject

Returns a soundex code for this string.



21
22
23
# File 'lib/picky/extensions/string.rb', line 21

def soundex
  Text::Soundex.soundex self
end