summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorMatt Robinson <matt@puppetlabs.com>2011-03-16 11:19:10 -0700
committerMatt Robinson <matt@puppetlabs.com>2011-03-16 11:19:10 -0700
commitde8fea8ac8b25f45ffb07a2ef63a6da0cbaf0c41 (patch)
treef520b1400b4d35e63a0b1977b508d51d9422a88a /lib/puppet
parent86c60354da1d5a2a54baf6dbd92677a12701423d (diff)
parentc60c6cacaca6b8e34c29835f9e5749fc380b8e0b (diff)
downloadpuppet-de8fea8ac8b25f45ffb07a2ef63a6da0cbaf0c41.tar.gz
puppet-de8fea8ac8b25f45ffb07a2ef63a6da0cbaf0c41.tar.xz
puppet-de8fea8ac8b25f45ffb07a2ef63a6da0cbaf0c41.zip
Merge branch '2.6.next' into 2.6.x
* 2.6.next: (102 commits) (#5073) Download plugins even if you're filtering on tags Fix #5610: Prevent unnecessary RAL lookups Revert "Merge branch 'ticket/2.6.x/5605' of git://github.com/stschulte/puppet into 2.6.next" (#6723) Fix withenv environment restoration bug (#6689) Remove extraneous include of Puppet::Util in InventoryActiveRecord Remove extra trailing whitespace from lib/puppet/resource.rb (#5428) More fully "stub" Puppet::Resource::Reference for use with storedconfigs (#6707) Fix typo in rest_authconfig.rb (#6689) Make inventory_active_record terminus search quickly (#5392) Give a better error when realizing a non-existant resource (#2645) Adding a less-stubby test to verify the "system" attribute's behavior maint: Remove serialization of InventoryFact values maint: Rename InventoryHost to InventoryNode Fixed #2645 - Added support for creating system users maint: Remove spec run noise maint:Refactor of mount provider integration tests (#6338) Support searching on metadata in InventoryActiveRecord terminus (#6338) Implement search for InventoryActiveRecord facts terminus (#6338) Add an InventoryActiveRecord terminus for Facts Added integration tests for the mount provider ...
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/application/agent.rb4
-rw-r--r--lib/puppet/application/apply.rb4
-rw-r--r--lib/puppet/application/cert.rb38
-rw-r--r--lib/puppet/application/filebucket.rb2
-rw-r--r--lib/puppet/application/inspect.rb2
-rw-r--r--lib/puppet/application/kick.rb4
-rw-r--r--lib/puppet/application/master.rb2
-rw-r--r--lib/puppet/application/queue.rb4
-rw-r--r--lib/puppet/configurer/downloader.rb1
-rw-r--r--lib/puppet/configurer/plugin_handler.rb9
-rwxr-xr-xlib/puppet/daemon.rb2
-rw-r--r--lib/puppet/defaults.rb20
-rwxr-xr-xlib/puppet/external/nagios.rb2
-rwxr-xr-xlib/puppet/external/nagios/base.rb2
-rw-r--r--lib/puppet/indirector/facts/inventory_active_record.rb97
-rw-r--r--lib/puppet/indirector/facts/rest.rb2
-rw-r--r--lib/puppet/indirector/facts/yaml.rb75
-rw-r--r--lib/puppet/indirector/indirection.rb1
-rw-r--r--lib/puppet/module.rb2
-rw-r--r--lib/puppet/network/http/api/v1.rb7
-rw-r--r--lib/puppet/network/http/compression.rb5
-rw-r--r--lib/puppet/network/http/handler.rb2
-rw-r--r--lib/puppet/network/rest_authconfig.rb2
-rwxr-xr-xlib/puppet/node/facts.rb29
-rw-r--r--lib/puppet/parser/ast/collection.rb9
-rw-r--r--lib/puppet/parser/ast/leaf.rb2
-rw-r--r--lib/puppet/parser/functions/regsubst.rb21
-rw-r--r--lib/puppet/parser/functions/split.rb14
-rw-r--r--lib/puppet/parser/grammar.ra6
-rw-r--r--lib/puppet/parser/lexer.rb5
-rw-r--r--lib/puppet/parser/parser.rb4038
-rw-r--r--lib/puppet/parser/parser_support.rb6
-rw-r--r--lib/puppet/provider/computer/computer.rb4
-rw-r--r--lib/puppet/provider/mount.rb28
-rwxr-xr-xlib/puppet/provider/mount/parsed.rb75
-rwxr-xr-xlib/puppet/provider/parsedfile.rb4
-rw-r--r--lib/puppet/provider/service/daemontools.rb12
-rw-r--r--lib/puppet/provider/service/gentoo.rb2
-rw-r--r--lib/puppet/provider/service/launchd.rb19
-rw-r--r--lib/puppet/provider/service/runit.rb8
-rw-r--r--lib/puppet/provider/user/useradd.rb7
-rw-r--r--lib/puppet/rails/database/004_add_inventory_service_tables.rb36
-rw-r--r--lib/puppet/rails/database/schema.rb17
-rw-r--r--lib/puppet/rails/fact_name.rb2
-rw-r--r--lib/puppet/rails/fact_value.rb2
-rw-r--r--lib/puppet/rails/inventory_fact.rb5
-rw-r--r--lib/puppet/rails/inventory_node.rb25
-rw-r--r--lib/puppet/reference/configuration.rb2
-rw-r--r--lib/puppet/reference/metaparameter.rb2
-rw-r--r--lib/puppet/reports/store.rb5
-rw-r--r--lib/puppet/resource.rb64
-rw-r--r--lib/puppet/type.rb10
-rw-r--r--lib/puppet/type/augeas.rb8
-rw-r--r--lib/puppet/type/computer.rb6
-rwxr-xr-xlib/puppet/type/exec.rb4
-rw-r--r--lib/puppet/type/file.rb4
-rwxr-xr-xlib/puppet/type/file/content.rb28
-rwxr-xr-xlib/puppet/type/file/ensure.rb28
-rw-r--r--lib/puppet/type/file/selcontext.rb16
-rw-r--r--lib/puppet/type/file/target.rb15
-rw-r--r--lib/puppet/type/k5login.rb2
-rw-r--r--lib/puppet/type/macauthorization.rb5
-rw-r--r--lib/puppet/type/mcx.rb5
-rwxr-xr-xlib/puppet/type/mount.rb58
-rw-r--r--lib/puppet/type/package.rb6
-rwxr-xr-xlib/puppet/type/schedule.rb40
-rw-r--r--lib/puppet/type/selmodule.rb4
-rw-r--r--lib/puppet/type/ssh_authorized_key.rb6
-rwxr-xr-xlib/puppet/type/user.rb15
-rwxr-xr-xlib/puppet/type/zfs.rb4
-rw-r--r--lib/puppet/type/zone.rb4
-rwxr-xr-xlib/puppet/type/zpool.rb12
-rw-r--r--lib/puppet/util.rb5
-rw-r--r--lib/puppet/util/command_line.rb2
-rw-r--r--lib/puppet/util/execution.rb9
-rw-r--r--lib/puppet/util/execution_stub.rb26
-rw-r--r--lib/puppet/util/monkey_patches.rb21
-rw-r--r--lib/puppet/util/rdoc/code_objects.rb39
-rw-r--r--lib/puppet/util/rdoc/generators/puppet_generator.rb18
-rw-r--r--lib/puppet/util/rdoc/parser.rb8
-rw-r--r--lib/puppet/util/settings.rb2
81 files changed, 2908 insertions, 2240 deletions
diff --git a/lib/puppet/application/agent.rb b/lib/puppet/application/agent.rb
index 2b75505fd..3749241f8 100644
--- a/lib/puppet/application/agent.rb
+++ b/lib/puppet/application/agent.rb
@@ -9,7 +9,7 @@ class Puppet::Application::Agent < Puppet::Application
def preinit
# Do an initial trap, so that cancels don't get a stack trace.
- trap(:INT) do
+ Signal.trap(:INT) do
$stderr.puts "Cancelling startup"
exit(0)
end
@@ -119,7 +119,7 @@ class Puppet::Application::Agent < Puppet::Application
if not report
exit(1)
- elsif not Puppet[:noop] and options[:detailed_exitcodes] then
+ elsif options[:detailed_exitcodes] then
exit(report.exit_status)
else
exit(0)
diff --git a/lib/puppet/application/apply.rb b/lib/puppet/application/apply.rb
index 33a70ce8a..cc733e1f5 100644
--- a/lib/puppet/application/apply.rb
+++ b/lib/puppet/application/apply.rb
@@ -125,7 +125,7 @@ class Puppet::Application::Apply < Puppet::Application
configurer = Puppet::Configurer.new
report = configurer.run(:skip_plugin_download => true, :catalog => catalog)
- exit( Puppet[:noop] ? 0 : options[:detailed_exitcodes] ? report.exit_status : 0 )
+ exit( options[:detailed_exitcodes] ? report.exit_status : 0 )
rescue => detail
puts detail.backtrace if Puppet[:trace]
$stderr.puts detail.message
@@ -143,7 +143,7 @@ class Puppet::Application::Apply < Puppet::Application
client = nil
server = nil
- trap(:INT) do
+ Signal.trap(:INT) do
$stderr.puts "Exiting"
exit(1)
end
diff --git a/lib/puppet/application/cert.rb b/lib/puppet/application/cert.rb
index 467b0c859..ee59b7e56 100644
--- a/lib/puppet/application/cert.rb
+++ b/lib/puppet/application/cert.rb
@@ -5,17 +5,19 @@ class Puppet::Application::Cert < Puppet::Application
should_parse_config
run_mode :master
- attr_accessor :cert_mode, :all, :ca, :digest, :signed
+ attr_accessor :all, :ca, :digest, :signed
- def find_mode(opt)
- require 'puppet/ssl/certificate_authority'
- modes = Puppet::SSL::CertificateAuthority::Interface::INTERFACE_METHODS
- tmp = opt.sub("--", '').to_sym
- @cert_mode = modes.include?(tmp) ? tmp : nil
+ def subcommand
+ @subcommand
+ end
+ def subcommand=(name)
+ # Handle the nasty, legacy mapping of "clean" to "destroy".
+ sub = name.to_sym
+ @subcommand = (sub == :clean ? :destroy : sub)
end
option("--clean", "-c") do
- @cert_mode = :destroy
+ self.subcommand = "destroy"
end
option("--all", "-a") do
@@ -37,7 +39,7 @@ class Puppet::Application::Cert < Puppet::Application
require 'puppet/ssl/certificate_authority/interface'
Puppet::SSL::CertificateAuthority::Interface::INTERFACE_METHODS.reject {|m| m == :destroy }.each do |method|
option("--#{method}", "-#{method.to_s[0,1]}") do
- find_mode("--#{method}")
+ self.subcommand = method
end
end
@@ -54,8 +56,8 @@ class Puppet::Application::Cert < Puppet::Application
hosts = command_line.args.collect { |h| h.downcase }
end
begin
- @ca.apply(:revoke, :to => hosts) if @cert_mode == :destroy
- @ca.apply(@cert_mode, :to => hosts, :digest => @digest)
+ @ca.apply(:revoke, :to => hosts) if subcommand == :destroy
+ @ca.apply(subcommand, :to => hosts, :digest => @digest)
rescue => detail
puts detail.backtrace if Puppet[:trace]
puts detail.to_s
@@ -64,11 +66,12 @@ class Puppet::Application::Cert < Puppet::Application
end
def setup
+ require 'puppet/ssl/certificate_authority'
exit(Puppet.settings.print_configs ? 0 : 1) if Puppet.settings.print_configs?
Puppet::Util::Log.newdestination :console
- if [:generate, :destroy].include? @cert_mode
+ if [:generate, :destroy].include? subcommand
Puppet::SSL::Host.ca_location = :local
else
Puppet::SSL::Host.ca_location = :only
@@ -82,4 +85,17 @@ class Puppet::Application::Cert < Puppet::Application
exit(23)
end
end
+
+ def parse_options
+ # handle the bareword subcommand pattern.
+ result = super
+ unless self.subcommand then
+ if sub = self.command_line.args.shift then
+ self.subcommand = sub
+ else
+ help
+ end
+ end
+ result
+ end
end
diff --git a/lib/puppet/application/filebucket.rb b/lib/puppet/application/filebucket.rb
index 9c3c79bc3..5c91c4f64 100644
--- a/lib/puppet/application/filebucket.rb
+++ b/lib/puppet/application/filebucket.rb
@@ -52,7 +52,7 @@ class Puppet::Application::Filebucket < Puppet::Application
@client = nil
@server = nil
- trap(:INT) do
+ Signal.trap(:INT) do
$stderr.puts "Cancelling"
exit(1)
end
diff --git a/lib/puppet/application/inspect.rb b/lib/puppet/application/inspect.rb
index 764c8c4c0..ce32c661c 100644
--- a/lib/puppet/application/inspect.rb
+++ b/lib/puppet/application/inspect.rb
@@ -82,7 +82,7 @@ Licensed under the GNU General Public License version 2
Puppet::Util::Log.newdestination(@report)
Puppet::Util::Log.newdestination(:console) unless options[:logset]
- trap(:INT) do
+ Signal.trap(:INT) do
$stderr.puts "Exiting"
exit(1)
end
diff --git a/lib/puppet/application/kick.rb b/lib/puppet/application/kick.rb
index 37aeb1ef2..b3c95e21d 100644
--- a/lib/puppet/application/kick.rb
+++ b/lib/puppet/application/kick.rb
@@ -151,7 +151,7 @@ class Puppet::Application::Kick < Puppet::Application
def preinit
[:INT, :TERM].each do |signal|
- trap(signal) do
+ Signal.trap(signal) do
$stderr.puts "Cancelling"
exit(1)
end
@@ -195,7 +195,7 @@ class Puppet::Application::Kick < Puppet::Application
# If we get a signal, then kill all of our children and get out.
[:INT, :TERM].each do |signal|
- trap(signal) do
+ Signal.trap(signal) do
Puppet.notice "Caught #{signal}; shutting down"
@children.each do |pid, host|
Process.kill("INT", pid)
diff --git a/lib/puppet/application/master.rb b/lib/puppet/application/master.rb
index fde474907..6d1cdef1b 100644
--- a/lib/puppet/application/master.rb
+++ b/lib/puppet/application/master.rb
@@ -26,7 +26,7 @@ class Puppet::Application::Master < Puppet::Application
end
def preinit
- trap(:INT) do
+ Signal.trap(:INT) do
$stderr.puts "Cancelling startup"
exit(0)
end
diff --git a/lib/puppet/application/queue.rb b/lib/puppet/application/queue.rb
index 239f6b2ad..ede47d0a6 100644
--- a/lib/puppet/application/queue.rb
+++ b/lib/puppet/application/queue.rb
@@ -15,13 +15,13 @@ class Puppet::Application::Queue < Puppet::Application
# Do an initial trap, so that cancels don't get a stack trace.
# This exits with exit code 1
- trap(:INT) do
+ Signal.trap(:INT) do
$stderr.puts "Caught SIGINT; shutting down"
exit(1)
end
# This is a normal shutdown, so code 0
- trap(:TERM) do
+ Signal.trap(:TERM) do
$stderr.puts "Caught SIGTERM; shutting down"
exit(0)
end
diff --git a/lib/puppet/configurer/downloader.rb b/lib/puppet/configurer/downloader.rb
index 1b587ed4b..b3696201a 100644
--- a/lib/puppet/configurer/downloader.rb
+++ b/lib/puppet/configurer/downloader.rb
@@ -50,6 +50,7 @@ class Puppet::Configurer::Downloader
def catalog
catalog = Puppet::Resource::Catalog.new
+ catalog.host_config = false
catalog.add_resource(file)
catalog
end
diff --git a/lib/puppet/configurer/plugin_handler.rb b/lib/puppet/configurer/plugin_handler.rb
index cfc6b5a0b..ae088f26f 100644
--- a/lib/puppet/configurer/plugin_handler.rb
+++ b/lib/puppet/configurer/plugin_handler.rb
@@ -9,7 +9,14 @@ module Puppet::Configurer::PluginHandler
# Retrieve facts from the central server.
def download_plugins
return nil unless download_plugins?
- Puppet::Configurer::Downloader.new("plugin", Puppet[:plugindest], Puppet[:pluginsource], Puppet[:pluginsignore]).evaluate.each { |file| load_plugin(file) }
+ plugin_downloader = Puppet::Configurer::Downloader.new(
+ "plugin",
+ Puppet[:plugindest],
+ Puppet[:pluginsource],
+ Puppet[:pluginsignore]
+ )
+
+ plugin_downloader.evaluate.each { |file| load_plugin(file) }
end
def load_plugin(file)
diff --git a/lib/puppet/daemon.rb b/lib/puppet/daemon.rb
index c76d63a54..22630ffb8 100755
--- a/lib/puppet/daemon.rb
+++ b/lib/puppet/daemon.rb
@@ -95,7 +95,7 @@ class Puppet::Daemon
# extended signals not supported under windows
signals.update({:HUP => :restart, :USR1 => :reload, :USR2 => :reopen_logs }) unless Puppet.features.microsoft_windows?
signals.each do |signal, method|
- trap(signal) do
+ Signal.trap(signal) do
Puppet.notice "Caught #{signal}; calling #{method}"
send(method)
end
diff --git a/lib/puppet/defaults.rb b/lib/puppet/defaults.rb
index 687ac4eb0..8da104086 100644
--- a/lib/puppet/defaults.rb
+++ b/lib/puppet/defaults.rb
@@ -119,7 +119,17 @@ module Puppet
:node_terminus => ["plain", "Where to find information about nodes."],
:catalog_terminus => ["compiler", "Where to get node catalogs. This is useful to change if, for instance,
you'd like to pre-compile catalogs and store them in memcached or some other easily-accessed store."],
- :facts_terminus => [Puppet.application_name.to_s == "master" ? 'yaml' : 'facter', "The node facts terminus."],
+ :facts_terminus => {
+ :default => Puppet.application_name.to_s == "master" ? 'yaml' : 'facter',
+ :desc => "The node facts terminus.",
+ :hook => proc do |value|
+ require 'puppet/node/facts'
+ if value.to_s == "rest"
+ Puppet::Node::Facts.cache_class = :yaml
+ end
+ end
+ },
+ :inventory_terminus => [ "$facts_terminus", "Should usually be the same as the facts terminus" ],
:httplog => { :default => "$logdir/http.log",
:owner => "root",
:mode => 0640,
@@ -582,11 +592,17 @@ module Puppet
end
},
:report_server => ["$server",
- "The server to which to send transaction reports."
+ "The server to send transaction reports to."
],
:report_port => ["$masterport",
"The port to communicate with the report_server."
],
+ :inventory_server => ["$server",
+ "The server to send facts to."
+ ],
+ :inventory_port => ["$masterport",
+ "The port to communicate with the inventory_server."
+ ],
:report => [false,
"Whether to send reports after every transaction."
],
diff --git a/lib/puppet/external/nagios.rb b/lib/puppet/external/nagios.rb
index 6b8852ee5..2ed829198 100755
--- a/lib/puppet/external/nagios.rb
+++ b/lib/puppet/external/nagios.rb
@@ -3,8 +3,6 @@
#--------------------
# A script to retrieve hosts from ldap and create an importable
# cfservd file from them
-#
-# $Id: nagios.rb,v 1.3 2004/06/09 20:32:46 luke Exp $
require 'digest/md5'
#require 'ldap'
diff --git a/lib/puppet/external/nagios/base.rb b/lib/puppet/external/nagios/base.rb
index ac1d25e2e..e98760e01 100755
--- a/lib/puppet/external/nagios/base.rb
+++ b/lib/puppet/external/nagios/base.rb
@@ -470,5 +470,3 @@ class Nagios::Base
end
end
-
-# $Id$
diff --git a/lib/puppet/indirector/facts/inventory_active_record.rb b/lib/puppet/indirector/facts/inventory_active_record.rb
new file mode 100644
index 000000000..db4c63f00
--- /dev/null
+++ b/lib/puppet/indirector/facts/inventory_active_record.rb
@@ -0,0 +1,97 @@
+require 'puppet/rails'
+require 'puppet/rails/inventory_node'
+require 'puppet/rails/inventory_fact'
+require 'puppet/indirector/active_record'
+
+class Puppet::Node::Facts::InventoryActiveRecord < Puppet::Indirector::ActiveRecord
+ def find(request)
+ node = Puppet::Rails::InventoryNode.find_by_name(request.key)
+ return nil unless node
+ facts = Puppet::Node::Facts.new(node.name, node.facts_to_hash)
+ facts.timestamp = node.timestamp
+ facts
+ end
+
+ def save(request)
+ facts = request.instance
+ node = Puppet::Rails::InventoryNode.find_by_name(request.key) || Puppet::Rails::InventoryNode.create(:name => request.key, :timestamp => facts.timestamp)
+ node.timestamp = facts.timestamp
+
+ ActiveRecord::Base.transaction do
+ Puppet::Rails::InventoryFact.delete_all(:node_id => node.id)
+ # We don't want to save internal values as facts, because those are
+ # metadata that belong on the node
+ facts.values.each do |name,value|
+ next if name.to_s =~ /^_/
+ node.facts.build(:name => name, :value => value)
+ end
+ node.save
+ end
+ end
+
+ def search(request)
+ return [] unless request.options
+ matching_nodes = []
+ fact_names = []
+ fact_filters = Hash.new {|h,k| h[k] = []}
+ meta_filters = Hash.new {|h,k| h[k] = []}
+ request.options.each do |key,value|
+ type, name, operator = key.to_s.split(".")
+ operator ||= "eq"
+ if type == "facts"
+ fact_filters[operator] << [name,value]
+ elsif type == "meta" and name == "timestamp"
+ meta_filters[operator] << [name,value]
+ end
+ end
+
+ matching_nodes = nodes_matching_fact_filters(fact_filters) + nodes_matching_meta_filters(meta_filters)
+
+ # to_a because [].inject == nil
+ matching_nodes.inject {|nodes,this_set| nodes & this_set}.to_a.sort
+ end
+
+ private
+
+ def nodes_matching_fact_filters(fact_filters)
+ node_sets = []
+ fact_filters['eq'].each do |name,value|
+ node_sets << Puppet::Rails::InventoryNode.has_fact_with_value(name,value).map {|node| node.name}
+ end
+ fact_filters['ne'].each do |name,value|
+ node_sets << Puppet::Rails::InventoryNode.has_fact_without_value(name,value).map {|node| node.name}
+ end
+ {
+ 'gt' => '>',
+ 'lt' => '<',
+ 'ge' => '>=',
+ 'le' => '<='
+ }.each do |operator_name,operator|
+ fact_filters[operator_name].each do |name,value|
+ facts = Puppet::Rails::InventoryFact.find_by_sql(["SELECT inventory_facts.value, inventory_nodes.name AS node_name
+ FROM inventory_facts INNER JOIN inventory_nodes
+ ON inventory_facts.node_id = inventory_nodes.id
+ WHERE inventory_facts.name = ?", name])
+ node_sets << facts.select {|fact| fact.value.to_f.send(operator, value.to_f)}.map {|fact| fact.node_name}
+ end
+ end
+ node_sets
+ end
+
+ def nodes_matching_meta_filters(meta_filters)
+ node_sets = []
+ {
+ 'eq' => '=',
+ 'ne' => '!=',
+ 'gt' => '>',
+ 'lt' => '<',
+ 'ge' => '>=',
+ 'le' => '<='
+ }.each do |operator_name,operator|
+ meta_filters[operator_name].each do |name,value|
+ node_sets << Puppet::Rails::InventoryNode.find(:all, :select => "name", :conditions => ["timestamp #{operator} ?", value]).map {|node| node.name}
+ end
+ end
+ node_sets
+ end
+end
diff --git a/lib/puppet/indirector/facts/rest.rb b/lib/puppet/indirector/facts/rest.rb
index 07491fc77..e2afa14b2 100644
--- a/lib/puppet/indirector/facts/rest.rb
+++ b/lib/puppet/indirector/facts/rest.rb
@@ -3,4 +3,6 @@ require 'puppet/indirector/rest'
class Puppet::Node::Facts::Rest < Puppet::Indirector::REST
desc "Find and save facts about nodes over HTTP via REST."
+ use_server_setting(:inventory_server)
+ use_port_setting(:inventory_port)
end
diff --git a/lib/puppet/indirector/facts/yaml.rb b/lib/puppet/indirector/facts/yaml.rb
index 89feaf2ab..65bd78354 100644
--- a/lib/puppet/indirector/facts/yaml.rb
+++ b/lib/puppet/indirector/facts/yaml.rb
@@ -4,4 +4,79 @@ require 'puppet/indirector/yaml'
class Puppet::Node::Facts::Yaml < Puppet::Indirector::Yaml
desc "Store client facts as flat files, serialized using YAML, or
return deserialized facts from disk."
+
+ def search(request)
+ node_names = []
+ Dir.glob(yaml_dir_path).each do |file|
+ facts = YAML.load_file(file)
+ node_names << facts.name if node_matches?(facts, request.options)
+ end
+ node_names
+ end
+
+ private
+
+ # Return the path to a given node's file.
+ def yaml_dir_path
+ base = Puppet.run_mode.master? ? Puppet[:yamldir] : Puppet[:clientyamldir]
+ File.join(base, 'facts', '*.yaml')
+ end
+
+ def node_matches?(facts, options)
+ options.each do |key, value|
+ type, name, operator = key.to_s.split(".")
+ operator ||= 'eq'
+
+ return false unless node_matches_option?(type, name, operator, value, facts)
+ end
+ return true
+ end
+
+ def node_matches_option?(type, name, operator, value, facts)
+ case type
+ when "meta"
+ case name
+ when "timestamp"
+ compare_timestamp(operator, facts.timestamp, Time.parse(value))
+ end
+ when "facts"
+ compare_facts(operator, facts.values[name], value)
+ end
+ end
+
+ def compare_facts(operator, value1, value2)
+ return false unless value1
+
+ case operator
+ when "eq"
+ value1.to_s == value2.to_s
+ when "le"
+ value1.to_f <= value2.to_f
+ when "ge"
+ value1.to_f >= value2.to_f
+ when "lt"
+ value1.to_f < value2.to_f
+ when "gt"
+ value1.to_f > value2.to_f
+ when "ne"
+ value1.to_s != value2.to_s
+ end
+ end
+
+ def compare_timestamp(operator, value1, value2)
+ case operator
+ when "eq"
+ value1 == value2
+ when "le"
+ value1 <= value2
+ when "ge"
+ value1 >= value2
+ when "lt"
+ value1 < value2
+ when "gt"
+ value1 > value2
+ when "ne"
+ value1 != value2
+ end
+ end
end
diff --git a/lib/puppet/indirector/indirection.rb b/lib/puppet/indirector/indirection.rb
index ec147ec69..3d17e6e47 100644
--- a/lib/puppet/indirector/indirection.rb
+++ b/lib/puppet/indirector/indirection.rb
@@ -248,6 +248,7 @@ class Puppet::Indirector::Indirection
if result = terminus.search(request)
raise Puppet::DevError, "Search results from terminus #{terminus.name} are not an array" unless result.is_a?(Array)
result.each do |instance|
+ next unless instance.respond_to? :expiration
instance.expiration ||= self.expiration
end
return result
diff --git a/lib/puppet/module.rb b/lib/puppet/module.rb
index 8da19c2ce..43266b2b5 100644
--- a/lib/puppet/module.rb
+++ b/lib/puppet/module.rb
@@ -191,7 +191,7 @@ class Puppet::Module
def backward_compatible_plugins_dir
if dir = File.join(path, "plugins") and FileTest.exist?(dir)
- warning "using the deprecated 'plugins' directory for ruby extensions; please move to 'lib'"
+ Puppet.warning "using the deprecated 'plugins' directory for ruby extensions; please move to 'lib'"
return dir
else
return File.join(path, "lib")
diff --git a/lib/puppet/network/http/api/v1.rb b/lib/puppet/network/http/api/v1.rb
index 8aa1f0ee1..9e51aae36 100644
--- a/lib/puppet/network/http/api/v1.rb
+++ b/lib/puppet/network/http/api/v1.rb
@@ -60,13 +60,12 @@ module Puppet::Network::HTTP::API::V1
# fix to not need this, and our goal is to move away from the complication
# that leads to the fix being too long.
return :singular if indirection == "facts"
-
- # "status" really is singular
return :singular if indirection == "status"
+ return :plural if indirection == "inventory"
- result = (indirection =~ /s$/) ? :plural : :singular
+ result = (indirection =~ /s$|_search$/) ? :plural : :singular
- indirection.sub!(/s$/, '') if result
+ indirection.sub!(/s$|_search$|es$/, '')
result
end
diff --git a/lib/puppet/network/http/compression.rb b/lib/puppet/network/http/compression.rb
index d9b56f184..c8d001169 100644
--- a/lib/puppet/network/http/compression.rb
+++ b/lib/puppet/network/http/compression.rb
@@ -75,7 +75,10 @@ module Puppet::Network::HTTP::Compression
# in this case, we try with a verbatim (no header)
# deflater.
@uncompressor = Zlib::Inflate.new
- retry if @first
+ if @first then
+ @first = false
+ retry
+ end
raise
end
diff --git a/lib/puppet/network/http/handler.rb b/lib/puppet/network/http/handler.rb
index 9e9356b2f..e192613ad 100644
--- a/lib/puppet/network/http/handler.rb
+++ b/lib/puppet/network/http/handler.rb
@@ -131,7 +131,7 @@ module Puppet::Network::HTTP::Handler
def do_search(indirection_request, request, response)
result = indirection_request.model.search(indirection_request.key, indirection_request.to_hash)
- if result.nil? or (result.is_a?(Array) and result.empty?)
+ if result.nil?
return do_exception(response, "Could not find instances in #{indirection_request.indirection_name} with '#{indirection_request.key}'", 404)
end
diff --git a/lib/puppet/network/rest_authconfig.rb b/lib/puppet/network/rest_authconfig.rb
index 7a6147a82..e6067612a 100644
--- a/lib/puppet/network/rest_authconfig.rb
+++ b/lib/puppet/network/rest_authconfig.rb
@@ -61,7 +61,7 @@ module Puppet
def insert_default_acl
DEFAULT_ACL.each do |acl|
unless rights[acl[:acl]]
- Puppet.info "Inserting default '#{acl[:acl]}'(#{acl[:authenticated] ? "auth" : "non-auth"}) acl because #{( !exists? ? "#{Puppet[:rest_authconfig]} doesn't exist" : "none where found in '#{@file}'")}"
+ Puppet.info "Inserting default '#{acl[:acl]}'(#{acl[:authenticated] ? "auth" : "non-auth"}) ACL because #{( !exists? ? "#{Puppet[:rest_authconfig]} doesn't exist" : "none were found in '#{@file}'")}"
mk_acl(acl)
end
end
diff --git a/lib/puppet/node/facts.rb b/lib/puppet/node/facts.rb
index b77ad22d5..0a96e553b 100755
--- a/lib/puppet/node/facts.rb
+++ b/lib/puppet/node/facts.rb
@@ -1,12 +1,17 @@
+require 'time'
+
require 'puppet/node'
require 'puppet/indirector'
+require 'puppet/util/pson'
+
# Manage a given node's facts. This either accepts facts and stores them, or
# returns facts for a given node.
class Puppet::Node::Facts
# Set up indirection, so that nodes can be looked for in
# the node sources.
extend Puppet::Indirector
+ extend Puppet::Util::Pson
# We want to expire any cached nodes if the facts are saved.
module NodeExpirer
@@ -54,6 +59,30 @@ class Puppet::Node::Facts
strip_internal == other.send(:strip_internal)
end
+ def timestamp=(time)
+ self.values[:_timestamp] = time
+ end
+
+ def timestamp
+ self.values[:_timestamp]
+ end
+
+ def self.from_pson(data)
+ result = new(data['name'], data['values'])
+ result.timestamp = Time.parse(data['timestamp'])
+ result.expiration = Time.parse(data['expiration'])
+ result
+ end
+
+ def to_pson(*args)
+ {
+ 'expiration' => expiration,
+ 'name' => name,
+ 'timestamp' => timestamp,
+ 'values' => strip_internal,
+ }.to_pson(*args)
+ end
+
private
# Add internal data to the facts for storage.
diff --git a/lib/puppet/parser/ast/collection.rb b/lib/puppet/parser/ast/collection.rb
index ef36b7143..565b83195 100644
--- a/lib/puppet/parser/ast/collection.rb
+++ b/lib/puppet/parser/ast/collection.rb
@@ -16,6 +16,7 @@ class Puppet::Parser::AST
str, code = query && query.safeevaluate(scope)
resource_type = scope.find_resource_type(@type)
+ fail "Resource type #{@type} doesn't exist" unless resource_type
newcoll = Puppet::Parser::Collector.new(scope, resource_type.name, str, code, self.form)
scope.compiler.add_collection(newcoll)
@@ -26,10 +27,10 @@ class Puppet::Parser::AST
params = @override.collect { |param| param.safeevaluate(scope) }
newcoll.add_override(
:parameters => params,
- :file => @file,
- :line => @line,
- :source => scope.source,
- :scope => scope
+ :file => @file,
+ :line => @line,
+ :source => scope.source,
+ :scope => scope
)
end
diff --git a/lib/puppet/parser/ast/leaf.rb b/lib/puppet/parser/ast/leaf.rb
index fcdd219d7..77617e992 100644
--- a/lib/puppet/parser/ast/leaf.rb
+++ b/lib/puppet/parser/ast/leaf.rb
@@ -67,7 +67,7 @@ class Puppet::Parser::AST
end
def to_s
- "concat(#{@value.join(',')})"
+ "#{@value.map { |s| s.to_s.gsub(/^"(.*)"$/, '\1') }.join}"
end
end
diff --git a/lib/puppet/parser/functions/regsubst.rb b/lib/puppet/parser/functions/regsubst.rb
index f655db7b3..b6bb5afcf 100644
--- a/lib/puppet/parser/functions/regsubst.rb
+++ b/lib/puppet/parser/functions/regsubst.rb
@@ -4,25 +4,18 @@ module Puppet::Parser::Functions
:regsubst, :type => :rvalue,
:doc => "
- Perform regexp replacement on a string or array of strings.
+Perform regexp replacement on a string or array of strings.
* *Parameters* (in order):
-
- _target_ The string or array of strings to operate on. If an array, the replacement will be performed on each of the elements in the array, and the return value will be an array.
-
- _regexp_ The regular expression matching the target string. If you want it anchored at the start and or end of the string, you must do that with ^ and $ yourself.
-
- _replacement_ Replacement string. Can contain back references to what was matched using \\0, \\1, and so on.
-
- _flags_ Optional. String of single letter flags for how the regexp is interpreted:
-
+ * _target_ The string or array of strings to operate on. If an array, the replacement will be performed on each of the elements in the array, and the return value will be an array.
+ * _regexp_ The regular expression matching the target string. If you want it anchored at the start and or end of the string, you must do that with ^ and $ yourself.
+ * _replacement_ Replacement string. Can contain backreferences to what was matched using \\0 (whole match), \\1 (first set of parentheses), and so on.
+ * _flags_ Optional. String of single letter flags for how the regexp is interpreted:
- *E* Extended regexps
- *I* Ignore case in regexps
- *M* Multiline regexps
- *G* Global replacement; all occurrences of the regexp in each target string will be replaced. Without this, only the first occurrence will be replaced.
-
- _lang_ Optional. How to handle multibyte characters. A single-character string with the following values:
-
+ * _encoding_ Optional. How to handle multibyte characters. A single-character string with the following values:
- *N* None
- *E* EUC
- *S* SJIS
@@ -32,7 +25,7 @@ module Puppet::Parser::Functions
Get the third octet from the node's IP address:
- $i3 = regsubst($ipaddress,'^([0-9]+)[.]([0-9]+)[.]([0-9]+)[.]([0-9]+)$','\\3')
+ $i3 = regsubst($ipaddress,'^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$','\\3')
Put angle brackets around each octet in the node's IP address:
diff --git a/lib/puppet/parser/functions/split.rb b/lib/puppet/parser/functions/split.rb
index 52394095a..ad027865b 100644
--- a/lib/puppet/parser/functions/split.rb
+++ b/lib/puppet/parser/functions/split.rb
@@ -6,21 +6,21 @@ module Puppet::Parser::Functions
:doc => "\
Split a string variable into an array using the specified split regexp.
- Usage:
+*Example:*
$string = 'v1.v2:v3.v4'
$array_var1 = split($string, ':')
$array_var2 = split($string, '[.]')
$array_var3 = split($string, '[.:]')
-$array_var1 now holds the result ['v1.v2', 'v3.v4'],
-while $array_var2 holds ['v1', 'v2:v3', 'v4'], and
-$array_var3 holds ['v1', 'v2', 'v3', 'v4'].
+`$array_var1` now holds the result `['v1.v2', 'v3.v4']`,
+while `$array_var2` holds `['v1', 'v2:v3', 'v4']`, and
+`$array_var3` holds `['v1', 'v2', 'v3', 'v4']`.
-Note that in the second example, we split on a string that contains
-a regexp meta-character (.), and that needs protection. A simple
+Note that in the second example, we split on a literal string that contains
+a regexp meta-character (.), which must be escaped. A simple
way to do that for a single character is to enclose it in square
-brackets.") do |args|
+brackets; a backslash will also escape a single character.") do |args|
raise Puppet::ParseError, ("split(): wrong number of arguments (#{args.length}; must be 2)") if args.length != 2
diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra
index 7a316d4d7..af0ab182b 100644
--- a/lib/puppet/parser/grammar.ra
+++ b/lib/puppet/parser/grammar.ra
@@ -642,6 +642,7 @@ selectlhand: name
| funcrvalue
| boolean
| undef
+ | hasharrayaccess
| DEFAULT {
result = ast AST::Default, :value => val[0][:value], :line => val[0][:line]
}
@@ -844,7 +845,7 @@ hasharrayaccess: VARIABLE LBRACK rvalue RBRACK {
}
hasharrayaccesses: hasharrayaccess
- | hasharrayaccess LBRACK rvalue RBRACK {
+ | hasharrayaccesses LBRACK rvalue RBRACK {
result = ast AST::HashOrArrayAccess, :variable => val[0], :key => val[2]
}
@@ -870,6 +871,3 @@ require 'puppet/parser/parser_support'
# Local Variables:
# mode: ruby
# End:
-
-# $Id$
-
diff --git a/lib/puppet/parser/lexer.rb b/lib/puppet/parser/lexer.rb
index 31d39ae2f..9a25263f6 100644
--- a/lib/puppet/parser/lexer.rb
+++ b/lib/puppet/parser/lexer.rb
@@ -476,9 +476,12 @@ class Puppet::Parser::Lexer
@expected.pop
end
- if final_token.name == :LBRACE
+ if final_token.name == :LBRACE or final_token.name == :LPAREN
commentpush
end
+ if final_token.name == :RPAREN
+ commentpop
+ end
yield [final_token.name, token_value]
diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb
index 5be9e5a3f..c2fbf976d 100644
--- a/lib/puppet/parser/parser.rb
+++ b/lib/puppet/parser/parser.rb
@@ -1,11 +1,10 @@
#
# DO NOT MODIFY!!!!
-# This file is automatically generated by racc 1.4.5
-# from racc grammer file "grammar.ra".
+# This file is automatically generated by Racc 1.4.6
+# from Racc grammer file "".
#
-require 'racc/parser'
-
+require 'racc/parser.rb'
require 'puppet'
require 'puppet/util/loadedfile'
@@ -13,19 +12,16 @@ require 'puppet/parser/lexer'
require 'puppet/parser/ast'
module Puppet
- class ParseError < Puppet::Error; end
- class ImportError < Racc::ParseError; end
- class AlreadyImportedError < ImportError; end
+ class ParseError < Puppet::Error; end
+ class ImportError < Racc::ParseError; end
+ class AlreadyImportedError < ImportError; end
end
-
module Puppet
-
module Parser
-
class Parser < Racc::Parser
-module_eval <<'..end grammar.ra modeval..id7145220b1b', 'grammar.ra', 876
+module_eval(<<'...end grammar.ra/module_eval...', 'grammar.ra', 866)
# It got too annoying having code in a file that needs to be compiled.
require 'puppet/parser/parser_support'
@@ -36,878 +32,627 @@ require 'puppet/parser/parser_support'
# End:
# $Id$
-
-..end grammar.ra modeval..id7145220b1b
-
-##### racc 1.4.5 generates ###
-
-racc_reduce_table = [
- 0, 0, :racc_error,
- 1, 70, :_reduce_1,
- 1, 70, :_reduce_none,
- 1, 71, :_reduce_none,
- 2, 71, :_reduce_4,
- 1, 73, :_reduce_none,
- 1, 73, :_reduce_none,
- 1, 73, :_reduce_none,
- 1, 73, :_reduce_none,
- 1, 73, :_reduce_none,
- 1, 73, :_reduce_none,
- 1, 73, :_reduce_none,
- 1, 73, :_reduce_none,
- 1, 73, :_reduce_none,
- 1, 73, :_reduce_none,
- 1, 73, :_reduce_none,
- 1, 73, :_reduce_none,
- 1, 73, :_reduce_none,
- 1, 73, :_reduce_none,
- 3, 87, :_reduce_19,
- 3, 87, :_reduce_20,
- 1, 88, :_reduce_none,
- 1, 88, :_reduce_none,
- 1, 88, :_reduce_none,
- 1, 89, :_reduce_none,
- 1, 89, :_reduce_none,
- 1, 89, :_reduce_none,
- 1, 89, :_reduce_none,
- 4, 81, :_reduce_28,
- 5, 81, :_reduce_29,
- 3, 81, :_reduce_30,
- 2, 81, :_reduce_31,
- 1, 91, :_reduce_none,
- 1, 91, :_reduce_none,
- 3, 91, :_reduce_34,
- 3, 91, :_reduce_35,
- 1, 92, :_reduce_none,
- 1, 92, :_reduce_none,
- 1, 92, :_reduce_none,
- 1, 92, :_reduce_none,
- 1, 92, :_reduce_none,
- 1, 92, :_reduce_none,
- 1, 92, :_reduce_none,
- 1, 92, :_reduce_none,
- 1, 92, :_reduce_44,
- 5, 74, :_reduce_45,
- 5, 74, :_reduce_46,
- 5, 74, :_reduce_47,
- 5, 85, :_reduce_48,
- 2, 75, :_reduce_49,
- 1, 108, :_reduce_50,
- 2, 108, :_reduce_51,
- 6, 76, :_reduce_52,
- 2, 76, :_reduce_53,
- 3, 109, :_reduce_54,
- 3, 109, :_reduce_55,
- 1, 110, :_reduce_none,
- 1, 110, :_reduce_none,
- 3, 110, :_reduce_58,
- 1, 111, :_reduce_none,
- 3, 111, :_reduce_60,
- 1, 112, :_reduce_61,
- 1, 112, :_reduce_62,
- 3, 113, :_reduce_63,
- 3, 113, :_reduce_64,
- 1, 114, :_reduce_none,
- 1, 114, :_reduce_none,
- 4, 116, :_reduce_67,
- 1, 102, :_reduce_none,
- 3, 102, :_reduce_69,
- 0, 103, :_reduce_none,
- 1, 103, :_reduce_none,
- 1, 118, :_reduce_72,
- 1, 93, :_reduce_73,
- 1, 95, :_reduce_74,
- 1, 117, :_reduce_none,
- 1, 117, :_reduce_none,
- 1, 117, :_reduce_none,
- 1, 117, :_reduce_none,
- 1, 117, :_reduce_none,
- 1, 117, :_reduce_none,
- 1, 117, :_reduce_none,
- 3, 77, :_reduce_82,
- 3, 77, :_reduce_83,
- 3, 86, :_reduce_84,
- 0, 104, :_reduce_85,
- 1, 104, :_reduce_86,
- 3, 104, :_reduce_87,
- 3, 122, :_reduce_88,
- 3, 124, :_reduce_89,
- 1, 125, :_reduce_none,
- 1, 125, :_reduce_none,
- 0, 107, :_reduce_92,
- 1, 107, :_reduce_93,
- 3, 107, :_reduce_94,
- 1, 126, :_reduce_none,
- 3, 126, :_reduce_96,
- 1, 115, :_reduce_none,
- 1, 115, :_reduce_none,
- 1, 115, :_reduce_none,
- 1, 115, :_reduce_none,
- 1, 115, :_reduce_none,
- 1, 115, :_reduce_none,
- 1, 123, :_reduce_none,
- 1, 123, :_reduce_none,
- 1, 123, :_reduce_none,
- 1, 123, :_reduce_none,
- 1, 123, :_reduce_none,
- 1, 123, :_reduce_none,
- 1, 123, :_reduce_none,
- 1, 123, :_reduce_none,
- 1, 123, :_reduce_none,
- 1, 123, :_reduce_none,
- 1, 123, :_reduce_none,
- 1, 123, :_reduce_none,
- 4, 97, :_reduce_115,
- 3, 97, :_reduce_116,
- 1, 99, :_reduce_117,
- 2, 99, :_reduce_118,
- 2, 129, :_reduce_119,
- 1, 130, :_reduce_120,
- 2, 130, :_reduce_121,
- 1, 96, :_reduce_122,
- 4, 90, :_reduce_123,
- 4, 90, :_reduce_124,
- 2, 79, :_reduce_125,
- 5, 131, :_reduce_126,
- 4, 131, :_reduce_127,
- 0, 132, :_reduce_none,
- 2, 132, :_reduce_129,
- 4, 132, :_reduce_130,
- 3, 132, :_reduce_131,
- 1, 120, :_reduce_none,
- 3, 120, :_reduce_133,
- 3, 120, :_reduce_134,
- 3, 120, :_reduce_135,
- 3, 120, :_reduce_136,
- 3, 120, :_reduce_137,
- 3, 120, :_reduce_138,
- 3, 120, :_reduce_139,
- 3, 120, :_reduce_140,
- 3, 120, :_reduce_141,
- 2, 120, :_reduce_142,
- 3, 120, :_reduce_143,
- 3, 120, :_reduce_144,
- 3, 120, :_reduce_145,
- 3, 120, :_reduce_146,
- 3, 120, :_reduce_147,
- 3, 120, :_reduce_148,
- 2, 120, :_reduce_149,
- 3, 120, :_reduce_150,
- 3, 120, :_reduce_151,
- 3, 120, :_reduce_152,
- 5, 78, :_reduce_153,
- 1, 134, :_reduce_none,
- 2, 134, :_reduce_155,
- 5, 135, :_reduce_156,
- 4, 135, :_reduce_157,
- 1, 136, :_reduce_none,
- 3, 136, :_reduce_159,
- 3, 98, :_reduce_160,
- 1, 138, :_reduce_none,
- 4, 138, :_reduce_162,
- 1, 140, :_reduce_none,
- 3, 140, :_reduce_164,
- 3, 139, :_reduce_165,
- 1, 137, :_reduce_none,
- 1, 137, :_reduce_none,
- 1, 137, :_reduce_none,
- 1, 137, :_reduce_none,
- 1, 137, :_reduce_none,
- 1, 137, :_reduce_none,
- 1, 137, :_reduce_none,
- 1, 137, :_reduce_173,
- 1, 137, :_reduce_none,
- 1, 141, :_reduce_175,
- 1, 142, :_reduce_none,
- 3, 142, :_reduce_177,
- 2, 80, :_reduce_178,
- 6, 82, :_reduce_179,
- 5, 82, :_reduce_180,
- 7, 83, :_reduce_181,
- 6, 83, :_reduce_182,
- 6, 84, :_reduce_183,
- 5, 84, :_reduce_184,
- 1, 106, :_reduce_185,
- 1, 101, :_reduce_186,
- 1, 101, :_reduce_187,
- 1, 101, :_reduce_188,
- 1, 145, :_reduce_none,
- 3, 145, :_reduce_190,
- 1, 147, :_reduce_191,
- 1, 148, :_reduce_192,
- 1, 148, :_reduce_193,
- 1, 148, :_reduce_194,
- 1, 148, :_reduce_none,
- 0, 72, :_reduce_196,
- 0, 149, :_reduce_197,
- 1, 143, :_reduce_none,
- 3, 143, :_reduce_199,
- 3, 143, :_reduce_200,
- 1, 150, :_reduce_none,
- 3, 150, :_reduce_202,
- 3, 151, :_reduce_203,
- 1, 151, :_reduce_204,
- 3, 151, :_reduce_205,
- 1, 151, :_reduce_206,
- 1, 146, :_reduce_none,
- 2, 146, :_reduce_208,
- 1, 144, :_reduce_none,
- 2, 144, :_reduce_210,
- 1, 152, :_reduce_none,
- 1, 152, :_reduce_none,
- 1, 94, :_reduce_213,
- 3, 119, :_reduce_214,
- 4, 119, :_reduce_215,
- 2, 119, :_reduce_216,
- 1, 127, :_reduce_none,
- 1, 127, :_reduce_none,
- 0, 105, :_reduce_none,
- 1, 105, :_reduce_220,
- 1, 133, :_reduce_221,
- 3, 128, :_reduce_222,
- 4, 128, :_reduce_223,
- 2, 128, :_reduce_224,
- 1, 153, :_reduce_none,
- 3, 153, :_reduce_226,
- 3, 154, :_reduce_227,
- 1, 155, :_reduce_228,
- 1, 155, :_reduce_229,
- 4, 121, :_reduce_230,
- 1, 100, :_reduce_none,
- 4, 100, :_reduce_232 ]
-
-racc_reduce_n = 233
-
-racc_shift_n = 384
+...end grammar.ra/module_eval...
+##### State transition tables begin ###
racc_action_table = [
- 256, 257, 228, 82, 54, 72, 75, 181, 251, 48,
- 72, 75, 194, 205, 210, 163, 156, 348, 46, 47,
- 344, 184, 201, 203, 206, 209, 162, 352, 54, 182,
- 351, 169, 54, -168, 72, 75, 241, 242, 102, 305,
- 106, 158, 58, 193, 230, 60, 204, 208, 193, 306,
+ 256, 257, 228, 63, 327, 64, 156, 54, 82, 356,
+ -166, 245, 176, 205, 210, 254, 37, 357, 65, 244,
+ 38, -168, 201, 203, 206, 209, 184, 11, 255, 241,
+ 242, 158, 54, 251, 72, 75, 72, 75, 102, 117,
+ 106, -170, 62, 194, 230, 58, 204, 208, 60, 306,
213, 196, 197, 198, 200, 202, 97, 207, 211, 72,
- 75, 72, 75, 163, 199, 59, 58, 71, 245, 60,
- 58, 83, 86, 60, 162, 92, 244, 72, 75, 169,
- 78, 100, 352, 269, 89, 351, 63, 94, 64, 59,
- 228, 326, 71, 59, 162, 59, 83, 86, 83, 268,
- 92, 65, 92, 184, 76, 78, 307, 137, 163, 89,
- 162, 89, 72, 75, 83, 268, 241, 242, 92, 162,
- 59, 163, 59, 137, 169, 62, 254, 89, 207, 211,
- 72, 75, 162, 308, 102, 199, 106, 169, 59, 255,
- 213, 196, 197, 198, -166, 162, 309, 207, 211, 83,
- 268, 310, 97, 92, 199, 72, 75, 355, 137, 102,
- -170, 106, 89, 71, 218, 356, 173, 83, 86, 220,
- 313, 92, -171, 59, 72, 75, 78, 100, 37, 218,
- 89, 249, 38, 94, 220, 246, 247, 173, 71, 11,
- 210, 59, 83, 86, 246, 367, 92, 271, 201, 37,
- -167, 78, 37, 38, 270, 89, 38, 71, 246, 247,
- 11, 83, 86, 11, 14, 92, 59, 72, 75, 76,
- 78, 102, 278, 106, 89, 277, 213, 196, 197, 198,
- 200, 202, 275, 207, 211, 59, 246, 274, 152, 97,
- 199, 37, 318, 72, 75, 127, 319, 102, -169, 106,
- 71, 63, 11, 14, 83, 86, -167, 37, 92, 207,
- 211, 127, -169, 78, 100, 97, 199, 89, 11, 14,
- 94, -166, 117, 72, 75, -185, 71, 82, 59, 336,
- 83, 86, 197, 198, 92, 231, 338, 207, 211, 78,
- 100, 181, 48, 89, 199, 74, 94, 240, -168, 72,
- 75, 241, 242, 102, 59, 106, 71, 184, 176, 37,
- 83, 86, 59, 38, 92, 345, 322, 175, 76, 78,
- 11, 97, -172, 89, -171, 72, 75, -170, 59, 102,
- 214, 106, 71, 64, 59, 215, 83, 86, 173, 217,
- 92, -23, -23, -23, -23, 78, 100, 97, 155, 89,
- 72, 75, 94, 122, 102, 152, 106, 82, 71, 223,
- 59, 122, 83, 86, 72, 75, 92, -168, 102, 225,
- 106, 78, 100, -166, 276, 89, 226, 117, 94, 44,
- 45, 41, 42, 71, -169, -167, 59, 83, 86, 72,
- 75, 92, 226, 102, 229, 106, 78, 71, 52, -168,
- 89, 83, 86, 72, 75, 92, -166, 102, -169, 106,
- 78, 59, 197, 198, 89, -167, -171, 207, 211, 365,
- 231, 152, 71, 234, 199, 59, 83, 86, 50, 210,
- 92, -21, -21, -21, -21, 78, 71, 201, 372, 89,
- 83, 86, 49, 374, 92, 72, 75, 228, -220, 78,
- 59, 226, 354, 89, 377, 72, 75, 40, 39, 102,
- 237, 106, 341, nil, 59, 213, 196, 197, 198, 200,
- 202, nil, 207, 211, nil, nil, nil, 97, 162, 199,
- nil, nil, 83, 268, nil, nil, 92, nil, 71, nil,
- nil, 137, 83, 86, nil, 89, 92, 44, 45, 41,
- 42, 78, 100, 72, 75, 89, 59, 102, 94, 106,
- 213, 196, 197, 198, 200, 202, 59, 207, 211, nil,
- 213, 196, 197, 198, 199, 97, nil, 207, 211, 72,
- 75, nil, nil, 102, 199, 106, 71, nil, nil, nil,
- 83, 86, nil, nil, 92, nil, nil, nil, nil, 78,
- 100, 97, nil, 89, nil, nil, 94, nil, nil, 72,
- 75, nil, 71, 102, 59, 106, 83, 86, nil, nil,
- 92, nil, nil, nil, nil, 78, 100, nil, nil, 89,
- nil, 97, 94, nil, nil, 72, 75, nil, nil, 102,
- 59, 106, 71, nil, nil, nil, 83, 86, nil, nil,
- 92, nil, nil, nil, nil, 78, 100, 97, nil, 89,
- 72, 75, 94, nil, 102, nil, 106, nil, 71, nil,
- 59, nil, 83, 86, 72, 75, 92, nil, 102, nil,
- nil, 78, 100, nil, nil, 89, nil, nil, 94, nil,
- nil, nil, nil, 71, nil, nil, 59, 83, 86, 72,
- 75, 92, nil, 102, nil, 106, 78, 71, nil, nil,
- 89, 83, 143, nil, nil, 92, nil, nil, nil, nil,
- 137, 59, nil, nil, 89, 72, 75, nil, nil, 102,
- nil, 106, 71, nil, nil, 59, 83, 86, nil, nil,
- 92, nil, nil, nil, nil, 78, nil, 97, nil, 89,
- nil, 72, 75, nil, nil, 102, nil, 106, 71, nil,
- 59, nil, 83, 86, nil, nil, 92, nil, nil, nil,
+ 75, 241, 242, 102, 199, 106, 163, 71, 59, 307,
+ 58, 83, 86, 60, 193, 92, 54, 162, 72, 75,
+ 78, 100, 169, 163, 89, 72, 75, 94, 308, 102,
+ 163, 106, 71, 59, 162, 59, 83, 86, 59, 169,
+ 92, 162, 311, 72, 75, 78, 169, 97, 181, 89,
+ 353, 71, 228, 352, 58, 83, 269, 60, 71, 92,
+ 59, 345, 83, 86, 137, 184, 92, -171, 89, 72,
+ 75, 78, 100, 246, 368, 89, 71, 59, 94, 59,
+ 83, 86, 309, 173, 92, 314, 59, 163, 76, 78,
+ 72, 75, -167, 89, 102, 310, 106, 37, 162, 173,
+ 218, 127, 71, 169, 59, 220, 83, 269, 11, 14,
+ 92, 63, 97, 152, 37, 137, 72, 75, 127, 89,
+ 102, 319, 106, 71, 218, 11, 14, 83, 86, 220,
+ 59, 92, 72, 75, 72, 75, 78, 100, 270, 279,
+ 89, 349, 278, 94, 353, 207, 211, 352, 320, 71,
+ -169, 59, 199, 83, 86, 197, 198, 92, 72, 75,
+ 207, 211, 78, -169, 37, 71, 89, 199, 38, 83,
+ 269, -167, 193, 92, -166, 11, 14, 59, 137, 72,
+ 75, 272, 89, 102, 182, 106, 37, 207, 211, -186,
+ 38, 71, 181, 59, 199, 83, 86, 11, 337, 92,
+ 231, 97, 339, 76, 78, 72, 75, 37, 89, 82,
+ 48, 38, 71, 48, 323, 176, 83, 86, 11, 59,
+ 92, 342, 46, 47, 184, 78, 100, 74, -168, 89,
+ 72, 75, 94, -172, 102, 346, 106, -173, 71, 175,
+ 59, 59, 83, 86, 240, -171, 92, -170, 241, 242,
+ 76, 78, 97, 197, 198, 89, 72, 75, 207, 211,
+ 102, 214, 106, 71, 64, 199, 59, 83, 86, 276,
+ 215, 92, 217, 246, 275, 173, 78, 100, 97, 82,
+ 89, 72, 75, 94, 155, 102, 122, 106, 152, 71,
+ 223, 59, -168, 83, 86, 249, 277, 92, 176, 246,
+ 247, 122, 78, 100, 225, -166, 89, 72, 75, 94,
+ 117, 102, 226, 106, 71, -169, 271, 59, 83, 86,
+ 246, 247, 92, -21, -21, -21, -21, 78, 226, 97,
+ -167, 89, 72, 75, 52, -168, 102, -166, 106, -169,
+ 71, -167, 59, -171, 83, 86, 366, 152, 92, -23,
+ -23, -23, -23, 78, 100, 228, 226, 89, 72, 75,
+ 94, 50, 102, 373, 106, 71, 49, 375, 59, 83,
+ 86, 229, -221, 92, 237, 378, 72, 75, 78, 40,
+ 97, 39, 89, 355, 44, 45, 41, 42, 231, 234,
+ nil, 71, nil, 59, nil, 83, 86, nil, nil, 92,
+ 44, 45, 41, 42, 78, 100, 72, 75, 89, 71,
+ 102, 94, 106, 83, 269, nil, nil, 92, nil, 59,
+ nil, nil, 137, nil, nil, nil, 89, nil, 97, nil,
+ nil, nil, 72, 75, nil, nil, 102, 59, 106, 71,
+ nil, nil, nil, 83, 86, nil, nil, 92, nil, nil,
+ nil, nil, 78, 100, 97, nil, 89, nil, nil, 94,
+ nil, nil, 72, 75, nil, 71, 102, 59, 106, 83,
+ 86, nil, nil, 92, nil, nil, nil, nil, 78, 100,
+ nil, nil, 89, nil, 97, 94, nil, nil, 72, 75,
+ nil, nil, 102, 59, 106, 71, nil, nil, nil, 83,
+ 86, nil, nil, 92, nil, nil, 72, 75, 78, 100,
+ 97, nil, 89, 72, 75, 94, nil, 102, nil, 106,
+ nil, 71, nil, 59, nil, 83, 86, 72, 75, 92,
+ nil, 102, nil, nil, 78, 100, nil, nil, 89, 71,
+ nil, 94, nil, 83, 269, nil, 71, 92, nil, 59,
+ 83, 86, 137, nil, 92, nil, 89, nil, nil, 78,
+ 71, nil, nil, 89, 83, 143, nil, 59, 92, nil,
+ nil, nil, nil, 137, 59, 72, 75, 89, nil, 102,
+ nil, 106, 213, 196, 197, 198, 200, 202, 59, 207,
+ 211, nil, 213, 196, 197, 198, 199, 97, nil, 207,
+ 211, 72, 75, nil, nil, 102, 199, 106, 71, nil,
+ nil, nil, 83, 86, nil, nil, 92, nil, nil, nil,
nil, 78, 100, 97, nil, 89, nil, nil, 94, nil,
nil, 72, 75, nil, 71, 102, 59, 106, 83, 86,
nil, nil, 92, nil, nil, nil, nil, 78, 100, nil,
- nil, 89, nil, 97, 94, nil, nil, 72, 75, nil,
- nil, 102, 59, 106, 71, nil, nil, nil, 83, 86,
- nil, nil, 92, nil, nil, nil, nil, 78, 100, 97,
- nil, 89, 72, 75, 94, nil, 102, nil, 106, nil,
- 71, nil, 59, nil, 83, 86, nil, nil, 92, nil,
- nil, nil, nil, 78, 100, nil, nil, 89, 72, 75,
- 94, nil, 102, nil, 106, 71, nil, nil, 59, 83,
- 86, nil, nil, 92, nil, nil, nil, nil, 78, nil,
- 97, nil, 89, nil, 72, 75, nil, nil, 102, nil,
- 106, 71, nil, 59, nil, 83, 86, nil, nil, 92,
- nil, nil, 72, 75, 78, 100, 97, nil, 89, 72,
- 75, 94, nil, 102, nil, 106, nil, 71, nil, 59,
- nil, 83, 86, nil, nil, 92, nil, nil, nil, nil,
- 78, 100, nil, nil, 89, 162, nil, 94, nil, 83,
- 268, nil, 71, 92, nil, 59, 83, 86, 137, nil,
- 92, nil, 89, nil, nil, 78, 72, 75, nil, 89,
- 102, nil, 106, 59, nil, nil, nil, nil, nil, nil,
- 59, nil, nil, nil, nil, 72, 75, nil, 97, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 71,
- nil, nil, nil, 83, 86, nil, nil, 92, 177, nil,
- 72, 75, 78, 100, nil, nil, 89, nil, 71, 94,
- nil, nil, 83, 86, nil, nil, 92, 59, 72, 75,
- 76, 78, 102, 339, 106, 89, nil, nil, nil, nil,
- nil, nil, nil, 71, nil, nil, 59, 83, 86, nil,
- 97, 92, nil, 72, 75, 76, 78, 102, nil, 106,
- 89, 71, nil, 72, 75, 83, 86, nil, nil, 92,
- nil, 59, nil, nil, 78, 100, nil, nil, 89, 72,
- 75, 94, nil, nil, nil, nil, 71, nil, nil, 59,
- 83, 86, nil, nil, 92, nil, 162, nil, nil, 78,
- 83, 268, nil, 89, 92, nil, 72, 75, nil, 137,
- 102, nil, 162, 89, 59, nil, 83, 268, nil, nil,
- 92, nil, 72, 75, 59, 137, 102, nil, 106, 89,
- nil, nil, 72, 75, nil, nil, 102, nil, 106, 71,
- 59, nil, nil, 83, 268, nil, nil, 92, nil, nil,
- nil, nil, 137, nil, 97, 71, 89, nil, nil, 83,
- 86, nil, nil, 92, nil, 71, nil, 59, 78, 83,
- 86, nil, 89, 92, nil, nil, nil, nil, 78, 100,
- 72, 75, 89, 59, 102, 94, 106, 213, 196, 197,
- 198, 200, 202, 59, 207, 211, nil, nil, nil, 72,
- 75, 199, 97, 102, 189, 106, 72, 75, nil, nil,
+ nil, 89, nil, 97, 94, nil, nil, nil, nil, nil,
+ nil, nil, 59, nil, 71, nil, nil, nil, 83, 86,
+ 72, 75, 92, nil, 102, 189, 106, 78, 100, nil,
+ nil, 89, nil, nil, 94, nil, nil, nil, nil, 72,
+ 75, nil, 59, 102, nil, 106, 72, 75, nil, nil,
102, nil, 106, 71, nil, nil, nil, 83, 86, nil,
- nil, 92, nil, nil, nil, nil, 78, 100, 72, 75,
- 89, nil, 71, 94, nil, nil, 83, 86, nil, 71,
+ nil, 92, nil, nil, nil, nil, 78, nil, 97, nil,
+ 89, nil, 71, nil, nil, nil, 83, 86, nil, 71,
92, 59, nil, 83, 86, 78, nil, 92, nil, 89,
- nil, nil, 78, 72, 75, nil, 89, 102, nil, 106,
- 59, 162, nil, nil, nil, 83, 268, 59, nil, 92,
- nil, 72, 75, nil, 137, 102, nil, 106, 89, nil,
- nil, nil, nil, nil, nil, nil, 71, nil, nil, 59,
- 83, 86, nil, 97, 92, nil, nil, nil, nil, 78,
- nil, 72, 75, 89, 71, 102, nil, 106, 83, 86,
- nil, nil, 92, nil, 59, nil, nil, 78, 100, nil,
- nil, 89, nil, 97, 94, nil, nil, 72, 75, nil,
- nil, 102, 59, 106, 71, nil, nil, nil, 83, 86,
- nil, nil, 92, nil, nil, nil, nil, 78, 100, 97,
- nil, 89, nil, nil, 94, nil, nil, nil, nil, nil,
- 71, nil, 59, nil, 83, 86, 212, nil, 92, nil,
- nil, nil, nil, 78, 100, 205, 210, 89, nil, nil,
- 94, nil, nil, nil, 201, 203, 206, 209, 59, nil,
- 205, 210, nil, nil, nil, nil, nil, nil, nil, 201,
- 203, 206, 209, nil, nil, nil, nil, nil, 204, 208,
- nil, nil, 213, 196, 197, 198, 200, 202, nil, 207,
- 211, nil, nil, 204, 208, nil, 199, 213, 196, 197,
- 198, 200, 202, nil, 207, 211, 205, 210, nil, nil,
- nil, 199, nil, nil, nil, 201, 203, 206, 209, nil,
- nil, 205, 210, nil, nil, nil, nil, nil, nil, nil,
- 201, 203, 206, 209, nil, nil, nil, nil, nil, 204,
- 208, nil, nil, 213, 196, 197, 198, 200, 202, nil,
- 207, 211, nil, nil, 204, 208, nil, 199, 213, 196,
- 197, 198, 200, 202, nil, 207, 211, 205, 210, nil,
- nil, nil, 199, nil, nil, nil, 201, 203, 206, 209,
- nil, nil, 205, 210, nil, nil, nil, nil, nil, nil,
- 273, 201, 203, 206, 209, nil, nil, nil, nil, nil,
- nil, 208, nil, nil, 213, 196, 197, 198, 200, 202,
- nil, 207, 211, nil, nil, 204, 208, nil, 199, 213,
- 196, 197, 198, 200, 202, nil, 207, 211, 205, 210,
- nil, nil, nil, 199, nil, nil, nil, 201, 203, 206,
- 209, nil, nil, 26, 210, 33, 1, nil, 7, 12,
- nil, 17, 201, 23, nil, 29, nil, 3, nil, nil,
- 11, 14, nil, 210, nil, 213, 196, 197, 198, 200,
- 202, 201, 207, 211, nil, nil, nil, nil, nil, 199,
- 213, 196, 197, 198, 200, 202, nil, 207, 211, nil,
- nil, 324, nil, nil, 199, nil, nil, nil, nil, 213,
- 196, 197, 198, 200, 202, nil, 207, 211, nil, nil,
- 379, nil, 26, 199, 33, 1, nil, 7, 12, nil,
+ nil, nil, 78, 100, nil, nil, 89, 72, 75, 94,
+ 59, 102, nil, 106, nil, nil, nil, 59, nil, nil,
+ nil, nil, nil, nil, nil, nil, 72, 75, nil, 97,
+ 102, nil, 106, 72, 75, nil, nil, 102, nil, 106,
+ 71, nil, nil, nil, 83, 86, nil, nil, 92, nil,
+ nil, nil, nil, 78, 100, 97, nil, 89, nil, 71,
+ 94, nil, nil, 83, 86, nil, 71, 92, 59, nil,
+ 83, 86, 78, nil, 92, nil, 89, nil, nil, 78,
+ 100, nil, nil, 89, 72, 75, 94, 59, 102, nil,
+ 106, nil, nil, nil, 59, nil, nil, nil, nil, nil,
+ nil, nil, nil, 72, 75, nil, 97, nil, nil, 72,
+ 75, nil, nil, nil, nil, nil, nil, 71, nil, nil,
+ nil, 83, 86, nil, nil, 92, 340, nil, nil, nil,
+ 78, 100, 177, nil, 89, nil, 71, 94, nil, nil,
+ 83, 86, 71, nil, 92, 59, 83, 86, 76, 78,
+ 92, nil, nil, 89, 76, 78, 72, 75, nil, 89,
+ 102, nil, 106, nil, 59, nil, 213, 196, 197, 198,
+ 59, nil, nil, 207, 211, 72, 75, nil, 97, 102,
+ 199, 106, 72, 75, nil, nil, nil, nil, nil, 71,
+ nil, nil, nil, 83, 86, nil, nil, 92, nil, nil,
+ 72, 75, 78, 100, nil, nil, 89, nil, 71, 94,
+ nil, nil, 83, 86, nil, 71, 92, 59, nil, 83,
+ 269, 78, nil, 92, nil, 89, nil, nil, 137, nil,
+ nil, nil, 89, 71, nil, nil, 59, 83, 269, nil,
+ nil, 92, nil, 59, nil, nil, 137, 72, 75, nil,
+ 89, 102, nil, 106, nil, nil, nil, nil, nil, nil,
+ nil, 59, nil, nil, nil, nil, 72, 75, nil, 97,
+ 102, nil, 106, 72, 75, nil, nil, 102, nil, 106,
+ 71, nil, nil, nil, 83, 86, nil, nil, 92, nil,
+ nil, nil, nil, 78, 100, 72, 75, 89, nil, 71,
+ 94, nil, nil, 83, 86, nil, 71, 92, 59, nil,
+ 83, 86, 78, nil, 92, nil, 89, nil, nil, 78,
+ 72, 75, nil, 89, 102, nil, 106, 59, 71, nil,
+ nil, nil, 83, 269, 59, nil, 92, nil, 72, 75,
+ nil, 137, 102, nil, 106, 89, nil, nil, nil, nil,
+ nil, nil, nil, 71, nil, nil, 59, 83, 86, nil,
+ 97, 92, nil, 72, 75, nil, 78, 102, nil, 106,
+ 89, 71, nil, 72, 75, 83, 86, 102, nil, 92,
+ nil, 59, nil, nil, 78, 100, nil, nil, 89, nil,
+ nil, 94, nil, nil, nil, nil, 71, nil, nil, 59,
+ 83, 86, nil, nil, 92, nil, 71, nil, nil, 78,
+ 83, 269, nil, 89, 92, nil, 72, 75, nil, 137,
+ 102, nil, 106, 89, 59, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, 59, 72, 75, nil, 97, 102,
+ nil, 106, 72, 75, nil, nil, 102, nil, 106, 71,
+ nil, nil, nil, 83, 86, nil, nil, 92, nil, nil,
+ nil, nil, 78, 100, 97, nil, 89, nil, 71, 94,
+ nil, nil, 83, 86, nil, 71, 92, 59, nil, 83,
+ 86, 78, nil, 92, nil, 89, nil, nil, 78, 100,
+ 212, nil, 89, nil, nil, 94, 59, nil, nil, 205,
+ 210, nil, nil, 59, nil, nil, nil, nil, 201, 203,
+ 206, 209, nil, nil, 205, 210, nil, nil, nil, nil,
+ nil, nil, 274, 201, 203, 206, 209, nil, nil, nil,
+ nil, nil, 204, 208, nil, nil, 213, 196, 197, 198,
+ 200, 202, nil, 207, 211, nil, nil, 204, 208, nil,
+ 199, 213, 196, 197, 198, 200, 202, nil, 207, 211,
+ 205, 210, nil, nil, nil, 199, nil, nil, nil, 201,
+ 203, 206, 209, nil, nil, 205, 210, nil, nil, nil,
+ nil, nil, nil, nil, 201, 203, 206, 209, nil, nil,
+ nil, nil, nil, nil, 208, nil, nil, 213, 196, 197,
+ 198, 200, 202, nil, 207, 211, nil, nil, 204, 208,
+ nil, 199, 213, 196, 197, 198, 200, 202, nil, 207,
+ 211, 205, 210, nil, nil, nil, 199, nil, nil, nil,
+ 201, 203, 206, 209, nil, nil, 205, 210, nil, nil,
+ nil, nil, nil, nil, nil, 201, 203, 206, 209, nil,
+ nil, nil, nil, nil, 204, 208, nil, nil, 213, 196,
+ 197, 198, 200, 202, nil, 207, 211, nil, nil, nil,
+ nil, nil, 199, 213, 196, 197, 198, 200, 202, nil,
+ 207, 211, 205, 210, nil, nil, nil, 199, nil, nil,
+ nil, 201, 203, 206, 209, nil, nil, nil, 210, nil,
+ 213, 196, 197, 198, 200, 202, 201, 207, 211, nil,
+ nil, nil, nil, nil, 199, 204, 208, 210, nil, 213,
+ 196, 197, 198, 200, 202, 201, 207, 211, nil, nil,
+ nil, nil, 210, 199, 213, 196, 197, 198, 200, 202,
+ 201, 207, 211, nil, nil, nil, nil, nil, 199, nil,
+ nil, 210, nil, 213, 196, 197, 198, 200, 202, 201,
+ 207, 211, nil, nil, nil, nil, nil, 199, 213, 196,
+ 197, 198, 200, 202, nil, 207, 211, nil, nil, 384,
+ nil, nil, 199, nil, nil, nil, nil, 213, 196, 197,
+ 198, 200, 202, nil, 207, 211, nil, nil, 297, nil,
+ 26, 199, 33, 1, nil, 7, 12, nil, 17, nil,
+ 23, nil, 29, nil, 3, nil, nil, 11, 14, 26,
+ 305, 33, 1, nil, 7, 12, nil, 17, nil, 23,
+ nil, 29, nil, 3, nil, nil, 11, 14, nil, 383,
+ nil, 26, nil, 33, 1, nil, 7, 12, nil, 17,
+ nil, 23, nil, 29, nil, 3, nil, nil, 11, 14,
+ 26, 325, 33, 1, nil, 7, 12, nil, 17, nil,
+ 23, nil, 29, nil, 3, nil, nil, 11, 14, nil,
+ 382, nil, 26, nil, 33, 1, nil, 7, 12, nil,
17, nil, 23, nil, 29, nil, 3, nil, nil, 11,
- 14, 26, 382, 33, 1, nil, 7, 12, nil, 17,
+ 14, 26, 380, 33, 1, nil, 7, 12, nil, 17,
nil, 23, nil, 29, nil, 3, nil, nil, 11, 14,
- nil, 296, nil, 26, nil, 33, 1, nil, 7, 12,
+ nil, 376, nil, 26, nil, 33, 1, nil, 7, 12,
nil, 17, nil, 23, nil, 29, nil, 3, nil, nil,
- 11, 14, 26, 364, 33, 1, nil, 7, 12, nil,
+ 11, 14, 26, 350, 33, 1, nil, 7, 12, nil,
17, nil, 23, nil, 29, nil, 3, nil, nil, 11,
- 14, nil, 381, nil, 26, nil, 33, 1, nil, 7,
+ 14, nil, 358, nil, 26, nil, 33, 1, nil, 7,
12, nil, 17, nil, 23, nil, 29, nil, 3, nil,
- nil, 11, 14, 26, 383, 33, 1, nil, 7, 12,
+ nil, 11, 14, 26, 365, 33, 1, nil, 7, 12,
nil, 17, nil, 23, nil, 29, nil, 3, nil, nil,
- 11, 14, nil, 357, nil, 26, nil, 33, 1, nil,
+ 11, 14, nil, 364, nil, 26, nil, 33, 1, nil,
7, 12, nil, 17, nil, 23, nil, 29, nil, 3,
- nil, nil, 11, 14, 26, 363, 33, 1, nil, 7,
+ nil, nil, 11, 14, 26, nil, 33, 1, nil, 7,
12, nil, 17, nil, 23, nil, 29, nil, 3, nil,
- nil, 11, 14, nil, 375, nil, 26, nil, 33, 1,
- nil, 7, 12, nil, 17, nil, 23, nil, 29, nil,
- 3, nil, nil, 11, 14, 26, 304, 33, 1, nil,
- 7, 12, nil, 17, nil, 23, nil, 29, nil, 3,
- nil, nil, 11, 14, nil, 349, nil, 26, nil, 33,
- 1, nil, 7, 12, nil, 17, nil, 23, nil, 29,
- nil, 3, nil, nil, 11, 14, 26, nil, 33, 1,
- nil, 7, 12, nil, 17, nil, 23, nil, 29, nil,
- 3, nil, nil, 11, 14, 26, nil, 33, 1, nil,
- 7, 12, nil, 17, nil, 23, nil, 29, nil, 3,
- nil, nil, 11, 14 ]
+ nil, 11, 14, 26, nil, 33, 1, nil, 7, 12,
+ nil, 17, nil, 23, nil, 29, nil, 3, nil, nil,
+ 11, 14, 26, nil, 33, 1, nil, 7, 12, nil,
+ 17, nil, 23, nil, 29, nil, 3, nil, nil, 11,
+ 14 ]
racc_action_check = [
- 180, 180, 152, 86, 156, 106, 106, 272, 174, 7,
- 277, 277, 106, 180, 180, 65, 55, 277, 7, 7,
- 272, 86, 180, 180, 180, 180, 65, 296, 17, 80,
- 296, 65, 158, 95, 202, 202, 174, 174, 202, 218,
- 202, 55, 156, 106, 152, 156, 180, 180, 277, 219,
- 180, 180, 180, 180, 180, 180, 202, 180, 180, 181,
- 181, 368, 368, 239, 180, 156, 17, 202, 165, 17,
- 158, 202, 202, 158, 239, 202, 165, 182, 182, 239,
- 202, 202, 349, 182, 202, 349, 22, 202, 22, 17,
- 143, 243, 181, 158, 368, 202, 181, 181, 368, 368,
- 181, 22, 368, 143, 181, 181, 220, 368, 163, 181,
- 182, 368, 355, 355, 182, 182, 243, 243, 182, 163,
- 181, 62, 368, 182, 163, 22, 178, 182, 281, 281,
- 351, 351, 62, 221, 351, 281, 351, 62, 182, 178,
- 285, 285, 285, 285, 101, 355, 221, 285, 285, 355,
- 355, 224, 351, 355, 285, 341, 341, 300, 355, 341,
- 91, 341, 355, 351, 308, 300, 226, 351, 351, 308,
- 227, 351, 90, 355, 184, 184, 351, 351, 12, 122,
- 351, 171, 12, 351, 122, 171, 171, 229, 341, 12,
- 286, 351, 341, 341, 343, 343, 341, 184, 286, 1,
- 87, 341, 30, 1, 183, 341, 30, 184, 183, 183,
- 1, 184, 184, 30, 30, 184, 341, 196, 196, 184,
- 184, 196, 195, 196, 184, 195, 286, 286, 286, 286,
- 286, 286, 188, 286, 286, 184, 188, 188, 231, 196,
- 286, 120, 232, 197, 197, 120, 233, 197, 103, 197,
- 196, 85, 120, 120, 196, 196, 105, 43, 196, 280,
- 280, 43, 84, 196, 196, 197, 280, 196, 43, 43,
- 196, 81, 215, 23, 23, 78, 197, 23, 196, 250,
- 197, 197, 279, 279, 197, 252, 253, 279, 279, 197,
- 197, 77, 71, 197, 279, 23, 197, 160, 68, 26,
- 26, 160, 160, 26, 197, 26, 23, 268, 67, 234,
- 23, 23, 211, 234, 23, 274, 234, 66, 23, 23,
- 234, 26, 107, 23, 108, 198, 198, 109, 207, 198,
- 114, 198, 26, 115, 23, 119, 26, 26, 64, 121,
- 26, 35, 35, 35, 35, 26, 26, 198, 52, 26,
- 29, 29, 26, 51, 29, 50, 29, 127, 198, 132,
- 26, 36, 198, 198, 307, 307, 198, 133, 307, 136,
- 307, 198, 198, 138, 192, 198, 139, 33, 198, 34,
- 34, 34, 34, 29, 140, 142, 198, 29, 29, 305,
- 305, 29, 315, 305, 144, 305, 29, 307, 16, 327,
- 29, 307, 307, 199, 199, 307, 328, 199, 330, 199,
- 307, 29, 297, 297, 307, 331, 332, 297, 297, 337,
- 153, 175, 305, 154, 297, 307, 305, 305, 9, 288,
- 305, 28, 28, 28, 28, 305, 199, 288, 352, 305,
- 199, 199, 8, 356, 199, 298, 298, 173, 367, 199,
- 305, 172, 298, 199, 369, 200, 200, 3, 2, 200,
- 157, 200, 263, nil, 199, 288, 288, 288, 288, 288,
- 288, nil, 288, 288, nil, nil, nil, 200, 298, 288,
- nil, nil, 298, 298, nil, nil, 298, nil, 200, nil,
- nil, 298, 200, 200, nil, 298, 200, 4, 4, 4,
- 4, 200, 200, 39, 39, 200, 298, 39, 200, 39,
- 293, 293, 293, 293, 293, 293, 200, 293, 293, nil,
- 283, 283, 283, 283, 293, 39, nil, 283, 283, 201,
- 201, nil, nil, 201, 283, 201, 39, nil, nil, nil,
- 39, 39, nil, nil, 39, nil, nil, nil, nil, 39,
- 39, 201, nil, 39, nil, nil, 39, nil, nil, 46,
- 46, nil, 201, 46, 39, 46, 201, 201, nil, nil,
- 201, nil, nil, nil, nil, 201, 201, nil, nil, 201,
- nil, 46, 201, nil, nil, 47, 47, nil, nil, 47,
- 201, 47, 46, nil, nil, nil, 46, 46, nil, nil,
- 46, nil, nil, nil, nil, 46, 46, 47, nil, 46,
- 48, 48, 46, nil, 48, nil, 48, nil, 47, nil,
- 46, nil, 47, 47, 49, 49, 47, nil, 49, nil,
- nil, 47, 47, nil, nil, 47, nil, nil, 47, nil,
- nil, nil, nil, 48, nil, nil, 47, 48, 48, 176,
- 176, 48, nil, 176, nil, 176, 48, 49, nil, nil,
- 48, 49, 49, nil, nil, 49, nil, nil, nil, nil,
- 49, 48, nil, nil, 49, 203, 203, nil, nil, 203,
- nil, 203, 176, nil, nil, 49, 176, 176, nil, nil,
- 176, nil, nil, nil, nil, 176, nil, 203, nil, 176,
- nil, 204, 204, nil, nil, 204, nil, 204, 203, nil,
- 176, nil, 203, 203, nil, nil, 203, nil, nil, nil,
- nil, 203, 203, 204, nil, 203, nil, nil, 203, nil,
- nil, 205, 205, nil, 204, 205, 203, 205, 204, 204,
- nil, nil, 204, nil, nil, nil, nil, 204, 204, nil,
- nil, 204, nil, 205, 204, nil, nil, 100, 100, nil,
- nil, 100, 204, 100, 205, nil, nil, nil, 205, 205,
- nil, nil, 205, nil, nil, nil, nil, 205, 205, 100,
- nil, 205, 63, 63, 205, nil, 63, nil, 63, nil,
- 100, nil, 205, nil, 100, 100, nil, nil, 100, nil,
- nil, nil, nil, 100, 100, nil, nil, 100, 208, 208,
- 100, nil, 208, nil, 208, 63, nil, nil, 100, 63,
- 63, nil, nil, 63, nil, nil, nil, nil, 63, nil,
- 208, nil, 63, nil, 209, 209, nil, nil, 209, nil,
- 209, 208, nil, 63, nil, 208, 208, nil, nil, 208,
- nil, nil, 269, 269, 208, 208, 209, nil, 208, 276,
- 276, 208, nil, 276, nil, 276, nil, 209, nil, 208,
- nil, 209, 209, nil, nil, 209, nil, nil, nil, nil,
- 209, 209, nil, nil, 209, 269, nil, 209, nil, 269,
- 269, nil, 276, 269, nil, 209, 276, 276, 269, nil,
- 276, nil, 269, nil, nil, 276, 256, 256, nil, 276,
- 256, nil, 256, 269, nil, nil, nil, nil, nil, nil,
- 276, nil, nil, nil, nil, 74, 74, nil, 256, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 256,
- nil, nil, nil, 256, 256, nil, nil, 256, 74, nil,
- 254, 254, 256, 256, nil, nil, 256, nil, 74, 256,
- nil, nil, 74, 74, nil, nil, 74, 256, 75, 75,
- 74, 74, 75, 254, 75, 74, nil, nil, nil, nil,
- nil, nil, nil, 254, nil, nil, 74, 254, 254, nil,
- 75, 254, nil, 248, 248, 254, 254, 248, nil, 248,
- 254, 75, nil, 245, 245, 75, 75, nil, nil, 75,
- nil, 254, nil, nil, 75, 75, nil, nil, 75, 244,
- 244, 75, nil, nil, nil, nil, 248, nil, nil, 75,
- 248, 248, nil, nil, 248, nil, 245, nil, nil, 248,
- 245, 245, nil, 248, 245, nil, 225, 225, nil, 245,
- 225, nil, 244, 245, 248, nil, 244, 244, nil, nil,
- 244, nil, 82, 82, 245, 244, 82, nil, 82, 244,
- nil, nil, 210, 210, nil, nil, 210, nil, 210, 225,
- 244, nil, nil, 225, 225, nil, nil, 225, nil, nil,
- nil, nil, 225, nil, 210, 82, 225, nil, nil, 82,
- 82, nil, nil, 82, nil, 210, nil, 225, 82, 210,
- 210, nil, 82, 210, nil, nil, nil, nil, 210, 210,
- 213, 213, 210, 82, 213, 210, 213, 284, 284, 284,
- 284, 284, 284, 210, 284, 284, nil, nil, nil, 102,
- 102, 284, 213, 102, 102, 102, 230, 230, nil, nil,
- 230, nil, 230, 213, nil, nil, nil, 213, 213, nil,
- nil, 213, nil, nil, nil, nil, 213, 213, 214, 214,
- 213, nil, 102, 213, nil, nil, 102, 102, nil, 230,
- 102, 213, nil, 230, 230, 102, nil, 230, nil, 102,
- nil, nil, 230, 228, 228, nil, 230, 228, nil, 228,
- 102, 214, nil, nil, nil, 214, 214, 230, nil, 214,
- nil, 94, 94, nil, 214, 94, nil, 94, 214, nil,
- nil, nil, nil, nil, nil, nil, 228, nil, nil, 214,
- 228, 228, nil, 94, 228, nil, nil, nil, nil, 228,
- nil, 97, 97, 228, 94, 97, nil, 97, 94, 94,
- nil, nil, 94, nil, 228, nil, nil, 94, 94, nil,
- nil, 94, nil, 97, 94, nil, nil, 206, 206, nil,
- nil, 206, 94, 206, 97, nil, nil, nil, 97, 97,
- nil, nil, 97, nil, nil, nil, nil, 97, 97, 206,
- nil, 97, nil, nil, 97, nil, nil, nil, nil, nil,
- 206, nil, 97, nil, 206, 206, 111, nil, 206, nil,
- nil, nil, nil, 206, 206, 111, 111, 206, nil, nil,
- 206, nil, nil, nil, 111, 111, 111, 111, 206, nil,
- 124, 124, nil, nil, nil, nil, nil, nil, nil, 124,
- 124, 124, 124, nil, nil, nil, nil, nil, 111, 111,
- nil, nil, 111, 111, 111, 111, 111, 111, nil, 111,
- 111, nil, nil, 124, 124, nil, 111, 124, 124, 124,
- 124, 124, 124, nil, 124, 124, 130, 130, nil, nil,
- nil, 124, nil, nil, nil, 130, 130, 130, 130, nil,
- nil, 131, 131, nil, nil, nil, nil, nil, nil, nil,
- 131, 131, 131, 131, nil, nil, nil, nil, nil, 130,
- 130, nil, nil, 130, 130, 130, 130, 130, 130, nil,
- 130, 130, nil, nil, 131, 131, nil, 130, 131, 131,
- 131, 131, 131, 131, nil, 131, 131, 287, 287, nil,
- nil, nil, 131, nil, nil, nil, 287, 287, 287, 287,
- nil, nil, 186, 186, nil, nil, nil, nil, nil, nil,
- 186, 186, 186, 186, 186, nil, nil, nil, nil, nil,
- nil, 287, nil, nil, 287, 287, 287, 287, 287, 287,
- nil, 287, 287, nil, nil, 186, 186, nil, 287, 186,
- 186, 186, 186, 186, 186, nil, 186, 186, 291, 291,
- nil, nil, nil, 186, nil, nil, nil, 291, 291, 291,
- 291, nil, nil, 19, 292, 19, 19, nil, 19, 19,
- nil, 19, 292, 19, nil, 19, nil, 19, nil, nil,
- 19, 19, nil, 289, nil, 291, 291, 291, 291, 291,
- 291, 289, 291, 291, nil, nil, nil, nil, nil, 291,
- 292, 292, 292, 292, 292, 292, nil, 292, 292, nil,
- nil, 237, nil, nil, 292, nil, nil, nil, nil, 289,
- 289, 289, 289, 289, 289, nil, 289, 289, nil, nil,
- 372, nil, 237, 289, 237, 237, nil, 237, 237, nil,
+ 180, 180, 152, 22, 243, 22, 55, 17, 86, 301,
+ 81, 165, 96, 180, 180, 178, 12, 301, 22, 165,
+ 12, 95, 180, 180, 180, 180, 86, 12, 178, 243,
+ 243, 55, 156, 174, 208, 208, 106, 106, 208, 215,
+ 208, 91, 22, 106, 152, 17, 180, 180, 17, 218,
+ 180, 180, 180, 180, 180, 180, 208, 180, 180, 176,
+ 176, 174, 174, 176, 180, 176, 62, 208, 17, 219,
+ 156, 208, 208, 156, 106, 208, 158, 62, 369, 369,
+ 208, 208, 62, 239, 208, 205, 205, 208, 220, 205,
+ 65, 205, 176, 156, 239, 208, 176, 176, 211, 239,
+ 176, 65, 224, 181, 181, 176, 65, 205, 273, 176,
+ 350, 369, 143, 350, 158, 369, 369, 158, 205, 369,
+ 176, 273, 205, 205, 369, 143, 205, 90, 369, 356,
+ 356, 205, 205, 344, 344, 205, 181, 158, 205, 369,
+ 181, 181, 221, 226, 181, 227, 205, 163, 181, 181,
+ 352, 352, 87, 181, 352, 221, 352, 120, 163, 229,
+ 309, 120, 356, 163, 181, 309, 356, 356, 120, 120,
+ 356, 85, 352, 231, 43, 356, 342, 342, 43, 356,
+ 342, 232, 342, 352, 122, 43, 43, 352, 352, 122,
+ 356, 352, 182, 182, 278, 278, 352, 352, 182, 195,
+ 352, 278, 195, 352, 297, 281, 281, 297, 233, 342,
+ 103, 352, 281, 342, 342, 280, 280, 342, 184, 184,
+ 280, 280, 342, 84, 30, 182, 342, 280, 30, 182,
+ 182, 105, 278, 182, 101, 30, 30, 342, 182, 204,
+ 204, 184, 182, 204, 80, 204, 1, 282, 282, 78,
+ 1, 184, 77, 182, 282, 184, 184, 1, 250, 184,
+ 252, 204, 253, 184, 184, 23, 23, 234, 184, 23,
+ 71, 234, 204, 7, 234, 70, 204, 204, 234, 184,
+ 204, 264, 7, 7, 269, 204, 204, 23, 68, 204,
+ 26, 26, 204, 107, 26, 275, 26, 67, 23, 66,
+ 204, 207, 23, 23, 160, 108, 23, 109, 160, 160,
+ 23, 23, 26, 298, 298, 23, 196, 196, 298, 298,
+ 196, 114, 196, 26, 115, 298, 23, 26, 26, 188,
+ 119, 26, 121, 188, 188, 64, 26, 26, 196, 127,
+ 26, 29, 29, 26, 52, 29, 51, 29, 50, 196,
+ 132, 26, 133, 196, 196, 171, 192, 196, 135, 171,
+ 171, 36, 196, 196, 136, 138, 196, 213, 213, 196,
+ 33, 213, 139, 213, 29, 140, 183, 196, 29, 29,
+ 183, 183, 29, 28, 28, 28, 28, 29, 316, 213,
+ 142, 29, 306, 306, 16, 328, 306, 329, 306, 331,
+ 213, 332, 29, 333, 213, 213, 338, 175, 213, 35,
+ 35, 35, 35, 213, 213, 173, 172, 213, 197, 197,
+ 213, 9, 197, 353, 197, 306, 8, 357, 213, 306,
+ 306, 144, 368, 306, 157, 370, 299, 299, 306, 3,
+ 197, 2, 306, 299, 34, 34, 34, 34, 153, 154,
+ nil, 197, nil, 306, nil, 197, 197, nil, nil, 197,
+ 4, 4, 4, 4, 197, 197, 39, 39, 197, 299,
+ 39, 197, 39, 299, 299, nil, nil, 299, nil, 197,
+ nil, nil, 299, nil, nil, nil, 299, nil, 39, nil,
+ nil, nil, 206, 206, nil, nil, 206, 299, 206, 39,
+ nil, nil, nil, 39, 39, nil, nil, 39, nil, nil,
+ nil, nil, 39, 39, 206, nil, 39, nil, nil, 39,
+ nil, nil, 46, 46, nil, 206, 46, 39, 46, 206,
+ 206, nil, nil, 206, nil, nil, nil, nil, 206, 206,
+ nil, nil, 206, nil, 46, 206, nil, nil, 47, 47,
+ nil, nil, 47, 206, 47, 46, nil, nil, nil, 46,
+ 46, nil, nil, 46, nil, nil, 270, 270, 46, 46,
+ 47, nil, 46, 48, 48, 46, nil, 48, nil, 48,
+ nil, 47, nil, 46, nil, 47, 47, 49, 49, 47,
+ nil, 49, nil, nil, 47, 47, nil, nil, 47, 270,
+ nil, 47, nil, 270, 270, nil, 48, 270, nil, 47,
+ 48, 48, 270, nil, 48, nil, 270, nil, nil, 48,
+ 49, nil, nil, 48, 49, 49, nil, 270, 49, nil,
+ nil, nil, nil, 49, 48, 203, 203, 49, nil, 203,
+ nil, 203, 294, 294, 294, 294, 294, 294, 49, 294,
+ 294, nil, 284, 284, 284, 284, 294, 203, nil, 284,
+ 284, 209, 209, nil, nil, 209, 284, 209, 203, nil,
+ nil, nil, 203, 203, nil, nil, 203, nil, nil, nil,
+ nil, 203, 203, 209, nil, 203, nil, nil, 203, nil,
+ nil, 210, 210, nil, 209, 210, 203, 210, 209, 209,
+ nil, nil, 209, nil, nil, nil, nil, 209, 209, nil,
+ nil, 209, nil, 210, 209, nil, nil, nil, nil, nil,
+ nil, nil, 209, nil, 210, nil, nil, nil, 210, 210,
+ 102, 102, 210, nil, 102, 102, 102, 210, 210, nil,
+ nil, 210, nil, nil, 210, nil, nil, nil, nil, 63,
+ 63, nil, 210, 63, nil, 63, 202, 202, nil, nil,
+ 202, nil, 202, 102, nil, nil, nil, 102, 102, nil,
+ nil, 102, nil, nil, nil, nil, 102, nil, 202, nil,
+ 102, nil, 63, nil, nil, nil, 63, 63, nil, 202,
+ 63, 102, nil, 202, 202, 63, nil, 202, nil, 63,
+ nil, nil, 202, 202, nil, nil, 202, 100, 100, 202,
+ 63, 100, nil, 100, nil, nil, nil, 202, nil, nil,
+ nil, nil, nil, nil, nil, nil, 277, 277, nil, 100,
+ 277, nil, 277, 198, 198, nil, nil, 198, nil, 198,
+ 100, nil, nil, nil, 100, 100, nil, nil, 100, nil,
+ nil, nil, nil, 100, 100, 198, nil, 100, nil, 277,
+ 100, nil, nil, 277, 277, nil, 198, 277, 100, nil,
+ 198, 198, 277, nil, 198, nil, 277, nil, nil, 198,
+ 198, nil, nil, 198, 256, 256, 198, 277, 256, nil,
+ 256, nil, nil, nil, 198, nil, nil, nil, nil, nil,
+ nil, nil, nil, 254, 254, nil, 256, nil, nil, 74,
+ 74, nil, nil, nil, nil, nil, nil, 256, nil, nil,
+ nil, 256, 256, nil, nil, 256, 254, nil, nil, nil,
+ 256, 256, 74, nil, 256, nil, 254, 256, nil, nil,
+ 254, 254, 74, nil, 254, 256, 74, 74, 254, 254,
+ 74, nil, nil, 254, 74, 74, 75, 75, nil, 74,
+ 75, nil, 75, nil, 254, nil, 286, 286, 286, 286,
+ 74, nil, nil, 286, 286, 248, 248, nil, 75, 248,
+ 286, 248, 245, 245, nil, nil, nil, nil, nil, 75,
+ nil, nil, nil, 75, 75, nil, nil, 75, nil, nil,
+ 244, 244, 75, 75, nil, nil, 75, nil, 248, 75,
+ nil, nil, 248, 248, nil, 245, 248, 75, nil, 245,
+ 245, 248, nil, 245, nil, 248, nil, nil, 245, nil,
+ nil, nil, 245, 244, nil, nil, 248, 244, 244, nil,
+ nil, 244, nil, 245, nil, nil, 244, 97, 97, nil,
+ 244, 97, nil, 97, nil, nil, nil, nil, nil, nil,
+ nil, 244, nil, nil, nil, nil, 82, 82, nil, 97,
+ 82, nil, 82, 199, 199, nil, nil, 199, nil, 199,
+ 97, nil, nil, nil, 97, 97, nil, nil, 97, nil,
+ nil, nil, nil, 97, 97, 214, 214, 97, nil, 82,
+ 97, nil, nil, 82, 82, nil, 199, 82, 97, nil,
+ 199, 199, 82, nil, 199, nil, 82, nil, nil, 199,
+ 230, 230, nil, 199, 230, nil, 230, 82, 214, nil,
+ nil, nil, 214, 214, 199, nil, 214, nil, 200, 200,
+ nil, 214, 200, nil, 200, 214, nil, nil, nil, nil,
+ nil, nil, nil, 230, nil, nil, 214, 230, 230, nil,
+ 200, 230, nil, 228, 228, nil, 230, 228, nil, 228,
+ 230, 200, nil, 225, 225, 200, 200, 225, nil, 200,
+ nil, 230, nil, nil, 200, 200, nil, nil, 200, nil,
+ nil, 200, nil, nil, nil, nil, 228, nil, nil, 200,
+ 228, 228, nil, nil, 228, nil, 225, nil, nil, 228,
+ 225, 225, nil, 228, 225, nil, 201, 201, nil, 225,
+ 201, nil, 201, 225, 228, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, 225, 308, 308, nil, 201, 308,
+ nil, 308, 94, 94, nil, nil, 94, nil, 94, 201,
+ nil, nil, nil, 201, 201, nil, nil, 201, nil, nil,
+ nil, nil, 201, 201, 94, nil, 201, nil, 308, 201,
+ nil, nil, 308, 308, nil, 94, 308, 201, nil, 94,
+ 94, 308, nil, 94, nil, 308, nil, nil, 94, 94,
+ 111, nil, 94, nil, nil, 94, 308, nil, nil, 111,
+ 111, nil, nil, 94, nil, nil, nil, nil, 111, 111,
+ 111, 111, nil, nil, 186, 186, nil, nil, nil, nil,
+ nil, nil, 186, 186, 186, 186, 186, nil, nil, nil,
+ nil, nil, 111, 111, nil, nil, 111, 111, 111, 111,
+ 111, 111, nil, 111, 111, nil, nil, 186, 186, nil,
+ 111, 186, 186, 186, 186, 186, 186, nil, 186, 186,
+ 288, 288, nil, nil, nil, 186, nil, nil, nil, 288,
+ 288, 288, 288, nil, nil, 131, 131, nil, nil, nil,
+ nil, nil, nil, nil, 131, 131, 131, 131, nil, nil,
+ nil, nil, nil, nil, 288, nil, nil, 288, 288, 288,
+ 288, 288, 288, nil, 288, 288, nil, nil, 131, 131,
+ nil, 288, 131, 131, 131, 131, 131, 131, nil, 131,
+ 131, 130, 130, nil, nil, nil, 131, nil, nil, nil,
+ 130, 130, 130, 130, nil, nil, 292, 292, nil, nil,
+ nil, nil, nil, nil, nil, 292, 292, 292, 292, nil,
+ nil, nil, nil, nil, 130, 130, nil, nil, 130, 130,
+ 130, 130, 130, 130, nil, 130, 130, nil, nil, nil,
+ nil, nil, 130, 292, 292, 292, 292, 292, 292, nil,
+ 292, 292, 124, 124, nil, nil, nil, 292, nil, nil,
+ nil, 124, 124, 124, 124, nil, nil, nil, 293, nil,
+ 285, 285, 285, 285, 285, 285, 293, 285, 285, nil,
+ nil, nil, nil, nil, 285, 124, 124, 289, nil, 124,
+ 124, 124, 124, 124, 124, 289, 124, 124, nil, nil,
+ nil, nil, 287, 124, 293, 293, 293, 293, 293, 293,
+ 287, 293, 293, nil, nil, nil, nil, nil, 293, nil,
+ nil, 290, nil, 289, 289, 289, 289, 289, 289, 290,
+ 289, 289, nil, nil, nil, nil, nil, 289, 287, 287,
+ 287, 287, 287, 287, nil, 287, 287, nil, nil, 381,
+ nil, nil, 287, nil, nil, nil, nil, 290, 290, 290,
+ 290, 290, 290, nil, 290, 290, nil, nil, 212, nil,
+ 381, 290, 381, 381, nil, 381, 381, nil, 381, nil,
+ 381, nil, 381, nil, 381, nil, nil, 381, 381, 212,
+ 217, 212, 212, nil, 212, 212, nil, 212, nil, 212,
+ nil, 212, nil, 212, nil, nil, 212, 212, nil, 379,
+ nil, 217, nil, 217, 217, nil, 217, 217, nil, 217,
+ nil, 217, nil, 217, nil, 217, nil, nil, 217, 217,
+ 379, 237, 379, 379, nil, 379, 379, nil, 379, nil,
+ 379, nil, 379, nil, 379, nil, nil, 379, 379, nil,
+ 375, nil, 237, nil, 237, 237, nil, 237, 237, nil,
237, nil, 237, nil, 237, nil, 237, nil, nil, 237,
- 237, 372, 378, 372, 372, nil, 372, 372, nil, 372,
- nil, 372, nil, 372, nil, 372, nil, nil, 372, 372,
- nil, 212, nil, 378, nil, 378, 378, nil, 378, 378,
- nil, 378, nil, 378, nil, 378, nil, 378, nil, nil,
- 378, 378, 212, 323, 212, 212, nil, 212, 212, nil,
- 212, nil, 212, nil, 212, nil, 212, nil, nil, 212,
- 212, nil, 374, nil, 323, nil, 323, 323, nil, 323,
- 323, nil, 323, nil, 323, nil, 323, nil, 323, nil,
- nil, 323, 323, 374, 380, 374, 374, nil, 374, 374,
- nil, 374, nil, 374, nil, 374, nil, 374, nil, nil,
- 374, 374, nil, 303, nil, 380, nil, 380, 380, nil,
- 380, 380, nil, 380, nil, 380, nil, 380, nil, 380,
- nil, nil, 380, 380, 303, 319, 303, 303, nil, 303,
- 303, nil, 303, nil, 303, nil, 303, nil, 303, nil,
- nil, 303, 303, nil, 362, nil, 319, nil, 319, 319,
- nil, 319, 319, nil, 319, nil, 319, nil, 319, nil,
- 319, nil, nil, 319, 319, 362, 217, 362, 362, nil,
- 362, 362, nil, 362, nil, 362, nil, 362, nil, 362,
- nil, nil, 362, 362, nil, 295, nil, 217, nil, 217,
- 217, nil, 217, 217, nil, 217, nil, 217, nil, 217,
- nil, 217, nil, nil, 217, 217, 295, nil, 295, 295,
- nil, 295, 295, nil, 295, nil, 295, nil, 295, nil,
- 295, nil, nil, 295, 295, 0, nil, 0, 0, nil,
- 0, 0, nil, 0, nil, 0, nil, 0, nil, 0,
- nil, nil, 0, 0 ]
+ 237, 375, 373, 375, 375, nil, 375, 375, nil, 375,
+ nil, 375, nil, 375, nil, 375, nil, nil, 375, 375,
+ nil, 363, nil, 373, nil, 373, 373, nil, 373, 373,
+ nil, 373, nil, 373, nil, 373, nil, 373, nil, nil,
+ 373, 373, 363, 296, 363, 363, nil, 363, 363, nil,
+ 363, nil, 363, nil, 363, nil, 363, nil, nil, 363,
+ 363, nil, 304, nil, 296, nil, 296, 296, nil, 296,
+ 296, nil, 296, nil, 296, nil, 296, nil, 296, nil,
+ nil, 296, 296, 304, 324, 304, 304, nil, 304, 304,
+ nil, 304, nil, 304, nil, 304, nil, 304, nil, nil,
+ 304, 304, nil, 320, nil, 324, nil, 324, 324, nil,
+ 324, 324, nil, 324, nil, 324, nil, 324, nil, 324,
+ nil, nil, 324, 324, 320, nil, 320, 320, nil, 320,
+ 320, nil, 320, nil, 320, nil, 320, nil, 320, nil,
+ nil, 320, 320, 19, nil, 19, 19, nil, 19, 19,
+ nil, 19, nil, 19, nil, 19, nil, 19, nil, nil,
+ 19, 19, 0, nil, 0, 0, nil, 0, 0, nil,
+ 0, nil, 0, nil, 0, nil, 0, nil, nil, 0,
+ 0 ]
racc_action_pointer = [
- 1795, 163, 443, 413, 433, nil, nil, 3, 434, 420,
- nil, nil, 142, nil, nil, nil, 398, 26, nil, 1483,
- nil, nil, 80, 271, nil, nil, 297, nil, 367, 348,
- 166, nil, nil, 375, 315, 277, 337, nil, nil, 501,
- nil, nil, nil, 221, nil, nil, 557, 583, 608, 622,
- 315, 329, 348, nil, nil, 4, nil, nil, nil, nil,
- nil, nil, 97, 780, 298, -9, 309, 302, 275, nil,
- nil, 286, nil, nil, 923, 966, nil, 279, 269, nil,
- 6, 248, 1060, nil, 239, 245, -3, 177, nil, nil,
- 149, 137, nil, nil, 1209, 10, nil, 1239, nil, nil,
- 755, 121, 1137, 225, nil, 233, 3, 299, 301, 304,
- nil, 1298, nil, nil, 322, 325, nil, nil, nil, 323,
- 205, 331, 144, nil, 1313, nil, nil, 351, nil, nil,
- 1359, 1374, 352, 344, nil, nil, 328, nil, 350, 364,
- 361, nil, 362, 79, 374, nil, nil, nil, nil, nil,
- nil, nil, -9, 408, 386, nil, 2, 452, 30, nil,
- 251, nil, nil, 84, nil, 50, nil, nil, nil, nil,
- nil, 174, 439, 436, -14, 381, 647, nil, 114, nil,
- -4, 57, 75, 197, 172, nil, 1435, nil, 225, nil,
- nil, nil, 363, nil, nil, 213, 215, 241, 323, 401,
- 453, 527, 32, 673, 699, 729, 1265, 265, 806, 832,
- 1070, 249, 1612, 1118, 1166, 270, nil, 1757, 24, 24,
- 91, 121, nil, nil, 142, 1044, 126, 161, 1191, 147,
- 1144, 198, 233, 238, 273, nil, nil, 1552, nil, 39,
- nil, nil, nil, 66, 1017, 1001, nil, nil, 991, nil,
- 270, nil, 273, 279, 948, nil, 904, nil, nil, nil,
- nil, nil, nil, 451, nil, nil, nil, nil, 283, 850,
- nil, nil, -5, nil, 308, nil, 857, 8, nil, 226,
- 198, 67, nil, 466, 1073, 86, 172, 1420, 411, 1515,
- nil, 1481, 1496, 456, nil, 1776, -4, 356, 443, nil,
- 145, nil, nil, 1694, nil, 387, nil, 362, 129, nil,
- nil, nil, nil, nil, nil, 380, nil, nil, nil, 1716,
- nil, nil, nil, 1634, nil, nil, nil, 376, 383, nil,
- 385, 392, 393, nil, nil, nil, nil, 410, nil, nil,
- nil, 153, nil, 183, nil, nil, nil, nil, nil, 51,
- nil, 128, 430, nil, nil, 110, 435, nil, nil, nil,
- nil, nil, 1735, nil, nil, nil, nil, 439, 59, 445,
- nil, nil, 1571, nil, 1653, nil, nil, nil, 1593, nil,
- 1675, nil, nil, nil ]
+ 1832, 210, 426, 395, 396, nil, nil, 267, 418, 413,
+ nil, nil, -20, nil, nil, nil, 394, 5, nil, 1813,
+ nil, nil, -3, 263, nil, nil, 288, nil, 319, 339,
+ 188, nil, nil, 368, 380, 345, 337, nil, nil, 464,
+ nil, nil, nil, 138, nil, nil, 520, 546, 571, 585,
+ 308, 322, 344, nil, nil, -6, nil, nil, nil, nil,
+ nil, nil, 42, 747, 295, 66, 291, 274, 265, nil,
+ 269, 264, nil, nil, 907, 954, nil, 240, 243, nil,
+ 221, -13, 1064, nil, 200, 165, 2, 129, nil, nil,
+ 104, 18, nil, nil, 1240, -2, 6, 1045, nil, nil,
+ 805, 211, 728, 187, nil, 208, 34, 270, 282, 284,
+ nil, 1282, nil, nil, 313, 316, nil, nil, nil, 318,
+ 121, 324, 149, nil, 1465, nil, nil, 333, nil, nil,
+ 1404, 1358, 343, 329, nil, 352, 323, nil, 342, 360,
+ 352, nil, 367, 101, 411, nil, nil, nil, nil, nil,
+ nil, nil, -9, 436, 412, nil, 30, 426, 74, nil,
+ 258, nil, nil, 123, nil, -7, nil, nil, nil, nil,
+ nil, 348, 404, 404, 11, 367, 57, nil, 3, nil,
+ -4, 101, 190, 369, 216, nil, 1297, nil, 322, nil,
+ nil, nil, 345, nil, nil, 190, 314, 416, 831, 1071,
+ 1136, 1214, 754, 633, 237, 83, 490, 238, 32, 659,
+ 689, 35, 1589, 365, 1093, 37, nil, 1611, 34, 44,
+ 73, 130, nil, nil, 93, 1171, 103, 136, 1161, 119,
+ 1118, 133, 172, 200, 231, nil, nil, 1652, nil, 59,
+ nil, nil, nil, -21, 998, 980, nil, nil, 973, nil,
+ 249, nil, 248, 255, 901, nil, 882, nil, nil, nil,
+ nil, nil, nil, nil, 270, nil, nil, nil, nil, 260,
+ 564, nil, nil, 96, nil, 288, nil, 824, 192, nil,
+ 159, 144, 186, nil, 598, 1446, 912, 1514, 1343, 1499,
+ 1533, nil, 1419, 1480, 588, nil, 1734, 173, 257, 434,
+ nil, -3, nil, nil, 1753, nil, 390, nil, 1233, 125,
+ nil, nil, nil, nil, nil, nil, 376, nil, nil, nil,
+ 1794, nil, nil, nil, 1775, nil, nil, nil, 372, 374,
+ nil, 376, 378, 380, nil, nil, nil, nil, 397, nil,
+ nil, nil, 174, nil, 122, nil, nil, nil, nil, nil,
+ 79, nil, 148, 415, nil, nil, 127, 419, nil, nil,
+ nil, nil, nil, 1712, nil, nil, nil, nil, 423, 76,
+ 426, nil, nil, 1693, nil, 1671, nil, nil, nil, 1630,
+ nil, 1570, nil, nil, nil ]
racc_action_default = [
- -196, -233, -233, -50, -233, -8, -9, -233, -233, -22,
- -10, -187, -188, -11, -185, -12, -233, -233, -13, -1,
- -14, -2, -233, -186, -15, -3, -233, -16, -5, -233,
- -233, -17, -6, -233, -18, -7, -196, -188, -186, -233,
- -51, -26, -27, -233, -24, -25, -233, -233, -233, -85,
- -92, -196, -233, -195, -193, -196, -189, -191, -192, -221,
- -194, -4, -196, -233, -85, -196, -53, -231, -42, -174,
- -43, -213, -117, -33, -233, -233, -44, -31, -74, -32,
- -233, -36, -233, -122, -37, -233, -73, -38, -172, -72,
- -39, -40, -173, -41, -233, -103, -111, -233, -132, -112,
- -233, -104, -233, -108, -110, -105, -233, -114, -106, -113,
- -109, -233, -125, -107, -233, -233, -49, -175, -176, -178,
- -233, -233, -197, -198, -83, -19, -22, -186, -21, -23,
- -82, -84, -233, -75, -86, -81, -70, -74, -76, -219,
- -79, -68, -77, -73, -233, -171, -170, -80, -78, -90,
- -91, -93, -233, -219, -196, 384, -233, -233, -233, -207,
- -233, -57, -213, -196, -59, -233, -66, -65, -56, -73,
- -95, -233, -219, -233, -233, -92, -233, -30, -233, -118,
- -233, -233, -233, -233, -233, -142, -233, -149, -233, -216,
- -229, -225, -233, -228, -224, -233, -233, -233, -233, -233,
- -233, -233, -233, -233, -233, -233, -233, -233, -233, -233,
- -233, -233, -233, -233, -233, -233, -20, -233, -206, -233,
- -204, -233, -201, -230, -233, -71, -220, -233, -233, -85,
- -233, -220, -233, -233, -233, -209, -190, -233, -208, -233,
- -54, -62, -61, -233, -233, -233, -217, -218, -233, -124,
- -233, -55, -219, -233, -233, -28, -233, -120, -119, -35,
- -34, -168, -166, -233, -169, -160, -167, -161, -73, -233,
- -123, -116, -233, -152, -218, -214, -233, -233, -222, -137,
- -139, -138, -133, -140, -144, -141, -146, -151, -148, -145,
- -134, -150, -147, -143, -135, -233, -128, -136, -233, -154,
- -233, -158, -177, -233, -180, -233, -199, -233, -233, -200,
- -45, -69, -87, -46, -88, -219, -89, -94, -48, -233,
- -211, -210, -212, -233, -184, -58, -60, -97, -98, -63,
- -102, -99, -100, -101, -64, -96, -47, -233, -232, -29,
- -121, -233, -163, -219, -115, -215, -227, -226, -223, -128,
- -127, -233, -233, -155, -153, -233, -233, -179, -205, -203,
- -202, -67, -233, -182, -183, -52, -165, -218, -233, -233,
- -126, -129, -233, -159, -233, -181, -164, -162, -233, -131,
- -233, -157, -130, -156 ]
+ -197, -234, -234, -50, -234, -8, -9, -234, -234, -22,
+ -10, -188, -189, -11, -186, -12, -234, -234, -13, -1,
+ -14, -2, -234, -187, -15, -3, -234, -16, -5, -234,
+ -234, -17, -6, -234, -18, -7, -197, -189, -187, -234,
+ -51, -26, -27, -234, -24, -25, -234, -234, -234, -85,
+ -92, -197, -234, -196, -194, -197, -190, -192, -193, -222,
+ -195, -4, -197, -234, -85, -197, -53, -232, -42, -175,
+ -43, -214, -117, -33, -234, -234, -44, -31, -74, -32,
+ -234, -36, -234, -122, -37, -234, -73, -38, -172, -72,
+ -39, -40, -174, -41, -234, -103, -111, -234, -132, -112,
+ -234, -104, -234, -108, -110, -105, -234, -114, -106, -113,
+ -109, -234, -125, -107, -234, -234, -49, -176, -177, -179,
+ -234, -234, -198, -199, -83, -19, -22, -187, -21, -23,
+ -82, -84, -234, -75, -86, -81, -70, -74, -76, -220,
+ -79, -68, -77, -73, -234, -171, -170, -80, -78, -90,
+ -91, -93, -234, -220, -197, 385, -234, -234, -234, -208,
+ -234, -57, -214, -197, -59, -234, -66, -65, -56, -73,
+ -95, -234, -220, -234, -234, -92, -234, -30, -234, -118,
+ -234, -234, -234, -234, -234, -142, -234, -149, -234, -217,
+ -230, -226, -234, -229, -225, -234, -234, -234, -234, -234,
+ -234, -234, -234, -234, -234, -234, -234, -234, -234, -234,
+ -234, -234, -234, -234, -234, -234, -20, -234, -207, -234,
+ -205, -234, -202, -231, -234, -71, -221, -234, -234, -85,
+ -234, -221, -234, -234, -234, -210, -191, -234, -209, -234,
+ -54, -62, -61, -234, -234, -234, -218, -219, -234, -124,
+ -234, -55, -220, -234, -234, -28, -234, -120, -119, -35,
+ -34, -173, -168, -166, -234, -169, -160, -167, -161, -73,
+ -234, -123, -116, -234, -152, -219, -215, -234, -234, -223,
+ -137, -139, -138, -133, -140, -144, -141, -146, -151, -148,
+ -145, -134, -150, -147, -143, -135, -234, -128, -136, -234,
+ -154, -234, -158, -178, -234, -181, -234, -200, -234, -234,
+ -201, -45, -69, -87, -46, -88, -220, -89, -94, -48,
+ -234, -212, -211, -213, -234, -185, -58, -60, -97, -98,
+ -63, -102, -99, -100, -101, -64, -96, -47, -234, -233,
+ -29, -121, -234, -163, -220, -115, -216, -228, -227, -224,
+ -128, -127, -234, -234, -155, -153, -234, -234, -180, -206,
+ -204, -203, -67, -234, -183, -184, -52, -165, -219, -234,
+ -234, -126, -129, -234, -159, -234, -182, -164, -162, -234,
+ -131, -234, -157, -130, -156 ]
racc_goto_table = [
- 22, 9, 68, 112, 53, 118, 61, 36, 91, 222,
- 19, 267, 70, 93, 2, 227, 139, 191, 51, 22,
- 9, 179, 77, 56, 73, 149, 21, 141, 133, 232,
- 115, 172, 153, 2, 146, 263, 125, 116, 135, 148,
- 147, 299, 129, 22, 126, 260, 160, 350, 250, 174,
- 128, 171, 43, 68, 121, 329, 334, 298, 368, 91,
- 258, 265, 123, 70, 93, 317, 343, 301, 136, 154,
- 183, 119, 224, 178, 233, 73, 55, 123, 157, 66,
- 238, 159, 120, 219, 221, 190, 325, 321, 195, 16,
- 188, nil, nil, nil, nil, nil, nil, nil, 342, nil,
- 370, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, 216, nil, nil, nil, nil, 260, 129,
- 22, 126, 263, nil, nil, 353, nil, 128, 337, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 81,
- nil, nil, nil, 53, nil, 53, nil, 243, nil, nil,
- 149, 301, nil, nil, nil, nil, nil, 252, nil, nil,
- 68, 261, 236, 68, nil, 138, 91, 146, nil, 91,
- 70, 93, nil, 70, 93, nil, nil, nil, 166, nil,
- 235, 166, 259, 272, nil, 73, nil, 302, 347, nil,
- 81, 361, nil, 261, 290, 360, 315, 376, 294, 146,
- nil, 312, 340, 311, 133, nil, 149, nil, 373, nil,
- 146, nil, 22, 9, 135, 148, 147, 22, 9, 369,
- nil, 263, 295, 327, 327, nil, 2, 303, nil, 146,
- 146, 2, nil, 68, 333, 333, nil, 22, 9, 91,
- 320, 88, nil, 70, 93, nil, nil, 323, 261, nil,
- nil, 2, nil, nil, 146, 259, 190, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, 88, nil, nil,
- nil, nil, nil, nil, nil, 87, nil, 261, nil, 166,
- nil, nil, 61, 146, nil, nil, nil, nil, nil, nil,
- 61, nil, 88, nil, nil, 22, 9, 81, 262, nil,
- 81, 142, nil, 22, 9, nil, nil, nil, nil, 2,
- 61, nil, nil, nil, nil, nil, nil, 2, nil, 22,
- 9, nil, nil, 22, 9, nil, 87, nil, 371, 362,
- 262, nil, nil, 2, 261, nil, nil, 2, nil, nil,
- 146, 138, nil, nil, nil, nil, nil, 261, nil, 61,
- nil, nil, nil, 146, nil, 166, nil, nil, nil, nil,
- 328, 328, 22, 9, 114, 61, nil, 61, nil, 84,
- 81, nil, 22, 9, 22, 9, 2, 90, 22, 9,
- 22, 9, 378, 132, 380, 262, 2, nil, 2, nil,
- nil, nil, 2, nil, 2, 140, nil, nil, 170, 88,
- 88, nil, 88, 145, nil, nil, nil, nil, 167, nil,
- nil, 167, nil, nil, 262, nil, nil, 170, nil, nil,
- 84, nil, nil, nil, nil, nil, nil, nil, 90, nil,
- nil, nil, 88, 87, 266, nil, 87, 170, nil, nil,
- nil, nil, nil, 88, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, 88, 88, nil, nil, 266, nil, nil, nil,
- nil, 262, 88, nil, nil, nil, nil, 142, nil, nil,
- nil, nil, nil, nil, 262, nil, nil, 88, nil, nil,
- nil, nil, nil, nil, nil, nil, 331, 331, nil, nil,
- nil, nil, nil, nil, nil, nil, 87, nil, nil, 167,
- nil, 253, nil, nil, nil, nil, 88, nil, nil, nil,
- nil, 266, nil, nil, nil, nil, nil, 84, 264, nil,
- 84, nil, nil, nil, 282, 90, 145, nil, 90, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 266, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 264, nil, nil, 314, nil, 316, nil, 124, 145, nil,
- nil, 140, nil, 88, 130, 131, nil, nil, nil, 145,
- nil, nil, nil, 335, nil, 167, 88, nil, nil, nil,
- 330, 330, nil, nil, nil, nil, nil, nil, 332, 332,
- 84, nil, nil, 180, nil, nil, nil, 266, 90, nil,
- nil, 346, nil, nil, nil, 264, nil, nil, nil, nil,
- 266, nil, 185, 145, nil, 186, nil, nil, 187, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 358, nil, 359, nil, 264, nil, nil, nil, nil, nil,
- nil, nil, 145, nil, nil, nil, nil, nil, nil, nil,
+ 22, 9, 68, 112, 222, 264, 61, 36, 53, 179,
+ 268, 141, 70, 19, 2, 77, 191, 118, 51, 22,
+ 9, 139, 116, 21, 73, 91, 56, 147, 133, 149,
+ 115, 227, 153, 2, 300, 128, 172, 302, 135, 160,
+ 125, 129, 174, 22, 126, 232, 351, 43, 171, 299,
+ 260, 146, 369, 68, 121, 330, 335, 258, 266, 123,
+ 318, 344, 136, 70, 250, 119, 178, 183, 224, 154,
+ 233, 55, 157, 66, 123, 73, 91, 120, 159, 238,
+ 219, 221, 326, 322, 195, 190, 16, 188, nil, nil,
+ nil, nil, nil, 264, nil, nil, nil, nil, 343, 371,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, 366, nil, nil, nil,
+ nil, nil, 128, nil, nil, 88, nil, 216, 129, 354,
+ 22, 126, 302, 260, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ 243, 88, nil, nil, 338, nil, nil, 53, nil, 53,
+ nil, nil, nil, nil, 149, nil, nil, 252, nil, nil,
+ 68, 262, nil, 68, nil, 236, 88, nil, nil, nil,
+ 70, nil, nil, 70, nil, nil, 273, 235, nil, 374,
+ nil, nil, 259, 91, 146, 73, 91, 312, 348, nil,
+ 341, 361, 264, 262, 87, nil, 261, 377, 291, 303,
+ nil, 316, 295, 147, 133, 313, nil, nil, 362, nil,
+ 149, nil, 22, 9, 135, nil, 146, 22, 9, nil,
+ 142, nil, nil, 328, 328, 296, 2, 146, 261, nil,
+ 304, 2, nil, 68, nil, nil, 370, 22, 9, nil,
+ 321, nil, nil, 70, nil, 87, 146, 146, nil, 262,
+ 324, 2, nil, nil, nil, 259, 91, 190, 261, 261,
+ nil, 81, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, 146, 88, 88, nil, 88, nil, 262, nil,
+ nil, nil, nil, 61, 261, nil, nil, 138, 84, nil,
+ nil, 61, nil, nil, nil, nil, 22, 9, nil, nil,
+ 166, 146, nil, 166, 22, 9, 88, nil, nil, nil,
+ 2, 61, 81, 261, 140, nil, nil, 88, 2, nil,
+ 22, 9, nil, nil, 22, 9, nil, 167, nil, 372,
+ 167, nil, nil, 363, 2, 262, 88, 88, 2, 84,
+ nil, 90, nil, nil, nil, nil, 88, nil, 262, nil,
+ 61, nil, 87, 267, nil, 87, nil, nil, 146, nil,
+ nil, nil, 88, 22, 9, nil, 61, 145, 61, nil,
+ 261, 146, nil, 22, 9, 22, 9, 2, 114, 22,
+ 9, 22, 9, 261, 93, 267, 379, 2, 381, 2,
+ nil, 88, 90, 2, nil, 2, 142, 132, nil, nil,
+ nil, 166, nil, nil, nil, nil, nil, nil, nil, nil,
+ 148, nil, 170, nil, nil, 332, 332, nil, nil, 81,
+ 263, nil, 81, nil, nil, 87, nil, nil, 167, nil,
+ nil, 170, nil, nil, nil, 93, nil, nil, nil, nil,
+ nil, 267, nil, nil, nil, nil, 84, 265, 88, 84,
+ nil, 170, 263, nil, nil, nil, nil, nil, nil, nil,
+ nil, 88, nil, 138, nil, nil, nil, nil, nil, nil,
+ 267, nil, nil, nil, nil, nil, nil, 166, 124, 265,
+ nil, nil, 329, 329, nil, 130, 131, nil, nil, nil,
+ 140, nil, 81, nil, nil, nil, nil, nil, nil, 90,
+ 145, nil, 90, nil, 167, nil, nil, nil, 263, 331,
+ 331, nil, nil, nil, 180, nil, nil, nil, nil, 84,
+ nil, nil, nil, nil, nil, 253, nil, 267, nil, nil,
+ nil, nil, 145, 185, nil, 265, 186, 263, nil, 187,
+ 267, nil, 93, 145, nil, 93, nil, nil, 283, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, 264, nil, nil, nil, nil, nil, nil, nil, 145,
- nil, nil, nil, nil, 264, nil, nil, nil, nil, nil,
- nil, nil, 145, nil, 279, 280, 281, nil, 283, 284,
- 285, 286, 287, 288, 289, nil, 291, 292, 293, nil,
- nil, 297, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, 333, 333, 265, nil, nil, nil, nil, nil,
+ nil, nil, 90, nil, nil, nil, nil, 315, nil, 317,
+ nil, nil, nil, nil, nil, nil, 148, nil, 145, nil,
+ nil, nil, nil, nil, 263, nil, nil, 336, nil, nil,
+ nil, nil, nil, nil, nil, 334, 334, 263, nil, nil,
+ nil, nil, nil, nil, nil, 93, nil, 145, nil, nil,
+ nil, 265, nil, nil, nil, nil, 347, nil, nil, nil,
+ nil, nil, nil, nil, 265, 280, 281, 282, nil, 284,
+ 285, 286, 287, 288, 289, 290, nil, 292, 293, 294,
+ nil, nil, 298, nil, nil, 359, nil, 360, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, 180 ]
+ nil, nil, nil, nil, 145, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, 145, nil, nil,
+ nil, 367, nil, nil, nil, 180 ]
racc_goto_check = [
- 37, 21, 30, 62, 64, 72, 4, 32, 28, 82,
- 2, 70, 31, 29, 52, 36, 35, 85, 32, 37,
- 21, 60, 22, 78, 21, 53, 3, 47, 30, 36,
- 37, 35, 38, 52, 28, 68, 19, 5, 31, 29,
- 50, 66, 7, 37, 21, 23, 41, 63, 36, 41,
- 5, 57, 20, 30, 74, 46, 46, 65, 58, 28,
- 61, 69, 3, 31, 29, 56, 71, 68, 33, 74,
- 57, 73, 34, 22, 75, 21, 76, 3, 77, 40,
- 79, 3, 20, 80, 81, 30, 42, 83, 84, 1,
- 57, nil, nil, nil, nil, nil, nil, nil, 70, nil,
- 63, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, 19, nil, nil, nil, nil, 23, 7,
- 37, 21, 68, nil, nil, 66, nil, 5, 36, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 24,
- nil, nil, nil, 64, nil, 64, nil, 41, nil, nil,
- 53, 68, nil, nil, nil, nil, nil, 38, nil, nil,
- 30, 30, 78, 30, nil, 24, 28, 28, nil, 28,
- 31, 29, nil, 31, 29, nil, nil, nil, 24, nil,
- 3, 24, 21, 22, nil, 21, nil, 72, 85, nil,
- 24, 36, nil, 30, 64, 82, 35, 70, 64, 28,
- nil, 53, 60, 47, 30, nil, 53, nil, 68, nil,
- 28, nil, 37, 21, 31, 29, 50, 37, 21, 36,
- nil, 68, 2, 30, 30, nil, 52, 2, nil, 28,
- 28, 52, nil, 30, 29, 29, nil, 37, 21, 28,
- 32, 49, nil, 31, 29, nil, nil, 2, 30, nil,
- nil, 52, nil, nil, 28, 21, 30, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, 49, nil, nil,
- nil, nil, nil, nil, nil, 26, nil, 30, nil, 24,
- nil, nil, 4, 28, nil, nil, nil, nil, nil, nil,
- 4, nil, 49, nil, nil, 37, 21, 24, 24, nil,
- 24, 26, nil, 37, 21, nil, nil, nil, nil, 52,
- 4, nil, nil, nil, nil, nil, nil, 52, nil, 37,
- 21, nil, nil, 37, 21, nil, 26, nil, 62, 2,
- 24, nil, nil, 52, 30, nil, nil, 52, nil, nil,
- 28, 24, nil, nil, nil, nil, nil, 30, nil, 4,
- nil, nil, nil, 28, nil, 24, nil, nil, nil, nil,
- 24, 24, 37, 21, 54, 4, nil, 4, nil, 25,
- 24, nil, 37, 21, 37, 21, 52, 27, 37, 21,
- 37, 21, 2, 54, 2, 24, 52, nil, 52, nil,
- nil, nil, 52, nil, 52, 25, nil, nil, 54, 49,
- 49, nil, 49, 27, nil, nil, nil, nil, 25, nil,
- nil, 25, nil, nil, 24, nil, nil, 54, nil, nil,
- 25, nil, nil, nil, nil, nil, nil, nil, 27, nil,
- nil, nil, 49, 26, 26, nil, 26, 54, nil, nil,
- nil, nil, nil, 49, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, 49, 49, nil, nil, 26, nil, nil, nil,
- nil, 24, 49, nil, nil, nil, nil, 26, nil, nil,
- nil, nil, nil, nil, 24, nil, nil, 49, nil, nil,
- nil, nil, nil, nil, nil, nil, 26, 26, nil, nil,
- nil, nil, nil, nil, nil, nil, 26, nil, nil, 25,
- nil, 54, nil, nil, nil, nil, 49, nil, nil, nil,
- nil, 26, nil, nil, nil, nil, nil, 25, 25, nil,
- 25, nil, nil, nil, 54, 27, 27, nil, 27, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 26, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 25, nil, nil, 54, nil, 54, nil, 51, 27, nil,
- nil, 25, nil, 49, 51, 51, nil, nil, nil, 27,
- nil, nil, nil, 54, nil, 25, 49, nil, nil, nil,
- 25, 25, nil, nil, nil, nil, nil, nil, 27, 27,
- 25, nil, nil, 51, nil, nil, nil, 26, 27, nil,
- nil, 54, nil, nil, nil, 25, nil, nil, nil, nil,
- 26, nil, 51, 27, nil, 51, nil, nil, 51, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 54, nil, 54, nil, 25, nil, nil, nil, nil, nil,
- nil, nil, 27, nil, nil, nil, nil, nil, nil, nil,
+ 37, 21, 30, 62, 82, 68, 4, 32, 64, 60,
+ 70, 47, 31, 2, 52, 22, 85, 72, 32, 37,
+ 21, 35, 5, 3, 21, 28, 78, 50, 30, 53,
+ 37, 36, 38, 52, 66, 5, 35, 68, 31, 41,
+ 19, 7, 41, 37, 21, 36, 63, 20, 57, 65,
+ 23, 28, 58, 30, 74, 46, 46, 61, 69, 3,
+ 56, 71, 33, 31, 36, 73, 22, 57, 34, 74,
+ 75, 76, 77, 40, 3, 21, 28, 20, 3, 79,
+ 80, 81, 42, 83, 84, 30, 1, 57, nil, nil,
+ nil, nil, nil, 68, nil, nil, nil, nil, 70, 63,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, 54, nil, nil, nil,
+ nil, nil, 5, nil, nil, 49, nil, 19, 7, 66,
+ 37, 21, 68, 23, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ 41, 49, nil, nil, 36, nil, nil, 64, nil, 64,
+ nil, nil, nil, nil, 53, nil, nil, 38, nil, nil,
+ 30, 30, nil, 30, nil, 78, 49, nil, nil, nil,
+ 31, nil, nil, 31, nil, nil, 22, 3, nil, 68,
+ nil, nil, 21, 28, 28, 21, 28, 47, 85, nil,
+ 60, 82, 68, 30, 26, nil, 52, 70, 64, 72,
+ nil, 35, 64, 50, 30, 53, nil, nil, 36, nil,
+ 53, nil, 37, 21, 31, nil, 28, 37, 21, nil,
+ 26, nil, nil, 30, 30, 2, 52, 28, 52, nil,
+ 2, 52, nil, 30, nil, nil, 36, 37, 21, nil,
+ 32, nil, nil, 31, nil, 26, 28, 28, nil, 30,
+ 2, 52, nil, nil, nil, 21, 28, 30, 52, 52,
+ nil, 24, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, 28, 49, 49, nil, 49, nil, 30, nil,
+ nil, nil, nil, 4, 52, nil, nil, 24, 25, nil,
+ nil, 4, nil, nil, nil, nil, 37, 21, nil, nil,
+ 24, 28, nil, 24, 37, 21, 49, nil, nil, nil,
+ 52, 4, 24, 52, 25, nil, nil, 49, 52, nil,
+ 37, 21, nil, nil, 37, 21, nil, 25, nil, 62,
+ 25, nil, nil, 2, 52, 30, 49, 49, 52, 25,
+ nil, 27, nil, nil, nil, nil, 49, nil, 30, nil,
+ 4, nil, 26, 26, nil, 26, nil, nil, 28, nil,
+ nil, nil, 49, 37, 21, nil, 4, 27, 4, nil,
+ 52, 28, nil, 37, 21, 37, 21, 52, 54, 37,
+ 21, 37, 21, 52, 29, 26, 2, 52, 2, 52,
+ nil, 49, 27, 52, nil, 52, 26, 54, nil, nil,
+ nil, 24, nil, nil, nil, nil, nil, nil, nil, nil,
+ 29, nil, 54, nil, nil, 26, 26, nil, nil, 24,
+ 24, nil, 24, nil, nil, 26, nil, nil, 25, nil,
+ nil, 54, nil, nil, nil, 29, nil, nil, nil, nil,
+ nil, 26, nil, nil, nil, nil, 25, 25, 49, 25,
+ nil, 54, 24, nil, nil, nil, nil, nil, nil, nil,
+ nil, 49, nil, 24, nil, nil, nil, nil, nil, nil,
+ 26, nil, nil, nil, nil, nil, nil, 24, 51, 25,
+ nil, nil, 24, 24, nil, 51, 51, nil, nil, nil,
+ 25, nil, 24, nil, nil, nil, nil, nil, nil, 27,
+ 27, nil, 27, nil, 25, nil, nil, nil, 24, 25,
+ 25, nil, nil, nil, 51, nil, nil, nil, nil, 25,
+ nil, nil, nil, nil, nil, 54, nil, 26, nil, nil,
+ nil, nil, 27, 51, nil, 25, 51, 24, nil, 51,
+ 26, nil, 29, 27, nil, 29, nil, nil, 54, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, 25, nil, nil, nil, nil, nil, nil, nil, 27,
- nil, nil, nil, nil, 25, nil, nil, nil, nil, nil,
- nil, nil, 27, nil, 51, 51, 51, nil, 51, 51,
- 51, 51, 51, 51, 51, nil, 51, 51, 51, nil,
- nil, 51, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, 27, 27, 25, nil, nil, nil, nil, nil,
+ nil, nil, 27, nil, nil, nil, nil, 54, nil, 54,
+ nil, nil, nil, nil, nil, nil, 29, nil, 27, nil,
+ nil, nil, nil, nil, 24, nil, nil, 54, nil, nil,
+ nil, nil, nil, nil, nil, 29, 29, 24, nil, nil,
+ nil, nil, nil, nil, nil, 29, nil, 27, nil, nil,
+ nil, 25, nil, nil, nil, nil, 54, nil, nil, nil,
+ nil, nil, nil, nil, 25, 51, 51, 51, nil, 51,
+ 51, 51, 51, 51, 51, 51, nil, 51, 51, 51,
+ nil, nil, 51, nil, nil, 54, nil, 54, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, 51 ]
+ nil, nil, nil, nil, 27, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, 27, nil, nil,
+ nil, 54, nil, nil, nil, 51 ]
racc_goto_pointer = [
- nil, 89, 10, 26, -13, 7, nil, -1, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, -7,
- 48, 1, -1, -136, 116, 346, 252, 354, -15, -10,
- -21, -11, 6, 19, -64, -33, -124, 0, -18, nil,
- 57, -16, -153, nil, nil, nil, -189, -22, nil, 218,
- -9, 528, 14, -25, 335, nil, -166, -12, -285, nil,
- -54, -120, -23, -249, -13, -157, -173, nil, -147, -121,
- -171, -203, -28, 38, 18, -80, 59, 23, 6, -78,
- -39, -38, -113, -147, -18, -89, nil ]
+ nil, 86, 13, 23, -13, -8, nil, -2, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, -3,
+ 43, 1, -8, -131, 238, 265, 171, 318, 2, 361,
+ -21, -11, 6, 13, -68, -28, -108, 0, -18, nil,
+ 51, -23, -157, nil, nil, nil, -189, -38, nil, 92,
+ -22, 439, 14, -21, 349, nil, -171, -15, -292, nil,
+ -66, -123, -23, -251, -9, -165, -180, nil, -177, -124,
+ -172, -209, -16, 32, 18, -84, 54, 17, 9, -79,
+ -42, -41, -118, -151, -22, -90, nil ]
racc_goto_default = [
nil, nil, nil, 168, 25, 28, 32, 35, 5, 6,
@@ -916,1687 +661,2028 @@ racc_goto_default = [
95, 96, 8, nil, nil, nil, nil, 85, nil, 30,
nil, nil, 161, 239, 164, 165, nil, nil, 144, 107,
110, 111, 67, 134, 98, 150, 151, nil, 248, 104,
- nil, nil, nil, nil, 69, nil, nil, 300, 80, nil,
+ nil, nil, nil, nil, 69, nil, nil, 301, 80, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, 57,
nil, nil, nil, nil, nil, nil, 192 ]
-racc_token_table = {
- false => 0,
- Object.new => 1,
- :STRING => 2,
- :DQPRE => 3,
- :DQMID => 4,
- :DQPOST => 5,
- :LBRACK => 6,
- :RBRACK => 7,
- :LBRACE => 8,
- :RBRACE => 9,
- :SYMBOL => 10,
- :FARROW => 11,
- :COMMA => 12,
- :TRUE => 13,
- :FALSE => 14,
- :EQUALS => 15,
- :APPENDS => 16,
- :LESSEQUAL => 17,
- :NOTEQUAL => 18,
- :DOT => 19,
- :COLON => 20,
- :LLCOLLECT => 21,
- :RRCOLLECT => 22,
- :QMARK => 23,
- :LPAREN => 24,
- :RPAREN => 25,
- :ISEQUAL => 26,
- :GREATEREQUAL => 27,
- :GREATERTHAN => 28,
- :LESSTHAN => 29,
- :IF => 30,
- :ELSE => 31,
- :IMPORT => 32,
- :DEFINE => 33,
- :ELSIF => 34,
- :VARIABLE => 35,
- :CLASS => 36,
- :INHERITS => 37,
- :NODE => 38,
- :BOOLEAN => 39,
- :NAME => 40,
- :SEMIC => 41,
- :CASE => 42,
- :DEFAULT => 43,
- :AT => 44,
- :LCOLLECT => 45,
- :RCOLLECT => 46,
- :CLASSNAME => 47,
- :CLASSREF => 48,
- :NOT => 49,
- :OR => 50,
- :AND => 51,
- :UNDEF => 52,
- :PARROW => 53,
- :PLUS => 54,
- :MINUS => 55,
- :TIMES => 56,
- :DIV => 57,
- :LSHIFT => 58,
- :RSHIFT => 59,
- :UMINUS => 60,
- :MATCH => 61,
- :NOMATCH => 62,
- :REGEX => 63,
- :IN_EDGE => 64,
- :OUT_EDGE => 65,
- :IN_EDGE_SUB => 66,
- :OUT_EDGE_SUB => 67,
- :IN => 68 }
+racc_reduce_table = [
+ 0, 0, :racc_error,
+ 1, 70, :_reduce_1,
+ 1, 70, :_reduce_none,
+ 1, 71, :_reduce_none,
+ 2, 71, :_reduce_4,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 1, 73, :_reduce_none,
+ 3, 87, :_reduce_19,
+ 3, 87, :_reduce_20,
+ 1, 88, :_reduce_none,
+ 1, 88, :_reduce_none,
+ 1, 88, :_reduce_none,
+ 1, 89, :_reduce_none,
+ 1, 89, :_reduce_none,
+ 1, 89, :_reduce_none,
+ 1, 89, :_reduce_none,
+ 4, 81, :_reduce_28,
+ 5, 81, :_reduce_29,
+ 3, 81, :_reduce_30,
+ 2, 81, :_reduce_31,
+ 1, 91, :_reduce_none,
+ 1, 91, :_reduce_none,
+ 3, 91, :_reduce_34,
+ 3, 91, :_reduce_35,
+ 1, 92, :_reduce_none,
+ 1, 92, :_reduce_none,
+ 1, 92, :_reduce_none,
+ 1, 92, :_reduce_none,
+ 1, 92, :_reduce_none,
+ 1, 92, :_reduce_none,
+ 1, 92, :_reduce_none,
+ 1, 92, :_reduce_none,
+ 1, 92, :_reduce_44,
+ 5, 74, :_reduce_45,
+ 5, 74, :_reduce_46,
+ 5, 74, :_reduce_47,
+ 5, 85, :_reduce_48,
+ 2, 75, :_reduce_49,
+ 1, 108, :_reduce_50,
+ 2, 108, :_reduce_51,
+ 6, 76, :_reduce_52,
+ 2, 76, :_reduce_53,
+ 3, 109, :_reduce_54,
+ 3, 109, :_reduce_55,
+ 1, 110, :_reduce_none,
+ 1, 110, :_reduce_none,
+ 3, 110, :_reduce_58,
+ 1, 111, :_reduce_none,
+ 3, 111, :_reduce_60,
+ 1, 112, :_reduce_61,
+ 1, 112, :_reduce_62,
+ 3, 113, :_reduce_63,
+ 3, 113, :_reduce_64,
+ 1, 114, :_reduce_none,
+ 1, 114, :_reduce_none,
+ 4, 116, :_reduce_67,
+ 1, 102, :_reduce_none,
+ 3, 102, :_reduce_69,
+ 0, 103, :_reduce_none,
+ 1, 103, :_reduce_none,
+ 1, 118, :_reduce_72,
+ 1, 93, :_reduce_73,
+ 1, 95, :_reduce_74,
+ 1, 117, :_reduce_none,
+ 1, 117, :_reduce_none,
+ 1, 117, :_reduce_none,
+ 1, 117, :_reduce_none,
+ 1, 117, :_reduce_none,
+ 1, 117, :_reduce_none,
+ 1, 117, :_reduce_none,
+ 3, 77, :_reduce_82,
+ 3, 77, :_reduce_83,
+ 3, 86, :_reduce_84,
+ 0, 104, :_reduce_85,
+ 1, 104, :_reduce_86,
+ 3, 104, :_reduce_87,
+ 3, 122, :_reduce_88,
+ 3, 124, :_reduce_89,
+ 1, 125, :_reduce_none,
+ 1, 125, :_reduce_none,
+ 0, 107, :_reduce_92,
+ 1, 107, :_reduce_93,
+ 3, 107, :_reduce_94,
+ 1, 126, :_reduce_none,
+ 3, 126, :_reduce_96,
+ 1, 115, :_reduce_none,
+ 1, 115, :_reduce_none,
+ 1, 115, :_reduce_none,
+ 1, 115, :_reduce_none,
+ 1, 115, :_reduce_none,
+ 1, 115, :_reduce_none,
+ 1, 123, :_reduce_none,
+ 1, 123, :_reduce_none,
+ 1, 123, :_reduce_none,
+ 1, 123, :_reduce_none,
+ 1, 123, :_reduce_none,
+ 1, 123, :_reduce_none,
+ 1, 123, :_reduce_none,
+ 1, 123, :_reduce_none,
+ 1, 123, :_reduce_none,
+ 1, 123, :_reduce_none,
+ 1, 123, :_reduce_none,
+ 1, 123, :_reduce_none,
+ 4, 97, :_reduce_115,
+ 3, 97, :_reduce_116,
+ 1, 99, :_reduce_117,
+ 2, 99, :_reduce_118,
+ 2, 129, :_reduce_119,
+ 1, 130, :_reduce_120,
+ 2, 130, :_reduce_121,
+ 1, 96, :_reduce_122,
+ 4, 90, :_reduce_123,
+ 4, 90, :_reduce_124,
+ 2, 79, :_reduce_125,
+ 5, 131, :_reduce_126,
+ 4, 131, :_reduce_127,
+ 0, 132, :_reduce_none,
+ 2, 132, :_reduce_129,
+ 4, 132, :_reduce_130,
+ 3, 132, :_reduce_131,
+ 1, 120, :_reduce_none,
+ 3, 120, :_reduce_133,
+ 3, 120, :_reduce_134,
+ 3, 120, :_reduce_135,
+ 3, 120, :_reduce_136,
+ 3, 120, :_reduce_137,
+ 3, 120, :_reduce_138,
+ 3, 120, :_reduce_139,
+ 3, 120, :_reduce_140,
+ 3, 120, :_reduce_141,
+ 2, 120, :_reduce_142,
+ 3, 120, :_reduce_143,
+ 3, 120, :_reduce_144,
+ 3, 120, :_reduce_145,
+ 3, 120, :_reduce_146,
+ 3, 120, :_reduce_147,
+ 3, 120, :_reduce_148,
+ 2, 120, :_reduce_149,
+ 3, 120, :_reduce_150,
+ 3, 120, :_reduce_151,
+ 3, 120, :_reduce_152,
+ 5, 78, :_reduce_153,
+ 1, 134, :_reduce_none,
+ 2, 134, :_reduce_155,
+ 5, 135, :_reduce_156,
+ 4, 135, :_reduce_157,
+ 1, 136, :_reduce_none,
+ 3, 136, :_reduce_159,
+ 3, 98, :_reduce_160,
+ 1, 138, :_reduce_none,
+ 4, 138, :_reduce_162,
+ 1, 140, :_reduce_none,
+ 3, 140, :_reduce_164,
+ 3, 139, :_reduce_165,
+ 1, 137, :_reduce_none,
+ 1, 137, :_reduce_none,
+ 1, 137, :_reduce_none,
+ 1, 137, :_reduce_none,
+ 1, 137, :_reduce_none,
+ 1, 137, :_reduce_none,
+ 1, 137, :_reduce_none,
+ 1, 137, :_reduce_none,
+ 1, 137, :_reduce_174,
+ 1, 137, :_reduce_none,
+ 1, 141, :_reduce_176,
+ 1, 142, :_reduce_none,
+ 3, 142, :_reduce_178,
+ 2, 80, :_reduce_179,
+ 6, 82, :_reduce_180,
+ 5, 82, :_reduce_181,
+ 7, 83, :_reduce_182,
+ 6, 83, :_reduce_183,
+ 6, 84, :_reduce_184,
+ 5, 84, :_reduce_185,
+ 1, 106, :_reduce_186,
+ 1, 101, :_reduce_187,
+ 1, 101, :_reduce_188,
+ 1, 101, :_reduce_189,
+ 1, 145, :_reduce_none,
+ 3, 145, :_reduce_191,
+ 1, 147, :_reduce_192,
+ 1, 148, :_reduce_193,
+ 1, 148, :_reduce_194,
+ 1, 148, :_reduce_195,
+ 1, 148, :_reduce_none,
+ 0, 72, :_reduce_197,
+ 0, 149, :_reduce_198,
+ 1, 143, :_reduce_none,
+ 3, 143, :_reduce_200,
+ 3, 143, :_reduce_201,
+ 1, 150, :_reduce_none,
+ 3, 150, :_reduce_203,
+ 3, 151, :_reduce_204,
+ 1, 151, :_reduce_205,
+ 3, 151, :_reduce_206,
+ 1, 151, :_reduce_207,
+ 1, 146, :_reduce_none,
+ 2, 146, :_reduce_209,
+ 1, 144, :_reduce_none,
+ 2, 144, :_reduce_211,
+ 1, 152, :_reduce_none,
+ 1, 152, :_reduce_none,
+ 1, 94, :_reduce_214,
+ 3, 119, :_reduce_215,
+ 4, 119, :_reduce_216,
+ 2, 119, :_reduce_217,
+ 1, 127, :_reduce_none,
+ 1, 127, :_reduce_none,
+ 0, 105, :_reduce_none,
+ 1, 105, :_reduce_221,
+ 1, 133, :_reduce_222,
+ 3, 128, :_reduce_223,
+ 4, 128, :_reduce_224,
+ 2, 128, :_reduce_225,
+ 1, 153, :_reduce_none,
+ 3, 153, :_reduce_227,
+ 3, 154, :_reduce_228,
+ 1, 155, :_reduce_229,
+ 1, 155, :_reduce_230,
+ 4, 121, :_reduce_231,
+ 1, 100, :_reduce_none,
+ 4, 100, :_reduce_233 ]
+
+racc_reduce_n = 234
+
+racc_shift_n = 385
-racc_use_result_var = true
+racc_token_table = {
+ false => 0,
+ :error => 1,
+ :STRING => 2,
+ :DQPRE => 3,
+ :DQMID => 4,
+ :DQPOST => 5,
+ :LBRACK => 6,
+ :RBRACK => 7,
+ :LBRACE => 8,
+ :RBRACE => 9,
+ :SYMBOL => 10,
+ :FARROW => 11,
+ :COMMA => 12,
+ :TRUE => 13,
+ :FALSE => 14,
+ :EQUALS => 15,
+ :APPENDS => 16,
+ :LESSEQUAL => 17,
+ :NOTEQUAL => 18,
+ :DOT => 19,
+ :COLON => 20,
+ :LLCOLLECT => 21,
+ :RRCOLLECT => 22,
+ :QMARK => 23,
+ :LPAREN => 24,
+ :RPAREN => 25,
+ :ISEQUAL => 26,
+ :GREATEREQUAL => 27,
+ :GREATERTHAN => 28,
+ :LESSTHAN => 29,
+ :IF => 30,
+ :ELSE => 31,
+ :IMPORT => 32,
+ :DEFINE => 33,
+ :ELSIF => 34,
+ :VARIABLE => 35,
+ :CLASS => 36,
+ :INHERITS => 37,
+ :NODE => 38,
+ :BOOLEAN => 39,
+ :NAME => 40,
+ :SEMIC => 41,
+ :CASE => 42,
+ :DEFAULT => 43,
+ :AT => 44,
+ :LCOLLECT => 45,
+ :RCOLLECT => 46,
+ :CLASSNAME => 47,
+ :CLASSREF => 48,
+ :NOT => 49,
+ :OR => 50,
+ :AND => 51,
+ :UNDEF => 52,
+ :PARROW => 53,
+ :PLUS => 54,
+ :MINUS => 55,
+ :TIMES => 56,
+ :DIV => 57,
+ :LSHIFT => 58,
+ :RSHIFT => 59,
+ :UMINUS => 60,
+ :MATCH => 61,
+ :NOMATCH => 62,
+ :REGEX => 63,
+ :IN_EDGE => 64,
+ :OUT_EDGE => 65,
+ :IN_EDGE_SUB => 66,
+ :OUT_EDGE_SUB => 67,
+ :IN => 68 }
racc_nt_base = 69
+racc_use_result_var = true
+
Racc_arg = [
- racc_action_table,
- racc_action_check,
- racc_action_default,
- racc_action_pointer,
- racc_goto_table,
- racc_goto_check,
- racc_goto_default,
- racc_goto_pointer,
- racc_nt_base,
- racc_reduce_table,
- racc_token_table,
- racc_shift_n,
- racc_reduce_n,
- racc_use_result_var ]
+ racc_action_table,
+ racc_action_check,
+ racc_action_default,
+ racc_action_pointer,
+ racc_goto_table,
+ racc_goto_check,
+ racc_goto_default,
+ racc_goto_pointer,
+ racc_nt_base,
+ racc_reduce_table,
+ racc_token_table,
+ racc_shift_n,
+ racc_reduce_n,
+ racc_use_result_var ]
Racc_token_to_s_table = [
-'$end',
-'error',
-'STRING',
-'DQPRE',
-'DQMID',
-'DQPOST',
-'LBRACK',
-'RBRACK',
-'LBRACE',
-'RBRACE',
-'SYMBOL',
-'FARROW',
-'COMMA',
-'TRUE',
-'FALSE',
-'EQUALS',
-'APPENDS',
-'LESSEQUAL',
-'NOTEQUAL',
-'DOT',
-'COLON',
-'LLCOLLECT',
-'RRCOLLECT',
-'QMARK',
-'LPAREN',
-'RPAREN',
-'ISEQUAL',
-'GREATEREQUAL',
-'GREATERTHAN',
-'LESSTHAN',
-'IF',
-'ELSE',
-'IMPORT',
-'DEFINE',
-'ELSIF',
-'VARIABLE',
-'CLASS',
-'INHERITS',
-'NODE',
-'BOOLEAN',
-'NAME',
-'SEMIC',
-'CASE',
-'DEFAULT',
-'AT',
-'LCOLLECT',
-'RCOLLECT',
-'CLASSNAME',
-'CLASSREF',
-'NOT',
-'OR',
-'AND',
-'UNDEF',
-'PARROW',
-'PLUS',
-'MINUS',
-'TIMES',
-'DIV',
-'LSHIFT',
-'RSHIFT',
-'UMINUS',
-'MATCH',
-'NOMATCH',
-'REGEX',
-'IN_EDGE',
-'OUT_EDGE',
-'IN_EDGE_SUB',
-'OUT_EDGE_SUB',
-'IN',
-'$start',
-'program',
-'statements',
-'nil',
-'statement',
-'resource',
-'virtualresource',
-'collection',
-'assignment',
-'casestatement',
-'ifstatement_begin',
-'import',
-'fstatement',
-'definition',
-'hostclass',
-'nodedef',
-'resourceoverride',
-'append',
-'relationship',
-'relationship_side',
-'edge',
-'resourceref',
-'funcvalues',
-'namestring',
-'name',
-'variable',
-'type',
-'boolean',
-'funcrvalue',
-'selector',
-'quotedtext',
-'hasharrayaccesses',
-'classname',
-'resourceinstances',
-'endsemi',
-'params',
-'endcomma',
-'classref',
-'anyparams',
-'at',
-'collectrhand',
-'collstatements',
-'collstatement',
-'colljoin',
-'collexpr',
-'colllval',
-'simplervalue',
-'resourceinst',
-'resourcename',
-'undef',
-'array',
-'expression',
-'hasharrayaccess',
-'param',
-'rvalue',
-'addparam',
-'anyparam',
-'rvalues',
-'comma',
-'hash',
-'dqrval',
-'dqtail',
-'ifstatement',
-'else',
-'regex',
-'caseopts',
-'caseopt',
-'casevalues',
-'selectlhand',
-'svalues',
-'selectval',
-'sintvalues',
-'string',
-'strings',
-'argumentlist',
-'classparent',
-'hostnames',
-'nodeparent',
-'nodename',
-'hostname',
-'nothing',
-'arguments',
-'argument',
-'classnameordefault',
-'hashpairs',
-'hashpair',
-'key']
+ "$end",
+ "error",
+ "STRING",
+ "DQPRE",
+ "DQMID",
+ "DQPOST",
+ "LBRACK",
+ "RBRACK",
+ "LBRACE",
+ "RBRACE",
+ "SYMBOL",
+ "FARROW",
+ "COMMA",
+ "TRUE",
+ "FALSE",
+ "EQUALS",
+ "APPENDS",
+ "LESSEQUAL",
+ "NOTEQUAL",
+ "DOT",
+ "COLON",
+ "LLCOLLECT",
+ "RRCOLLECT",
+ "QMARK",
+ "LPAREN",
+ "RPAREN",
+ "ISEQUAL",
+ "GREATEREQUAL",
+ "GREATERTHAN",
+ "LESSTHAN",
+ "IF",
+ "ELSE",
+ "IMPORT",
+ "DEFINE",
+ "ELSIF",
+ "VARIABLE",
+ "CLASS",
+ "INHERITS",
+ "NODE",
+ "BOOLEAN",
+ "NAME",
+ "SEMIC",
+ "CASE",
+ "DEFAULT",
+ "AT",
+ "LCOLLECT",
+ "RCOLLECT",
+ "CLASSNAME",
+ "CLASSREF",
+ "NOT",
+ "OR",
+ "AND",
+ "UNDEF",
+ "PARROW",
+ "PLUS",
+ "MINUS",
+ "TIMES",
+ "DIV",
+ "LSHIFT",
+ "RSHIFT",
+ "UMINUS",
+ "MATCH",
+ "NOMATCH",
+ "REGEX",
+ "IN_EDGE",
+ "OUT_EDGE",
+ "IN_EDGE_SUB",
+ "OUT_EDGE_SUB",
+ "IN",
+ "$start",
+ "program",
+ "statements",
+ "nil",
+ "statement",
+ "resource",
+ "virtualresource",
+ "collection",
+ "assignment",
+ "casestatement",
+ "ifstatement_begin",
+ "import",
+ "fstatement",
+ "definition",
+ "hostclass",
+ "nodedef",
+ "resourceoverride",
+ "append",
+ "relationship",
+ "relationship_side",
+ "edge",
+ "resourceref",
+ "funcvalues",
+ "namestring",
+ "name",
+ "variable",
+ "type",
+ "boolean",
+ "funcrvalue",
+ "selector",
+ "quotedtext",
+ "hasharrayaccesses",
+ "classname",
+ "resourceinstances",
+ "endsemi",
+ "params",
+ "endcomma",
+ "classref",
+ "anyparams",
+ "at",
+ "collectrhand",
+ "collstatements",
+ "collstatement",
+ "colljoin",
+ "collexpr",
+ "colllval",
+ "simplervalue",
+ "resourceinst",
+ "resourcename",
+ "undef",
+ "array",
+ "expression",
+ "hasharrayaccess",
+ "param",
+ "rvalue",
+ "addparam",
+ "anyparam",
+ "rvalues",
+ "comma",
+ "hash",
+ "dqrval",
+ "dqtail",
+ "ifstatement",
+ "else",
+ "regex",
+ "caseopts",
+ "caseopt",
+ "casevalues",
+ "selectlhand",
+ "svalues",
+ "selectval",
+ "sintvalues",
+ "string",
+ "strings",
+ "argumentlist",
+ "classparent",
+ "hostnames",
+ "nodeparent",
+ "nodename",
+ "hostname",
+ "nothing",
+ "arguments",
+ "argument",
+ "classnameordefault",
+ "hashpairs",
+ "hashpair",
+ "key" ]
Racc_debug_parser = false
-##### racc system variables end #####
-
- # reduce 0 omitted
-
-module_eval <<'.,.,', 'grammar.ra', 46
- def _reduce_1( val, _values, result )
- if val[0]
- # Make sure we always return an array.
- if val[0].is_a?(AST::ASTArray)
- if val[0].children.empty?
- result = nil
- else
- result = val[0]
- end
- else
- result = aryfy(val[0])
- end
- else
+##### State transition tables end #####
+
+# reduce 0 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 31)
+ def _reduce_1(val, _values, result)
+ if val[0]
+ # Make sure we always return an array.
+ if val[0].is_a?(AST::ASTArray)
+ if val[0].children.empty?
result = nil
+ else
+ result = val[0]
+ end
+ else
+ result = aryfy(val[0])
end
- result
+ else
+ result = nil
+ end
+
+ result
end
.,.,
- # reduce 2 omitted
+# reduce 2 omitted
- # reduce 3 omitted
+# reduce 3 omitted
-module_eval <<'.,.,', 'grammar.ra', 62
- def _reduce_4( val, _values, result )
- if val[0] and val[1]
- if val[0].instance_of?(AST::ASTArray)
- val[0].push(val[1])
- result = val[0]
- else
- result = ast AST::ASTArray, :children => [val[0],val[1]]
- end
- elsif obj = (val[0] || val[1])
- result = obj
- else result = nil
+module_eval(<<'.,.,', 'grammar.ra', 50)
+ def _reduce_4(val, _values, result)
+ if val[0] and val[1]
+ if val[0].instance_of?(AST::ASTArray)
+ val[0].push(val[1])
+ result = val[0]
+ else
+ result = ast AST::ASTArray, :children => [val[0],val[1]]
end
- result
+ elsif obj = (val[0] || val[1])
+ result = obj
+ else result = nil
+ end
+
+ result
end
.,.,
- # reduce 5 omitted
+# reduce 5 omitted
+
+# reduce 6 omitted
- # reduce 6 omitted
+# reduce 7 omitted
- # reduce 7 omitted
+# reduce 8 omitted
- # reduce 8 omitted
+# reduce 9 omitted
- # reduce 9 omitted
+# reduce 10 omitted
- # reduce 10 omitted
+# reduce 11 omitted
- # reduce 11 omitted
+# reduce 12 omitted
- # reduce 12 omitted
+# reduce 13 omitted
- # reduce 13 omitted
+# reduce 14 omitted
- # reduce 14 omitted
+# reduce 15 omitted
- # reduce 15 omitted
+# reduce 16 omitted
- # reduce 16 omitted
+# reduce 17 omitted
- # reduce 17 omitted
+# reduce 18 omitted
- # reduce 18 omitted
+module_eval(<<'.,.,', 'grammar.ra', 80)
+ def _reduce_19(val, _values, result)
+ result = AST::Relationship.new(val[0], val[2], val[1][:value], ast_context)
-module_eval <<'.,.,', 'grammar.ra', 82
- def _reduce_19( val, _values, result )
- result = AST::Relationship.new(val[0], val[2], val[1][:value], ast_context)
- result
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 85
- def _reduce_20( val, _values, result )
- result = AST::Relationship.new(val[0], val[2], val[1][:value], ast_context)
- result
+module_eval(<<'.,.,', 'grammar.ra', 83)
+ def _reduce_20(val, _values, result)
+ result = AST::Relationship.new(val[0], val[2], val[1][:value], ast_context)
+
+ result
end
.,.,
- # reduce 21 omitted
+# reduce 21 omitted
- # reduce 22 omitted
+# reduce 22 omitted
- # reduce 23 omitted
+# reduce 23 omitted
- # reduce 24 omitted
+# reduce 24 omitted
- # reduce 25 omitted
+# reduce 25 omitted
- # reduce 26 omitted
+# reduce 26 omitted
- # reduce 27 omitted
+# reduce 27 omitted
-module_eval <<'.,.,', 'grammar.ra', 98
- def _reduce_28( val, _values, result )
- args = aryfy(val[2])
- result = ast AST::Function,
- :name => val[0][:value],
- :line => val[0][:line],
- :arguments => args,
- :ftype => :statement
- result
+module_eval(<<'.,.,', 'grammar.ra', 91)
+ def _reduce_28(val, _values, result)
+ args = aryfy(val[2])
+ result = ast AST::Function,
+ :name => val[0][:value],
+ :line => val[0][:line],
+ :arguments => args,
+ :ftype => :statement
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 106
- def _reduce_29( val, _values, result )
- args = aryfy(val[2])
- result = ast AST::Function,
- :name => val[0][:value],
- :line => val[0][:line],
- :arguments => args,
- :ftype => :statement
- result
+module_eval(<<'.,.,', 'grammar.ra', 99)
+ def _reduce_29(val, _values, result)
+ args = aryfy(val[2])
+ result = ast AST::Function,
+ :name => val[0][:value],
+ :line => val[0][:line],
+ :arguments => args,
+ :ftype => :statement
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 112
- def _reduce_30( val, _values, result )
- result = ast AST::Function,
- :name => val[0][:value],
- :line => val[0][:line],
- :arguments => AST::ASTArray.new({}),
- :ftype => :statement
- result
+module_eval(<<'.,.,', 'grammar.ra', 106)
+ def _reduce_30(val, _values, result)
+ result = ast AST::Function,
+ :name => val[0][:value],
+ :line => val[0][:line],
+ :arguments => AST::ASTArray.new({}),
+ :ftype => :statement
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 120
- def _reduce_31( val, _values, result )
- args = aryfy(val[1])
+module_eval(<<'.,.,', 'grammar.ra', 113)
+ def _reduce_31(val, _values, result)
+ args = aryfy(val[1])
result = ast AST::Function,
- :name => val[0][:value],
- :line => val[0][:line],
- :arguments => args,
- :ftype => :statement
- result
+ :name => val[0][:value],
+ :line => val[0][:line],
+ :arguments => args,
+ :ftype => :statement
+
+ result
end
.,.,
- # reduce 32 omitted
+# reduce 32 omitted
- # reduce 33 omitted
+# reduce 33 omitted
-module_eval <<'.,.,', 'grammar.ra', 128
- def _reduce_34( val, _values, result )
- result = aryfy(val[0], val[2])
+module_eval(<<'.,.,', 'grammar.ra', 124)
+ def _reduce_34(val, _values, result)
+ result = aryfy(val[0], val[2])
result.line = @lexer.line
result.file = @lexer.file
- result
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 137
- def _reduce_35( val, _values, result )
- unless val[0].is_a?(AST::ASTArray)
- val[0] = aryfy(val[0])
- end
+module_eval(<<'.,.,', 'grammar.ra', 129)
+ def _reduce_35(val, _values, result)
+ unless val[0].is_a?(AST::ASTArray)
+ val[0] = aryfy(val[0])
+ end
- val[0].push(val[2])
+ val[0].push(val[2])
- result = val[0]
- result
+ result = val[0]
+
+ result
end
.,.,
- # reduce 36 omitted
+# reduce 36 omitted
- # reduce 37 omitted
+# reduce 37 omitted
- # reduce 38 omitted
+# reduce 38 omitted
- # reduce 39 omitted
+# reduce 39 omitted
- # reduce 40 omitted
+# reduce 40 omitted
- # reduce 41 omitted
+# reduce 41 omitted
- # reduce 42 omitted
+# reduce 42 omitted
- # reduce 43 omitted
+# reduce 43 omitted
-module_eval <<'.,.,', 'grammar.ra', 151
- def _reduce_44( val, _values, result )
- result = ast AST::Name, :value => val[0][:value]
- result
+module_eval(<<'.,.,', 'grammar.ra', 149)
+ def _reduce_44(val, _values, result)
+ result = ast AST::Name, :value => val[0][:value]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 173
- def _reduce_45( val, _values, result )
- @lexer.commentpop
- array = val[2]
- if array.instance_of?(AST::ResourceInstance)
- array = [array]
- end
- result = ast AST::ASTArray
+module_eval(<<'.,.,', 'grammar.ra', 153)
+ def _reduce_45(val, _values, result)
+ @lexer.commentpop
+ array = val[2]
+ array = [array] if array.instance_of?(AST::ResourceInstance)
+ result = ast AST::ASTArray
+
+ # this iterates across each specified resourceinstance
+ array.each { |instance|
+ raise Puppet::Dev, "Got something that isn't an instance" unless instance.instance_of?(AST::ResourceInstance)
+ # now, i need to somehow differentiate between those things with
+ # arrays in their names, and normal things
- # this iterates across each specified resourceinstance
- array.each { |instance|
- unless instance.instance_of?(AST::ResourceInstance)
- raise Puppet::Dev, "Got something that isn't an instance"
- end
- # now, i need to somehow differentiate between those things with
- # arrays in their names, and normal things
- result.push ast(AST::Resource,
- :type => val[0],
- :title => instance[0],
- :parameters => instance[1])
- }
- result
+ result.push ast(
+ AST::Resource,
+ :type => val[0],
+ :title => instance[0],
+
+ :parameters => instance[1])
+ }
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 176
- def _reduce_46( val, _values, result )
- # This is a deprecated syntax.
- error "All resource specifications require names"
- result
+module_eval(<<'.,.,', 'grammar.ra', 172)
+ def _reduce_46(val, _values, result)
+ # This is a deprecated syntax.
+ error "All resource specifications require names"
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 180
- def _reduce_47( val, _values, result )
- # a defaults setting for a type
- @lexer.commentpop
- result = ast(AST::ResourceDefaults, :type => val[0], :parameters => val[2])
- result
+module_eval(<<'.,.,', 'grammar.ra', 175)
+ def _reduce_47(val, _values, result)
+ # a defaults setting for a type
+ @lexer.commentpop
+ result = ast(AST::ResourceDefaults, :type => val[0], :parameters => val[2])
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 186
- def _reduce_48( val, _values, result )
- @lexer.commentpop
- result = ast AST::ResourceOverride, :object => val[0], :parameters => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 182)
+ def _reduce_48(val, _values, result)
+ @lexer.commentpop
+ result = ast AST::ResourceOverride, :object => val[0], :parameters => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 213
- def _reduce_49( val, _values, result )
- type = val[0]
+module_eval(<<'.,.,', 'grammar.ra', 189)
+ def _reduce_49(val, _values, result)
+ type = val[0]
- if (type == :exported and ! Puppet[:storeconfigs]) and ! Puppet[:parseonly]
- Puppet.warning addcontext("You cannot collect without storeconfigs being set")
- end
+ if (type == :exported and ! Puppet[:storeconfigs]) and ! Puppet[:parseonly]
+ Puppet.warning addcontext("You cannot collect without storeconfigs being set")
+ end
- if val[1].is_a? AST::ResourceDefaults
- error "Defaults are not virtualizable"
- end
+ error "Defaults are not virtualizable" if val[1].is_a? AST::ResourceDefaults
- method = type.to_s + "="
+ method = type.to_s + "="
- # Just mark our resources as exported and pass them through.
- if val[1].instance_of?(AST::ASTArray)
- val[1].each do |obj|
- obj.send(method, true)
- end
- else
- val[1].send(method, true)
+ # Just mark our resources as exported and pass them through.
+ if val[1].instance_of?(AST::ASTArray)
+ val[1].each do |obj|
+ obj.send(method, true)
end
+ else
+ val[1].send(method, true)
+ end
- result = val[1]
- result
+ result = val[1]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 214
- def _reduce_50( val, _values, result )
- result = :virtual
- result
+module_eval(<<'.,.,', 'grammar.ra', 211)
+ def _reduce_50(val, _values, result)
+ result = :virtual
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 215
- def _reduce_51( val, _values, result )
- result = :exported
- result
+module_eval(<<'.,.,', 'grammar.ra', 212)
+ def _reduce_51(val, _values, result)
+ result = :exported
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 240
- def _reduce_52( val, _values, result )
- @lexer.commentpop
- if val[0] =~ /^[a-z]/
- Puppet.warning addcontext("Collection names must now be capitalized")
- end
- type = val[0].downcase
- args = {:type => type}
+module_eval(<<'.,.,', 'grammar.ra', 217)
+ def _reduce_52(val, _values, result)
+ @lexer.commentpop
+ Puppet.warning addcontext("Collection names must now be capitalized") if val[0] =~ /^[a-z]/
+ type = val[0].downcase
+ args = {:type => type}
- if val[1].is_a?(AST::CollExpr)
- args[:query] = val[1]
- args[:query].type = type
- args[:form] = args[:query].form
- else
- args[:form] = val[1]
- end
- if args[:form] == :exported and ! Puppet[:storeconfigs] and ! Puppet[:parseonly]
- Puppet.warning addcontext("You cannot collect exported resources without storeconfigs being set; the collection will be ignored")
- end
- args[:override] = val[3]
- result = ast AST::Collection, args
- result
+ if val[1].is_a?(AST::CollExpr)
+ args[:query] = val[1]
+ args[:query].type = type
+ args[:form] = args[:query].form
+ else
+ args[:form] = val[1]
+ end
+ if args[:form] == :exported and ! Puppet[:storeconfigs] and ! Puppet[:parseonly]
+ Puppet.warning addcontext("You cannot collect exported resources without storeconfigs being set; the collection will be ignored")
+ end
+ args[:override] = val[3]
+ result = ast AST::Collection, args
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 259
- def _reduce_53( val, _values, result )
- if val[0] =~ /^[a-z]/
- Puppet.warning addcontext("Collection names must now be capitalized")
- end
- type = val[0].downcase
- args = {:type => type }
+module_eval(<<'.,.,', 'grammar.ra', 236)
+ def _reduce_53(val, _values, result)
+ if val[0] =~ /^[a-z]/
+ Puppet.warning addcontext("Collection names must now be capitalized")
+ end
+ type = val[0].downcase
+ args = {:type => type }
- if val[1].is_a?(AST::CollExpr)
- args[:query] = val[1]
- args[:query].type = type
- args[:form] = args[:query].form
- else
- args[:form] = val[1]
- end
- if args[:form] == :exported and ! Puppet[:storeconfigs] and ! Puppet[:parseonly]
- Puppet.warning addcontext("You cannot collect exported resources without storeconfigs being set; the collection will be ignored")
- end
- result = ast AST::Collection, args
- result
+ if val[1].is_a?(AST::CollExpr)
+ args[:query] = val[1]
+ args[:query].type = type
+ args[:form] = args[:query].form
+ else
+ args[:form] = val[1]
+ end
+ if args[:form] == :exported and ! Puppet[:storeconfigs] and ! Puppet[:parseonly]
+ Puppet.warning addcontext("You cannot collect exported resources without storeconfigs being set; the collection will be ignored")
+ end
+ result = ast AST::Collection, args
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 269
- def _reduce_54( val, _values, result )
- if val[1]
- result = val[1]
- result.form = :virtual
- else
- result = :virtual
- end
- result
+module_eval(<<'.,.,', 'grammar.ra', 257)
+ def _reduce_54(val, _values, result)
+ if val[1]
+ result = val[1]
+ result.form = :virtual
+ else
+ result = :virtual
+ end
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 277
- def _reduce_55( val, _values, result )
- if val[1]
- result = val[1]
- result.form = :exported
- else
- result = :exported
- end
- result
+module_eval(<<'.,.,', 'grammar.ra', 265)
+ def _reduce_55(val, _values, result)
+ if val[1]
+ result = val[1]
+ result.form = :exported
+ else
+ result = :exported
+ end
+
+ result
end
.,.,
- # reduce 56 omitted
+# reduce 56 omitted
- # reduce 57 omitted
+# reduce 57 omitted
-module_eval <<'.,.,', 'grammar.ra', 285
- def _reduce_58( val, _values, result )
- result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 278)
+ def _reduce_58(val, _values, result)
+ result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2]
+
+ result
end
.,.,
- # reduce 59 omitted
+# reduce 59 omitted
-module_eval <<'.,.,', 'grammar.ra', 291
- def _reduce_60( val, _values, result )
- result = val[1]
+module_eval(<<'.,.,', 'grammar.ra', 283)
+ def _reduce_60(val, _values, result)
+ result = val[1]
result.parens = true
- result
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 292
- def _reduce_61( val, _values, result )
- result=val[0][:value]
- result
+module_eval(<<'.,.,', 'grammar.ra', 287)
+ def _reduce_61(val, _values, result)
+ result=val[0][:value]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 293
- def _reduce_62( val, _values, result )
- result=val[0][:value]
- result
+module_eval(<<'.,.,', 'grammar.ra', 288)
+ def _reduce_62(val, _values, result)
+ result=val[0][:value]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 300
- def _reduce_63( val, _values, result )
- result = ast AST::CollExpr, :test1 => val[0], :oper => val[1][:value], :test2 => val[2]
- #result = ast AST::CollExpr
- #result.push *val
- result
+module_eval(<<'.,.,', 'grammar.ra', 291)
+ def _reduce_63(val, _values, result)
+ result = ast AST::CollExpr, :test1 => val[0], :oper => val[1][:value], :test2 => val[2]
+ #result = ast AST::CollExpr
+ #result.push *val
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 305
- def _reduce_64( val, _values, result )
- result = ast AST::CollExpr, :test1 => val[0], :oper => val[1][:value], :test2 => val[2]
+module_eval(<<'.,.,', 'grammar.ra', 296)
+ def _reduce_64(val, _values, result)
+ result = ast AST::CollExpr, :test1 => val[0], :oper => val[1][:value], :test2 => val[2]
#result = ast AST::CollExpr
#result.push *val
- result
+
+ result
end
.,.,
- # reduce 65 omitted
+# reduce 65 omitted
- # reduce 66 omitted
+# reduce 66 omitted
-module_eval <<'.,.,', 'grammar.ra', 312
- def _reduce_67( val, _values, result )
- result = ast AST::ResourceInstance, :children => [val[0],val[2]]
- result
+module_eval(<<'.,.,', 'grammar.ra', 305)
+ def _reduce_67(val, _values, result)
+ result = ast AST::ResourceInstance, :children => [val[0],val[2]]
+
+ result
end
.,.,
- # reduce 68 omitted
+# reduce 68 omitted
-module_eval <<'.,.,', 'grammar.ra', 322
- def _reduce_69( val, _values, result )
- if val[0].instance_of?(AST::ResourceInstance)
- result = ast AST::ASTArray, :children => [val[0],val[2]]
- else
- val[0].push val[2]
- result = val[0]
- end
- result
+module_eval(<<'.,.,', 'grammar.ra', 310)
+ def _reduce_69(val, _values, result)
+ if val[0].instance_of?(AST::ResourceInstance)
+ result = ast AST::ASTArray, :children => [val[0],val[2]]
+ else
+ val[0].push val[2]
+ result = val[0]
+ end
+
+ result
end
.,.,
- # reduce 70 omitted
+# reduce 70 omitted
+
+# reduce 71 omitted
- # reduce 71 omitted
+module_eval(<<'.,.,', 'grammar.ra', 322)
+ def _reduce_72(val, _values, result)
+ result = ast AST::Undef, :value => :undef
-module_eval <<'.,.,', 'grammar.ra', 329
- def _reduce_72( val, _values, result )
- result = ast AST::Undef, :value => :undef
- result
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 333
- def _reduce_73( val, _values, result )
- result = ast AST::Name, :value => val[0][:value], :line => val[0][:line]
- result
+module_eval(<<'.,.,', 'grammar.ra', 326)
+ def _reduce_73(val, _values, result)
+ result = ast AST::Name, :value => val[0][:value], :line => val[0][:line]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 337
- def _reduce_74( val, _values, result )
- result = ast AST::Type, :value => val[0][:value], :line => val[0][:line]
- result
+module_eval(<<'.,.,', 'grammar.ra', 330)
+ def _reduce_74(val, _values, result)
+ result = ast AST::Type, :value => val[0][:value], :line => val[0][:line]
+
+ result
end
.,.,
- # reduce 75 omitted
+# reduce 75 omitted
- # reduce 76 omitted
+# reduce 76 omitted
- # reduce 77 omitted
+# reduce 77 omitted
- # reduce 78 omitted
+# reduce 78 omitted
- # reduce 79 omitted
+# reduce 79 omitted
- # reduce 80 omitted
+# reduce 80 omitted
- # reduce 81 omitted
+# reduce 81 omitted
-module_eval <<'.,.,', 'grammar.ra', 354
- def _reduce_82( val, _values, result )
- if val[0][:value] =~ /::/
- raise Puppet::ParseError, "Cannot assign to variables in other namespaces"
- end
- # this is distinct from referencing a variable
- variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line]
- result = ast AST::VarDef, :name => variable, :value => val[2], :line => val[0][:line]
- result
+module_eval(<<'.,.,', 'grammar.ra', 342)
+ def _reduce_82(val, _values, result)
+ raise Puppet::ParseError, "Cannot assign to variables in other namespaces" if val[0][:value] =~ /::/
+ # this is distinct from referencing a variable
+ variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line]
+ result = ast AST::VarDef, :name => variable, :value => val[2], :line => val[0][:line]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 357
- def _reduce_83( val, _values, result )
- result = ast AST::VarDef, :name => val[0], :value => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 348)
+ def _reduce_83(val, _values, result)
+ result = ast AST::VarDef, :name => val[0], :value => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 362
- def _reduce_84( val, _values, result )
- variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line]
- result = ast AST::VarDef, :name => variable, :value => val[2], :append => true, :line => val[0][:line]
- result
+module_eval(<<'.,.,', 'grammar.ra', 352)
+ def _reduce_84(val, _values, result)
+ variable = ast AST::Name, :value => val[0][:value], :line => val[0][:line]
+ result = ast AST::VarDef, :name => variable, :value => val[2], :append => true, :line => val[0][:line]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 367
- def _reduce_85( val, _values, result )
- result = ast AST::ASTArray
- result
+module_eval(<<'.,.,', 'grammar.ra', 358)
+ def _reduce_85(val, _values, result)
+ result = ast AST::ASTArray
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 367
- def _reduce_86( val, _values, result )
- result = val[0]
- result
+module_eval(<<'.,.,', 'grammar.ra', 360)
+ def _reduce_86(val, _values, result)
+ result = val[0]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 376
- def _reduce_87( val, _values, result )
- if val[0].instance_of?(AST::ASTArray)
- val[0].push(val[2])
- result = val[0]
- else
- result = ast AST::ASTArray, :children => [val[0],val[2]]
- end
- result
+module_eval(<<'.,.,', 'grammar.ra', 362)
+ def _reduce_87(val, _values, result)
+ if val[0].instance_of?(AST::ASTArray)
+ val[0].push(val[2])
+ result = val[0]
+ else
+ result = ast AST::ASTArray, :children => [val[0],val[2]]
+ end
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 380
- def _reduce_88( val, _values, result )
- result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :value => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 371)
+ def _reduce_88(val, _values, result)
+ result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :value => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 385
- def _reduce_89( val, _values, result )
- result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :value => val[2],
- :add => true
- result
+module_eval(<<'.,.,', 'grammar.ra', 375)
+ def _reduce_89(val, _values, result)
+ result = ast AST::ResourceParam, :param => val[0][:value], :line => val[0][:line], :value => val[2],
+ :add => true
+
+ result
end
.,.,
- # reduce 90 omitted
+# reduce 90 omitted
+
+# reduce 91 omitted
- # reduce 91 omitted
+module_eval(<<'.,.,', 'grammar.ra', 384)
+ def _reduce_92(val, _values, result)
+ result = ast AST::ASTArray
-module_eval <<'.,.,', 'grammar.ra', 393
- def _reduce_92( val, _values, result )
- result = ast AST::ASTArray
- result
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 393
- def _reduce_93( val, _values, result )
- result = val[0]
- result
+module_eval(<<'.,.,', 'grammar.ra', 386)
+ def _reduce_93(val, _values, result)
+ result = val[0]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 402
- def _reduce_94( val, _values, result )
- if val[0].instance_of?(AST::ASTArray)
- val[0].push(val[2])
- result = val[0]
- else
- result = ast AST::ASTArray, :children => [val[0],val[2]]
- end
- result
+module_eval(<<'.,.,', 'grammar.ra', 388)
+ def _reduce_94(val, _values, result)
+ if val[0].instance_of?(AST::ASTArray)
+ val[0].push(val[2])
+ result = val[0]
+ else
+ result = ast AST::ASTArray, :children => [val[0],val[2]]
+ end
+
+ result
end
.,.,
- # reduce 95 omitted
+# reduce 95 omitted
-module_eval <<'.,.,', 'grammar.ra', 411
- def _reduce_96( val, _values, result )
- if val[0].instance_of?(AST::ASTArray)
- result = val[0].push(val[2])
- else
- result = ast AST::ASTArray, :children => [val[0],val[2]]
- end
- result
+module_eval(<<'.,.,', 'grammar.ra', 398)
+ def _reduce_96(val, _values, result)
+ if val[0].instance_of?(AST::ASTArray)
+ result = val[0].push(val[2])
+ else
+ result = ast AST::ASTArray, :children => [val[0],val[2]]
+ end
+
+ result
end
.,.,
- # reduce 97 omitted
+# reduce 97 omitted
- # reduce 98 omitted
+# reduce 98 omitted
- # reduce 99 omitted
+# reduce 99 omitted
- # reduce 100 omitted
+# reduce 100 omitted
- # reduce 101 omitted
+# reduce 101 omitted
- # reduce 102 omitted
+# reduce 102 omitted
- # reduce 103 omitted
+# reduce 103 omitted
- # reduce 104 omitted
+# reduce 104 omitted
- # reduce 105 omitted
+# reduce 105 omitted
- # reduce 106 omitted
+# reduce 106 omitted
- # reduce 107 omitted
+# reduce 107 omitted
- # reduce 108 omitted
+# reduce 108 omitted
- # reduce 109 omitted
+# reduce 109 omitted
- # reduce 110 omitted
+# reduce 110 omitted
- # reduce 111 omitted
+# reduce 111 omitted
- # reduce 112 omitted
+# reduce 112 omitted
- # reduce 113 omitted
+# reduce 113 omitted
- # reduce 114 omitted
+# reduce 114 omitted
-module_eval <<'.,.,', 'grammar.ra', 440
- def _reduce_115( val, _values, result )
- args = aryfy(val[2])
- result = ast AST::Function,
- :name => val[0][:value], :line => val[0][:line],
- :arguments => args,
- :ftype => :rvalue
- result
+module_eval(<<'.,.,', 'grammar.ra', 427)
+ def _reduce_115(val, _values, result)
+ args = aryfy(val[2])
+ result = ast AST::Function,
+ :name => val[0][:value], :line => val[0][:line],
+ :arguments => args,
+ :ftype => :rvalue
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 445
- def _reduce_116( val, _values, result )
- result = ast AST::Function,
- :name => val[0][:value], :line => val[0][:line],
- :arguments => AST::ASTArray.new({}),
- :ftype => :rvalue
- result
+module_eval(<<'.,.,', 'grammar.ra', 433)
+ def _reduce_116(val, _values, result)
+ result = ast AST::Function,
+ :name => val[0][:value], :line => val[0][:line],
+ :arguments => AST::ASTArray.new({}),
+ :ftype => :rvalue
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 446
- def _reduce_117( val, _values, result )
- result = ast AST::String, :value => val[0][:value], :line => val[0][:line]
- result
+module_eval(<<'.,.,', 'grammar.ra', 439)
+ def _reduce_117(val, _values, result)
+ result = ast AST::String, :value => val[0][:value], :line => val[0][:line]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 447
- def _reduce_118( val, _values, result )
- result = ast AST::Concat, :value => [ast(AST::String,val[0])]+val[1], :line => val[0][:line]
- result
+module_eval(<<'.,.,', 'grammar.ra', 440)
+ def _reduce_118(val, _values, result)
+ result = ast AST::Concat, :value => [ast(AST::String,val[0])]+val[1], :line => val[0][:line]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 449
- def _reduce_119( val, _values, result )
- result = [val[0]] + val[1]
- result
+module_eval(<<'.,.,', 'grammar.ra', 442)
+ def _reduce_119(val, _values, result)
+ result = [val[0]] + val[1]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 451
- def _reduce_120( val, _values, result )
- result = [ast(AST::String,val[0])]
- result
+module_eval(<<'.,.,', 'grammar.ra', 444)
+ def _reduce_120(val, _values, result)
+ result = [ast(AST::String,val[0])]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 452
- def _reduce_121( val, _values, result )
- result = [ast(AST::String,val[0])] + val[1]
- result
+module_eval(<<'.,.,', 'grammar.ra', 445)
+ def _reduce_121(val, _values, result)
+ result = [ast(AST::String,val[0])] + val[1]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 457
- def _reduce_122( val, _values, result )
- result = ast AST::Boolean, :value => val[0][:value], :line => val[0][:line]
- result
+module_eval(<<'.,.,', 'grammar.ra', 448)
+ def _reduce_122(val, _values, result)
+ result = ast AST::Boolean, :value => val[0][:value], :line => val[0][:line]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 462
- def _reduce_123( val, _values, result )
- Puppet.warning addcontext("Deprecation notice: Resource references should now be capitalized")
- result = ast AST::ResourceReference, :type => val[0][:value], :line => val[0][:line], :title => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 452)
+ def _reduce_123(val, _values, result)
+ Puppet.warning addcontext("Deprecation notice: Resource references should now be capitalized")
+ result = ast AST::ResourceReference, :type => val[0][:value], :line => val[0][:line], :title => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 464
- def _reduce_124( val, _values, result )
- result = ast AST::ResourceReference, :type => val[0], :title => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 455)
+ def _reduce_124(val, _values, result)
+ result = ast AST::ResourceReference, :type => val[0], :title => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 468
- def _reduce_125( val, _values, result )
- result = val[1]
- result
+module_eval(<<'.,.,', 'grammar.ra', 459)
+ def _reduce_125(val, _values, result)
+ result = val[1]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 482
- def _reduce_126( val, _values, result )
- @lexer.commentpop
- args = {
- :test => val[0],
- :statements => val[2]
- }
+module_eval(<<'.,.,', 'grammar.ra', 463)
+ def _reduce_126(val, _values, result)
+ @lexer.commentpop
+ args = {
+ :test => val[0],
+ :statements => val[2]
+ }
- if val[4]
- args[:else] = val[4]
- end
+ args[:else] = val[4] if val[4]
+
+ result = ast AST::IfStatement, args
- result = ast AST::IfStatement, args
- result
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 495
- def _reduce_127( val, _values, result )
- @lexer.commentpop
+module_eval(<<'.,.,', 'grammar.ra', 474)
+ def _reduce_127(val, _values, result)
+ @lexer.commentpop
args = {
- :test => val[0],
- :statements => ast(AST::Nop)
- }
+ :test => val[0],
+ :statements => ast(AST::Nop)
+ }
- if val[3]
- args[:else] = val[3]
- end
+ args[:else] = val[3] if val[3]
+
+ result = ast AST::IfStatement, args
- result = ast AST::IfStatement, args
- result
+ result
end
.,.,
- # reduce 128 omitted
+# reduce 128 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 487)
+ def _reduce_129(val, _values, result)
+ result = ast AST::Else, :statements => val[1]
-module_eval <<'.,.,', 'grammar.ra', 501
- def _reduce_129( val, _values, result )
- #@lexer.commentpop
- result = ast AST::Else, :statements => val[1]
- result
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 505
- def _reduce_130( val, _values, result )
- @lexer.commentpop
+module_eval(<<'.,.,', 'grammar.ra', 490)
+ def _reduce_130(val, _values, result)
+ @lexer.commentpop
result = ast AST::Else, :statements => val[2]
- result
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 509
- def _reduce_131( val, _values, result )
- @lexer.commentpop
+module_eval(<<'.,.,', 'grammar.ra', 494)
+ def _reduce_131(val, _values, result)
+ @lexer.commentpop
result = ast AST::Else, :statements => ast(AST::Nop)
- result
+
+ result
end
.,.,
- # reduce 132 omitted
+# reduce 132 omitted
-module_eval <<'.,.,', 'grammar.ra', 526
- def _reduce_133( val, _values, result )
- result = ast AST::InOperator, :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 512)
+ def _reduce_133(val, _values, result)
+ result = ast AST::InOperator, :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 529
- def _reduce_134( val, _values, result )
- result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 515)
+ def _reduce_134(val, _values, result)
+ result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 532
- def _reduce_135( val, _values, result )
- result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 518)
+ def _reduce_135(val, _values, result)
+ result = ast AST::MatchOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 535
- def _reduce_136( val, _values, result )
- result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 521)
+ def _reduce_136(val, _values, result)
+ result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 538
- def _reduce_137( val, _values, result )
- result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 524)
+ def _reduce_137(val, _values, result)
+ result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 541
- def _reduce_138( val, _values, result )
- result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 527)
+ def _reduce_138(val, _values, result)
+ result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 544
- def _reduce_139( val, _values, result )
- result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 530)
+ def _reduce_139(val, _values, result)
+ result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 547
- def _reduce_140( val, _values, result )
- result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 533)
+ def _reduce_140(val, _values, result)
+ result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 550
- def _reduce_141( val, _values, result )
- result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 536)
+ def _reduce_141(val, _values, result)
+ result = ast AST::ArithmeticOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 553
- def _reduce_142( val, _values, result )
- result = ast AST::Minus, :value => val[1]
- result
+module_eval(<<'.,.,', 'grammar.ra', 539)
+ def _reduce_142(val, _values, result)
+ result = ast AST::Minus, :value => val[1]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 556
- def _reduce_143( val, _values, result )
- result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 542)
+ def _reduce_143(val, _values, result)
+ result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 559
- def _reduce_144( val, _values, result )
- result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 545)
+ def _reduce_144(val, _values, result)
+ result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 562
- def _reduce_145( val, _values, result )
- result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 548)
+ def _reduce_145(val, _values, result)
+ result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 565
- def _reduce_146( val, _values, result )
- result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 551)
+ def _reduce_146(val, _values, result)
+ result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 568
- def _reduce_147( val, _values, result )
- result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 554)
+ def _reduce_147(val, _values, result)
+ result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 571
- def _reduce_148( val, _values, result )
- result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 557)
+ def _reduce_148(val, _values, result)
+ result = ast AST::ComparisonOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 574
- def _reduce_149( val, _values, result )
- result = ast AST::Not, :value => val[1]
- result
+module_eval(<<'.,.,', 'grammar.ra', 560)
+ def _reduce_149(val, _values, result)
+ result = ast AST::Not, :value => val[1]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 577
- def _reduce_150( val, _values, result )
- result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 563)
+ def _reduce_150(val, _values, result)
+ result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 580
- def _reduce_151( val, _values, result )
- result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 566)
+ def _reduce_151(val, _values, result)
+ result = ast AST::BooleanOperator, :operator => val[1][:value], :lval => val[0], :rval => val[2]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 583
- def _reduce_152( val, _values, result )
- result = val[1]
- result
+module_eval(<<'.,.,', 'grammar.ra', 569)
+ def _reduce_152(val, _values, result)
+ result = val[1]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 592
- def _reduce_153( val, _values, result )
- @lexer.commentpop
- options = val[3]
- unless options.instance_of?(AST::ASTArray)
- options = ast AST::ASTArray, :children => [val[3]]
- end
- result = ast AST::CaseStatement, :test => val[1], :options => options
- result
+module_eval(<<'.,.,', 'grammar.ra', 573)
+ def _reduce_153(val, _values, result)
+ @lexer.commentpop
+ options = val[3]
+ options = ast AST::ASTArray, :children => [val[3]] unless options.instance_of?(AST::ASTArray)
+ result = ast AST::CaseStatement, :test => val[1], :options => options
+
+ result
end
.,.,
- # reduce 154 omitted
+# reduce 154 omitted
-module_eval <<'.,.,', 'grammar.ra', 602
- def _reduce_155( val, _values, result )
- if val[0].instance_of?(AST::ASTArray)
- val[0].push val[1]
- result = val[0]
- else
- result = ast AST::ASTArray, :children => [val[0], val[1]]
- end
- result
+module_eval(<<'.,.,', 'grammar.ra', 581)
+ def _reduce_155(val, _values, result)
+ if val[0].instance_of?(AST::ASTArray)
+ val[0].push val[1]
+ result = val[0]
+ else
+ result = ast AST::ASTArray, :children => [val[0], val[1]]
+ end
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 607
- def _reduce_156( val, _values, result )
- @lexer.commentpop
- result = ast AST::CaseOpt, :value => val[0], :statements => val[3]
- result
+module_eval(<<'.,.,', 'grammar.ra', 590)
+ def _reduce_156(val, _values, result)
+ @lexer.commentpop
+ result = ast AST::CaseOpt, :value => val[0], :statements => val[3]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 613
- def _reduce_157( val, _values, result )
- @lexer.commentpop
- result = ast(AST::CaseOpt,
- :value => val[0],
- :statements => ast(AST::ASTArray)
- )
- result
+module_eval(<<'.,.,', 'grammar.ra', 593)
+ def _reduce_157(val, _values, result)
+ @lexer.commentpop
+
+ result = ast(
+ AST::CaseOpt,
+ :value => val[0],
+
+ :statements => ast(AST::ASTArray)
+ )
+
+ result
end
.,.,
- # reduce 158 omitted
+# reduce 158 omitted
-module_eval <<'.,.,', 'grammar.ra', 623
- def _reduce_159( val, _values, result )
- if val[0].instance_of?(AST::ASTArray)
- val[0].push(val[2])
- result = val[0]
- else
- result = ast AST::ASTArray, :children => [val[0],val[2]]
- end
- result
+module_eval(<<'.,.,', 'grammar.ra', 605)
+ def _reduce_159(val, _values, result)
+ if val[0].instance_of?(AST::ASTArray)
+ val[0].push(val[2])
+ result = val[0]
+ else
+ result = ast AST::ASTArray, :children => [val[0],val[2]]
+ end
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 627
- def _reduce_160( val, _values, result )
- result = ast AST::Selector, :param => val[0], :values => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 614)
+ def _reduce_160(val, _values, result)
+ result = ast AST::Selector, :param => val[0], :values => val[2]
+
+ result
end
.,.,
- # reduce 161 omitted
+# reduce 161 omitted
-module_eval <<'.,.,', 'grammar.ra', 633
- def _reduce_162( val, _values, result )
- @lexer.commentpop
+module_eval(<<'.,.,', 'grammar.ra', 619)
+ def _reduce_162(val, _values, result)
+ @lexer.commentpop
result = val[1]
- result
+
+ result
end
.,.,
- # reduce 163 omitted
+# reduce 163 omitted
-module_eval <<'.,.,', 'grammar.ra', 643
- def _reduce_164( val, _values, result )
- if val[0].instance_of?(AST::ASTArray)
- val[0].push(val[2])
- result = val[0]
- else
- result = ast AST::ASTArray, :children => [val[0],val[2]]
- end
- result
+module_eval(<<'.,.,', 'grammar.ra', 625)
+ def _reduce_164(val, _values, result)
+ if val[0].instance_of?(AST::ASTArray)
+ val[0].push(val[2])
+ result = val[0]
+ else
+ result = ast AST::ASTArray, :children => [val[0],val[2]]
+ end
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 647
- def _reduce_165( val, _values, result )
- result = ast AST::ResourceParam, :param => val[0], :value => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 634)
+ def _reduce_165(val, _values, result)
+ result = ast AST::ResourceParam, :param => val[0], :value => val[2]
+
+ result
end
.,.,
- # reduce 166 omitted
+# reduce 166 omitted
+
+# reduce 167 omitted
- # reduce 167 omitted
+# reduce 168 omitted
- # reduce 168 omitted
+# reduce 169 omitted
- # reduce 169 omitted
+# reduce 170 omitted
- # reduce 170 omitted
+# reduce 171 omitted
- # reduce 171 omitted
+# reduce 172 omitted
- # reduce 172 omitted
+# reduce 173 omitted
-module_eval <<'.,.,', 'grammar.ra', 658
- def _reduce_173( val, _values, result )
- result = ast AST::Default, :value => val[0][:value], :line => val[0][:line]
- result
+module_eval(<<'.,.,', 'grammar.ra', 646)
+ def _reduce_174(val, _values, result)
+ result = ast AST::Default, :value => val[0][:value], :line => val[0][:line]
+
+ result
end
.,.,
- # reduce 174 omitted
+# reduce 175 omitted
-module_eval <<'.,.,', 'grammar.ra', 661
- def _reduce_175( val, _values, result )
- result = [val[0][:value]]
- result
+module_eval(<<'.,.,', 'grammar.ra', 651)
+ def _reduce_176(val, _values, result)
+ result = [val[0][:value]]
+ result
end
.,.,
- # reduce 176 omitted
+# reduce 177 omitted
-module_eval <<'.,.,', 'grammar.ra', 663
- def _reduce_177( val, _values, result )
- result = val[0] += val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 653)
+ def _reduce_178(val, _values, result)
+ result = val[0] += val[2]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 672
- def _reduce_178( val, _values, result )
- val[1].each do |file|
- import(file)
- end
+module_eval(<<'.,.,', 'grammar.ra', 656)
+ def _reduce_179(val, _values, result)
+ val[1].each do |file|
+ import(file)
+ end
+
+ result = AST::ASTArray.new(:children => [])
- result = AST::ASTArray.new(:children => [])
- result
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 683
- def _reduce_179( val, _values, result )
- @lexer.commentpop
- newdefine classname(val[1]), :arguments => val[2], :code => val[4], :line => val[0][:line]
- @lexer.indefine = false
- result = nil
+module_eval(<<'.,.,', 'grammar.ra', 666)
+ def _reduce_180(val, _values, result)
+ @lexer.commentpop
+ newdefine classname(val[1]), :arguments => val[2], :code => val[4], :line => val[0][:line]
+ @lexer.indefine = false
+ result = nil
#} | DEFINE NAME argumentlist parent LBRACE RBRACE {
- result
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 688
- def _reduce_180( val, _values, result )
- @lexer.commentpop
- newdefine classname(val[1]), :arguments => val[2], :line => val[0][:line]
- @lexer.indefine = false
- result = nil
- result
+module_eval(<<'.,.,', 'grammar.ra', 673)
+ def _reduce_181(val, _values, result)
+ @lexer.commentpop
+ newdefine classname(val[1]), :arguments => val[2], :line => val[0][:line]
+ @lexer.indefine = false
+ result = nil
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 697
- def _reduce_181( val, _values, result )
- @lexer.commentpop
- # Our class gets defined in the parent namespace, not our own.
- @lexer.namepop
- newclass classname(val[1]), :arguments => val[2], :parent => val[3], :code => val[5], :line => val[0][:line]
- result = nil
- result
+module_eval(<<'.,.,', 'grammar.ra', 681)
+ def _reduce_182(val, _values, result)
+ @lexer.commentpop
+ # Our class gets defined in the parent namespace, not our own.
+ @lexer.namepop
+ newclass classname(val[1]), :arguments => val[2], :parent => val[3], :code => val[5], :line => val[0][:line]
+ result = nil
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 703
- def _reduce_182( val, _values, result )
- @lexer.commentpop
- # Our class gets defined in the parent namespace, not our own.
- @lexer.namepop
- newclass classname(val[1]), :arguments => val[2], :parent => val[3], :line => val[0][:line]
- result = nil
- result
+module_eval(<<'.,.,', 'grammar.ra', 687)
+ def _reduce_183(val, _values, result)
+ @lexer.commentpop
+ # Our class gets defined in the parent namespace, not our own.
+ @lexer.namepop
+ newclass classname(val[1]), :arguments => val[2], :parent => val[3], :line => val[0][:line]
+ result = nil
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 709
- def _reduce_183( val, _values, result )
- @lexer.commentpop
- newnode val[1], :parent => val[2], :code => val[4], :line => val[0][:line]
- result = nil
- result
+module_eval(<<'.,.,', 'grammar.ra', 695)
+ def _reduce_184(val, _values, result)
+ @lexer.commentpop
+ newnode val[1], :parent => val[2], :code => val[4], :line => val[0][:line]
+ result = nil
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 713
- def _reduce_184( val, _values, result )
- @lexer.commentpop
- newnode val[1], :parent => val[2], :line => val[0][:line]
- result = nil
- result
+module_eval(<<'.,.,', 'grammar.ra', 699)
+ def _reduce_185(val, _values, result)
+ @lexer.commentpop
+ newnode val[1], :parent => val[2], :line => val[0][:line]
+ result = nil
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 714
- def _reduce_185( val, _values, result )
- result = val[0][:value]
- result
+module_eval(<<'.,.,', 'grammar.ra', 704)
+ def _reduce_186(val, _values, result)
+ result = val[0][:value]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 716
- def _reduce_186( val, _values, result )
- result = val[0][:value]
- result
+module_eval(<<'.,.,', 'grammar.ra', 706)
+ def _reduce_187(val, _values, result)
+ result = val[0][:value]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 717
- def _reduce_187( val, _values, result )
- result = val[0][:value]
- result
+module_eval(<<'.,.,', 'grammar.ra', 707)
+ def _reduce_188(val, _values, result)
+ result = val[0][:value]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 718
- def _reduce_188( val, _values, result )
- result = "class"
- result
+module_eval(<<'.,.,', 'grammar.ra', 708)
+ def _reduce_189(val, _values, result)
+ result = "class"
+ result
end
.,.,
- # reduce 189 omitted
+# reduce 190 omitted
-module_eval <<'.,.,', 'grammar.ra', 728
- def _reduce_190( val, _values, result )
- result = val[0]
+module_eval(<<'.,.,', 'grammar.ra', 714)
+ def _reduce_191(val, _values, result)
+ result = val[0]
result = [result] unless result.is_a?(Array)
result << val[2]
- result
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 732
- def _reduce_191( val, _values, result )
- result = ast AST::HostName, :value => val[0]
- result
+module_eval(<<'.,.,', 'grammar.ra', 720)
+ def _reduce_192(val, _values, result)
+ result = ast AST::HostName, :value => val[0]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 733
- def _reduce_192( val, _values, result )
- result = val[0][:value]
- result
+module_eval(<<'.,.,', 'grammar.ra', 723)
+ def _reduce_193(val, _values, result)
+ result = val[0][:value]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 734
- def _reduce_193( val, _values, result )
- result = val[0][:value]
- result
+module_eval(<<'.,.,', 'grammar.ra', 724)
+ def _reduce_194(val, _values, result)
+ result = val[0][:value]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 735
- def _reduce_194( val, _values, result )
- result = val[0][:value]
- result
+module_eval(<<'.,.,', 'grammar.ra', 725)
+ def _reduce_195(val, _values, result)
+ result = val[0][:value]
+ result
end
.,.,
- # reduce 195 omitted
+# reduce 196 omitted
-module_eval <<'.,.,', 'grammar.ra', 741
- def _reduce_196( val, _values, result )
- result = nil
- result
+module_eval(<<'.,.,', 'grammar.ra', 729)
+ def _reduce_197(val, _values, result)
+ result = nil
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 745
- def _reduce_197( val, _values, result )
- result = ast AST::ASTArray, :children => []
- result
+module_eval(<<'.,.,', 'grammar.ra', 733)
+ def _reduce_198(val, _values, result)
+ result = ast AST::ASTArray, :children => []
+
+ result
end
.,.,
- # reduce 198 omitted
+# reduce 199 omitted
-module_eval <<'.,.,', 'grammar.ra', 750
- def _reduce_199( val, _values, result )
- result = nil
- result
+module_eval(<<'.,.,', 'grammar.ra', 738)
+ def _reduce_200(val, _values, result)
+ result = nil
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 754
- def _reduce_200( val, _values, result )
- result = val[1]
+module_eval(<<'.,.,', 'grammar.ra', 741)
+ def _reduce_201(val, _values, result)
+ result = val[1]
result = [result] unless result[0].is_a?(Array)
- result
+
+ result
end
.,.,
- # reduce 201 omitted
+# reduce 202 omitted
-module_eval <<'.,.,', 'grammar.ra', 761
- def _reduce_202( val, _values, result )
- result = val[0]
+module_eval(<<'.,.,', 'grammar.ra', 747)
+ def _reduce_203(val, _values, result)
+ result = val[0]
result = [result] unless result[0].is_a?(Array)
result << val[2]
- result
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 766
- def _reduce_203( val, _values, result )
- Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
- result = [val[0][:value], val[2]]
- result
+module_eval(<<'.,.,', 'grammar.ra', 753)
+ def _reduce_204(val, _values, result)
+ Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
+ result = [val[0][:value], val[2]]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 770
- def _reduce_204( val, _values, result )
- Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
+module_eval(<<'.,.,', 'grammar.ra', 757)
+ def _reduce_205(val, _values, result)
+ Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
result = [val[0][:value]]
- result
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 772
- def _reduce_205( val, _values, result )
- result = [val[0][:value], val[2]]
- result
+module_eval(<<'.,.,', 'grammar.ra', 760)
+ def _reduce_206(val, _values, result)
+ result = [val[0][:value], val[2]]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 774
- def _reduce_206( val, _values, result )
- result = [val[0][:value]]
- result
+module_eval(<<'.,.,', 'grammar.ra', 762)
+ def _reduce_207(val, _values, result)
+ result = [val[0][:value]]
+
+ result
end
.,.,
- # reduce 207 omitted
+# reduce 208 omitted
-module_eval <<'.,.,', 'grammar.ra', 779
- def _reduce_208( val, _values, result )
- result = val[1]
- result
+module_eval(<<'.,.,', 'grammar.ra', 767)
+ def _reduce_209(val, _values, result)
+ result = val[1]
+
+ result
end
.,.,
- # reduce 209 omitted
+# reduce 210 omitted
-module_eval <<'.,.,', 'grammar.ra', 784
- def _reduce_210( val, _values, result )
- result = val[1]
- result
+module_eval(<<'.,.,', 'grammar.ra', 772)
+ def _reduce_211(val, _values, result)
+ result = val[1]
+
+ result
end
.,.,
- # reduce 211 omitted
+# reduce 212 omitted
- # reduce 212 omitted
+# reduce 213 omitted
-module_eval <<'.,.,', 'grammar.ra', 790
- def _reduce_213( val, _values, result )
- result = ast AST::Variable, :value => val[0][:value], :line => val[0][:line]
- result
+module_eval(<<'.,.,', 'grammar.ra', 778)
+ def _reduce_214(val, _values, result)
+ result = ast AST::Variable, :value => val[0][:value], :line => val[0][:line]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 798
- def _reduce_214( val, _values, result )
- if val[1].instance_of?(AST::ASTArray)
- result = val[1]
- else
- result = ast AST::ASTArray, :children => [val[1]]
- end
- result
+module_eval(<<'.,.,', 'grammar.ra', 782)
+ def _reduce_215(val, _values, result)
+ if val[1].instance_of?(AST::ASTArray)
+ result = val[1]
+ else
+ result = ast AST::ASTArray, :children => [val[1]]
+ end
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 805
- def _reduce_215( val, _values, result )
- if val[1].instance_of?(AST::ASTArray)
- result = val[1]
- else
- result = ast AST::ASTArray, :children => [val[1]]
- end
- result
+module_eval(<<'.,.,', 'grammar.ra', 789)
+ def _reduce_216(val, _values, result)
+ if val[1].instance_of?(AST::ASTArray)
+ result = val[1]
+ else
+ result = ast AST::ASTArray, :children => [val[1]]
+ end
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 807
- def _reduce_216( val, _values, result )
- result = ast AST::ASTArray
- result
+module_eval(<<'.,.,', 'grammar.ra', 795)
+ def _reduce_217(val, _values, result)
+ result = ast AST::ASTArray
+
+ result
end
.,.,
- # reduce 217 omitted
+# reduce 218 omitted
- # reduce 218 omitted
+# reduce 219 omitted
- # reduce 219 omitted
+# reduce 220 omitted
-module_eval <<'.,.,', 'grammar.ra', 812
- def _reduce_220( val, _values, result )
- result = nil
- result
+module_eval(<<'.,.,', 'grammar.ra', 802)
+ def _reduce_221(val, _values, result)
+ result = nil
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 817
- def _reduce_221( val, _values, result )
- result = ast AST::Regex, :value => val[0][:value]
- result
+module_eval(<<'.,.,', 'grammar.ra', 805)
+ def _reduce_222(val, _values, result)
+ result = ast AST::Regex, :value => val[0][:value]
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 825
- def _reduce_222( val, _values, result )
- if val[1].instance_of?(AST::ASTHash)
- result = val[1]
- else
- result = ast AST::ASTHash, { :value => val[1] }
- end
- result
+module_eval(<<'.,.,', 'grammar.ra', 809)
+ def _reduce_223(val, _values, result)
+ if val[1].instance_of?(AST::ASTHash)
+ result = val[1]
+ else
+ result = ast AST::ASTHash, { :value => val[1] }
end
-.,.,
-module_eval <<'.,.,', 'grammar.ra', 832
- def _reduce_223( val, _values, result )
- if val[1].instance_of?(AST::ASTHash)
- result = val[1]
- else
- result = ast AST::ASTHash, { :value => val[1] }
- end
- result
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 834
- def _reduce_224( val, _values, result )
- result = ast AST::ASTHash
- result
+module_eval(<<'.,.,', 'grammar.ra', 816)
+ def _reduce_224(val, _values, result)
+ if val[1].instance_of?(AST::ASTHash)
+ result = val[1]
+ else
+ result = ast AST::ASTHash, { :value => val[1] }
+ end
+
+ result
end
.,.,
- # reduce 225 omitted
+module_eval(<<'.,.,', 'grammar.ra', 822)
+ def _reduce_225(val, _values, result)
+ result = ast AST::ASTHash
-module_eval <<'.,.,', 'grammar.ra', 844
- def _reduce_226( val, _values, result )
- if val[0].instance_of?(AST::ASTHash)
- result = val[0].merge(val[2])
- else
- result = ast AST::ASTHash, :value => val[0]
- result.merge(val[2])
- end
- result
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 848
- def _reduce_227( val, _values, result )
- result = ast AST::ASTHash, { :value => { val[0] => val[2] } }
- result
+# reduce 226 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 827)
+ def _reduce_227(val, _values, result)
+ if val[0].instance_of?(AST::ASTHash)
+ result = val[0].merge(val[2])
+ else
+ result = ast AST::ASTHash, :value => val[0]
+ result.merge(val[2])
+ end
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 849
- def _reduce_228( val, _values, result )
- result = val[0][:value]
- result
+module_eval(<<'.,.,', 'grammar.ra', 836)
+ def _reduce_228(val, _values, result)
+ result = ast AST::ASTHash, { :value => { val[0] => val[2] } }
+
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 850
- def _reduce_229( val, _values, result )
- result = val[0]
- result
+module_eval(<<'.,.,', 'grammar.ra', 839)
+ def _reduce_229(val, _values, result)
+ result = val[0][:value]
+ result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 855
- def _reduce_230( val, _values, result )
- result = ast AST::HashOrArrayAccess, :variable => val[0][:value], :key => val[2]
- result
+module_eval(<<'.,.,', 'grammar.ra', 840)
+ def _reduce_230(val, _values, result)
+ result = val[0]
+ result
end
.,.,
- # reduce 231 omitted
+module_eval(<<'.,.,', 'grammar.ra', 843)
+ def _reduce_231(val, _values, result)
+ result = ast AST::HashOrArrayAccess, :variable => val[0][:value], :key => val[2]
-module_eval <<'.,.,', 'grammar.ra', 860
- def _reduce_232( val, _values, result )
- result = ast AST::HashOrArrayAccess, :variable => val[0], :key => val[2]
- result
+ result
end
.,.,
- def _reduce_none( val, _values, result )
- result
- end
+# reduce 232 omitted
- end # class Parser
+module_eval(<<'.,.,', 'grammar.ra', 848)
+ def _reduce_233(val, _values, result)
+ result = ast AST::HashOrArrayAccess, :variable => val[0], :key => val[2]
- end # module Parser
+ result
+ end
+.,.,
+
+def _reduce_none(val, _values, result)
+ val[0]
+end
-end # module Puppet
+ end # class Parser
+ end # module Parser
+ end # module Puppet
diff --git a/lib/puppet/parser/parser_support.rb b/lib/puppet/parser/parser_support.rb
index 7bbebb124..7a0aa2601 100644
--- a/lib/puppet/parser/parser_support.rb
+++ b/lib/puppet/parser/parser_support.rb
@@ -135,19 +135,19 @@ class Puppet::Parser::Parser
# Create a new class, or merge with an existing class.
def newclass(name, options = {})
- known_resource_types.add Puppet::Resource::Type.new(:hostclass, name, ast_context(true).merge(options))
+ known_resource_types.add Puppet::Resource::Type.new(:hostclass, name, ast_context(true, options[:line]).merge(options))
end
# Create a new definition.
def newdefine(name, options = {})
- known_resource_types.add Puppet::Resource::Type.new(:definition, name, ast_context(true).merge(options))
+ known_resource_types.add Puppet::Resource::Type.new(:definition, name, ast_context(true, options[:line]).merge(options))
end
# Create a new node. Nodes are special, because they're stored in a global
# table, not according to namespaces.
def newnode(names, options = {})
names = [names] unless names.instance_of?(Array)
- context = ast_context(true)
+ context = ast_context(true, options[:line])
names.collect do |name|
known_resource_types.add(Puppet::Resource::Type.new(:node, name, context.merge(options)))
end
diff --git a/lib/puppet/provider/computer/computer.rb b/lib/puppet/provider/computer/computer.rb
index a6be6bdfe..dd055beb3 100644
--- a/lib/puppet/provider/computer/computer.rb
+++ b/lib/puppet/provider/computer/computer.rb
@@ -10,9 +10,7 @@ Puppet::Type.type(:computer).provide :directoryservice, :parent => Puppet::Provi
domain, not in remote directories.
If you wish to manage /etc/hosts on Mac OS X, then simply use the host
- type as per other platforms.
-
- "
+ type as per other platforms."
confine :operatingsystem => :darwin
defaultfor :operatingsystem => :darwin
diff --git a/lib/puppet/provider/mount.rb b/lib/puppet/provider/mount.rb
index 354ddb16d..65296eed2 100644
--- a/lib/puppet/provider/mount.rb
+++ b/lib/puppet/provider/mount.rb
@@ -14,8 +14,11 @@ module Puppet::Provider::Mount
args << "-o" << self.options if self.options and self.options != :absent
args << resource[:name]
- flush if respond_to?(:flush)
mountcmd(*args)
+ case get(:ensure)
+ when :absent; set(:ensure => :ghost)
+ when :unmounted; set(:ensure => :mounted)
+ end
end
def remount
@@ -30,24 +33,17 @@ module Puppet::Provider::Mount
# This only works when the mount point is synced to the fstab.
def unmount
- umount resource[:name]
+ umount(resource[:name])
+
+ # Update property hash for future queries (e.g. refresh is called)
+ case get(:ensure)
+ when :mounted; set(:ensure => :unmounted)
+ when :ghost; set(:ensure => :absent)
+ end
end
# Is the mount currently mounted?
def mounted?
- platform = Facter.value("operatingsystem")
- name = resource[:name]
- mounts = mountcmd.split("\n").find do |line|
- case platform
- when "Darwin"
- line =~ / on #{name} / or line =~ %r{ on /private/var/automount#{name}}
- when "Solaris", "HP-UX"
- line =~ /^#{name} on /
- when "AIX"
- line.split(/\s+/)[2] == name
- else
- line =~ / on #{name} /
- end
- end
+ [:mounted, :ghost].include?(get(:ensure))
end
end
diff --git a/lib/puppet/provider/mount/parsed.rb b/lib/puppet/provider/mount/parsed.rb
index 82d1628bd..11c5e21a9 100755
--- a/lib/puppet/provider/mount/parsed.rb
+++ b/lib/puppet/provider/mount/parsed.rb
@@ -8,21 +8,17 @@ else
fstab = "/etc/fstab"
end
-
- Puppet::Type.type(:mount).provide(
- :parsed,
+Puppet::Type.type(:mount).provide(
+ :parsed,
:parent => Puppet::Provider::ParsedFile,
:default_target => fstab,
-
:filetype => :flat
) do
include Puppet::Provider::Mount
- #confine :exists => fstab
commands :mountcmd => "mount", :umount => "umount"
- @platform = Facter["operatingsystem"].value
- case @platform
+ case Facter["operatingsystem"]
when "Solaris"
@fields = [:device, :blockdevice, :name, :fstype, :pass, :atboot, :options]
else
@@ -43,5 +39,68 @@ end
record_line self.name, :fields => @fields, :separator => /\s+/, :joiner => "\t", :optional => optional_fields
-end
+ # Every entry in fstab is :unmounted until we can prove different
+ def self.prefetch_hook(target_records)
+ target_records.collect do |record|
+ record[:ensure] = :unmounted if record[:record_type] == :parsed
+ record
+ end
+ end
+
+ def self.prefetch(resources = nil)
+ # Get providers for all resources the user defined and that match
+ # a record in /etc/fstab.
+ super
+ # We need to do two things now:
+ # - Update ensure from :unmounted to :mounted if the resource is mounted
+ # - Check for mounted devices that are not in fstab and
+ # set ensure to :ghost (if the user wants to add an entry
+ # to fstab we need to know if the device was mounted before)
+ mountinstances.each do |hash|
+ if mount = resources[hash[:name]]
+ case mount.provider.get(:ensure)
+ when :absent # Mount not in fstab
+ mount.provider.set(:ensure => :ghost)
+ when :unmounted # Mount in fstab
+ mount.provider.set(:ensure => :mounted)
+ end
+ end
+ end
+ end
+ def self.mountinstances
+ # XXX: Will not work for mount points that have spaces in path (does fstab support this anyways?)
+ regex = case Facter.value(:operatingsystem)
+ when "Darwin"
+ / on (?:\/private\/var\/automount)?(\S*)/
+ when "Solaris", "HP-UX"
+ /^(\S*) on /
+ when "AIX"
+ /^(?:\S*\s+\S+\s+)(\S+)/
+ else
+ / on (\S*)/
+ end
+ instances = []
+ mount_output = mountcmd.split("\n")
+ if mount_output.length >= 2 and mount_output[1] =~ /^[- \t]*$/
+ # On some OSes (e.g. AIX) mount output begins with a header line
+ # followed by a line consisting of dashes and whitespace.
+ # Discard these two lines.
+ mount_output[0..1] = []
+ end
+ mount_output.each do |line|
+ if match = regex.match(line) and name = match.captures.first
+ instances << {:name => name, :mounted => :yes} # Only :name is important here
+ else
+ raise Puppet::Error, "Could not understand line #{line} from mount output"
+ end
+ end
+ instances
+ end
+
+ def flush
+ needs_mount = @property_hash.delete(:needs_mount)
+ super
+ mount if needs_mount
+ end
+end
diff --git a/lib/puppet/provider/parsedfile.rb b/lib/puppet/provider/parsedfile.rb
index ffd36e59f..75a215f4b 100755
--- a/lib/puppet/provider/parsedfile.rb
+++ b/lib/puppet/provider/parsedfile.rb
@@ -334,7 +334,9 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
@property_hash[:target] = @resource.should(:target) || self.class.default_target
self.class.modified(@property_hash[:target])
end
- @property_hash[:name] ||= @resource.name
+ @resource.class.key_attributes.each do |attr|
+ @property_hash[attr] ||= @resource[attr]
+ end
self.class.flush(@property_hash)
diff --git a/lib/puppet/provider/service/daemontools.rb b/lib/puppet/provider/service/daemontools.rb
index 65abf7728..bbb962a71 100644
--- a/lib/puppet/provider/service/daemontools.rb
+++ b/lib/puppet/provider/service/daemontools.rb
@@ -19,10 +19,10 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
or this can be overriden in the service resource parameters::
- service {
- \"myservice\":
- provider => \"daemontools\", path => \"/path/to/daemons\";
- }
+ service { \"myservice\":
+ provider => \"daemontools\",
+ path => \"/path/to/daemons\",
+ }
This provider supports out of the box:
@@ -31,10 +31,10 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
* restart
* status
- If a service has ensure => \"running\", it will link /path/to/daemon to
+ If a service has `ensure => \"running\"`, it will link /path/to/daemon to
/path/to/service, which will automatically enable the service.
- If a service has ensure => \"stopped\", it will only down the service, not
+ If a service has `ensure => \"stopped\"`, it will only down the service, not
remove the /path/to/service link.
"
diff --git a/lib/puppet/provider/service/gentoo.rb b/lib/puppet/provider/service/gentoo.rb
index 382c74267..20f5d77e6 100644
--- a/lib/puppet/provider/service/gentoo.rb
+++ b/lib/puppet/provider/service/gentoo.rb
@@ -48,5 +48,3 @@ Puppet::Type.type(:service).provide :gentoo, :parent => :init do
raise Puppet::Error, "Could not enable #{self.name}: #{output}"
end
end
-
-# $Id $
diff --git a/lib/puppet/provider/service/launchd.rb b/lib/puppet/provider/service/launchd.rb
index 1632edabf..07c549a8b 100644
--- a/lib/puppet/provider/service/launchd.rb
+++ b/lib/puppet/provider/service/launchd.rb
@@ -3,33 +3,36 @@ require 'facter/util/plist'
Puppet::Type.type(:service).provide :launchd, :parent => :base do
desc "launchd service management framework.
- This provider manages launchd jobs, the default service framework for
- Mac OS X, that has also been open sourced by Apple for possible use on
- other platforms.
+ This provider manages jobs with launchd, which is the default service framework for
+ Mac OS X and is potentially available for use on other platforms.
See:
+
* http://developer.apple.com/macosx/launchd.html
* http://launchd.macosforge.org/
This provider reads plists out of the following directories:
+
* /System/Library/LaunchDaemons
* /System/Library/LaunchAgents
* /Library/LaunchDaemons
* /Library/LaunchAgents
- and builds up a list of services based upon each plists \"Label\" entry.
+ ...and builds up a list of services based upon each plist's \"Label\" entry.
This provider supports:
+
* ensure => running/stopped,
* enable => true/false
* status
* restart
Here is how the Puppet states correspond to launchd states:
- * stopped => job unloaded
- * started => job loaded
- * enabled => 'Disable' removed from job plist file
- * disabled => 'Disable' added to job plist file
+
+ * stopped --- job unloaded
+ * started --- job loaded
+ * enabled --- 'Disable' removed from job plist file
+ * disabled --- 'Disable' added to job plist file
Note that this allows you to do something launchctl can't do, which is to
be in a state of \"stopped/enabled\ or \"running/disabled\".
diff --git a/lib/puppet/provider/service/runit.rb b/lib/puppet/provider/service/runit.rb
index 0315b9597..736e3db71 100644
--- a/lib/puppet/provider/service/runit.rb
+++ b/lib/puppet/provider/service/runit.rb
@@ -18,10 +18,10 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
or this can be overriden in the service resource parameters::
- service {
- \"myservice\":
- provider => \"runit\", path => \"/path/to/daemons\";
- }
+ service { \"myservice\":
+ provider => \"runit\",
+ path => \"/path/to/daemons\",
+ }
This provider supports out of the box:
diff --git a/lib/puppet/provider/user/useradd.rb b/lib/puppet/provider/user/useradd.rb
index ba406cc63..b87971738 100644
--- a/lib/puppet/provider/user/useradd.rb
+++ b/lib/puppet/provider/user/useradd.rb
@@ -19,7 +19,7 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
value !~ /\s/
end
- has_features :manages_homedir, :allows_duplicates, :manages_expiry
+ has_features :manages_homedir, :allows_duplicates, :manages_expiry, :system_users
has_features :manages_passwords, :manages_password_age if Puppet.features.libshadow?
@@ -46,6 +46,10 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
cmd
end
+ def check_system_users
+ @resource.system? ? ["-r"] : []
+ end
+
def add_properties
cmd = []
Puppet::Type.type(:user).validproperties.each do |property|
@@ -66,6 +70,7 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
cmd += check_allow_dup
cmd += check_manage_home
cmd += check_manage_expiry
+ cmd += check_system_users
cmd << @resource[:name]
end
diff --git a/lib/puppet/rails/database/004_add_inventory_service_tables.rb b/lib/puppet/rails/database/004_add_inventory_service_tables.rb
new file mode 100644
index 000000000..6e6b28c0c
--- /dev/null
+++ b/lib/puppet/rails/database/004_add_inventory_service_tables.rb
@@ -0,0 +1,36 @@
+class AddInventoryServiceTables < ActiveRecord::Migration
+ def self.up
+ unless ActiveRecord::Base.connection.tables.include?("inventory_nodes")
+ create_table :inventory_nodes do |t|
+ t.column :name, :string, :null => false
+ t.column :timestamp, :datetime, :null => false
+ t.column :updated_at, :datetime
+ t.column :created_at, :datetime
+ end
+
+ add_index :inventory_nodes, :name, :unique => true
+ end
+
+ unless ActiveRecord::Base.connection.tables.include?("inventory_facts")
+ create_table :inventory_facts, :id => false do |t|
+ t.column :node_id, :integer, :null => false
+ t.column :name, :string, :null => false
+ t.column :value, :text, :null => false
+ end
+
+ add_index :inventory_facts, [:node_id, :name], :unique => true
+ end
+ end
+
+ def self.down
+ unless ActiveRecord::Base.connection.tables.include?("inventory_nodes")
+ remove_index :inventory_nodes, :name
+ drop_table :inventory_nodes
+ end
+
+ if ActiveRecord::Base.connection.tables.include?("inventory_facts")
+ remove_index :inventory_facts, [:node_id, :name]
+ drop_table :inventory_facts
+ end
+ end
+end
diff --git a/lib/puppet/rails/database/schema.rb b/lib/puppet/rails/database/schema.rb
index 8b389d773..7b75f4216 100644
--- a/lib/puppet/rails/database/schema.rb
+++ b/lib/puppet/rails/database/schema.rb
@@ -103,6 +103,23 @@ class Puppet::Rails::Schema
t.column :created_at, :datetime
end
add_index :param_names, :name
+
+ create_table :inventory_nodes do |t|
+ t.column :name, :string, :null => false
+ t.column :timestamp, :datetime, :null => false
+ t.column :updated_at, :datetime
+ t.column :created_at, :datetime
+ end
+
+ add_index :inventory_nodes, :name, :unique => true
+
+ create_table :inventory_facts, :id => false do |t|
+ t.column :node_id, :integer, :null => false
+ t.column :name, :string, :null => false
+ t.column :value, :text, :null => false
+ end
+
+ add_index :inventory_facts, [:node_id, :name], :unique => true
end
end
ensure
diff --git a/lib/puppet/rails/fact_name.rb b/lib/puppet/rails/fact_name.rb
index fb40ec48f..4273399e5 100644
--- a/lib/puppet/rails/fact_name.rb
+++ b/lib/puppet/rails/fact_name.rb
@@ -3,5 +3,3 @@ require 'puppet/rails/fact_value'
class Puppet::Rails::FactName < ActiveRecord::Base
has_many :fact_values, :dependent => :destroy
end
-
-# $Id: fact_name.rb 1952 2006-12-19 05:47:57Z luke $
diff --git a/lib/puppet/rails/fact_value.rb b/lib/puppet/rails/fact_value.rb
index 45a88b2dc..9fd81ae1c 100644
--- a/lib/puppet/rails/fact_value.rb
+++ b/lib/puppet/rails/fact_value.rb
@@ -6,5 +6,3 @@ class Puppet::Rails::FactValue < ActiveRecord::Base
"#{self.fact_name.name}"
end
end
-
-# $Id: fact_value.rb 1952 2006-12-19 05:47:57Z luke $
diff --git a/lib/puppet/rails/inventory_fact.rb b/lib/puppet/rails/inventory_fact.rb
new file mode 100644
index 000000000..aa6334eef
--- /dev/null
+++ b/lib/puppet/rails/inventory_fact.rb
@@ -0,0 +1,5 @@
+require 'puppet/rails/inventory_node'
+
+class Puppet::Rails::InventoryFact < ::ActiveRecord::Base
+ belongs_to :node, :class_name => "Puppet::Rails::InventoryNode"
+end
diff --git a/lib/puppet/rails/inventory_node.rb b/lib/puppet/rails/inventory_node.rb
new file mode 100644
index 000000000..52f8621a4
--- /dev/null
+++ b/lib/puppet/rails/inventory_node.rb
@@ -0,0 +1,25 @@
+require 'puppet/rails/inventory_fact'
+
+class Puppet::Rails::InventoryNode < ::ActiveRecord::Base
+ has_many :facts, :class_name => "Puppet::Rails::InventoryFact", :foreign_key => :node_id, :dependent => :delete_all
+
+ named_scope :has_fact_with_value, lambda { |name,value|
+ {
+ :conditions => ["inventory_facts.name = ? AND inventory_facts.value = ?", name, value],
+ :joins => :facts
+ }
+ }
+
+ named_scope :has_fact_without_value, lambda { |name,value|
+ {
+ :conditions => ["inventory_facts.name = ? AND inventory_facts.value != ?", name, value],
+ :joins => :facts
+ }
+ }
+
+ def facts_to_hash
+ facts.inject({}) do |fact_hash,fact|
+ fact_hash.merge(fact.name => fact.value)
+ end
+ end
+end
diff --git a/lib/puppet/reference/configuration.rb b/lib/puppet/reference/configuration.rb
index c8ff145ba..6581427ff 100644
--- a/lib/puppet/reference/configuration.rb
+++ b/lib/puppet/reference/configuration.rb
@@ -122,7 +122,7 @@ likewise be redirected to a file:
Puppet can also create user and group accounts for itself (one `puppet` group
and one `puppet` user) if it is invoked as `root` with the `--mkusers` argument:
- $ puppet agent --mkusers
+ $ puppet master --mkusers
## Signals
diff --git a/lib/puppet/reference/metaparameter.rb b/lib/puppet/reference/metaparameter.rb
index c16a1d33a..3c4c08701 100644
--- a/lib/puppet/reference/metaparameter.rb
+++ b/lib/puppet/reference/metaparameter.rb
@@ -29,7 +29,7 @@ in your manifest, including defined components.
params.sort { |a,b|
a.to_s <=> b.to_s
}.each { |param|
- str += paramwrap(param.to_s, scrub(Puppet::Type.metaparamdoc(param)), :level => 4)
+ str += paramwrap(param.to_s, scrub(Puppet::Type.metaparamdoc(param)), :level => 3)
}
rescue => detail
puts detail.backtrace
diff --git a/lib/puppet/reports/store.rb b/lib/puppet/reports/store.rb
index 99a9fc177..625a263b3 100644
--- a/lib/puppet/reports/store.rb
+++ b/lib/puppet/reports/store.rb
@@ -15,7 +15,10 @@ Puppet::Reports.register_report(:store) do
dir = File.join(Puppet[:reportdir], client)
- Dir.mkdir(dir, 0750) unless FileTest.exists?(dir)
+ if ! FileTest.exists?(dir)
+ FileUtils.mkdir_p(dir)
+ FileUtils.chmod_R(0750, dir)
+ end
# Now store the report.
now = Time.now.gmtime
diff --git a/lib/puppet/resource.rb b/lib/puppet/resource.rb
index e832804f5..214516908 100644
--- a/lib/puppet/resource.rb
+++ b/lib/puppet/resource.rb
@@ -5,6 +5,11 @@ require 'puppet/util/pson'
# The simplest resource class. Eventually it will function as the
# base class for all resource-like behaviour.
class Puppet::Resource
+ # This stub class is only needed for serialization compatibility with 0.25.x.
+ # Specifically, it exists to provide a compatibility API when using YAML
+ # serialized objects loaded from StoreConfigs.
+ Reference = Puppet::Resource
+
include Puppet::Util::Tagging
require 'puppet/resource/type_collection_helper'
@@ -87,7 +92,7 @@ class Puppet::Resource
def yaml_property_munge(x)
case x
when Hash
- x.inject({}) { |h,kv|
+ x.inject({}) { |h,kv|
k,v = kv
h[k] = self.class.value_to_pson_data(v)
h
@@ -104,7 +109,7 @@ class Puppet::Resource
# be overridden at some point, but this works for now.
%w{has_key? keys length delete empty? <<}.each do |method|
define_method(method) do |*args|
- @parameters.send(method, *args)
+ parameters.send(method, *args)
end
end
@@ -112,13 +117,13 @@ class Puppet::Resource
# to lower-case symbols.
def []=(param, value)
validate_parameter(param) if validate_parameters
- @parameters[parameter_name(param)] = value
+ parameters[parameter_name(param)] = value
end
# Return a given parameter's value. Converts all passed names
# to lower-case symbols.
def [](param)
- @parameters[parameter_name(param)]
+ parameters[parameter_name(param)]
end
def ==(other)
@@ -140,11 +145,11 @@ class Puppet::Resource
# Iterate over each param/value pair, as required for Enumerable.
def each
- @parameters.each { |p,v| yield p, v }
+ parameters.each { |p,v| yield p, v }
end
def include?(parameter)
- super || @parameters.keys.include?( parameter_name(parameter) )
+ super || parameters.keys.include?( parameter_name(parameter) )
end
# These two methods are extracted into a Helper
@@ -170,14 +175,6 @@ class Puppet::Resource
end
end
- # This stub class is only needed for serialization compatibility with 0.25.x
- class Reference
- attr_accessor :type,:title
- def initialize(type,title)
- @type,@title = type,title
- end
- end
-
# Create our resource.
def initialize(type, title = nil, attributes = {})
@parameters = {}
@@ -204,7 +201,7 @@ class Puppet::Resource
tag(self.type)
tag(self.title) if valid_tag?(self.title)
- @reference = Reference.new(@type,@title) # for serialization compatibility with 0.25.x
+ @reference = self # for serialization compatibility with 0.25.x
if strict? and ! resource_type
if @type == 'Class'
raise ArgumentError, "Could not find declared class #{title}"
@@ -234,7 +231,7 @@ class Puppet::Resource
# Produce a simple hash of our parameters.
def to_hash
- parse_title.merge @parameters
+ parse_title.merge parameters
end
def to_s
@@ -255,15 +252,26 @@ class Puppet::Resource
# Convert our resource to Puppet code.
def to_manifest
- "%s { '%s':\n%s\n}" % [self.type.to_s.downcase, self.title,
- @parameters.collect { |p, v|
- if v.is_a? Array
- " #{p} => [\'#{v.join("','")}\']"
- else
- " #{p} => \'#{v}\'"
- end
- }.join(",\n")
- ]
+ # Collect list of attributes to align => and move ensure first
+ attr = parameters.keys
+ attr_max = attr.inject(0) { |max,k| k.to_s.length > max ? k.to_s.length : max }
+
+ attr.sort!
+ if attr.first != :ensure && attr.include?(:ensure)
+ attr.delete(:ensure)
+ attr.unshift(:ensure)
+ end
+
+ attributes = attr.collect { |k|
+ v = parameters[k]
+ if v.is_a? Array
+ " %-#{attr_max}s => %s,\n" % [ k, "[\'#{v.join("', '")}\']" ]
+ else
+ " %-#{attr_max}s => %s,\n" % [ k, "\'#{v}\'" ]
+ end
+ }
+
+ "%s { '%s':\n%s}" % [self.type.to_s.downcase, self.title, attributes]
end
def to_ref
@@ -422,4 +430,10 @@ class Puppet::Resource
return { :name => title.to_s }
end
end
+
+ def parameters
+ # @parameters could have been loaded from YAML, causing it to be nil (by
+ # bypassing initialize).
+ @parameters ||= {}
+ end
end
diff --git a/lib/puppet/type.rb b/lib/puppet/type.rb
index f70a3ec0b..d24cc8554 100644
--- a/lib/puppet/type.rb
+++ b/lib/puppet/type.rb
@@ -200,7 +200,7 @@ class Type
end
def uniqueness_key
- to_resource.uniqueness_key
+ self.class.key_attributes.sort_by { |attribute_name| attribute_name.to_s }.map{ |attribute_name| self[attribute_name] }
end
# Create a new parameter. Requires a block and a name, stores it in the
@@ -382,8 +382,8 @@ class Type
fail("Invalid parameter #{name}(#{name.inspect})") unless self.class.validattr?(name)
- if name == :name
- name = name_var
+ if name == :name && nv = name_var
+ name = nv
end
if obj = @parameters[name]
@@ -403,8 +403,8 @@ class Type
fail("Invalid parameter #{name}") unless self.class.validattr?(name)
- if name == :name
- name = name_var
+ if name == :name && nv = name_var
+ name = nv
end
raise Puppet::Error.new("Got nil value for #{name}") if value.nil?
diff --git a/lib/puppet/type/augeas.rb b/lib/puppet/type/augeas.rb
index d29bda648..a8fb1f15f 100644
--- a/lib/puppet/type/augeas.rb
+++ b/lib/puppet/type/augeas.rb
@@ -98,10 +98,10 @@ Puppet::Type.newtype(:augeas) do
can be either a string which contains a command or an array of commands.
Commands supported are:
- set [PATH] [VALUE] Sets the value VALUE at loction PATH
- rm [PATH] Removes the node at location PATH
- remove [PATH] Synonym for rm
- clear [PATH] Keeps the node at PATH, but removes the value.
+ set [PATH] [VALUE] Sets the value VALUE at loction PATH
+ rm [PATH] Removes the node at location PATH
+ remove [PATH] Synonym for rm
+ clear [PATH] Keeps the node at PATH, but removes the value.
ins [LABEL] [WHERE] [PATH] Inserts an empty node LABEL either [WHERE={before|after}] PATH.
insert [LABEL] [WHERE] [PATH] Synonym for ins
diff --git a/lib/puppet/type/computer.rb b/lib/puppet/type/computer.rb
index 89a0692bf..7a2c52d53 100644
--- a/lib/puppet/type/computer.rb
+++ b/lib/puppet/type/computer.rb
@@ -14,7 +14,11 @@ Puppet::Type.newtype(:computer) do
type as per other platforms.
This type primarily exists to create localhost Computer objects that MCX
- policy can then be attached to."
+ policy can then be attached to.
+
+ **Autorequires:** If Puppet is managing the plist file representing a
+ Computer object (located at `/var/db/dslocal/nodes/Default/computers/{name}.plist`),
+ the Computer resource will autorequire it."
# ensurable
diff --git a/lib/puppet/type/exec.rb b/lib/puppet/type/exec.rb
index daa49e223..5ed2b104c 100755
--- a/lib/puppet/type/exec.rb
+++ b/lib/puppet/type/exec.rb
@@ -22,7 +22,9 @@ module Puppet
to native Puppet types as quickly as possible. If you find that
you are doing a lot of work with `exec`, please at least notify
us at Puppet Labs what you are doing, and hopefully we can work with
- you to get a native resource type for the work you are doing."
+ you to get a native resource type for the work you are doing.
+
+ **Autorequires:** If Puppet is managing an exec's cwd or the executable file used in an exec's command, the exec resource will autorequire those files. If Puppet is managing the user that an exec should run as, the exec resource will autorequire that user."
require 'open3'
diff --git a/lib/puppet/type/file.rb b/lib/puppet/type/file.rb
index cbb51bbed..e1a4ecbb9 100644
--- a/lib/puppet/type/file.rb
+++ b/lib/puppet/type/file.rb
@@ -22,7 +22,9 @@ Puppet::Type.newtype(:file) do
If you find that you are often copying files in from a central
location, rather than using native resources, please contact
Puppet Labs and we can hopefully work with you to develop a
- native resource to support what you are doing."
+ native resource to support what you are doing.
+
+ **Autorequires:** If Puppet is managing the user or group that owns a file, the file resource will autorequire them. If Puppet is managing any parent directories of a file, the file resource will autorequire them."
def self.title_patterns
[ [ /^(.*?)\/*\Z/m, [ [ :path, lambda{|x| x} ] ] ] ]
diff --git a/lib/puppet/type/file/content.rb b/lib/puppet/type/file/content.rb
index 6aa173f6c..827183213 100755
--- a/lib/puppet/type/file/content.rb
+++ b/lib/puppet/type/file/content.rb
@@ -17,22 +17,21 @@ module Puppet
desc "Specify the contents of a file as a string. Newlines, tabs, and
spaces can be specified using the escaped syntax (e.g., \\n for a newline). The primary purpose of this parameter is to provide a
- kind of limited templating::
-
- define resolve(nameserver1, nameserver2, domain, search) {
- $str = \"search $search
- domain $domain
- nameserver $nameserver1
- nameserver $nameserver2
- \"
-
- file { \"/etc/resolv.conf\":
- content => $str
+ kind of limited templating:
+
+ define resolve(nameserver1, nameserver2, domain, search) {
+ $str = \"search $search
+ domain $domain
+ nameserver $nameserver1
+ nameserver $nameserver2
+ \"
+
+ file { \"/etc/resolv.conf\":
+ content => $str
+ }
}
- }
- This attribute is especially useful when used with
- `PuppetTemplating templating`:trac:."
+ This attribute is especially useful when used with templating."
# Store a checksum as the value, rather than the actual content.
# Simplifies everything.
@@ -201,7 +200,6 @@ module Puppet
connection = Puppet::Network::HttpPool.http_instance(source_or_content.server, source_or_content.port)
connection.request_get(indirection2uri(request), add_accept_encoding({"Accept" => "raw"})) do |response|
case response.code
- when "404"; nil
when /^2/; uncompress(response) { |uncompressor| response.read_body { |chunk| yield uncompressor.uncompress(chunk) } }
else
# Raise the http error if we didn't get a 'success' of some kind.
diff --git a/lib/puppet/type/file/ensure.rb b/lib/puppet/type/file/ensure.rb
index 4a68551ee..99652ecc6 100755
--- a/lib/puppet/type/file/ensure.rb
+++ b/lib/puppet/type/file/ensure.rb
@@ -7,29 +7,23 @@ module Puppet
if the file is missing will create an empty file. Specifying
`absent` will delete the file (and directory if recurse => true).
- Anything other than those values will be considered to be a symlink.
- For instance, the following text creates a link:
+ Anything other than those values will create a symlink. In the interest of readability and clarity, you should use `ensure => link` and explicitly specify a
+ target; however, if a `target` attribute isn't provided, the value of the `ensure`
+ attribute will be used as the symlink target:
- # Useful on solaris
+ # (Useful on Solaris)
+ # Less maintainable:
file { \"/etc/inetd.conf\":
- ensure => \"/etc/inet/inetd.conf\"
+ ensure => \"/etc/inet/inetd.conf\",
}
- You can make relative links:
-
- # Useful on solaris
+ # More maintainable:
file { \"/etc/inetd.conf\":
- ensure => \"inet/inetd.conf\"
+ ensure => link,
+ target => \"/etc/inet/inetd.conf\",
}
-
- If you need to make a relative link to a file named the same
- as one of the valid values, you must prefix it with `./` or
- something similar.
-
- You can also make recursive symlinks, which will create a
- directory structure that maps to the target directory,
- with directories corresponding to each directory
- and links corresponding to each file."
+
+ These two declarations are equivalent."
# Most 'ensure' properties have a default, but with files we, um, don't.
nodefault
diff --git a/lib/puppet/type/file/selcontext.rb b/lib/puppet/type/file/selcontext.rb
index a33c6a000..ea385eec0 100644
--- a/lib/puppet/type/file/selcontext.rb
+++ b/lib/puppet/type/file/selcontext.rb
@@ -32,9 +32,14 @@ module Puppet
end
def retrieve_default_context(property)
+ if @resource[:selinux_ignore_defaults] == :true
+ return nil
+ end
+
unless context = self.get_selinux_default_context(@resource[:path])
return nil
end
+
property_default = self.parse_selinux_context(property, context)
self.debug "Found #{property} default '#{property_default}' for #{@resource[:path]}" if not property_default.nil?
property_default
@@ -54,6 +59,17 @@ module Puppet
end
end
+ Puppet::Type.type(:file).newparam(:selinux_ignore_defaults) do
+ desc "If this is set then Puppet will not ask SELinux (via matchpathcon) to
+ supply defaults for the SELinux attributes (seluser, selrole,
+ seltype, and selrange). In general, you should leave this set at its
+ default and only set it to true when you need Puppet to not try to fix
+ SELinux labels automatically."
+ newvalues(:true, :false)
+
+ defaultto :false
+ end
+
Puppet::Type.type(:file).newproperty(:seluser, :parent => Puppet::SELFileContext) do
desc "What the SELinux user component of the context of the file should be.
Any valid SELinux user component is accepted. For example `user_u`.
diff --git a/lib/puppet/type/file/target.rb b/lib/puppet/type/file/target.rb
index b9fe9213b..7d391e672 100644
--- a/lib/puppet/type/file/target.rb
+++ b/lib/puppet/type/file/target.rb
@@ -1,7 +1,20 @@
module Puppet
Puppet::Type.type(:file).newproperty(:target) do
desc "The target for creating a link. Currently, symlinks are the
- only type supported."
+ only type supported.
+
+ You can make relative links:
+
+ # (Useful on Solaris)
+ file { \"/etc/inetd.conf\":
+ ensure => link,
+ target => \"inet/inetd.conf\",
+ }
+
+ You can also make recursive symlinks, which will create a
+ directory structure that maps to the target directory,
+ with directories corresponding to each directory
+ and links corresponding to each file."
newvalue(:notlink) do
# We do nothing if the value is absent
diff --git a/lib/puppet/type/k5login.rb b/lib/puppet/type/k5login.rb
index a343e9e5c..eac142ff7 100644
--- a/lib/puppet/type/k5login.rb
+++ b/lib/puppet/type/k5login.rb
@@ -1,5 +1,3 @@
-# $Id: k5login.rb 2468 2007-08-07 23:30:20Z digant $
-#
# Plug-in type for handling k5login files
Puppet::Type.newtype(:k5login) do
diff --git a/lib/puppet/type/macauthorization.rb b/lib/puppet/type/macauthorization.rb
index ef6fbb6c1..e89aa7c89 100644
--- a/lib/puppet/type/macauthorization.rb
+++ b/lib/puppet/type/macauthorization.rb
@@ -1,7 +1,10 @@
Puppet::Type.newtype(:macauthorization) do
@doc = "Manage the Mac OS X authorization database.
- See the [Apple developer site](http://developer.apple.com/documentation/Security/Conceptual/Security_Overview/Security_Services/chapter_4_section_5.html) for more information."
+ See the [Apple developer site](http://developer.apple.com/documentation/Security/Conceptual/Security_Overview/Security_Services/chapter_4_section_5.html) for more information.
+
+ **Autorequires:** If Puppet is managing the `/etc/authorization` file, each
+ macauthorization resource will autorequire it."
ensurable
diff --git a/lib/puppet/type/mcx.rb b/lib/puppet/type/mcx.rb
index 4f0a6c3c5..07c9348dd 100644
--- a/lib/puppet/type/mcx.rb
+++ b/lib/puppet/type/mcx.rb
@@ -27,8 +27,11 @@ content property of the file type in Puppet.
The recommended method of using this type is to use Work Group Manager
to manage users and groups on the local computer, record the resulting
-puppet manifest using the command 'ralsh mcx' then deploying this
+puppet manifest using the command `puppet resource mcx`, then deploy it
to other machines.
+
+**Autorequires:** If Puppet is managing the user, group, or computer that these
+MCX settings refer to, the MCX resource will autorequire that user, group, or computer.
"
feature :manages_content, \
"The provider can manage MCXSettings as a string.",
diff --git a/lib/puppet/type/mount.rb b/lib/puppet/type/mount.rb
index da9a70bdf..5b8c5ca58 100755
--- a/lib/puppet/type/mount.rb
+++ b/lib/puppet/type/mount.rb
@@ -21,6 +21,11 @@ module Puppet
fstab and mount it. Set to `present` to add to fstab but not change
mount/unmount status"
+ # IS -> SHOULD In Sync Action
+ # ghost -> present NO create
+ # absent -> present NO create
+ # (mounted -> present YES)
+ # (unmounted -> present YES)
newvalue(:defined) do
provider.create
return :mount_created
@@ -28,55 +33,66 @@ module Puppet
aliasvalue :present, :defined
+ # IS -> SHOULD In Sync Action
+ # ghost -> unmounted NO create, unmount
+ # absent -> unmounted NO create
+ # mounted -> unmounted NO unmount
newvalue(:unmounted) do
- if provider.mounted?
- syncothers
+ case self.retrieve
+ when :ghost # (not in fstab but mounted)
+ provider.create
+ @resource.flush
provider.unmount
return :mount_unmounted
- else
+ when nil, :absent # (not in fstab and not mounted)
provider.create
return :mount_created
+ when :mounted # (in fstab and mounted)
+ provider.unmount
+ syncothers # I guess it's more likely that the mount was originally mounted with
+ # the wrong attributes so I sync AFTER the umount
+ return :mount_unmounted
+ else
+ raise Puppet::Error, "Unexpected change from #{current_value} to unmounted}"
end
end
+ # IS -> SHOULD In Sync Action
+ # ghost -> absent NO unmount
+ # mounted -> absent NO provider.destroy AND unmount
+ # unmounted -> absent NO provider.destroy
newvalue(:absent, :event => :mount_deleted) do
+ current_value = self.retrieve
provider.unmount if provider.mounted?
-
- provider.destroy
+ provider.destroy unless current_value == :ghost
end
+ # IS -> SHOULD In Sync Action
+ # ghost -> mounted NO provider.create
+ # absent -> mounted NO provider.create AND mount
+ # unmounted -> mounted NO mount
newvalue(:mounted, :event => :mount_mounted) do
# Create the mount point if it does not already exist.
current_value = self.retrieve
- provider.create if current_value.nil? or current_value == :absent
+ currently_mounted = provider.mounted?
+ provider.create if [nil, :absent, :ghost].include?(current_value)
syncothers
# The fs can be already mounted if it was absent but mounted
- provider.mount unless provider.mounted?
+ provider.property_hash[:needs_mount] = true unless currently_mounted
end
+ # insync: mounted -> present
+ # unmounted -> present
def insync?(is)
- if should == :defined and is != :absent
+ if should == :defined and [:mounted,:unmounted].include?(is)
true
else
super
end
end
- def retrieve
- # We need to special case :mounted; if we're absent, we still
- # want
- curval = super()
- if curval == :absent
- return :absent
- elsif provider.mounted?
- return :mounted
- else
- return :unmounted
- end
- end
-
def syncothers
# We have to flush any changes to disk.
currentvalues = @resource.retrieve_resource
diff --git a/lib/puppet/type/package.rb b/lib/puppet/type/package.rb
index d73d90dff..1222a5319 100644
--- a/lib/puppet/type/package.rb
+++ b/lib/puppet/type/package.rb
@@ -15,7 +15,11 @@ module Puppet
using based on the platform you are on, but you can override it
using the `provider` parameter; each provider defines what it
requires in order to function, and you must meet those requirements
- to use a given provider."
+ to use a given provider.
+
+ **Autorequires:** If Puppet is managing the files specified as a package's
+ `adminfile`, `responsefile`, or `source`, the package resource will autorequire
+ those files."
feature :installable, "The provider can install packages.",
:methods => [:install]
diff --git a/lib/puppet/type/schedule.rb b/lib/puppet/type/schedule.rb
index 82f17e533..5fb008f6f 100755
--- a/lib/puppet/type/schedule.rb
+++ b/lib/puppet/type/schedule.rb
@@ -18,11 +18,11 @@ module Puppet
wanted to restrict certain resources to only running once, between
the hours of two and 4 AM, then you would use this schedule:
- schedule { maint:
- range => \"2 - 4\",
- period => daily,
- repeat => 1
- }
+ schedule { maint:
+ range => \"2 - 4\",
+ period => daily,
+ repeat => 1
+ }
With this schedule, the first time that Puppet runs between 2 and 4 AM,
all resources with this schedule will get applied, but they won't
@@ -35,10 +35,10 @@ module Puppet
a schedule named *puppet* is created and used as the default,
with the following attributes:
- schedule { puppet:
- period => hourly,
- repeat => 2
- }
+ schedule { puppet:
+ period => hourly,
+ repeat => 2
+ }
This will cause resources to be applied every 30 minutes by default.
"
@@ -47,14 +47,14 @@ module Puppet
desc "The name of the schedule. This name is used to retrieve the
schedule when assigning it to an object:
- schedule { daily:
- period => daily,
- range => \"2 - 4\",
- }
-
- exec { \"/usr/bin/apt-get update\":
- schedule => daily
- }
+ schedule { daily:
+ period => daily,
+ range => \"2 - 4\",
+ }
+
+ exec { \"/usr/bin/apt-get update\":
+ schedule => daily
+ }
"
isnamevar
@@ -67,9 +67,9 @@ module Puppet
seconds can be provided, using the normal colon as a separator.
For instance:
- schedule { maintenance:
- range => \"1:30 - 4:30\"
- }
+ schedule { maintenance:
+ range => \"1:30 - 4:30\"
+ }
This is mostly useful for restricting certain resources to being
applied in maintenance windows or during off-peak hours."
diff --git a/lib/puppet/type/selmodule.rb b/lib/puppet/type/selmodule.rb
index 60be8a855..e76c18cc0 100644
--- a/lib/puppet/type/selmodule.rb
+++ b/lib/puppet/type/selmodule.rb
@@ -5,7 +5,9 @@
Puppet::Type.newtype(:selmodule) do
@doc = "Manages loading and unloading of SELinux policy modules
on the system. Requires SELinux support. See man semodule(8)
- for more information on SELinux policy modules."
+ for more information on SELinux policy modules.
+
+ **Autorequires:** If Puppet is managing the file containing this SELinux policy module (which is either explicitly specified in the `selmodulepath` attribute or will be found at {`selmoduledir`}/{`name`}.pp), the selmodule resource will autorequire that file."
ensurable
diff --git a/lib/puppet/type/ssh_authorized_key.rb b/lib/puppet/type/ssh_authorized_key.rb
index e3320140e..8338e2d64 100644
--- a/lib/puppet/type/ssh_authorized_key.rb
+++ b/lib/puppet/type/ssh_authorized_key.rb
@@ -1,7 +1,11 @@
module Puppet
newtype(:ssh_authorized_key) do
@doc = "Manages SSH authorized keys. Currently only type 2 keys are
- supported."
+ supported.
+
+ **Autorequires:** If Puppet is managing the user account in which this
+ SSH key should be installed, the `ssh_authorized_key` resource will autorequire
+ that user."
ensurable
diff --git a/lib/puppet/type/user.rb b/lib/puppet/type/user.rb
index e7389a0d1..f74e4266f 100755
--- a/lib/puppet/type/user.rb
+++ b/lib/puppet/type/user.rb
@@ -12,7 +12,9 @@ module Puppet
This resource type uses the prescribed native tools for creating
groups and generally uses POSIX APIs for retrieving information
- about them. It does not directly modify `/etc/passwd` or anything."
+ about them. It does not directly modify `/etc/passwd` or anything.
+
+ **Autorequires:** If Puppet is managing the user's primary group (as provided in the `gid` attribute), the user resource will autorequire that group. If Puppet is managing any role accounts corresponding to the user's roles, the user resource will autorequire those role accounts."
feature :allows_duplicates,
"The provider supports duplicate users with the same UID."
@@ -34,6 +36,9 @@ module Puppet
feature :manages_expiry,
"The provider can manage the expiry date for a user."
+ feature :system_users,
+ "The provider allows you to create system users with lower UIDs."
+
newproperty(:ensure, :parent => Puppet::Property::Ensure) do
newvalue(:present, :event => :user_created) do
provider.create
@@ -230,6 +235,14 @@ module Puppet
defaultto :minimum
end
+ newparam(:system, :boolean => true) do
+ desc "Whether the user is a system user with lower UID."
+
+ newvalues(:true, :false)
+
+ defaultto false
+ end
+
newparam(:allowdupe, :boolean => true) do
desc "Whether to allow duplicate UIDs."
diff --git a/lib/puppet/type/zfs.rb b/lib/puppet/type/zfs.rb
index 1757931f8..6f04bddd8 100755
--- a/lib/puppet/type/zfs.rb
+++ b/lib/puppet/type/zfs.rb
@@ -1,6 +1,8 @@
module Puppet
newtype(:zfs) do
- @doc = "Manage zfs. Create destroy and set properties on zfs instances."
+ @doc = "Manage zfs. Create destroy and set properties on zfs instances.
+
+**Autorequires:** If Puppet is managing the zpool at the root of this zfs instance, the zfs resource will autorequire it. If Puppet is managing any parent zfs instances, the zfs resource will autorequire them."
ensurable
diff --git a/lib/puppet/type/zone.rb b/lib/puppet/type/zone.rb
index 408d6f5dd..471619c98 100644
--- a/lib/puppet/type/zone.rb
+++ b/lib/puppet/type/zone.rb
@@ -1,5 +1,7 @@
Puppet::Type.newtype(:zone) do
- @doc = "Solaris zones."
+ @doc = "Solaris zones.
+
+**Autorequires:** If Puppet is managing the directory specified as the root of the zone's filesystem (with the `path` attribute), the zone resource will autorequire that directory."
# These properties modify the zone configuration, and they need to provide
# the text separately from syncing it, so all config statements can be rolled
diff --git a/lib/puppet/type/zpool.rb b/lib/puppet/type/zpool.rb
index df06522e8..40ee8f286 100755
--- a/lib/puppet/type/zpool.rb
+++ b/lib/puppet/type/zpool.rb
@@ -40,9 +40,10 @@ module Puppet
end
newproperty(:mirror, :array_matching => :all, :parent => Puppet::Property::MultiVDev) do
- desc "List of all the devices to mirror for this pool. Each mirror should be a space separated string:
+ desc "List of all the devices to mirror for this pool. Each mirror should be a
+ space separated string:
- mirror => [\"disk1 disk2\", \"disk3 disk4\"]
+ mirror => [\"disk1 disk2\", \"disk3 disk4\"],
"
@@ -52,9 +53,10 @@ module Puppet
end
newproperty(:raidz, :array_matching => :all, :parent => Puppet::Property::MultiVDev) do
- desc "List of all the devices to raid for this pool. Should be an array of space separated strings:
-
- raidz => [\"disk1 disk2\", \"disk3 disk4\"]
+ desc "List of all the devices to raid for this pool. Should be an array of
+ space separated strings:
+
+ raidz => [\"disk1 disk2\", \"disk3 disk4\"],
"
diff --git a/lib/puppet/util.rb b/lib/puppet/util.rb
index 850d147e2..d06f44808 100644
--- a/lib/puppet/util.rb
+++ b/lib/puppet/util.rb
@@ -4,6 +4,7 @@ require 'puppet/util/monkey_patches'
require 'sync'
require 'puppet/external/lock'
require 'monitor'
+require 'puppet/util/execution_stub'
module Puppet
# A command failed to execute.
@@ -264,6 +265,10 @@ module Util
arguments[:uid] = Puppet::Util::SUIDManager.convert_xid(:uid, arguments[:uid]) if arguments[:uid]
arguments[:gid] = Puppet::Util::SUIDManager.convert_xid(:gid, arguments[:gid]) if arguments[:gid]
+ if execution_stub = Puppet::Util::ExecutionStub.current_value
+ return execution_stub.call(command, arguments)
+ end
+
@@os ||= Facter.value(:operatingsystem)
output = nil
child_pid, child_status = nil
diff --git a/lib/puppet/util/command_line.rb b/lib/puppet/util/command_line.rb
index 4aff0a8cb..7f74d266a 100644
--- a/lib/puppet/util/command_line.rb
+++ b/lib/puppet/util/command_line.rb
@@ -85,7 +85,7 @@ module Puppet
if zero == 'puppet'
case argv.first
when nil; [ stdin.tty? ? nil : "apply", argv] # ttys get usage info
- when "--help"; [nil, argv] # help should give you usage, not the help for `puppet apply`
+ when "--help", "-h"; [nil, argv] # help should give you usage, not the help for `puppet apply`
when /^-|\.pp$|\.rb$/; ["apply", argv]
else [ argv.first, argv[1..-1] ]
end
diff --git a/lib/puppet/util/execution.rb b/lib/puppet/util/execution.rb
index dd820f856..69f4f2c15 100644
--- a/lib/puppet/util/execution.rb
+++ b/lib/puppet/util/execution.rb
@@ -4,16 +4,15 @@ module Puppet::Util::Execution
# Run some code with a specific environment. Resets the environment back to
# what it was at the end of the code.
def withenv(hash)
- oldvals = {}
+ saved = ENV.to_hash
hash.each do |name, val|
- name = name.to_s
- oldvals[name] = ENV[name]
- ENV[name] = val
+ ENV[name.to_s] = val
end
yield
ensure
- oldvals.each do |name, val|
+ ENV.clear
+ saved.each do |name, val|
ENV[name] = val
end
end
diff --git a/lib/puppet/util/execution_stub.rb b/lib/puppet/util/execution_stub.rb
new file mode 100644
index 000000000..af74e0f72
--- /dev/null
+++ b/lib/puppet/util/execution_stub.rb
@@ -0,0 +1,26 @@
+module Puppet::Util
+ class ExecutionStub
+ class << self
+ # Set a stub block that Puppet::Util.execute() should invoke instead
+ # of actually executing commands on the target machine. Intended
+ # for spec testing.
+ #
+ # The arguments passed to the block are |command, options|, where
+ # command is an array of strings and options is an options hash.
+ def set(&block)
+ @value = block
+ end
+
+ # Uninstall any execution stub, so that calls to
+ # Puppet::Util.execute() behave normally again.
+ def reset
+ @value = nil
+ end
+
+ # Retrieve the current execution stub, or nil if there is no stub.
+ def current_value
+ @value
+ end
+ end
+ end
+end
diff --git a/lib/puppet/util/monkey_patches.rb b/lib/puppet/util/monkey_patches.rb
index 6b5af8350..16384855a 100644
--- a/lib/puppet/util/monkey_patches.rb
+++ b/lib/puppet/util/monkey_patches.rb
@@ -21,6 +21,9 @@ class Symbol
z.emit("!ruby/sym ")
to_s.to_zaml(z)
end
+ def <=> (other)
+ self.to_s <=> other.to_s
+ end
end
[Object, Exception, Integer, Struct, Date, Time, Range, Regexp, Hash, Array, Float, String, FalseClass, TrueClass, Symbol, NilClass, Class].each { |cls|
@@ -48,3 +51,21 @@ if RUBY_VERSION == '1.8.7'
end
end
+class Object
+ # The following code allows callers to make assertions that are only
+ # checked when the environment variable PUPPET_ENABLE_ASSERTIONS is
+ # set to a non-empty string. For example:
+ #
+ # assert_that { condition }
+ # assert_that(message) { condition }
+ if ENV["PUPPET_ENABLE_ASSERTIONS"].to_s != ''
+ def assert_that(message = nil)
+ unless yield
+ raise Exception.new("Assertion failure: #{message}")
+ end
+ end
+ else
+ def assert_that(message = nil)
+ end
+ end
+end
diff --git a/lib/puppet/util/rdoc/code_objects.rb b/lib/puppet/util/rdoc/code_objects.rb
index 3854fbc01..3c789a0c5 100644
--- a/lib/puppet/util/rdoc/code_objects.rb
+++ b/lib/puppet/util/rdoc/code_objects.rb
@@ -124,6 +124,45 @@ module RDoc
def add_child(child)
@childs << child
end
+
+ # Look up the given symbol. RDoc only looks for class1::class2.method
+ # or class1::class2#method. Since our definitions are mapped to RDoc methods
+ # but are written class1::class2::define we need to perform the lookup by
+ # ourselves.
+ def find_symbol(symbol, method=nil)
+ result = super
+ if not result and symbol =~ /::/
+ modules = symbol.split(/::/)
+ unless modules.empty?
+ module_name = modules.shift
+ result = find_module_named(module_name)
+ if result
+ last_name = ""
+ previous = nil
+ modules.each do |module_name|
+ previous = result
+ last_name = module_name
+ result = result.find_module_named(module_name)
+ break unless result
+ end
+ unless result
+ result = previous
+ method = last_name
+ end
+ end
+ end
+ if result && method
+ if !result.respond_to?(:find_local_symbol)
+ p result.name
+ p method
+ fail
+ end
+ result = result.find_local_symbol(method)
+ end
+ end
+ result
+ end
+
end
# PuppetNode holds a puppet node
diff --git a/lib/puppet/util/rdoc/generators/puppet_generator.rb b/lib/puppet/util/rdoc/generators/puppet_generator.rb
index e6bbb2e1e..249c9a8ba 100644
--- a/lib/puppet/util/rdoc/generators/puppet_generator.rb
+++ b/lib/puppet/util/rdoc/generators/puppet_generator.rb
@@ -31,6 +31,24 @@ module Generators
NODE_DIR = "nodes"
PLUGIN_DIR = "plugins"
+ # We're monkey patching RDoc markup to allow
+ # lowercase class1::class2::class3 crossref hyperlinking
+ module MarkUp
+ alias :old_markup :markup
+
+ def new_markup(str, remove_para=false)
+ first = @markup.nil?
+ res = old_markup(str, remove_para)
+ if first and not @markup.nil?
+ @markup.add_special(/\b([a-z]\w+(::\w+)*)/,:CROSSREF)
+ # we need to call it again, since we added a rule
+ res = old_markup(str, remove_para)
+ end
+ res
+ end
+ alias :markup :new_markup
+ end
+
# This is a specialized HTMLGenerator tailored to Puppet manifests
class PuppetGenerator < HTMLGenerator
diff --git a/lib/puppet/util/rdoc/parser.rb b/lib/puppet/util/rdoc/parser.rb
index f9becede1..ea7439ad7 100644
--- a/lib/puppet/util/rdoc/parser.rb
+++ b/lib/puppet/util/rdoc/parser.rb
@@ -41,8 +41,10 @@ class Parser
@parser.file = @input_file_name
@ast = @parser.parse
end
- scan_top_level(@top_level)
+ else
+ @ast = env.known_resource_types
end
+ scan_top_level(@top_level)
@top_level
end
@@ -157,8 +159,8 @@ class Parser
if stmt.is_a?(Puppet::Parser::AST::Function) and ['include','require'].include?(stmt.name)
stmt.arguments.each do |included|
- Puppet.debug "found #{stmt.name}: #{included.value}"
- container.send("add_#{stmt.name}",Include.new(included.value, stmt.doc))
+ Puppet.debug "found #{stmt.name}: #{included}"
+ container.send("add_#{stmt.name}",Include.new(included.to_s, stmt.doc))
end
end
end
diff --git a/lib/puppet/util/settings.rb b/lib/puppet/util/settings.rb
index 626ed20eb..f243b8691 100644
--- a/lib/puppet/util/settings.rb
+++ b/lib/puppet/util/settings.rb
@@ -91,7 +91,7 @@ class Puppet::Util::Settings
varname = $2 || $1
if varname == "environment" and environment
environment
- elsif pval = self.value(varname)
+ elsif pval = self.value(varname, environment)
pval
else
raise Puppet::DevError, "Could not find value for #{value}"