A slice is a small part from the parse input. A slice mainly behaves like any other string, except that it remembers where it came from (offset in original input).
Using the line_and_column method, you can extract the line and column in the original input where this slice starts.
Example:
slice.line_and_column # => [1, 13] slice.offset # => 12
Parslet::Slice behaves in many ways like a Ruby String. This likeness however is not complete - many of the myriad of operations String supports are not yet in Slice. You can always extract the internal string instance by calling to_s.
These omissions are somewhat intentional. Rather than maintaining a full delegation, we opt for a partial emulation that gets the job done.
Construct a slice using a string, an offset and an optional line cache. The line cache should be able to answer to the line_and_column message.
# File lib/parslet/slice.rb, line 33 def initialize(position, string, line_cache=nil) @position = position @str = string @line_cache = line_cache end
Concatenate two slices; it is assumed that the second slice begins where the first one ends. The offset of the resulting slice is the same as the one of this slice.
# File lib/parslet/slice.rb, line 65 def +(other) self.class.new(@position, str + other.to_s, line_cache) end
Compares slices to other slices or strings.
# File lib/parslet/slice.rb, line 45 def == other str == other end
Prints the slice as "string"@offset.
# File lib/parslet/slice.rb, line 104 def inspect str.inspect << "@#{offset}" end
Returns a <line, column> tuple referring to the original input.
# File lib/parslet/slice.rb, line 71 def line_and_column raise ArgumentError, "No line cache was given, cannot infer line and column." unless line_cache line_cache.line_and_column(@position.bytepos) end
Match regular expressions.
# File lib/parslet/slice.rb, line 51 def match(regexp) str.match(regexp) end
# File lib/parslet/slice.rb, line 39 def offset @position.charpos end
Returns the slices size in characters.
# File lib/parslet/slice.rb, line 57 def size str.size end
Conversion operators —————————————————–
# File lib/parslet/slice.rb, line 80 def to_str str end
Generated with the Darkfish Rdoc Generator 2.