Sha256: cb9e696c9a41bd8d266f0d09f28cfd6d2a3bf3389de22fec24b83d1464fde1d0

Contents?: true

Size: 1.83 KB

Versions: 148

Compression:

Stored size: 1.83 KB

Contents

# The base class for all of the leaves of the parse trees.  These
# basically just have types and values.  Both of these parameters
# are simple values, not AST objects.
#
class Puppet::Parser::AST::Leaf < Puppet::Parser::AST
  attr_accessor :value, :type
  # Return our value.
  def evaluate(scope)
    @value
  end

  def match(value)
    @value == value
  end

  def to_s
    @value.to_s unless @value.nil?
  end
end

# Host names, either fully qualified or just the short name, or even a regex
#
class Puppet::Parser::AST::HostName < Puppet::Parser::AST::Leaf
  def initialize(hash)
    super

    # Note that this is an AST::Regex, not a Regexp
    unless @value.is_a?(Regex)
      @value = @value.to_s.downcase
      if @value =~ /[^-\w.]/
        raise Puppet::DevError, "'#{@value}' is not a valid hostname"
      end
    end
  end

  # implementing eql? and hash so that when an HostName is stored
  # in a hash it has the same hashing properties as the underlying value
  def eql?(value)
    @value.eql?(value.is_a?(HostName) ? value.value : value)
  end

  def hash
    @value.hash
  end
end

class Puppet::Parser::AST::Regex < Puppet::Parser::AST::Leaf
  def initialize(hash)
    super
    # transform value from hash options unless it is already a regular expression
    @value = Regexp.new(@value) unless @value.is_a?(Regexp)
  end

  # we're returning self here to wrap the regexp and to be used in places
  # where a string would have been used, without modifying any client code.
  # For instance, in many places we have the following code snippet:
  #  val = @val.safeevaluate(@scope)
  #  if val.match(otherval)
  #      ...
  #  end
  # this way, we don't have to modify this test specifically for handling
  # regexes.
  #
  def evaluate(scope)
    self
  end

  def match(value)
    @value.match(value)
  end

  def to_s
    "/#{@value.source}/"
  end
end

Version data entries

148 entries across 148 versions & 2 rubygems

Version Path
puppet-retrospec-1.5.0 vendor/gems/puppet-4.5.2/lib/puppet/parser/ast/leaf.rb
puppet-5.1.0 lib/puppet/parser/ast/leaf.rb
puppet-5.1.0-x86-mingw32 lib/puppet/parser/ast/leaf.rb
puppet-5.1.0-x64-mingw32 lib/puppet/parser/ast/leaf.rb
puppet-5.1.0-universal-darwin lib/puppet/parser/ast/leaf.rb
puppet-4.10.6 lib/puppet/parser/ast/leaf.rb
puppet-4.10.6-x86-mingw32 lib/puppet/parser/ast/leaf.rb
puppet-4.10.6-x64-mingw32 lib/puppet/parser/ast/leaf.rb
puppet-4.10.6-universal-darwin lib/puppet/parser/ast/leaf.rb
puppet-4.10.5 lib/puppet/parser/ast/leaf.rb
puppet-4.10.5-x86-mingw32 lib/puppet/parser/ast/leaf.rb
puppet-4.10.5-x64-mingw32 lib/puppet/parser/ast/leaf.rb
puppet-4.10.5-universal-darwin lib/puppet/parser/ast/leaf.rb
puppet-5.0.1 lib/puppet/parser/ast/leaf.rb
puppet-5.0.1-x86-mingw32 lib/puppet/parser/ast/leaf.rb
puppet-5.0.1-x64-mingw32 lib/puppet/parser/ast/leaf.rb
puppet-5.0.1-universal-darwin lib/puppet/parser/ast/leaf.rb
puppet-5.0.0 lib/puppet/parser/ast/leaf.rb
puppet-5.0.0-x86-mingw32 lib/puppet/parser/ast/leaf.rb
puppet-5.0.0-x64-mingw32 lib/puppet/parser/ast/leaf.rb