1
0
Fork 0
mirror of https://github.com/twbs/bootstrap-sass.git synced 2022-11-09 12:27:02 -05:00
twbs--bootstrap-sass/tasks/converter/char_string_scanner.rb
2013-10-31 15:55:39 +01:00

38 lines
No EOL
761 B
Ruby

# regular string scanner works with bytes
# this one works with chars and provides #scan_next
class Converter
class CharStringScanner
extend Forwardable
def initialize(*args)
@s = StringScanner.new(*args)
end
def_delegators :@s, :scan_until, :skip_until, :string
# advance scanner to pos after the next match of pattern and return the match
def scan_next(pattern)
return unless @s.scan_until(pattern)
@s.matched
end
def pos
byte_to_str_pos @s.pos
end
def pos=(i)
@s.pos = str_to_byte_pos i
i
end
private
def byte_to_str_pos(pos)
@s.string.byteslice(0, pos).length
end
def str_to_byte_pos(pos)
@s.string.slice(0, pos).bytesize
end
end
end