Class: Sass::Util::MultibyteStringScanner
- Inherits:
-  StringScanner - Object
- StringScanner
- Sass::Util::MultibyteStringScanner
 
- Defined in:
- /Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb,
 /Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb,
 /Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb
Class Method Summary (collapse)
Instance Method Summary (collapse)
- - byte_matched_size
- - byte_pos
- - check(pattern)
- - check_until(pattern)
- - get_byte
- - getbyte
- - getch
-   - (MultibyteStringScanner) initialize(str)   constructor A new instance of MultibyteStringScanner. 
- - (Boolean) is_a?(klass)
- - (Boolean) match?(pattern)
- - matched_size
- - peek(len) (also: #peep)
- - pos (also: #pointer)
- - pos=(n)
- - reset
- - rest_size
- - scan(pattern)
- - scan_full(pattern, advance_pointer_p, return_string_p)
- - scan_until(pattern)
- - search_full(pattern, advance_pointer_p, return_string_p)
- - skip(pattern)
- - skip_until(pattern)
- - string=(str)
- - terminate (also: #clear)
- - unscan
Constructor Details
- (MultibyteStringScanner) initialize(str)
Returns a new instance of MultibyteStringScanner
| 12 13 14 15 16 17 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 12
def initialize(str)
  super(StringScanner.new(str))
  @mb_pos = 0
  @mb_matched_size = nil
  @mb_last_pos = nil
end | 
Class Method Details
+ new(str)
| 39 40 41 42 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 39
def self.new(str)
  return StringScanner.new(str) if str.ascii_only?
  super
end | 
Instance Method Details
- byte_matched_size
| 45 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 45
alias_method :byte_matched_size, :matched_size | 
- byte_pos
| 44 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 44
alias_method :byte_pos, :pos | 
- check(pattern)
| 47 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 47
def check(pattern); _match super; end | 
- check_until(pattern)
| 48 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 48
def check_until(pattern); _matched super; end | 
- get_byte
| 62 63 64 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 62
def get_byte
  raise "MultibyteStringScanner doesn't support #get_byte."
end | 
- getbyte
| 66 67 68 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 66
def getbyte
  raise "MultibyteStringScanner doesn't support #getbyte."
end | 
- getch
| 49 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 49
def getch; _forward _match super; end | 
- (Boolean) is_a?(klass)
| 19 20 21 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 19
def is_a?(klass)
  __getobj__.is_a?(klass) || super
end | 
- (Boolean) match?(pattern)
| 50 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 50
def match?(pattern); _size check(pattern); end | 
- matched_size
| 51 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 51
def matched_size; @mb_matched_size; end | 
- peek(len) Also known as: peep
| 52 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 52
def peek(len); string[@mb_pos, len]; end | 
- pos Also known as: pointer
| 54 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 54
def pos; @mb_pos; end | 
- pos=(n)
| 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 70
def pos=(n)
  @mb_last_pos = nil
  # We set position kind of a lot during parsing, so we want it to be as
  # efficient as possible. This is complicated by the fact that UTF-8 is a
  # variable-length encoding, so it's difficult to find the byte length that
  # corresponds to a given character length.
  #
  # Our heuristic here is to try to count the fewest possible characters. So
  # if the new position is close to the current one, just count the
  # characters between the two; if the new position is closer to the
  # beginning of the string, just count the characters from there.
  if @mb_pos - n < @mb_pos / 2
    # New position is close to old position
    byte_delta = @mb_pos > n ? -string[n...@mb_pos].bytesize : string[@mb_pos...n].bytesize
    super(byte_pos + byte_delta)
  else
    # New position is close to BOS
    super(string[0...n].bytesize)
  end
  @mb_pos = n
end | 
- reset
| 93 94 95 96 97 98 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 93
def reset
  @mb_pos = 0
  @mb_matched_size = nil
  @mb_last_pos = nil
  super
end | 
- rest_size
| 56 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 56
def rest_size; rest.size; end | 
- scan(pattern)
| 57 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 57
def scan(pattern); _forward _match super; end | 
- scan_full(pattern, advance_pointer_p, return_string_p)
| 100 101 102 103 104 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 100
def scan_full(pattern, advance_pointer_p, return_string_p)
  res = _match super(pattern, advance_pointer_p, true)
  _forward res if advance_pointer_p
  return res if return_string_p
end | 
- scan_until(pattern)
| 58 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 58
def scan_until(pattern); _forward _matched super; end | 
- search_full(pattern, advance_pointer_p, return_string_p)
| 106 107 108 109 110 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 106
def search_full(pattern, advance_pointer_p, return_string_p)
  res = super(pattern, advance_pointer_p, true)
  _forward res if advance_pointer_p
  _matched((res if return_string_p))
end | 
- skip(pattern)
| 59 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 59
def skip(pattern); _size scan(pattern); end | 
- skip_until(pattern)
| 60 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 60
def skip_until(pattern); _matched _size scan_until(pattern); end | 
- string=(str)
| 112 113 114 115 116 117 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 112
def string=(str)
  @mb_pos = 0
  @mb_matched_size = nil
  @mb_last_pos = nil
  super
end | 
- terminate Also known as: clear
| 119 120 121 122 123 124 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 119
def terminate
  @mb_pos = string.size
  @mb_matched_size = nil
  @mb_last_pos = nil
  super
end | 
- unscan
| 127 128 129 130 131 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/util/multibyte_string_scanner.rb', line 127
def unscan
  super
  @mb_pos = @mb_last_pos
  @mb_last_pos = @mb_matched_size = nil
end |