Class: Puppet::Pops::Parser::Locator

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/pops/parser/locator.rb

Overview

Helper class that keeps track of where line breaks are located and can answer questions about positions.

API:

  • public

Direct Known Subclasses

AbstractLocator, SubLocator

Defined Under Namespace

Classes: AbstractLocator, Locator18, Locator19, SubLocator

Constant Summary collapse

RUBY_1_9_3 =

API:

  • public

(1 << 16 | 9 << 8 | 3)
RUBY_2_0_0 =

API:

  • public

(2 << 16 | 0 << 8 | 0)
RUBYVER_ARRAY =

API:

  • public

RUBY_VERSION.split(".").collect {|s| s.to_i }
RUBYVER =

API:

  • public

(RUBYVER_ARRAY[0] << 16 | RUBYVER_ARRAY[1] << 8 | RUBYVER_ARRAY[2])
LOCATOR_VERSION =

API:

  • public

locator_version
MULTIBYTE =

Constant set to true if multibyte is supported (includes multibyte extended regular expressions)

API:

  • public

!!(LOCATOR_VERSION == :ruby19 || LOCATOR_VERSION == :ruby20)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.locator(string, file, index = nil) ⇒ Object

Creates, or recreates a Locator. A Locator is created if index is not given (a scan is then performed of the given source string.

API:

  • public



30
31
32
33
34
35
36
37
# File 'lib/puppet/pops/parser/locator.rb', line 30

def self.locator(string, file, index = nil)
  case LOCATOR_VERSION
  when :ruby20, :ruby19
    Locator19.new(string, file, index)
  else
    Locator18.new(string, file, index)
  end
end

.locator_versionObject

Computes a symbol representing which ruby runtime this is running on This implementation will fail if there are more than 255 minor or micro versions of ruby

API:

  • public



13
14
15
16
17
18
19
20
21
# File 'lib/puppet/pops/parser/locator.rb', line 13

def self.locator_version
  if RUBYVER >= RUBY_2_0_0
    :ruby20
  elsif RUBYVER >= RUBY_1_9_3
    :ruby19
  else
    :ruby18
  end
end

Instance Method Details

#char_length(offset, end_offset) ⇒ Object

Returns the length measured in number of characters from the given start and end reported offset

API:

  • public



65
66
# File 'lib/puppet/pops/parser/locator.rb', line 65

def char_length(offset, end_offset)
end

#char_offset(byte_offset) ⇒ Object

Returns the character offset for a given reported offset

API:

  • public



61
62
# File 'lib/puppet/pops/parser/locator.rb', line 61

def char_offset(byte_offset)
end

#fileObject

Returns the file name associated with the string content

API:

  • public



40
41
# File 'lib/puppet/pops/parser/locator.rb', line 40

def file
end

#line_for_offset(offset) ⇒ Object

Returns the line number (first line is 1) for the given offset

API:

  • public



52
53
# File 'lib/puppet/pops/parser/locator.rb', line 52

def line_for_offset(offset)
end

#line_indexObject

Returns the line index - an array of line offsets for the start position of each line, starting at 0 for the first line.

API:

  • public



71
72
# File 'lib/puppet/pops/parser/locator.rb', line 71

def line_index()
end

#offset_on_line(offset) ⇒ Object

Returns the offset on line (first offset on a line is 0).

API:

  • public



57
58
# File 'lib/puppet/pops/parser/locator.rb', line 57

def offset_on_line(offset)
end

#pos_on_line(offset) ⇒ Object

Returns the position on line (first position on a line is 1)

API:

  • public



48
49
# File 'lib/puppet/pops/parser/locator.rb', line 48

def pos_on_line(offset)
end

#stringObject

Returns the string content

API:

  • public



44
45
# File 'lib/puppet/pops/parser/locator.rb', line 44

def string
end