Sha256: e8960da18d23dec50f198790a3d1da4a46e18dc7b0a09ab3c7c6c755baec689a

Contents?: true

Size: 789 Bytes

Versions: 14

Compression:

Stored size: 789 Bytes

Contents

# Extending the Symbol class.
#
class Symbol
  
  # :keys.subtokens    # => [:keys, :key, :ke, :k]
  # :keys.subtokens(2) # => [:keys, :key, :ke]
  #
  def subtokens from_length = 1
    sub = self.id2name
    
    size = sub.size
    from_length = size + from_length if from_length < 0
    from_length = size if size < from_length
    
    result = [self]
    size.downto(from_length + 1) { result << sub.chop!.intern }
    result
  end
  
  # TODO Duplicate code.
  #
  def each_subtoken from_length = 1
    sub = self.id2name
    
    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
    
    yield self
    size.downto(from_length + 1) { yield sub.chop!.intern }
  end
  
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
picky-0.12.1 lib/picky/extensions/symbol.rb
picky-0.12.0 lib/picky/extensions/symbol.rb
picky-0.11.2 lib/picky/extensions/symbol.rb
picky-0.11.1 lib/picky/extensions/symbol.rb
picky-0.11.0 lib/picky/extensions/symbol.rb
picky-0.10.5 lib/picky/extensions/symbol.rb
picky-0.10.4 lib/picky/extensions/symbol.rb
picky-0.10.2 lib/picky/extensions/symbol.rb
picky-0.10.1 lib/picky/extensions/symbol.rb
picky-0.10.0 lib/picky/extensions/symbol.rb
picky-0.9.4 lib/picky/extensions/symbol.rb
picky-0.9.3 lib/picky/extensions/symbol.rb
picky-0.9.2 lib/picky/extensions/symbol.rb
picky-0.9.1 lib/picky/extensions/symbol.rb