class StringSnip
Public Class Methods
index_conv(str, value)
click to toggle source
# File lib/milkode/common/string_snip.rb, line 31 def self.index_conv(str, value) if (value < 0) str.size + value else value end end
new(size = 256, delimiter = '<<snip>>', pri = nil)
click to toggle source
# File lib/milkode/common/string_snip.rb, line 3 def initialize(size = 256, delimiter = '<<snip>>', pri = nil) @size = size @delimiter = delimiter @pri = pri end
ranges_compound(ranges)
click to toggle source
# File lib/milkode/common/string_snip.rb, line 43 def self.ranges_compound(ranges) result = [] index = 0 while (ranges.size > 0) if (ranges.size > 1 && ranges[0].end + 1 >= ranges[1].begin) v1, v2 = ranges.shift(2) ranges.unshift v1.begin..((v1.end > v2.end) ? v1.end : v2.end) else result << ranges.shift end end result end
ranges_conv(ranges, str)
click to toggle source
# File lib/milkode/common/string_snip.rb, line 27 def self.ranges_conv(ranges, str) ranges.map {|i| index_conv(str, i.begin)..index_conv(str, i.end)} end
ranges_sort(ranges)
click to toggle source
# File lib/milkode/common/string_snip.rb, line 39 def self.ranges_sort(ranges) ranges.sort_by{|i| i.begin} end
Public Instance Methods
snip(str, ranges)
click to toggle source
# File lib/milkode/common/string_snip.rb, line 9 def snip(str, ranges) @str = str @ranges = ranges # no snip return @str if (@str.size <= @size) # snip @ranges = StringSnip::ranges_conv(@ranges, @str) @ranges = StringSnip::ranges_sort(@ranges) @ranges = StringSnip::ranges_compound(@ranges) # result results = [] @ranges.each {|r| results << @str[r] } return results.join(@delimiter) end