class String
Public Instance Methods
expand_tabs( tab_size )
click to toggle source
# File lib/diakonos/core-ext/string.rb, line 12 def expand_tabs( tab_size ) s = dup while s.sub!( /\t/ ) { |match_text| match = Regexp.last_match index = match.begin( 0 ) " " * ( tab_size - ( index % tab_size ) ) } end s end
group_index( regexp, offset = 0 )
click to toggle source
Works like normal String#index except returns the index of the first matching regexp group if one or more groups are specified in the regexp. Both the index and the matched text are returned.
# File lib/diakonos/core-ext/string.rb, line 41 def group_index( regexp, offset = 0 ) if regexp.class != Regexp return index( regexp, offset ) end i = nil match_text = nil working_offset = 0 loop do index( regexp, working_offset ) match = Regexp.last_match if match i = match.begin( 0 ) match_text = match[ 0 ] if match.length > 1 # Find first matching group 1.upto( match.length - 1 ) do |match_item_index| if match[ match_item_index ] i = match.begin( match_item_index ) match_text = match[ match_item_index ] break end end end break if i >= offset else i = nil break end working_offset += 1 end [ i, match_text ] end
group_rindex( regexp, offset = length )
click to toggle source
Works like normal String#rindex except returns the index of the first matching regexp group if one or more groups are specified in the regexp. Both the index and the matched text are returned.
# File lib/diakonos/core-ext/string.rb, line 80 def group_rindex( regexp, offset = length ) if regexp.class != Regexp return rindex( regexp, offset ) end i = nil match_text = nil working_offset = length loop do rindex( regexp, working_offset ) match = Regexp.last_match if match i = match.end( 0 ) - 1 match_text = match[ 0 ] if match.length > 1 # Find first matching group 1.upto( match.length - 1 ) do |match_item_index| if match[ match_item_index ] i = match.end( match_item_index ) - 1 match_text = match[ match_item_index ] break end end end if match_text == "" # Assume that an empty string means that it matched $ i += 1 end break if i <= offset else i = nil break end working_offset -= 1 end [ i, match_text ] end
newline_split()
click to toggle source
# File lib/diakonos/core-ext/string.rb, line 23 def newline_split retval = split( /\\n/ ) if self =~ /\\n$/ retval << "" end if retval.length > 1 retval[ 0 ] << "$" retval[ 1..-2 ].collect do |el| "^" << el << "$" end retval[ -1 ] = "^" << retval[ -1 ] end retval end
to_b()
click to toggle source
# File lib/diakonos/core-ext/string.rb, line 3 def to_b case downcase when "true", "t", "1", "yes", "y", "on", "+" true else false end end