Class: Parslet::Slice

### Home Classes Methods

### In Files

- lib/parslet/slice.rb

### Parent

Object

### Methods

- ::new
- #+
- #==
- #inspect
- #line_and_column
- #match
- #size
- #to_f
- #to_i
- #to_int
- #to_s
- #to_slice
- #to_str
- #to_sym

### Files

- README

### Class/Module Index

Quicksearch

- Parslet
- Parslet::Atoms
- Parslet::Atoms::Alternative
- Parslet::Atoms::Base
- Parslet::Atoms::CanFlatten
- Parslet::Atoms::Context
- Parslet::Atoms::DSL
- Parslet::Atoms::Entity
- Parslet::Atoms::Lookahead
- Parslet::Atoms::Named
- Parslet::Atoms::Precedence
- Parslet::Atoms::Re
- Parslet::Atoms::Repetition
- Parslet::Atoms::Sequence
- Parslet::Atoms::Str
- Parslet::Cause
- Parslet::ClassMethods
- Parslet::DelayedMatchConstructor
- Parslet::ErrorReporter
- Parslet::ErrorReporter::Deepest
- Parslet::ErrorReporter::Tree
- Parslet::Expression
- Parslet::Expression::Treetop
- Parslet::Expression::Treetop::Parser
- Parslet::Expression::Treetop::Transform
- Parslet::ParseFailed
- Parslet::Parser
- Parslet::Parser::PrettyPrinter
- Parslet::Parser::Visitors
- Parslet::Parser::Visitors::Citrus
- Parslet::Parser::Visitors::Treetop
- Parslet::Pattern
- Parslet::Pattern::SequenceBind
- Parslet::Pattern::SimpleBind
- Parslet::Pattern::SubtreeBind
- Parslet::Slice
- Parslet::Source
- Parslet::Source::LineCache
- Parslet::Source::RangeSearch
- Parslet::Transform
- Parslet::Transform::Context
- Parslet::UnconsumedInput

No matching classes.

# Parslet::Slice

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).

## Extracting line and column

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

## Likeness to strings

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.

### Attributes

line_cache[R]
offset[R]
str[R]

### Public Class Methods

new(string, offset, line_cache=nil) click to toggle source

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 32
    def initialize(string, offset, line_cache=nil)
      @str, @offset = string, offset
      @line_cache = line_cache
    end

### Public Instance Methods

+(other) click to toggle source

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 59
    def +(other)
      self.class.new(str + other.to_s, offset, line_cache)
    end

==(other) click to toggle source

Compares slices to other slices or strings.

    # File lib/parslet/slice.rb, line 39
    def == other
      str == other
    end

inspect() click to toggle source

Prints the slice as `"string"@offset`.

    # File lib/parslet/slice.rb, line 98
    def inspect
      str.inspect << "@#{offset}"
    end

line_and_column() click to toggle source

Returns a <line, column> tuple referring to the original input.

    # File lib/parslet/slice.rb, line 65
    def line_and_column
      raise ArgumentError, "No line cache was given, cannot infer line and column."        unless line_cache

      line_cache.line_and_column(self.offset)
    end

match(regexp) click to toggle source

Match regular expressions.

    # File lib/parslet/slice.rb, line 45
    def match(regexp)
      str.match(regexp)
    end

size() click to toggle source

Returns the slices size in characters.

    # File lib/parslet/slice.rb, line 51
    def size
      str.size
    end

to_f() click to toggle source

    # File lib/parslet/slice.rb, line 91
    def to_f
      str.to_f
    end

to_i() click to toggle source

    # File lib/parslet/slice.rb, line 88
    def to_i
      str.to_i
    end

to_int() click to toggle source

    # File lib/parslet/slice.rb, line 85
    def to_int
      Integer(str)
    end

to_s() click to toggle source
Alias for: to_str
to_slice() click to toggle source

    # File lib/parslet/slice.rb, line 79
    def to_slice
      self
    end

to_str() click to toggle source

Conversion operators -----------------------------------------------------

    # File lib/parslet/slice.rb, line 74
    def to_str
      str
    end

Also aliased as: to_s
to_sym() click to toggle source

    # File lib/parslet/slice.rb, line 82
    def to_sym
      str.to_sym
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.