class PuppetLint::Lexer::Token

Public: Stores a fragment of the manifest and the information about its location in the manifest.

Attributes

column[R]

Public: Returns the Integer column number of the line of the manifest text where the Token can be found.

line[R]

Public: Returns the Integer line number of the manifest text where the Token can be found.

next_code_token[RW]

Public: Gets/sets the next code token (skips whitespace, comments, etc) in the manifest.

next_token[RW]

Public: Gets/sets the next token in the manifest.

prev_code_token[RW]

Public: Gets/sets the previous code tokne (skips whitespace, comments, etc) in the manifest.

prev_token[RW]

Public: Gets/sets the previous token in the manifest.

type[RW]

Public: Returns the Symbol type of the Token.

value[RW]

Public: Returns the String value of the Token.

Public Class Methods

new(type, value, line, column) click to toggle source

Public: Initialise a new Token object.

type - An upper case Symbol describing the type of Token. value - The String value of the Token. line - The Integer line number where the Token can be found in the

manifest.

column - The Integer number of characters from the start of the line to

the start of the Token.

Returns the instantiated Token.

# File lib/puppet-lint/lexer/token.rb, line 44
def initialize(type, value, line, column)
  @value = value
  @type = type
  @line = line
  @column = column
  @next_token = nil
  @prev_token = nil
  @next_code_token = nil
  @prev_code_token = nil
end

Public Instance Methods

inspect() click to toggle source

Public: Produce a human friendly description of the Token when inspected.

Returns a String describing the Token.

# File lib/puppet-lint/lexer/token.rb, line 59
def inspect
  "<Token #{@type.inspect} (#{@value}) @#{@line}:#{@column}>"
end
to_manifest() click to toggle source

Public: Produce a Puppet DSL representation of a Token.

Returns a Puppet DSL String.

# File lib/puppet-lint/lexer/token.rb, line 66
def to_manifest
  case @type
  when :STRING
    "\"#{@value}\""
  when :SSTRING
    "'#{@value}'"
  when :DQPRE
    "\"#{@value}"
  when :DQPOST
    "#{@value}\""
  when :VARIABLE
    if !@prev_code_token.nil? && [:DQPRE, :DQMID].include?(@prev_code_token.type)
      "${#{@value}}"
    else
      "$#{@value}"
    end
  when :UNENC_VARIABLE
    "$#{@value}"
  when :NEWLINE
    "\n"
  when :COMMENT
    "##{@value}"
  when :REGEX
    "/#{@value}/"
  else
    @value
  end
end