puppet 0.18.4 → 0.22.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (673) hide show
  1. data/CHANGELOG +288 -0
  2. data/README +2 -2
  3. data/Rakefile +78 -5
  4. data/bin/puppet +28 -36
  5. data/bin/puppetca +81 -38
  6. data/bin/puppetd +65 -62
  7. data/bin/puppetdoc +409 -140
  8. data/bin/puppetmasterd +59 -47
  9. data/bin/puppetrun +38 -23
  10. data/conf/freebsd/puppetd +26 -0
  11. data/conf/freebsd/puppetmasterd +26 -0
  12. data/conf/gentoo/conf.d/puppet +5 -0
  13. data/conf/gentoo/conf.d/puppetmaster +12 -0
  14. data/conf/gentoo/init.d/puppet +38 -0
  15. data/conf/gentoo/init.d/puppetmaster +50 -0
  16. data/conf/gentoo/puppet/fileserver.conf +12 -0
  17. data/conf/gentoo/puppet/puppetca.conf +29 -0
  18. data/conf/gentoo/puppet/puppetd.conf +29 -0
  19. data/conf/gentoo/puppet/puppetmasterd.conf +29 -0
  20. data/conf/redhat/client.init +10 -5
  21. data/conf/redhat/client.sysconfig +1 -1
  22. data/conf/redhat/fileserver.conf +2 -2
  23. data/conf/redhat/logrotate +1 -1
  24. data/conf/redhat/no-lockdir.patch +13 -0
  25. data/conf/redhat/puppet.spec +65 -8
  26. data/conf/redhat/puppetd.conf +0 -4
  27. data/conf/redhat/server.init +3 -6
  28. data/conf/solaris/pkginfo +1 -1
  29. data/conf/solaris/smf/svc-puppetd +2 -2
  30. data/conf/suse/client.init +142 -0
  31. data/conf/suse/puppet.spec +221 -0
  32. data/conf/suse/server.init +162 -0
  33. data/examples/code/mac_automount.pp +16 -0
  34. data/examples/root/bin/sleeper +3 -5
  35. data/examples/root/etc/init.d/sleeper +8 -2
  36. data/examples/root/etc/puppet/fileserver.conf +12 -2
  37. data/examples/root/etc/puppet/namespaceauth.conf +20 -0
  38. data/examples/root/etc/puppet/puppetd.conf +4 -0
  39. data/examples/root/etc/puppet/puppetmasterd.conf +6 -9
  40. data/examples/root/etc/puppet/tagmail.conf +1 -0
  41. data/ext/emacs/puppet-mode.el +46 -1
  42. data/ext/logcheck/puppet +15 -0
  43. data/ext/module_puppet +15 -23
  44. data/ext/vim/puppet.vim +4 -2
  45. data/install.rb +2 -1
  46. data/lib/puppet.rb +76 -207
  47. data/lib/puppet/configuration.rb +331 -0
  48. data/lib/puppet/daemon.rb +63 -246
  49. data/lib/puppet/dsl.rb +371 -0
  50. data/lib/puppet/element.rb +8 -26
  51. data/lib/puppet/error.rb +54 -0
  52. data/lib/puppet/event.rb +8 -243
  53. data/lib/puppet/{base64.rb → external/base64.rb} +0 -0
  54. data/lib/puppet/external/event-loop.rb +1 -0
  55. data/lib/puppet/{event-loop → external/event-loop}/better-definers.rb +0 -0
  56. data/lib/puppet/{event-loop → external/event-loop}/event-loop.rb +2 -2
  57. data/lib/puppet/{event-loop → external/event-loop}/signal-system.rb +1 -1
  58. data/lib/puppet/external/gratr.rb +33 -0
  59. data/lib/puppet/external/gratr/adjacency_graph.rb +257 -0
  60. data/lib/puppet/external/gratr/base.rb +34 -0
  61. data/lib/puppet/external/gratr/biconnected.rb +116 -0
  62. data/lib/puppet/external/gratr/chinese_postman.rb +123 -0
  63. data/lib/puppet/external/gratr/common.rb +73 -0
  64. data/lib/puppet/external/gratr/comparability.rb +92 -0
  65. data/lib/puppet/external/gratr/digraph.rb +116 -0
  66. data/lib/puppet/external/gratr/digraph_distance.rb +185 -0
  67. data/lib/puppet/external/gratr/dot.rb +90 -0
  68. data/lib/puppet/external/gratr/edge.rb +145 -0
  69. data/lib/puppet/external/gratr/graph.rb +303 -0
  70. data/lib/puppet/external/gratr/graph_api.rb +83 -0
  71. data/lib/puppet/external/gratr/import.rb +44 -0
  72. data/lib/puppet/external/gratr/labels.rb +90 -0
  73. data/lib/puppet/external/gratr/maximum_flow.rb +64 -0
  74. data/lib/puppet/external/gratr/rdot.rb +327 -0
  75. data/lib/puppet/external/gratr/search.rb +409 -0
  76. data/lib/puppet/external/gratr/strong_components.rb +127 -0
  77. data/lib/puppet/external/gratr/undirected_graph.rb +153 -0
  78. data/lib/puppet/{lock.rb → external/lock.rb} +1 -1
  79. data/lib/puppet/feature/base.rb +20 -0
  80. data/lib/puppet/feature/rails.rb +52 -0
  81. data/lib/puppet/metatype/attributes.rb +719 -0
  82. data/lib/puppet/metatype/closure.rb +111 -0
  83. data/lib/puppet/metatype/container.rb +94 -0
  84. data/lib/puppet/metatype/evaluation.rb +118 -0
  85. data/lib/puppet/metatype/instances.rb +261 -0
  86. data/lib/puppet/metatype/manager.rb +169 -0
  87. data/lib/puppet/metatype/metaparams.rb +409 -0
  88. data/lib/puppet/metatype/providers.rb +260 -0
  89. data/lib/puppet/metatype/relationships.rb +116 -0
  90. data/lib/puppet/metatype/schedules.rb +39 -0
  91. data/lib/puppet/metatype/tags.rb +39 -0
  92. data/lib/puppet/modules.rb +113 -0
  93. data/lib/puppet/network/authconfig.rb +168 -0
  94. data/lib/puppet/network/authorization.rb +84 -0
  95. data/lib/puppet/network/authstore.rb +293 -0
  96. data/lib/puppet/network/client.rb +187 -0
  97. data/lib/puppet/network/client/ca.rb +56 -0
  98. data/lib/puppet/network/client/dipper.rb +81 -0
  99. data/lib/puppet/network/client/file.rb +7 -0
  100. data/lib/puppet/network/client/logger.rb +6 -0
  101. data/lib/puppet/network/client/master.rb +644 -0
  102. data/lib/puppet/{client → network/client}/proxy.rb +3 -3
  103. data/lib/puppet/{client/reporter.rb → network/client/report.rb} +4 -7
  104. data/lib/puppet/{client/pelement.rb → network/client/resource.rb} +6 -19
  105. data/lib/puppet/network/client/runner.rb +13 -0
  106. data/lib/puppet/network/client/status.rb +5 -0
  107. data/lib/puppet/network/client_request.rb +32 -0
  108. data/lib/puppet/network/handler.rb +33 -0
  109. data/lib/puppet/{server → network/handler}/ca.rb +5 -6
  110. data/lib/puppet/network/handler/filebucket.rb +180 -0
  111. data/lib/puppet/{server → network/handler}/fileserver.rb +277 -219
  112. data/lib/puppet/{server → network/handler}/logger.rb +3 -5
  113. data/lib/puppet/{server → network/handler}/master.rb +42 -8
  114. data/lib/puppet/network/handler/report.rb +158 -0
  115. data/lib/puppet/network/handler/resource.rb +190 -0
  116. data/lib/puppet/{server → network/handler}/runner.rb +17 -18
  117. data/lib/puppet/network/handler/status.rb +13 -0
  118. data/lib/puppet/network/rights.rb +74 -0
  119. data/lib/puppet/network/server.rb +5 -0
  120. data/lib/puppet/network/server/mongrel.rb +138 -0
  121. data/lib/puppet/network/server/webrick.rb +153 -0
  122. data/lib/puppet/network/xmlrpc/client.rb +129 -0
  123. data/lib/puppet/network/xmlrpc/processor.rb +91 -0
  124. data/lib/puppet/network/xmlrpc/server.rb +20 -0
  125. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +121 -0
  126. data/lib/puppet/parameter.rb +390 -346
  127. data/lib/puppet/parser/ast.rb +116 -147
  128. data/lib/puppet/parser/ast/astarray.rb +17 -33
  129. data/lib/puppet/parser/ast/branch.rb +2 -0
  130. data/lib/puppet/parser/ast/caseopt.rb +7 -12
  131. data/lib/puppet/parser/ast/casestatement.rb +23 -32
  132. data/lib/puppet/parser/ast/collection.rb +19 -80
  133. data/lib/puppet/parser/ast/collexpr.rb +81 -0
  134. data/lib/puppet/parser/ast/component.rb +160 -89
  135. data/lib/puppet/parser/ast/else.rb +30 -0
  136. data/lib/puppet/parser/ast/function.rb +9 -2
  137. data/lib/puppet/parser/ast/hostclass.rb +47 -131
  138. data/lib/puppet/parser/ast/ifstatement.rb +43 -0
  139. data/lib/puppet/parser/ast/leaf.rb +10 -21
  140. data/lib/puppet/parser/ast/node.rb +32 -79
  141. data/lib/puppet/parser/ast/resourcedef.rb +222 -0
  142. data/lib/puppet/parser/ast/{typedefaults.rb → resourcedefaults.rb} +10 -16
  143. data/lib/puppet/parser/ast/resourceoverride.rb +62 -0
  144. data/lib/puppet/parser/ast/{objectparam.rb → resourceparam.rb} +12 -6
  145. data/lib/puppet/parser/ast/resourceref.rb +44 -0
  146. data/lib/puppet/parser/ast/selector.rb +16 -8
  147. data/lib/puppet/parser/ast/tag.rb +3 -1
  148. data/lib/puppet/parser/ast/vardef.rb +8 -12
  149. data/lib/puppet/parser/collector.rb +181 -0
  150. data/lib/puppet/parser/functions.rb +191 -36
  151. data/lib/puppet/parser/interpreter.rb +802 -380
  152. data/lib/puppet/parser/lexer.rb +86 -19
  153. data/lib/puppet/parser/parser.rb +1123 -960
  154. data/lib/puppet/parser/resource.rb +353 -0
  155. data/lib/puppet/parser/resource/param.rb +57 -0
  156. data/lib/puppet/parser/resource/reference.rb +71 -0
  157. data/lib/puppet/parser/scope.rb +573 -1000
  158. data/lib/puppet/parser/templatewrapper.rb +54 -0
  159. data/lib/puppet/pgraph.rb +208 -0
  160. data/lib/puppet/propertychange.rb +143 -0
  161. data/lib/puppet/provider.rb +302 -0
  162. data/lib/puppet/provider/cron/crontab.rb +187 -0
  163. data/lib/puppet/provider/group/groupadd.rb +29 -0
  164. data/lib/puppet/provider/group/netinfo.rb +12 -0
  165. data/lib/puppet/provider/group/pw.rb +31 -0
  166. data/lib/puppet/provider/host/netinfo.rb +18 -0
  167. data/lib/puppet/provider/host/parsed.rb +73 -0
  168. data/lib/puppet/provider/mount.rb +57 -0
  169. data/lib/puppet/provider/mount/netinfo.rb +38 -0
  170. data/lib/puppet/provider/mount/parsed.rb +37 -0
  171. data/lib/puppet/provider/nameservice.rb +344 -0
  172. data/lib/puppet/provider/nameservice/netinfo.rb +210 -0
  173. data/lib/puppet/provider/nameservice/objectadd.rb +45 -0
  174. data/lib/puppet/provider/nameservice/pw.rb +22 -0
  175. data/lib/puppet/provider/package/apple.rb +53 -0
  176. data/lib/puppet/provider/package/apt.rb +119 -0
  177. data/lib/puppet/provider/package/aptitude.rb +30 -0
  178. data/lib/puppet/provider/package/aptrpm.rb +79 -0
  179. data/lib/puppet/provider/package/blastwave.rb +114 -0
  180. data/lib/puppet/provider/package/darwinport.rb +88 -0
  181. data/lib/puppet/provider/package/dpkg.rb +109 -0
  182. data/lib/puppet/provider/package/freebsd.rb +43 -0
  183. data/lib/puppet/provider/package/gem.rb +104 -0
  184. data/lib/puppet/provider/package/openbsd.rb +93 -0
  185. data/lib/puppet/provider/package/pkgdmg.rb +119 -0
  186. data/lib/puppet/provider/package/portage.rb +112 -0
  187. data/lib/puppet/provider/package/ports.rb +94 -0
  188. data/lib/puppet/provider/package/rpm.rb +125 -0
  189. data/lib/puppet/provider/package/rug.rb +53 -0
  190. data/lib/puppet/provider/package/sun.rb +168 -0
  191. data/lib/puppet/provider/package/sunfreeware.rb +9 -0
  192. data/lib/puppet/provider/package/up2date.rb +45 -0
  193. data/lib/puppet/provider/package/yum.rb +54 -0
  194. data/lib/puppet/provider/parsedfile.rb +342 -0
  195. data/lib/puppet/provider/port/parsed.rb +174 -0
  196. data/lib/puppet/provider/service/base.rb +136 -0
  197. data/lib/puppet/provider/service/debian.rb +32 -0
  198. data/lib/puppet/provider/service/gentoo.rb +49 -0
  199. data/lib/puppet/{type → provider}/service/init.rb +42 -40
  200. data/lib/puppet/provider/service/redhat.rb +59 -0
  201. data/lib/puppet/{type → provider}/service/smf.rb +24 -13
  202. data/lib/puppet/provider/sshkey/parsed.rb +36 -0
  203. data/lib/puppet/provider/user/netinfo.rb +106 -0
  204. data/lib/puppet/provider/user/pw.rb +41 -0
  205. data/lib/puppet/provider/user/useradd.rb +67 -0
  206. data/lib/puppet/provider/zone/solaris.rb +208 -0
  207. data/lib/puppet/rails.rb +102 -66
  208. data/lib/puppet/rails/database/001_add_indexes.rb +38 -0
  209. data/lib/puppet/rails/database/schema.rb +89 -0
  210. data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +62 -0
  211. data/lib/puppet/rails/external/tagging/init.rb +5 -0
  212. data/lib/puppet/rails/external/tagging/tag.rb +50 -0
  213. data/lib/puppet/rails/external/tagging/tagging.rb +12 -0
  214. data/lib/puppet/rails/fact_name.rb +7 -0
  215. data/lib/puppet/rails/fact_value.rb +5 -0
  216. data/lib/puppet/rails/host.rb +95 -46
  217. data/lib/puppet/rails/param_name.rb +28 -0
  218. data/lib/puppet/rails/param_value.rb +5 -0
  219. data/lib/puppet/rails/puppet_class.rb +9 -0
  220. data/lib/puppet/rails/resource.rb +95 -0
  221. data/lib/puppet/rails/source_file.rb +5 -0
  222. data/lib/puppet/relationship.rb +63 -0
  223. data/lib/puppet/reports/log.rb +14 -0
  224. data/lib/puppet/reports/rrdgraph.rb +114 -10
  225. data/lib/puppet/reports/store.rb +64 -0
  226. data/lib/puppet/reports/tagmail.rb +144 -71
  227. data/lib/puppet/sslcertificates.rb +38 -5
  228. data/lib/puppet/sslcertificates/ca.rb +142 -37
  229. data/lib/puppet/sslcertificates/certificate.rb +3 -3
  230. data/lib/puppet/sslcertificates/inventory.rb +53 -0
  231. data/lib/puppet/sslcertificates/support.rb +128 -0
  232. data/lib/puppet/transaction.rb +568 -189
  233. data/lib/puppet/transaction/report.rb +14 -3
  234. data/lib/puppet/transportable.rb +18 -10
  235. data/lib/puppet/type.rb +279 -2299
  236. data/lib/puppet/type/component.rb +63 -63
  237. data/lib/puppet/type/cron.rb +294 -710
  238. data/lib/puppet/type/exec.rb +185 -129
  239. data/lib/puppet/type/group.rb +38 -89
  240. data/lib/puppet/type/host.rb +110 -0
  241. data/lib/puppet/type/mount.rb +189 -0
  242. data/lib/puppet/type/notify.rb +47 -0
  243. data/lib/puppet/type/package.rb +129 -257
  244. data/lib/puppet/type/parsedtype.rb +172 -297
  245. data/lib/puppet/type/pfile.rb +540 -319
  246. data/lib/puppet/type/pfile/checksum.rb +103 -76
  247. data/lib/puppet/type/pfile/content.rb +16 -10
  248. data/lib/puppet/type/pfile/ensure.rb +52 -34
  249. data/lib/puppet/type/pfile/group.rb +25 -18
  250. data/lib/puppet/type/pfile/mode.rb +7 -4
  251. data/lib/puppet/type/pfile/{uid.rb → owner.rb} +21 -17
  252. data/lib/puppet/type/pfile/source.rb +119 -124
  253. data/lib/puppet/type/pfile/target.rb +29 -45
  254. data/lib/puppet/type/pfile/type.rb +2 -2
  255. data/lib/puppet/type/pfilebucket.rb +18 -14
  256. data/lib/puppet/type/port.rb +121 -0
  257. data/lib/puppet/type/property.rb +530 -0
  258. data/lib/puppet/type/resources.rb +150 -0
  259. data/lib/puppet/type/schedule.rb +38 -22
  260. data/lib/puppet/type/service.rb +70 -326
  261. data/lib/puppet/type/sshkey.rb +76 -0
  262. data/lib/puppet/type/tidy.rb +197 -97
  263. data/lib/puppet/type/user.rb +107 -183
  264. data/lib/puppet/type/yumrepo.rb +53 -34
  265. data/lib/puppet/type/zone.rb +55 -208
  266. data/lib/puppet/util.rb +239 -201
  267. data/lib/puppet/util/autoload.rb +107 -0
  268. data/lib/puppet/util/classgen.rb +208 -0
  269. data/lib/puppet/{config.rb → util/config.rb} +102 -54
  270. data/lib/puppet/util/docs.rb +104 -0
  271. data/lib/puppet/util/errors.rb +55 -0
  272. data/lib/puppet/util/execution.rb +22 -0
  273. data/lib/puppet/util/feature.rb +76 -0
  274. data/lib/puppet/util/fileparsing.rb +380 -0
  275. data/lib/puppet/util/filetype.rb +300 -0
  276. data/lib/puppet/util/graph.rb +39 -0
  277. data/lib/puppet/util/inifile.rb +209 -0
  278. data/lib/puppet/util/loadedfile.rb +71 -0
  279. data/lib/puppet/util/log.rb +549 -0
  280. data/lib/puppet/util/logging.rb +20 -0
  281. data/lib/puppet/util/metaid.rb +22 -0
  282. data/lib/puppet/util/methodhelper.rb +37 -0
  283. data/lib/puppet/util/metric.rb +160 -0
  284. data/lib/puppet/util/package.rb +31 -0
  285. data/lib/puppet/util/pidlock.rb +68 -0
  286. data/lib/puppet/util/plist.rb +24 -0
  287. data/lib/puppet/util/plist/generator.rb +226 -0
  288. data/lib/puppet/util/plist/parser.rb +227 -0
  289. data/lib/puppet/util/posix.rb +87 -0
  290. data/lib/puppet/util/provider_features.rb +170 -0
  291. data/lib/puppet/util/rails/collection_merger.rb +42 -0
  292. data/lib/puppet/util/storage.rb +103 -0
  293. data/lib/puppet/util/subclass_loader.rb +83 -0
  294. data/lib/puppet/util/suidmanager.rb +86 -0
  295. data/lib/puppet/util/variables.rb +39 -0
  296. data/lib/puppet/util/warnings.rb +15 -0
  297. data/test/Rakefile +97 -0
  298. data/test/certmgr/ca.rb +81 -0
  299. data/test/certmgr/certmgr.rb +77 -50
  300. data/test/certmgr/inventory.rb +79 -0
  301. data/test/certmgr/support.rb +81 -0
  302. data/test/executables/filebucket.rb +49 -0
  303. data/test/executables/puppetbin.rb +28 -12
  304. data/test/executables/puppetca.rb +75 -54
  305. data/test/executables/puppetd.rb +10 -13
  306. data/test/executables/puppetmasterd.rb +12 -17
  307. data/test/executables/puppetmodule.rb +18 -17
  308. data/test/language/ast.rb +242 -798
  309. data/test/language/ast/casestatement.rb +104 -0
  310. data/test/language/ast/component.rb +133 -0
  311. data/test/language/ast/hostclass.rb +162 -0
  312. data/test/language/ast/selector.rb +62 -0
  313. data/test/language/ast/variable.rb +31 -0
  314. data/test/language/collector.rb +369 -0
  315. data/test/language/functions.rb +305 -18
  316. data/test/language/interpreter.rb +894 -125
  317. data/test/language/lexer.rb +98 -12
  318. data/test/language/node.rb +37 -53
  319. data/test/language/parser.rb +455 -148
  320. data/test/language/resource.rb +535 -0
  321. data/test/language/scope.rb +451 -561
  322. data/test/language/snippets.rb +101 -111
  323. data/test/language/transportable.rb +6 -8
  324. data/test/lib/mocha.rb +19 -0
  325. data/test/lib/mocha/any_instance_method.rb +35 -0
  326. data/test/lib/mocha/auto_verify.rb +113 -0
  327. data/test/lib/mocha/central.rb +35 -0
  328. data/test/lib/mocha/class_method.rb +62 -0
  329. data/test/lib/mocha/expectation.rb +295 -0
  330. data/test/lib/mocha/expectation_error.rb +6 -0
  331. data/test/lib/mocha/infinite_range.rb +27 -0
  332. data/test/lib/mocha/inspect.rb +37 -0
  333. data/test/lib/mocha/instance_method.rb +8 -0
  334. data/test/lib/mocha/metaclass.rb +7 -0
  335. data/test/lib/mocha/mock.rb +20 -0
  336. data/test/lib/mocha/mock_methods.rb +122 -0
  337. data/test/lib/mocha/object.rb +100 -0
  338. data/test/lib/mocha/pretty_parameters.rb +28 -0
  339. data/test/lib/mocha/setup_and_teardown.rb +23 -0
  340. data/test/lib/mocha/standalone.rb +30 -0
  341. data/test/lib/mocha/test_case_adapter.rb +49 -0
  342. data/test/lib/mocha_standalone.rb +2 -0
  343. data/test/lib/puppettest.rb +294 -0
  344. data/test/lib/puppettest/certificates.rb +61 -0
  345. data/test/lib/puppettest/exetest.rb +123 -0
  346. data/test/lib/puppettest/fakes.rb +194 -0
  347. data/test/lib/puppettest/fileparsing.rb +33 -0
  348. data/test/lib/puppettest/filetesting.rb +231 -0
  349. data/test/lib/puppettest/graph.rb +41 -0
  350. data/test/lib/puppettest/parsertesting.rb +392 -0
  351. data/test/lib/puppettest/railstesting.rb +56 -0
  352. data/test/lib/puppettest/reporttesting.rb +19 -0
  353. data/test/lib/puppettest/resourcetesting.rb +73 -0
  354. data/test/lib/puppettest/servertest.rb +72 -0
  355. data/test/lib/puppettest/support.rb +8 -0
  356. data/test/lib/puppettest/support/assertions.rb +101 -0
  357. data/test/lib/puppettest/support/helpers.rb +23 -0
  358. data/test/lib/puppettest/support/resources.rb +37 -0
  359. data/test/lib/puppettest/support/utils.rb +160 -0
  360. data/test/lib/puppettest/testcase.rb +48 -0
  361. data/test/lib/rake/puppet_test_loader.rb +17 -0
  362. data/test/lib/rake/puppet_testtask.rb +17 -0
  363. data/test/lib/spec.rb +8 -0
  364. data/test/lib/spec/callback.rb +11 -0
  365. data/test/lib/spec/callback/callback_container.rb +60 -0
  366. data/test/lib/spec/callback/extensions/module.rb +24 -0
  367. data/test/lib/spec/callback/extensions/object.rb +37 -0
  368. data/test/lib/spec/deprecated.rb +3 -0
  369. data/test/lib/spec/expectations.rb +59 -0
  370. data/test/lib/spec/expectations/differs/default.rb +62 -0
  371. data/test/lib/spec/expectations/errors.rb +6 -0
  372. data/test/lib/spec/expectations/extensions.rb +3 -0
  373. data/test/lib/spec/expectations/extensions/object.rb +109 -0
  374. data/test/lib/spec/expectations/extensions/proc.rb +57 -0
  375. data/test/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  376. data/test/lib/spec/expectations/handler.rb +47 -0
  377. data/test/lib/spec/expectations/should.rb +5 -0
  378. data/test/lib/spec/expectations/should/base.rb +64 -0
  379. data/test/lib/spec/expectations/should/change.rb +69 -0
  380. data/test/lib/spec/expectations/should/have.rb +128 -0
  381. data/test/lib/spec/expectations/should/not.rb +74 -0
  382. data/test/lib/spec/expectations/should/should.rb +81 -0
  383. data/test/lib/spec/expectations/sugar.rb +47 -0
  384. data/test/lib/spec/matchers.rb +160 -0
  385. data/test/lib/spec/matchers/be.rb +161 -0
  386. data/test/lib/spec/matchers/be_close.rb +37 -0
  387. data/test/lib/spec/matchers/change.rb +120 -0
  388. data/test/lib/spec/matchers/eql.rb +43 -0
  389. data/test/lib/spec/matchers/equal.rb +43 -0
  390. data/test/lib/spec/matchers/has.rb +44 -0
  391. data/test/lib/spec/matchers/have.rb +140 -0
  392. data/test/lib/spec/matchers/include.rb +50 -0
  393. data/test/lib/spec/matchers/match.rb +41 -0
  394. data/test/lib/spec/matchers/raise_error.rb +100 -0
  395. data/test/lib/spec/matchers/respond_to.rb +35 -0
  396. data/test/lib/spec/matchers/satisfy.rb +47 -0
  397. data/test/lib/spec/matchers/throw_symbol.rb +75 -0
  398. data/test/lib/spec/mocks.rb +232 -0
  399. data/test/lib/spec/mocks/argument_expectation.rb +132 -0
  400. data/test/lib/spec/mocks/error_generator.rb +85 -0
  401. data/test/lib/spec/mocks/errors.rb +10 -0
  402. data/test/lib/spec/mocks/extensions/object.rb +3 -0
  403. data/test/lib/spec/mocks/message_expectation.rb +231 -0
  404. data/test/lib/spec/mocks/methods.rb +40 -0
  405. data/test/lib/spec/mocks/mock.rb +26 -0
  406. data/test/lib/spec/mocks/mock_handler.rb +166 -0
  407. data/test/lib/spec/mocks/order_group.rb +29 -0
  408. data/test/lib/spec/rake/spectask.rb +173 -0
  409. data/test/lib/spec/rake/verify_rcov.rb +47 -0
  410. data/test/lib/spec/runner.rb +132 -0
  411. data/test/lib/spec/runner/backtrace_tweaker.rb +55 -0
  412. data/test/lib/spec/runner/command_line.rb +34 -0
  413. data/test/lib/spec/runner/context.rb +154 -0
  414. data/test/lib/spec/runner/context_eval.rb +142 -0
  415. data/test/lib/spec/runner/context_runner.rb +55 -0
  416. data/test/lib/spec/runner/drb_command_line.rb +21 -0
  417. data/test/lib/spec/runner/execution_context.rb +17 -0
  418. data/test/lib/spec/runner/extensions/kernel.rb +17 -0
  419. data/test/lib/spec/runner/extensions/object.rb +32 -0
  420. data/test/lib/spec/runner/formatter.rb +5 -0
  421. data/test/lib/spec/runner/formatter/base_text_formatter.rb +118 -0
  422. data/test/lib/spec/runner/formatter/html_formatter.rb +219 -0
  423. data/test/lib/spec/runner/formatter/progress_bar_formatter.rb +27 -0
  424. data/test/lib/spec/runner/formatter/rdoc_formatter.rb +22 -0
  425. data/test/lib/spec/runner/formatter/specdoc_formatter.rb +23 -0
  426. data/test/lib/spec/runner/heckle_runner.rb +71 -0
  427. data/test/lib/spec/runner/heckle_runner_win.rb +10 -0
  428. data/test/lib/spec/runner/option_parser.rb +224 -0
  429. data/test/lib/spec/runner/reporter.rb +105 -0
  430. data/test/lib/spec/runner/spec_matcher.rb +25 -0
  431. data/test/lib/spec/runner/spec_parser.rb +41 -0
  432. data/test/lib/spec/runner/spec_should_raise_handler.rb +74 -0
  433. data/test/lib/spec/runner/specification.rb +114 -0
  434. data/test/lib/spec/translator.rb +87 -0
  435. data/test/lib/spec/version.rb +30 -0
  436. data/test/lib/stubba.rb +2 -0
  437. data/test/network/authconfig.rb +72 -0
  438. data/test/network/authorization.rb +138 -0
  439. data/test/network/authstore.rb +450 -0
  440. data/test/network/client/ca.rb +38 -0
  441. data/test/{client → network/client}/client.rb +107 -24
  442. data/test/network/client/dipper.rb +35 -0
  443. data/test/network/client/master.rb +627 -0
  444. data/test/{client/pelement.rb → network/client/resource.rb} +13 -29
  445. data/test/network/client_request.rb +39 -0
  446. data/test/network/daemon.rb +71 -0
  447. data/test/{server → network/handler}/bucket.rb +103 -27
  448. data/test/{server → network/handler}/ca.rb +14 -19
  449. data/test/{server → network/handler}/fileserver.rb +443 -68
  450. data/test/network/handler/handler.rb +64 -0
  451. data/test/{server → network/handler}/logger.rb +26 -26
  452. data/test/network/handler/master.rb +352 -0
  453. data/test/network/handler/report.rb +185 -0
  454. data/test/{server/pelement.rb → network/handler/resource.rb} +25 -38
  455. data/test/{server → network/handler}/runner.rb +17 -16
  456. data/test/network/rights.rb +38 -0
  457. data/test/network/server/webrick.rb +140 -0
  458. data/test/network/xmlrpc/client.rb +68 -0
  459. data/test/network/xmlrpc/processor.rb +80 -0
  460. data/test/network/xmlrpc/server.rb +28 -0
  461. data/test/network/xmlrpc/webrick_servlet.rb +26 -0
  462. data/test/other/dsl.rb +218 -0
  463. data/test/other/events.rb +22 -15
  464. data/test/other/overrides.rb +9 -14
  465. data/test/other/pgraph.rb +289 -0
  466. data/test/other/propertychange.rb +142 -0
  467. data/test/other/provider.rb +162 -0
  468. data/test/other/puppet.rb +63 -10
  469. data/test/other/relationship.rb +74 -0
  470. data/test/other/relationships.rb +199 -123
  471. data/test/other/report.rb +152 -23
  472. data/test/other/transactions.rb +824 -78
  473. data/test/puppet/conffiles.rb +16 -11
  474. data/test/puppet/defaults.rb +7 -10
  475. data/test/puppet/{error.rb → errortest.rb} +5 -8
  476. data/test/puppet/modules.rb +58 -0
  477. data/test/puppet/tc_suidmanager.rb +107 -0
  478. data/test/rails/host.rb +177 -0
  479. data/test/rails/rails.rb +27 -0
  480. data/test/rails/railsparameter.rb +62 -0
  481. data/test/rails/railsresource.rb +100 -0
  482. data/test/ral/manager/attributes.rb +296 -0
  483. data/test/ral/manager/manager.rb +55 -0
  484. data/test/ral/manager/provider.rb +54 -0
  485. data/test/ral/manager/type.rb +837 -0
  486. data/test/ral/providers/cron/crontab.rb +346 -0
  487. data/test/ral/providers/group.rb +252 -0
  488. data/test/ral/providers/host/netinfo.rb +58 -0
  489. data/test/ral/providers/host/parsed.rb +226 -0
  490. data/test/ral/providers/mount/netinfo.rb +80 -0
  491. data/test/ral/providers/mount/parsed.rb +223 -0
  492. data/test/ral/providers/nameservice.rb +33 -0
  493. data/test/ral/providers/package.rb +253 -0
  494. data/test/ral/providers/package/apt.rb +89 -0
  495. data/test/ral/providers/package/aptitude.rb +69 -0
  496. data/test/ral/providers/package/aptrpm.rb +89 -0
  497. data/test/ral/providers/package/dpkg.rb +64 -0
  498. data/test/ral/providers/parsedfile.rb +668 -0
  499. data/test/ral/providers/parsedport.rb +233 -0
  500. data/test/ral/providers/provider.rb +423 -0
  501. data/test/{types → ral/providers}/service.rb +20 -121
  502. data/test/ral/providers/service/base.rb +75 -0
  503. data/test/ral/providers/sshkey/parsed.rb +111 -0
  504. data/test/ral/providers/user.rb +567 -0
  505. data/test/ral/providers/user/useradd.rb +250 -0
  506. data/test/ral/types/basic.rb +90 -0
  507. data/test/ral/types/component.rb +113 -0
  508. data/test/ral/types/cron.rb +480 -0
  509. data/test/{types → ral/types}/exec.rb +278 -82
  510. data/test/ral/types/file.rb +1799 -0
  511. data/test/ral/types/file/target.rb +363 -0
  512. data/test/{types → ral/types}/filebucket.rb +15 -17
  513. data/test/{types → ral/types}/fileignoresource.rb +9 -15
  514. data/test/ral/types/filesources.rb +1046 -0
  515. data/test/ral/types/group.rb +169 -0
  516. data/test/ral/types/host.rb +155 -0
  517. data/test/ral/types/mount.rb +312 -0
  518. data/test/ral/types/package.rb +85 -0
  519. data/test/ral/types/parameter.rb +172 -0
  520. data/test/ral/types/port.rb +148 -0
  521. data/test/ral/types/property.rb +343 -0
  522. data/test/ral/types/resources.rb +221 -0
  523. data/test/{types → ral/types}/schedule.rb +34 -12
  524. data/test/ral/types/service.rb +37 -0
  525. data/test/{types → ral/types}/sshkey.rb +75 -65
  526. data/test/ral/types/tidy.rb +240 -0
  527. data/test/ral/types/user.rb +493 -0
  528. data/test/{types → ral/types}/yumrepo.rb +7 -11
  529. data/test/{types → ral/types}/zone.rb +45 -45
  530. data/test/tagging/tagging.rb +17 -26
  531. data/test/util/autoload.rb +130 -0
  532. data/test/util/classgen.rb +227 -0
  533. data/test/{other → util}/config.rb +373 -113
  534. data/test/util/execution.rb +34 -0
  535. data/test/util/features.rb +94 -0
  536. data/test/util/fileparsing.rb +677 -0
  537. data/test/{other → util}/filetype.rb +9 -12
  538. data/test/util/graph.rb +108 -0
  539. data/test/{other → util}/inifile.rb +24 -11
  540. data/test/util/loadedfile.rb +106 -0
  541. data/test/{other → util}/log.rb +96 -50
  542. data/test/{other → util}/metrics.rb +7 -17
  543. data/test/util/package.rb +27 -0
  544. data/test/util/pidlock.rb +126 -0
  545. data/test/util/posixtest.rb +173 -0
  546. data/test/util/storage.rb +123 -0
  547. data/test/util/subclass_loader.rb +100 -0
  548. data/test/util/utiltest.rb +368 -0
  549. metadata +449 -169
  550. data/examples/code/classing +0 -35
  551. data/examples/code/failers/badclassnoparam +0 -10
  552. data/examples/code/failers/badclassparam +0 -10
  553. data/examples/code/failers/badcompnoparam +0 -9
  554. data/examples/code/failers/badcompparam +0 -9
  555. data/examples/code/failers/badtypeparam +0 -3
  556. data/examples/code/failers/noobjectrvalue +0 -1
  557. data/examples/code/snippets/aliastest.pp +0 -16
  558. data/examples/code/snippets/argumentdefaults +0 -14
  559. data/examples/code/snippets/casestatement.pp +0 -58
  560. data/examples/code/snippets/classheirarchy.pp +0 -15
  561. data/examples/code/snippets/classincludes.pp +0 -17
  562. data/examples/code/snippets/classpathtest +0 -11
  563. data/examples/code/snippets/componentmetaparams.pp +0 -11
  564. data/examples/code/snippets/deepclassheirarchy.pp +0 -23
  565. data/examples/code/snippets/defineoverrides.pp +0 -17
  566. data/examples/code/snippets/dirchmod +0 -19
  567. data/examples/code/snippets/emptyclass.pp +0 -9
  568. data/examples/code/snippets/emptyexec.pp +0 -3
  569. data/examples/code/snippets/failmissingexecpath.pp +0 -13
  570. data/examples/code/snippets/falsevalues.pp +0 -3
  571. data/examples/code/snippets/filecreate +0 -11
  572. data/examples/code/snippets/implicititeration +0 -15
  573. data/examples/code/snippets/multipleinstances +0 -7
  574. data/examples/code/snippets/namevartest +0 -9
  575. data/examples/code/snippets/scopetest +0 -13
  576. data/examples/code/snippets/selectorvalues.pp +0 -42
  577. data/examples/code/snippets/simpledefaults +0 -5
  578. data/examples/code/snippets/simpleselector +0 -38
  579. data/examples/code/snippets/singleary.pp +0 -19
  580. data/examples/code/snippets/singlequote.pp +0 -11
  581. data/examples/code/snippets/singleselector.pp +0 -22
  582. data/examples/code/snippets/tag.pp +0 -9
  583. data/examples/code/snippets/tagged.pp +0 -35
  584. data/lib/puppet/client.rb +0 -177
  585. data/lib/puppet/client/ca.rb +0 -21
  586. data/lib/puppet/client/dipper.rb +0 -76
  587. data/lib/puppet/client/file.rb +0 -20
  588. data/lib/puppet/client/log.rb +0 -17
  589. data/lib/puppet/client/master.rb +0 -531
  590. data/lib/puppet/client/runner.rb +0 -17
  591. data/lib/puppet/client/status.rb +0 -7
  592. data/lib/puppet/event-loop.rb +0 -1
  593. data/lib/puppet/filetype.rb +0 -308
  594. data/lib/puppet/inifile.rb +0 -201
  595. data/lib/puppet/log.rb +0 -524
  596. data/lib/puppet/metric.rb +0 -132
  597. data/lib/puppet/networkclient.rb +0 -175
  598. data/lib/puppet/parsedfile.rb +0 -58
  599. data/lib/puppet/parser/ast/classdef.rb +0 -79
  600. data/lib/puppet/parser/ast/compdef.rb +0 -75
  601. data/lib/puppet/parser/ast/nodedef.rb +0 -73
  602. data/lib/puppet/parser/ast/objectdef.rb +0 -284
  603. data/lib/puppet/parser/ast/objectref.rb +0 -77
  604. data/lib/puppet/rails/database.rb +0 -40
  605. data/lib/puppet/rails/rails_object.rb +0 -42
  606. data/lib/puppet/rails/rails_parameter.rb +0 -5
  607. data/lib/puppet/server.rb +0 -196
  608. data/lib/puppet/server/authconfig.rb +0 -177
  609. data/lib/puppet/server/authstore.rb +0 -226
  610. data/lib/puppet/server/filebucket.rb +0 -155
  611. data/lib/puppet/server/pelement.rb +0 -188
  612. data/lib/puppet/server/report.rb +0 -184
  613. data/lib/puppet/server/rights.rb +0 -78
  614. data/lib/puppet/server/servlet.rb +0 -274
  615. data/lib/puppet/statechange.rb +0 -129
  616. data/lib/puppet/storage.rb +0 -98
  617. data/lib/puppet/type/nameservice.rb +0 -264
  618. data/lib/puppet/type/nameservice/netinfo.rb +0 -232
  619. data/lib/puppet/type/nameservice/objectadd.rb +0 -146
  620. data/lib/puppet/type/nameservice/posix.rb +0 -12
  621. data/lib/puppet/type/nameservice/pw.rb +0 -107
  622. data/lib/puppet/type/package/apple.rb +0 -41
  623. data/lib/puppet/type/package/apt.rb +0 -107
  624. data/lib/puppet/type/package/blastwave.rb +0 -136
  625. data/lib/puppet/type/package/darwinport.rb +0 -97
  626. data/lib/puppet/type/package/dpkg.rb +0 -113
  627. data/lib/puppet/type/package/freebsd.rb +0 -19
  628. data/lib/puppet/type/package/gem.rb +0 -119
  629. data/lib/puppet/type/package/openbsd.rb +0 -112
  630. data/lib/puppet/type/package/ports.rb +0 -103
  631. data/lib/puppet/type/package/rpm.rb +0 -121
  632. data/lib/puppet/type/package/sun.rb +0 -174
  633. data/lib/puppet/type/package/sunfreeware.rb +0 -7
  634. data/lib/puppet/type/package/yum.rb +0 -52
  635. data/lib/puppet/type/parsedtype/host.rb +0 -144
  636. data/lib/puppet/type/parsedtype/mount.rb +0 -271
  637. data/lib/puppet/type/parsedtype/port.rb +0 -261
  638. data/lib/puppet/type/parsedtype/sshkey.rb +0 -123
  639. data/lib/puppet/type/service/base.rb +0 -12
  640. data/lib/puppet/type/service/debian.rb +0 -46
  641. data/lib/puppet/type/service/redhat.rb +0 -38
  642. data/lib/puppet/type/state.rb +0 -393
  643. data/lib/puppet/type/symlink.rb +0 -186
  644. data/test/client/master.rb +0 -207
  645. data/test/language/rails.rb +0 -105
  646. data/test/other/parsedfile.rb +0 -58
  647. data/test/other/storage.rb +0 -100
  648. data/test/puppet/utiltest.rb +0 -299
  649. data/test/puppettest.rb +0 -1170
  650. data/test/server/authconfig.rb +0 -56
  651. data/test/server/authstore.rb +0 -218
  652. data/test/server/master.rb +0 -201
  653. data/test/server/report.rb +0 -93
  654. data/test/server/rights.rb +0 -41
  655. data/test/server/server.rb +0 -152
  656. data/test/test +0 -61
  657. data/test/types/basic.rb +0 -117
  658. data/test/types/component.rb +0 -298
  659. data/test/types/cron.rb +0 -718
  660. data/test/types/file.rb +0 -1314
  661. data/test/types/filesources.rb +0 -590
  662. data/test/types/group.rb +0 -323
  663. data/test/types/host.rb +0 -186
  664. data/test/types/mount.rb +0 -294
  665. data/test/types/package.rb +0 -538
  666. data/test/types/parameter.rb +0 -107
  667. data/test/types/port.rb +0 -201
  668. data/test/types/query.rb +0 -101
  669. data/test/types/state.rb +0 -92
  670. data/test/types/symlink.rb +0 -120
  671. data/test/types/tidy.rb +0 -102
  672. data/test/types/type.rb +0 -469
  673. data/test/types/user.rb +0 -563
@@ -12,6 +12,8 @@ module Puppet
12
12
  class Lexer
13
13
  attr_reader :line, :last, :file
14
14
 
15
+ attr_accessor :indefine
16
+
15
17
  #%r{\w+} => :WORD,
16
18
  @@tokens = {
17
19
  %r{#.*} => :COMMENT,
@@ -31,10 +33,13 @@ module Puppet
31
33
  %r{<} => :LESSTHAN,
32
34
  %r{<=} => :LESSEQUAL,
33
35
  %r{!=} => :NOTEQUAL,
36
+ %r{!} => :NOT,
34
37
  %r{,} => :COMMA,
35
38
  %r{\.} => :DOT,
36
39
  %r{:} => :COLON,
37
40
  %r{@} => :AT,
41
+ %r{<<\|} => :LLCOLLECT,
42
+ %r{\|>>} => :RRCOLLECT,
38
43
  %r{<\|} => :LCOLLECT,
39
44
  %r{\|>} => :RCOLLECT,
40
45
  %r{;} => :SEMIC,
@@ -42,9 +47,11 @@ module Puppet
42
47
  %r{\\} => :BACKSLASH,
43
48
  %r{=>} => :FARROW,
44
49
  %r{[a-z][-\w]*} => :NAME,
50
+ %r{([a-z][-\w]*::)+[a-z][-\w]*} => :CLASSNAME,
51
+ %r{([A-Z][-\w]*::)+[A-Z][-\w]*} => :CLASSREF,
45
52
  %r{[A-Z][-\w]*} => :TYPE,
46
53
  %r{[0-9]+} => :NUMBER,
47
- %r{\$\w+} => :VARIABLE
54
+ %r{\$(\w*::)*\w+} => :VARIABLE
48
55
  }
49
56
 
50
57
  @@keywords = {
@@ -54,17 +61,28 @@ module Puppet
54
61
  "define" => :DEFINE,
55
62
  "false" => :BOOLEAN,
56
63
  "import" => :IMPORT,
64
+ "if" => :IF,
65
+ "elsif" => :ELSIF,
66
+ "else" => :ELSE,
57
67
  "inherits" => :INHERITS,
58
68
  "node" => :NODE,
59
- "true" => :BOOLEAN
69
+ "true" => :BOOLEAN,
70
+ "and" => :AND,
71
+ "or" => :OR
60
72
  }
61
73
 
74
+ def clear
75
+ initvars
76
+ end
77
+
62
78
  # scan the whole file
63
79
  # basically just used for testing
64
80
  def fullscan
65
81
  array = []
66
82
 
67
83
  self.scan { |token,str|
84
+ # Ignore any definition nesting problems
85
+ @indefine = false
68
86
  #Puppet.debug("got token '%s' => '%s'" % [token,str])
69
87
  if token.nil?
70
88
  return array
@@ -87,14 +105,47 @@ module Puppet
87
105
  }
88
106
  end
89
107
 
108
+ def indefine?
109
+ if defined? @indefine
110
+ @indefine
111
+ else
112
+ false
113
+ end
114
+ end
115
+
90
116
  def initialize
117
+ initvars()
118
+ end
119
+
120
+ def initvars
91
121
  @line = 1
92
122
  @last = ""
123
+ @lasttoken = nil
93
124
  @scanner = nil
94
125
  @file = nil
95
126
  # AAARRGGGG! okay, regexes in ruby are bloody annoying
96
127
  # no one else has "\n" =~ /\s/
97
128
  @skip = %r{[ \t]+}
129
+
130
+ @namestack = []
131
+ @indefine = false
132
+ end
133
+
134
+ # Go up one in the namespace.
135
+ def namepop
136
+ @namestack.pop
137
+ end
138
+
139
+ # Collect the current namespace.
140
+ def namespace
141
+ @namestack.join("::")
142
+ end
143
+
144
+ # This value might have :: in it, but we don't care -- it'll be
145
+ # handled normally when joining, and when popping we want to pop
146
+ # this full value, however long the namespace is.
147
+ def namestack(value)
148
+ @namestack << value
98
149
  end
99
150
 
100
151
  def rest
@@ -161,6 +212,7 @@ module Puppet
161
212
  # if this gets much more complicated, it should
162
213
  # be moved up to where the tokens themselves are defined
163
214
  # which will get me about 75% of the way to a lexer generator
215
+ ptoken = stoken
164
216
  case stoken
165
217
  when :NAME then
166
218
  wtoken = stoken
@@ -168,36 +220,51 @@ module Puppet
168
220
  if @@keywords.include?(value)
169
221
  wtoken = @@keywords[value]
170
222
  #Puppet.debug("token '%s'" % wtoken)
223
+ if wtoken == :BOOLEAN
224
+ value = eval(value)
225
+ end
171
226
  end
172
- yield [wtoken,value]
173
- @last = value
227
+ ptoken = wtoken
174
228
  when :NUMBER then
175
- yield [:NAME,value]
176
- # just throw comments away
229
+ ptoken = :NAME
177
230
  when :COMMENT then
178
231
  # just throw comments away
232
+ next
179
233
  when :RETURN then
180
234
  @line += 1
181
235
  @scanner.skip(@skip)
236
+ next
182
237
  when :SQUOTE then
183
238
  #Puppet.debug("searching '%s' after '%s'" % [self.rest,value])
184
239
  value = self.slurpstring(value)
185
- yield [:SQTEXT,value]
186
- @last = value
187
- #stoken = :DQTEXT
240
+ ptoken = :SQTEXT
188
241
  #Puppet.debug("got string '%s' => '%s'" % [:DQTEXT,value])
189
242
  when :DQUOTE then
190
- #Puppet.debug("searching '%s' after '%s'" % [self.rest,value])
191
243
  value = self.slurpstring(value)
192
- yield [:DQTEXT,value]
193
- @last = value
194
- #stoken = :DQTEXT
195
- #Puppet.debug("got string '%s' => '%s'" % [:DQTEXT,value])
196
- else
197
- #Puppet.debug("got token '%s' => '%s'" % [stoken,value])
198
- yield [stoken,value]
199
- @last = value
244
+ ptoken = :DQTEXT
245
+ when :VARIABLE then
246
+ value = value.sub(/^\$/, '')
247
+ end
248
+
249
+ yield [ptoken, value]
250
+
251
+ if @lasttoken == :CLASS
252
+ namestack(value)
200
253
  end
254
+
255
+ if @lasttoken == :DEFINE
256
+ if indefine?
257
+ msg = "Cannot nest definition %s inside %s" % [value, @indefine]
258
+ self.indefine = false
259
+ raise Puppet::ParseError, msg
260
+ end
261
+
262
+ @indefine = value
263
+ end
264
+
265
+ @last = value
266
+ @lasttoken = ptoken
267
+
201
268
  @scanner.skip(@skip)
202
269
  end
203
270
  @scanner = nil
@@ -230,4 +297,4 @@ module Puppet
230
297
  end
231
298
  end
232
299
 
233
- # $Id: lexer.rb 1245 2006-06-08 20:06:41Z luke $
300
+ # $Id: lexer.rb 2393 2007-04-19 18:34:03Z luke $
@@ -8,7 +8,7 @@ require 'racc/parser'
8
8
 
9
9
 
10
10
  require 'puppet'
11
- require 'puppet/parsedfile'
11
+ require 'puppet/util/loadedfile'
12
12
  require 'puppet/parser/lexer'
13
13
  require 'puppet/parser/ast'
14
14
  #require 'puppet/parser/interpreter'
@@ -29,12 +29,24 @@ module Puppet
29
29
 
30
30
  class Parser < Racc::Parser
31
31
 
32
- module_eval <<'..end grammar.ra modeval..id99c9ad765d', 'grammar.ra', 787
32
+ module_eval <<'..end grammar.ra modeval..id2ea020a302', 'grammar.ra', 606
33
33
  require 'puppet/parser/functions'
34
34
 
35
- attr_reader :file
35
+ attr_reader :file, :interp
36
36
  attr_accessor :files
37
37
 
38
+ # Add context to a message; useful for error messages and such.
39
+ def addcontext(message, obj = nil)
40
+ obj ||= @lexer
41
+
42
+ message += " on line %s" % obj.line
43
+ if file = obj.file
44
+ message += " in file %s" % file
45
+ end
46
+
47
+ return message
48
+ end
49
+
38
50
  # Create an AST array out of all of the args
39
51
  def aryfy(*args)
40
52
  if args[0].instance_of?(AST::ASTArray)
@@ -43,14 +55,40 @@ def aryfy(*args)
43
55
  result.push arg
44
56
  }
45
57
  else
46
- result = AST::ASTArray.new(
47
- :children => args
48
- )
58
+ result = ast AST::ASTArray, :children => args
49
59
  end
50
60
 
51
61
  return result
52
62
  end
53
63
 
64
+ # Create an AST object, and automatically add the file and line information if
65
+ # available.
66
+ def ast(klass, hash = nil)
67
+ hash ||= {}
68
+ unless hash.include?(:line)
69
+ hash[:line] = @lexer.line
70
+ end
71
+
72
+ unless hash.include?(:file)
73
+ if file = @lexer.file
74
+ hash[:file] = file
75
+ end
76
+ end
77
+
78
+ return klass.new(hash)
79
+ end
80
+
81
+ # Raise a Parse error.
82
+ def error(message)
83
+ except = Puppet::ParseError.new(message)
84
+ except.line = @lexer.line
85
+ if @lexer.file
86
+ except.file = @lexer.file
87
+ end
88
+
89
+ raise except
90
+ end
91
+
54
92
  def file=(file)
55
93
  unless FileTest.exists?(file)
56
94
  unless file =~ /\.pp$/
@@ -63,17 +101,80 @@ def file=(file)
63
101
  if @files.detect { |f| f.file == file }
64
102
  raise Puppet::ImportError.new("Import loop detected")
65
103
  else
66
- @files << Puppet::ParsedFile.new(file)
104
+ @files << Puppet::Util::LoadedFile.new(file)
67
105
  @lexer.file = file
68
106
  end
69
107
  end
70
108
 
71
- def initialize
109
+ # Import our files.
110
+ def import(file)
111
+ if Puppet[:ignoreimport]
112
+ return AST::ASTArray.new(:children => [])
113
+ end
114
+ # use a path relative to the file doing the importing
115
+ if @lexer.file
116
+ dir = @lexer.file.sub(%r{[^/]+$},'').sub(/\/$/, '')
117
+ else
118
+ dir = "."
119
+ end
120
+ if dir == ""
121
+ dir = "."
122
+ end
123
+ result = ast AST::ASTArray
124
+
125
+ # We can't interpolate at this point since we don't have any
126
+ # scopes set up. Warn the user if they use a variable reference
127
+ pat = file
128
+ if pat.index("$")
129
+ Puppet.warning(
130
+ "The import of #{pat} contains a variable reference;" +
131
+ " variables are not interpolated for imports " +
132
+ "in file #{@lexer.file} at line #{@lexer.line}"
133
+ )
134
+ end
135
+ files = Puppet::Module::find_manifests(pat, dir)
136
+ if files.size == 0
137
+ raise Puppet::ImportError.new("No file(s) found for import " +
138
+ "of '#{pat}'")
139
+ end
140
+
141
+ files.collect { |file|
142
+ parser = Puppet::Parser::Parser.new(interp)
143
+ parser.files = self.files
144
+ Puppet.debug("importing '%s'" % file)
145
+
146
+ unless file =~ /^#{File::SEPARATOR}/
147
+ file = File.join(dir, file)
148
+ end
149
+ begin
150
+ parser.file = file
151
+ rescue Puppet::ImportError
152
+ Puppet.warning(
153
+ "Importing %s would result in an import loop" %
154
+ File.join(dir, file)
155
+ )
156
+ next
157
+ end
158
+
159
+ # This will normally add code to the 'main' class.
160
+ parser.parse
161
+ }
162
+ end
163
+
164
+ def initialize(interpreter)
165
+ @interp = interpreter
166
+ initvars()
167
+ end
168
+
169
+ # Initialize or reset all of our variables.
170
+ def initvars
72
171
  @lexer = Puppet::Parser::Lexer.new()
73
172
  @files = []
74
- #if Puppet[:debug]
75
- # @yydebug = true
76
- #end
173
+ end
174
+
175
+ # The fully qualifed name, with the full namespace.
176
+ def fqname(name)
177
+ [@lexer.namespace, name].join("::").sub(/^::/, '')
77
178
  end
78
179
 
79
180
  def on_error(token,value,stack)
@@ -82,14 +183,6 @@ def on_error(token,value,stack)
82
183
  # [@lexer.line,@lexer.last]
83
184
  error = "Syntax error at '%s'" % [value]
84
185
 
85
- #if Puppet[:debug]
86
- #puts stack.inspect
87
- #puts stack.class
88
- #end
89
- #if @lexer.file
90
- # error += (" in '%s'" % @lexer.file)
91
- #end
92
-
93
186
  except = Puppet::ParseError.new(error)
94
187
  except.line = @lexer.line
95
188
  if @lexer.file
@@ -100,14 +193,17 @@ def on_error(token,value,stack)
100
193
  end
101
194
 
102
195
  # how should I do error handling here?
103
- def parse
196
+ def parse(string = nil)
197
+ if string
198
+ self.string = string
199
+ end
104
200
  begin
105
- yyparse(@lexer,:scan)
201
+ main = yyparse(@lexer,:scan)
106
202
  rescue Racc::ParseError => except
107
203
  error = Puppet::ParseError.new(except)
108
204
  error.line = @lexer.line
109
205
  error.file = @lexer.file
110
- error.backtrace = except.backtrace
206
+ error.set_backtrace except.backtrace
111
207
  raise error
112
208
  rescue Puppet::ParseError => except
113
209
  except.line ||= @lexer.line
@@ -117,33 +213,34 @@ def parse
117
213
  # and this is a framework error
118
214
  except.line ||= @lexer.line
119
215
  except.file ||= @lexer.file
120
- #if Puppet[:debug]
121
- # puts except.stack
122
- #end
123
216
  raise except
124
217
  rescue Puppet::DevError => except
125
218
  except.line ||= @lexer.line
126
219
  except.file ||= @lexer.file
127
- #if Puppet[:debug]
128
- # puts except.stack
129
- #end
130
220
  raise except
131
221
  rescue => except
132
222
  error = Puppet::DevError.new(except.message)
133
223
  error.line = @lexer.line
134
224
  error.file = @lexer.file
135
- error.backtrace = except.backtrace
136
- #if Puppet[:debug]
137
- # puts caller
138
- #end
225
+ error.set_backtrace except.backtrace
139
226
  raise error
140
227
  end
228
+ if main
229
+ # Store the results as the top-level class.
230
+ interp.newclass("", :code => main)
231
+ return main
232
+ end
233
+ ensure
234
+ @lexer.clear
141
235
  end
142
236
 
237
+ # See if any of the files have changed.
143
238
  def reparse?
144
- @files.detect { |file|
145
- file.changed?
146
- }
239
+ if file = @files.detect { |file| file.changed? }
240
+ return file.stamp
241
+ else
242
+ return false
243
+ end
147
244
  end
148
245
 
149
246
  def string=(string)
@@ -155,325 +252,434 @@ end
155
252
  # mode: ruby
156
253
  # End:
157
254
 
158
- # $Id: parser.rb 1418 2006-07-21 19:38:29Z luke $
255
+ # $Id: parser.rb 2393 2007-04-19 18:34:03Z luke $
159
256
 
160
- ..end grammar.ra modeval..id99c9ad765d
257
+ ..end grammar.ra modeval..id2ea020a302
161
258
 
162
259
  ##### racc 1.4.5 generates ###
163
260
 
164
261
  racc_reduce_table = [
165
262
  0, 0, :racc_error,
166
- 1, 44, :_reduce_1,
167
- 1, 44, :_reduce_none,
168
- 1, 45, :_reduce_none,
169
- 2, 45, :_reduce_4,
170
- 1, 47, :_reduce_none,
171
- 1, 47, :_reduce_none,
172
- 1, 47, :_reduce_none,
173
- 1, 47, :_reduce_none,
174
- 1, 47, :_reduce_none,
175
- 1, 47, :_reduce_none,
176
- 1, 47, :_reduce_none,
177
- 1, 47, :_reduce_none,
178
- 1, 47, :_reduce_none,
179
- 1, 47, :_reduce_none,
180
- 4, 54, :_reduce_15,
181
- 2, 54, :_reduce_16,
182
- 1, 58, :_reduce_none,
183
- 3, 58, :_reduce_18,
184
- 1, 59, :_reduce_none,
185
- 1, 59, :_reduce_none,
186
- 1, 59, :_reduce_none,
187
- 5, 48, :_reduce_22,
188
- 5, 48, :_reduce_23,
189
- 5, 48, :_reduce_24,
190
- 2, 49, :_reduce_25,
191
- 3, 50, :_reduce_26,
192
- 4, 68, :_reduce_27,
193
- 1, 63, :_reduce_none,
194
- 3, 63, :_reduce_29,
195
- 0, 64, :_reduce_none,
196
- 1, 64, :_reduce_none,
197
- 1, 60, :_reduce_32,
198
- 1, 67, :_reduce_33,
199
- 1, 69, :_reduce_none,
200
- 1, 69, :_reduce_none,
201
- 1, 69, :_reduce_none,
202
- 1, 69, :_reduce_none,
263
+ 1, 51, :_reduce_1,
264
+ 1, 51, :_reduce_none,
265
+ 1, 52, :_reduce_none,
266
+ 2, 52, :_reduce_4,
267
+ 1, 54, :_reduce_none,
268
+ 1, 54, :_reduce_none,
269
+ 1, 54, :_reduce_none,
270
+ 1, 54, :_reduce_none,
271
+ 1, 54, :_reduce_none,
272
+ 1, 54, :_reduce_none,
273
+ 1, 54, :_reduce_none,
274
+ 1, 54, :_reduce_none,
275
+ 1, 54, :_reduce_none,
276
+ 1, 54, :_reduce_none,
277
+ 1, 54, :_reduce_none,
278
+ 1, 54, :_reduce_none,
279
+ 4, 62, :_reduce_17,
280
+ 3, 62, :_reduce_18,
281
+ 2, 62, :_reduce_19,
282
+ 1, 67, :_reduce_none,
283
+ 1, 67, :_reduce_none,
284
+ 1, 68, :_reduce_none,
285
+ 3, 68, :_reduce_23,
286
+ 1, 70, :_reduce_none,
287
+ 1, 70, :_reduce_none,
288
+ 1, 70, :_reduce_none,
289
+ 1, 70, :_reduce_27,
203
290
  1, 69, :_reduce_none,
204
- 1, 69, :_reduce_none,
205
- 3, 51, :_reduce_40,
206
- 0, 65, :_reduce_41,
207
- 1, 65, :_reduce_42,
208
- 3, 65, :_reduce_43,
209
- 3, 73, :_reduce_44,
210
- 1, 74, :_reduce_none,
211
- 3, 74, :_reduce_46,
212
- 1, 72, :_reduce_none,
213
- 1, 72, :_reduce_none,
214
- 1, 72, :_reduce_none,
215
- 1, 72, :_reduce_none,
216
- 1, 72, :_reduce_none,
217
- 1, 72, :_reduce_none,
218
- 1, 72, :_reduce_none,
219
- 1, 72, :_reduce_none,
220
- 1, 72, :_reduce_none,
221
- 4, 78, :_reduce_56,
222
- 1, 62, :_reduce_57,
223
- 1, 62, :_reduce_58,
224
- 1, 76, :_reduce_59,
225
- 4, 77, :_reduce_60,
226
- 5, 52, :_reduce_61,
227
- 1, 79, :_reduce_none,
228
- 2, 79, :_reduce_63,
229
- 5, 80, :_reduce_64,
230
- 4, 80, :_reduce_65,
291
+ 3, 69, :_reduce_29,
292
+ 5, 55, :_reduce_30,
293
+ 5, 55, :_reduce_31,
294
+ 5, 55, :_reduce_32,
295
+ 5, 66, :_reduce_33,
296
+ 2, 56, :_reduce_34,
297
+ 1, 80, :_reduce_35,
298
+ 2, 80, :_reduce_36,
299
+ 2, 57, :_reduce_37,
300
+ 1, 81, :_reduce_none,
231
301
  1, 81, :_reduce_none,
232
- 3, 81, :_reduce_67,
233
- 3, 70, :_reduce_68,
302
+ 3, 82, :_reduce_40,
303
+ 3, 82, :_reduce_41,
234
304
  1, 83, :_reduce_none,
235
- 3, 83, :_reduce_70,
305
+ 1, 83, :_reduce_none,
306
+ 3, 83, :_reduce_44,
307
+ 1, 84, :_reduce_none,
308
+ 3, 84, :_reduce_46,
236
309
  1, 85, :_reduce_none,
237
- 3, 85, :_reduce_72,
238
- 3, 84, :_reduce_73,
239
- 1, 82, :_reduce_none,
240
- 1, 82, :_reduce_none,
241
- 1, 82, :_reduce_none,
242
- 1, 82, :_reduce_none,
243
- 1, 82, :_reduce_none,
244
- 1, 82, :_reduce_none,
245
- 1, 82, :_reduce_80,
246
- 2, 53, :_reduce_81,
247
- 6, 55, :_reduce_82,
248
- 5, 55, :_reduce_83,
249
- 6, 56, :_reduce_84,
250
- 5, 56, :_reduce_85,
251
- 6, 57, :_reduce_86,
252
- 5, 57, :_reduce_87,
253
- 1, 88, :_reduce_none,
254
- 3, 88, :_reduce_89,
255
- 1, 89, :_reduce_90,
256
- 1, 89, :_reduce_91,
257
- 1, 89, :_reduce_92,
258
- 0, 46, :_reduce_93,
259
- 1, 86, :_reduce_none,
260
- 3, 86, :_reduce_95,
261
- 3, 86, :_reduce_96,
262
- 1, 90, :_reduce_none,
263
- 3, 90, :_reduce_98,
264
- 3, 91, :_reduce_99,
265
- 1, 91, :_reduce_100,
310
+ 1, 85, :_reduce_none,
311
+ 3, 86, :_reduce_49,
312
+ 3, 86, :_reduce_50,
313
+ 1, 87, :_reduce_none,
266
314
  1, 87, :_reduce_none,
267
- 2, 87, :_reduce_102,
268
- 1, 61, :_reduce_103,
269
- 3, 71, :_reduce_104,
270
- 2, 71, :_reduce_105,
315
+ 4, 89, :_reduce_53,
316
+ 1, 76, :_reduce_none,
317
+ 3, 76, :_reduce_55,
318
+ 0, 77, :_reduce_none,
319
+ 1, 77, :_reduce_none,
320
+ 1, 71, :_reduce_58,
321
+ 1, 91, :_reduce_59,
322
+ 1, 90, :_reduce_none,
323
+ 1, 90, :_reduce_none,
324
+ 1, 90, :_reduce_none,
325
+ 1, 90, :_reduce_none,
326
+ 1, 90, :_reduce_none,
327
+ 1, 90, :_reduce_none,
328
+ 3, 58, :_reduce_66,
329
+ 0, 78, :_reduce_67,
330
+ 1, 78, :_reduce_68,
331
+ 3, 78, :_reduce_69,
332
+ 3, 95, :_reduce_70,
333
+ 1, 96, :_reduce_none,
334
+ 3, 96, :_reduce_72,
335
+ 1, 88, :_reduce_none,
336
+ 1, 88, :_reduce_none,
337
+ 1, 88, :_reduce_none,
338
+ 1, 88, :_reduce_none,
339
+ 1, 88, :_reduce_none,
340
+ 1, 88, :_reduce_none,
341
+ 1, 94, :_reduce_none,
342
+ 1, 94, :_reduce_none,
343
+ 1, 94, :_reduce_none,
344
+ 1, 94, :_reduce_none,
345
+ 1, 94, :_reduce_none,
346
+ 1, 94, :_reduce_none,
347
+ 1, 94, :_reduce_none,
348
+ 1, 94, :_reduce_none,
349
+ 1, 94, :_reduce_none,
350
+ 4, 99, :_reduce_88,
351
+ 3, 99, :_reduce_89,
352
+ 1, 73, :_reduce_90,
353
+ 1, 73, :_reduce_91,
354
+ 1, 98, :_reduce_92,
355
+ 4, 74, :_reduce_93,
356
+ 4, 74, :_reduce_94,
357
+ 6, 60, :_reduce_95,
358
+ 0, 101, :_reduce_none,
359
+ 4, 101, :_reduce_97,
360
+ 1, 100, :_reduce_none,
361
+ 5, 59, :_reduce_99,
362
+ 1, 102, :_reduce_none,
363
+ 2, 102, :_reduce_101,
364
+ 5, 103, :_reduce_102,
365
+ 4, 103, :_reduce_103,
366
+ 1, 104, :_reduce_none,
367
+ 3, 104, :_reduce_105,
368
+ 3, 92, :_reduce_106,
369
+ 1, 106, :_reduce_none,
370
+ 4, 106, :_reduce_108,
371
+ 1, 108, :_reduce_none,
372
+ 3, 108, :_reduce_110,
373
+ 3, 107, :_reduce_111,
374
+ 1, 105, :_reduce_none,
375
+ 1, 105, :_reduce_none,
376
+ 1, 105, :_reduce_none,
377
+ 1, 105, :_reduce_none,
378
+ 1, 105, :_reduce_none,
379
+ 1, 105, :_reduce_none,
380
+ 1, 105, :_reduce_118,
381
+ 1, 109, :_reduce_119,
382
+ 3, 109, :_reduce_120,
383
+ 2, 61, :_reduce_121,
384
+ 6, 63, :_reduce_122,
385
+ 5, 63, :_reduce_123,
386
+ 6, 64, :_reduce_124,
387
+ 5, 64, :_reduce_125,
388
+ 6, 65, :_reduce_126,
389
+ 5, 65, :_reduce_127,
271
390
  1, 75, :_reduce_none,
272
391
  1, 75, :_reduce_none,
273
- 0, 66, :_reduce_none,
274
- 1, 66, :_reduce_109 ]
275
-
276
- racc_reduce_n = 110
277
-
278
- racc_shift_n = 181
392
+ 1, 112, :_reduce_none,
393
+ 3, 112, :_reduce_131,
394
+ 1, 114, :_reduce_none,
395
+ 1, 114, :_reduce_none,
396
+ 1, 114, :_reduce_none,
397
+ 0, 53, :_reduce_135,
398
+ 0, 115, :_reduce_136,
399
+ 1, 110, :_reduce_none,
400
+ 3, 110, :_reduce_138,
401
+ 3, 110, :_reduce_139,
402
+ 1, 116, :_reduce_none,
403
+ 3, 116, :_reduce_141,
404
+ 3, 117, :_reduce_142,
405
+ 1, 117, :_reduce_143,
406
+ 3, 117, :_reduce_144,
407
+ 1, 117, :_reduce_145,
408
+ 1, 113, :_reduce_none,
409
+ 2, 113, :_reduce_147,
410
+ 1, 111, :_reduce_none,
411
+ 2, 111, :_reduce_149,
412
+ 1, 118, :_reduce_none,
413
+ 1, 118, :_reduce_none,
414
+ 1, 119, :_reduce_none,
415
+ 1, 119, :_reduce_none,
416
+ 1, 72, :_reduce_154,
417
+ 3, 93, :_reduce_155,
418
+ 2, 93, :_reduce_156,
419
+ 1, 97, :_reduce_none,
420
+ 1, 97, :_reduce_none,
421
+ 0, 79, :_reduce_none,
422
+ 1, 79, :_reduce_160 ]
423
+
424
+ racc_reduce_n = 161
425
+
426
+ racc_shift_n = 263
279
427
 
280
428
  racc_action_table = [
281
- 47, 34, 37, 153, 149, 18, 47, 34, 37, 59,
282
- 152, -76, 47, 34, 37, 77, 18, 34, 37, 70,
283
- 34, 37, 18, 35, -75, 59, 34, 37, 18, 42,
284
- 82, 129, -74, 48, 49, 42, 30, 54, 30, 48,
285
- 49, 42, 68, 54, 60, 48, 49, -74, 42, 54,
286
- 47, 34, 37, 35, 42, -77, 47, 34, 37, 35,
287
- -76, 130, 47, 34, 37, 75, 18, 108, 29, 158,
288
- 29, 31, 18, 31, 35, 75, 110, 106, 18, 42,
289
- 159, 137, 138, 48, 49, 42, 145, 54, 80, 48,
290
- 87, 42, -77, 54, 83, 48, 49, 34, 37, 54,
291
- 47, 34, 37, 34, 37, 111, 47, 34, 37, 112,
292
- 114, 142, 47, 34, 37, 168, 18, 112, 114, 72,
293
- 43, 108, 18, 106, 146, 42, 81, -79, 18, 42,
294
- 35, 42, 80, 48, 49, 42, 35, 54, -75, 48,
295
- 49, 42, 72, 54, -78, 48, 49, 156, 157, 54,
296
- 47, 34, 37, 34, 37, 105, 160, 161, 75, 72,
297
- 34, 37, 34, 37, 67, 120, 18, 66, 18, 97,
298
- 170, 65, 108, 35, 68, 18, 62, 18, 99, 42,
299
- 32, 42, 26, 48, 49, 48, 49, 54, 42, 54,
300
- 42, 103, 48, 49, 48, 49, 54, nil, 54, 34,
301
- 37, 34, 37, nil, nil, 151, nil, nil, 34, 37,
302
- nil, nil, nil, nil, 18, nil, 18, nil, nil, nil,
303
- nil, nil, nil, 18, nil, nil, nil, 42, 163, 42,
304
- nil, 48, 49, 48, 49, 54, 42, 54, nil, 18,
305
- 48, 49, nil, 165, 54, nil, nil, nil, nil, 15,
306
- 17, nil, 22, 24, 18, 3, nil, 9, 180, 12,
307
- nil, 19, nil, nil, 15, 17, nil, 22, 24, 18,
308
- 3, nil, 9, 166, 12, nil, 19, nil, nil, 15,
309
- 17, nil, 22, 24, 18, 3, nil, 9, 175, 12,
310
- nil, 19, nil, nil, 15, 17, nil, 22, 24, 18,
311
- 3, nil, 9, 140, 12, nil, 19, nil, nil, 15,
312
- 17, nil, 22, 24, 18, 3, nil, 9, 179, 12,
313
- nil, 19, nil, nil, 15, 17, nil, 22, 24, 18,
314
- 3, nil, 9, 176, 12, nil, 19, nil, nil, 15,
315
- 17, nil, 22, 24, 18, 3, nil, 9, nil, 12,
316
- nil, 19, nil, nil, 15, 17, nil, 22, 24, 18,
317
- 3, nil, 9, nil, 12, nil, 19, nil, nil, 15,
318
- 17, nil, 22, 24, 18, 3, nil, 9, nil, 12,
319
- nil, 19, nil, nil, 15, 17, nil, 22, 24, nil,
320
- 3, nil, 9, nil, 12, nil, 19 ]
429
+ 49, 51, 53, 41, -128, 51, 53, 51, 53, 51,
430
+ 53, 188, 58, 96, 49, 110, 58, 63, 51, 53,
431
+ 46, 43, 58, 33, 116, 170, 156, 107, 217, 88,
432
+ 4, 45, 163, 74, 116, 45, 55, 45, 93, 45,
433
+ 98, 191, 55, 47, 98, 44, 192, 47, 45, 47,
434
+ 36, 47, 65, 69, 153, 154, 75, 63, 51, 53,
435
+ 33, 233, 187, 63, 51, 53, 113, 4, 79, 63,
436
+ 51, 53, 80, 74, 232, 63, 51, 53, 187, 74,
437
+ 158, 63, 51, 53, 38, 74, 196, 39, 45, 157,
438
+ 191, 74, 65, 69, 45, 192, 75, 74, 65, 69,
439
+ 45, 187, 75, 198, 65, 69, 45, -113, 75, -112,
440
+ 65, 69, 45, 185, 75, 97, 65, 69, 51, 53,
441
+ 75, 63, 51, 53, -115, 205, 45, 63, 51, 53,
442
+ -114, 98, 200, 63, 51, 53, -112, 74, -113, 63,
443
+ 51, 53, 117, 74, -115, 63, 51, 53, 112, 74,
444
+ 153, 154, 45, 167, 247, 74, 65, 69, 45, -116,
445
+ 75, 140, 65, 69, 45, 49, 75, 79, 65, 69,
446
+ 45, 49, 75, -114, 65, 69, 45, 116, 75, 241,
447
+ 65, 174, 33, 218, 75, 63, 51, 53, 224, 4,
448
+ 18, 63, 51, 53, 111, 223, 110, 36, 51, 53,
449
+ 15, 74, 21, 25, 79, 1, 5, 140, 8, 225,
450
+ 13, 121, 17, 140, 26, 161, 45, 4, 240, 228,
451
+ 65, 69, 45, 160, 75, 230, 65, 137, 45, 18,
452
+ 75, 38, 65, 174, 39, 147, 75, 234, 148, 15,
453
+ 231, 21, 25, 97, 1, 5, -117, 8, 18, 13,
454
+ 80, 17, 236, 26, 45, 121, 4, 238, 15, 98,
455
+ 21, 25, 262, 1, 5, 118, 8, 91, 13, 188,
456
+ 17, 97, 26, 18, 166, 4, -113, 33, 167, 169,
457
+ 144, 253, 45, 15, 4, 21, 25, 98, 1, 5,
458
+ 97, 8, 18, 13, -112, 17, -115, 26, 51, 53,
459
+ 4, 45, 15, -114, 21, 25, 98, 1, 5, -117,
460
+ 8, 243, 13, 140, 17, 87, 26, 150, 258, 4,
461
+ 51, 53, 159, 248, 222, 123, 153, 154, 45, 18,
462
+ 51, 53, 65, 174, 84, 140, 75, 51, 53, 15,
463
+ 143, 21, 25, 121, 1, 5, 81, 8, 187, 13,
464
+ 45, 17, 140, 26, 65, 174, 4, 261, 75, 255,
465
+ 256, 126, -160, 121, 124, 32, 229, 45, 18, nil,
466
+ nil, 65, 174, nil, nil, 75, 215, nil, 15, nil,
467
+ 21, 25, nil, 1, 5, nil, 8, 18, 13, nil,
468
+ 17, nil, 26, 51, 53, 4, nil, 15, nil, 21,
469
+ 25, nil, 1, 5, nil, 8, nil, 13, 140, 17,
470
+ nil, 26, nil, nil, 4, 51, 53, 51, 53, nil,
471
+ 177, nil, nil, 45, nil, nil, nil, 65, 174, nil,
472
+ 140, 75, 140, 203, nil, nil, nil, nil, nil, nil,
473
+ nil, nil, nil, nil, 18, 45, nil, 45, nil, 65,
474
+ 174, 65, 174, 75, 15, 75, 21, 25, 201, 1,
475
+ 5, nil, 8, nil, 13, nil, 17, nil, 26, 18,
476
+ nil, 4, nil, 51, 53, nil, nil, nil, nil, 15,
477
+ nil, 21, 25, nil, 1, 5, nil, 8, 140, 13,
478
+ nil, 17, nil, 26, nil, nil, 4, nil, nil, nil,
479
+ 18, nil, nil, 45, nil, nil, nil, 65, 174, nil,
480
+ 15, 75, 21, 25, nil, 1, 5, nil, 8, 18,
481
+ 13, nil, 17, nil, 26, nil, nil, 4, nil, 15,
482
+ nil, 21, 25, nil, 1, 5, nil, 8, 18, 13,
483
+ nil, 17, nil, 26, nil, nil, 4, nil, 15, nil,
484
+ 21, 25, nil, 1, 5, nil, 8, 18, 13, nil,
485
+ 17, nil, 26, nil, nil, 4, nil, 15, nil, 21,
486
+ 25, nil, 1, 5, nil, 8, nil, 13, nil, 17,
487
+ nil, 26, nil, nil, 4 ]
321
488
 
322
489
  racc_action_check = [
323
- 65, 65, 65, 127, 124, 19, 130, 130, 130, 13,
324
- 127, 57, 47, 47, 47, 47, 65, 15, 15, 27,
325
- 43, 43, 130, 19, 85, 64, 80, 80, 47, 65,
326
- 53, 88, 91, 65, 65, 130, 3, 65, 70, 130,
327
- 130, 47, 27, 130, 13, 47, 47, 53, 43, 47,
328
- 113, 113, 113, 43, 80, 92, 59, 59, 59, 80,
329
- 93, 94, 82, 82, 82, 76, 113, 96, 3, 133,
330
- 70, 3, 59, 70, 99, 115, 76, 87, 82, 113,
331
- 133, 100, 102, 113, 113, 59, 115, 113, 87, 59,
332
- 59, 82, 56, 59, 55, 82, 82, 75, 75, 82,
333
- 12, 12, 12, 9, 9, 79, 146, 146, 146, 79,
334
- 79, 107, 161, 161, 161, 148, 12, 148, 148, 108,
335
- 9, 74, 146, 72, 118, 75, 51, 58, 161, 12,
336
- 75, 9, 49, 12, 12, 146, 9, 12, 46, 146,
337
- 146, 161, 129, 146, 45, 161, 161, 131, 132, 161,
338
- 106, 106, 106, 83, 83, 71, 134, 136, 36, 32,
339
- 153, 153, 81, 81, 26, 81, 106, 24, 83, 60,
340
- 152, 22, 154, 158, 66, 153, 17, 81, 62, 106,
341
- 4, 83, 2, 106, 106, 83, 83, 106, 153, 83,
342
- 81, 68, 153, 153, 81, 81, 153, nil, 81, 169,
343
- 169, 125, 125, nil, nil, 125, nil, nil, 120, 120,
344
- nil, nil, nil, nil, 169, nil, 125, nil, nil, nil,
345
- nil, nil, nil, 120, nil, nil, nil, 169, 137, 125,
346
- nil, 169, 169, 125, 125, 169, 120, 125, nil, 137,
347
- 120, 120, nil, 138, 120, nil, nil, nil, nil, 137,
348
- 137, nil, 137, 137, 138, 137, nil, 137, 178, 137,
349
- nil, 137, nil, nil, 138, 138, nil, 138, 138, 178,
350
- 138, nil, 138, 139, 138, nil, 138, nil, nil, 178,
351
- 178, nil, 178, 178, 139, 178, nil, 178, 162, 178,
352
- nil, 178, nil, nil, 139, 139, nil, 139, 139, 162,
353
- 139, nil, 139, 105, 139, nil, 139, nil, nil, 162,
354
- 162, nil, 162, 162, 105, 162, nil, 162, 170, 162,
355
- nil, 162, nil, nil, 105, 105, nil, 105, 105, 170,
356
- 105, nil, 105, 164, 105, nil, 105, nil, nil, 170,
357
- 170, nil, 170, 170, 164, 170, nil, 170, nil, 170,
358
- nil, 170, nil, nil, 164, 164, nil, 164, 164, 6,
359
- 164, nil, 164, nil, 164, nil, 164, nil, nil, 6,
360
- 6, nil, 6, 6, 0, 6, nil, 6, nil, 6,
361
- nil, 6, nil, nil, 0, 0, nil, 0, 0, nil,
362
- 0, nil, 0, nil, 0, nil, 0 ]
490
+ 13, 13, 13, 9, 13, 116, 116, 46, 46, 110,
491
+ 110, 137, 111, 35, 69, 171, 13, 17, 17, 17,
492
+ 13, 11, 46, 9, 137, 116, 101, 46, 171, 27,
493
+ 9, 13, 111, 17, 69, 116, 13, 46, 35, 110,
494
+ 116, 126, 46, 13, 110, 11, 126, 116, 17, 46,
495
+ 8, 110, 17, 17, 101, 101, 17, 49, 49, 49,
496
+ 25, 194, 125, 63, 63, 63, 63, 25, 18, 15,
497
+ 15, 15, 18, 49, 194, 168, 168, 168, 120, 63,
498
+ 105, 79, 79, 79, 8, 15, 127, 8, 49, 105,
499
+ 233, 168, 49, 49, 63, 233, 49, 79, 63, 63,
500
+ 15, 131, 63, 132, 15, 15, 168, 133, 15, 136,
501
+ 168, 168, 79, 119, 168, 44, 79, 79, 21, 21,
502
+ 79, 188, 188, 188, 138, 152, 44, 230, 230, 230,
503
+ 139, 44, 142, 229, 229, 229, 68, 188, 64, 32,
504
+ 32, 32, 70, 230, 72, 200, 200, 200, 62, 229,
505
+ 152, 152, 188, 220, 220, 32, 188, 188, 230, 61,
506
+ 188, 200, 230, 230, 229, 163, 230, 58, 229, 229,
507
+ 32, 55, 229, 73, 32, 32, 200, 174, 32, 204,
508
+ 200, 200, 5, 176, 200, 218, 218, 218, 183, 5,
509
+ 204, 88, 88, 88, 52, 183, 50, 96, 224, 224,
510
+ 204, 218, 204, 204, 74, 204, 204, 88, 204, 186,
511
+ 204, 187, 204, 224, 204, 109, 218, 204, 202, 190,
512
+ 218, 218, 88, 108, 218, 192, 88, 88, 224, 202,
513
+ 88, 96, 224, 224, 96, 93, 224, 196, 93, 202,
514
+ 193, 202, 202, 155, 202, 202, 77, 202, 196, 202,
515
+ 41, 202, 197, 202, 155, 198, 202, 199, 196, 155,
516
+ 196, 196, 260, 196, 196, 78, 196, 34, 196, 121,
517
+ 196, 97, 196, 260, 115, 196, 208, 91, 115, 115,
518
+ 91, 235, 97, 260, 91, 260, 260, 97, 260, 260,
519
+ 43, 260, 235, 260, 210, 260, 211, 260, 246, 246,
520
+ 260, 43, 235, 212, 235, 235, 43, 235, 235, 213,
521
+ 235, 215, 235, 246, 235, 26, 235, 94, 248, 235,
522
+ 181, 181, 106, 223, 181, 81, 106, 106, 246, 248,
523
+ 124, 124, 246, 246, 22, 181, 246, 177, 177, 248,
524
+ 90, 248, 248, 80, 248, 248, 20, 248, 237, 248,
525
+ 181, 248, 177, 248, 181, 181, 248, 259, 181, 243,
526
+ 245, 86, 247, 84, 83, 1, 191, 177, 259, nil,
527
+ nil, 177, 177, nil, nil, 177, 165, nil, 259, nil,
528
+ 259, 259, nil, 259, 259, nil, 259, 165, 259, nil,
529
+ 259, nil, 259, 118, 118, 259, nil, 165, nil, 165,
530
+ 165, nil, 165, 165, nil, 165, nil, 165, 118, 165,
531
+ nil, 165, nil, nil, 165, 157, 157, 117, 117, nil,
532
+ 117, nil, nil, 118, nil, nil, nil, 118, 118, nil,
533
+ 157, 118, 117, 150, nil, nil, nil, nil, nil, nil,
534
+ nil, nil, nil, nil, 150, 157, nil, 117, nil, 157,
535
+ 157, 117, 117, 157, 150, 117, 150, 150, 143, 150,
536
+ 150, nil, 150, nil, 150, nil, 150, nil, 150, 143,
537
+ nil, 150, nil, 158, 158, nil, nil, nil, nil, 143,
538
+ nil, 143, 143, nil, 143, 143, nil, 143, 158, 143,
539
+ nil, 143, nil, 143, nil, nil, 143, nil, nil, nil,
540
+ 112, nil, nil, 158, nil, nil, nil, 158, 158, nil,
541
+ 112, 158, 112, 112, nil, 112, 112, nil, 112, 255,
542
+ 112, nil, 112, nil, 112, nil, nil, 112, nil, 255,
543
+ nil, 255, 255, nil, 255, 255, nil, 255, 24, 255,
544
+ nil, 255, nil, 255, nil, nil, 255, nil, 24, nil,
545
+ 24, 24, nil, 24, 24, nil, 24, 0, 24, nil,
546
+ 24, nil, 24, nil, nil, 24, nil, 0, nil, 0,
547
+ 0, nil, 0, 0, nil, 0, nil, 0, nil, 0,
548
+ nil, 0, nil, nil, 0 ]
363
549
 
364
550
  racc_action_pointer = [
365
- 356, nil, 182, 32, 174, nil, 341, nil, nil, 100,
366
- nil, nil, 98, 3, nil, 14, nil, 140, nil, -13,
367
- nil, nil, 158, nil, 131, nil, 164, 9, nil, nil,
368
- nil, nil, 123, nil, nil, nil, 148, nil, nil, nil,
369
- nil, nil, nil, 17, nil, 125, 119, 10, nil, 112,
370
- nil, 107, nil, 28, nil, 88, 73, -8, 108, 54,
371
- 127, nil, 158, nil, 19, -2, 141, nil, 155, nil,
372
- 34, 149, 114, nil, 111, 94, 55, nil, nil, 100,
373
- 23, 159, 60, 150, nil, 5, nil, 68, 14, nil,
374
- nil, 13, 36, 41, 24, nil, 57, nil, nil, 38,
375
- 75, nil, 76, nil, nil, 296, 148, 104, 83, nil,
376
- nil, nil, nil, 48, nil, 65, nil, nil, 115, nil,
377
- 205, nil, nil, nil, -1, 198, nil, -7, nil, 106,
378
- 4, 140, 141, 59, 135, nil, 144, 221, 236, 266,
379
- nil, nil, nil, nil, nil, nil, 104, nil, 108, nil,
380
- nil, nil, 164, 157, 162, nil, nil, nil, 137, nil,
381
- nil, 110, 281, nil, 326, nil, nil, nil, nil, 196,
382
- 311, nil, nil, nil, nil, nil, nil, nil, 251, nil,
383
- nil ]
551
+ 539, 352, nil, nil, nil, 144, nil, nil, 46, -15,
552
+ nil, 2, nil, -2, nil, 67, nil, 15, 66, nil,
553
+ 346, 115, 328, nil, 520, 22, 273, 23, nil, nil,
554
+ nil, nil, 137, nil, 232, 3, nil, nil, nil, nil,
555
+ nil, 244, nil, 268, 93, nil, 4, nil, nil, 55,
556
+ 186, nil, 184, nil, nil, 169, nil, nil, 165, nil,
557
+ nil, 138, 142, 61, 117, nil, nil, nil, 115, 12,
558
+ 121, nil, 123, 152, 202, nil, nil, 225, 259, 79,
559
+ 305, 325, nil, 354, 325, nil, 339, nil, 189, nil,
560
+ 334, 239, nil, 197, 311, nil, 193, 249, nil, nil,
561
+ nil, 6, nil, nil, nil, 65, 278, nil, 200, 210,
562
+ 6, -6, 482, nil, nil, 269, 2, 414, 390, 108,
563
+ 68, 260, nil, nil, 327, 52, 8, 80, nil, nil,
564
+ nil, 91, 86, 86, nil, nil, 88, 2, 103, 109,
565
+ nil, nil, 93, 451, nil, nil, nil, nil, nil, nil,
566
+ 426, nil, 102, nil, nil, 221, nil, 412, 470, nil,
567
+ nil, nil, nil, 163, nil, 369, nil, nil, 73, nil,
568
+ nil, 5, nil, nil, 155, nil, 174, 334, nil, nil,
569
+ nil, 317, nil, 178, nil, nil, 202, 173, 119, nil,
570
+ 212, 353, 212, 217, 51, nil, 230, 245, 217, 250,
571
+ 143, nil, 211, nil, 172, nil, nil, nil, 255, nil,
572
+ 273, 275, 282, 288, nil, 282, nil, nil, 183, nil,
573
+ 144, nil, nil, 317, 195, nil, nil, nil, nil, 131,
574
+ 125, nil, nil, 57, nil, 274, nil, 338, nil, nil,
575
+ nil, nil, nil, 353, nil, 353, 295, 355, 311, nil,
576
+ nil, nil, nil, nil, nil, 501, nil, nil, nil, 350,
577
+ 255, nil, nil ]
384
578
 
385
579
  racc_action_default = [
386
- -93, -12, -110, -110, -110, -13, -1, -14, -2, -32,
387
- -3, -5, -110, -110, -6, -110, -7, -110, -33, -110,
388
- -8, -9, -110, -10, -110, -11, -110, -93, -88, -90,
389
- -91, -92, -41, -4, -57, -32, -16, -58, -17, -19,
390
- -20, -21, -103, -110, -54, -55, -49, -110, -59, -32,
391
- -51, -110, -53, -48, -80, -110, -52, -47, -50, -41,
392
- -110, -81, -93, -25, -110, -110, -93, 181, -110, -101,
393
- -110, -110, -110, -42, -108, -110, -110, -105, -45, -110,
394
- -110, -110, -110, -110, -78, -36, -28, -32, -110, -37,
395
- -39, -35, -38, -34, -30, -79, -108, -26, -94, -93,
396
- -110, -40, -110, -102, -89, -110, -110, -110, -109, -18,
397
- -15, -104, -106, -110, -107, -110, -75, -74, -110, -77,
398
- -110, -68, -76, -69, -110, -110, -62, -110, -66, -41,
399
- -31, -110, -110, -110, -110, -97, -100, -110, -110, -110,
400
- -87, -44, -24, -43, -46, -56, -110, -71, -110, -60,
401
- -63, -61, -110, -110, -108, -29, -22, -23, -110, -96,
402
- -95, -110, -110, -83, -110, -85, -86, -73, -70, -110,
403
- -110, -67, -27, -98, -99, -82, -84, -72, -110, -65,
404
- -64 ]
580
+ -135, -161, -16, -5, -129, -161, -6, -7, -161, -161,
581
+ -8, -161, -9, -39, -10, -161, -11, -161, -38, -12,
582
+ -161, -161, -161, -13, -1, -161, -35, -161, -14, -2,
583
+ -15, -3, -161, -128, -135, -135, -133, -130, -132, -134,
584
+ -34, -161, -37, -135, -135, -154, -161, -27, -19, -161,
585
+ -20, -90, -21, -91, -22, -58, -24, -25, -161, -26,
586
+ -28, -87, -161, -161, -81, -92, -83, -85, -80, -58,
587
+ -161, -98, -84, -79, -59, -118, -86, -82, -161, -161,
588
+ -67, -161, -119, -121, -67, -4, -135, -36, -67, -66,
589
+ -161, -161, -148, -161, -161, -146, -161, -135, -58, -52,
590
+ -51, -161, -43, -45, -42, -161, -161, -18, -161, -161,
591
+ -161, -161, -161, -156, -71, -161, -161, -161, -161, -161,
592
+ -159, -161, -68, 263, -161, -159, -136, -161, -137, -116,
593
+ -54, -159, -161, -62, -63, -65, -61, -58, -64, -60,
594
+ -59, -117, -56, -161, -153, -152, -149, -150, -151, -147,
595
+ -161, -131, -161, -48, -47, -161, -41, -161, -161, -40,
596
+ -17, -93, -23, -161, -29, -161, -155, -157, -161, -158,
597
+ -89, -161, -113, -112, -58, -115, -161, -161, -114, -106,
598
+ -107, -161, -100, -161, -104, -94, -161, -160, -161, -120,
599
+ -161, -145, -143, -161, -161, -140, -161, -161, -67, -161,
600
+ -57, -125, -161, -127, -161, -46, -44, -49, -75, -77,
601
+ -74, -78, -73, -76, -50, -96, -72, -88, -161, -109,
602
+ -159, -101, -99, -161, -161, -32, -69, -70, -33, -161,
603
+ -161, -138, -139, -161, -123, -161, -31, -159, -30, -55,
604
+ -124, -126, -95, -161, -111, -161, -161, -158, -161, -105,
605
+ -144, -142, -141, -122, -53, -161, -108, -110, -103, -161,
606
+ -161, -102, -97 ]
405
607
 
406
608
  racc_goto_table = [
407
- 33, 6, 74, 39, 8, 107, 53, 89, 135, 123,
408
- 126, 86, 36, 64, 109, 40, 71, 90, 125, 79,
409
- 94, 121, 113, 131, 148, 28, 100, 132, 143, 96,
410
- 41, 27, 63, 133, 2, nil, 61, 39, nil, nil,
411
- 118, 53, 128, nil, nil, nil, 76, nil, 147, 40,
412
- nil, nil, 150, 91, nil, 102, nil, nil, nil, 53,
413
- nil, nil, nil, nil, 41, 92, 98, 173, nil, 39,
414
- nil, nil, nil, nil, 39, 117, 53, 117, 89, 118,
415
- 93, 40, 155, 115, 128, 172, 40, 119, 90, 119,
416
- 55, 169, 104, 136, nil, 46, 41, 177, nil, 154,
417
- 53, 41, 122, 134, 122, nil, 139, 53, nil, nil,
418
- nil, nil, 171, nil, 117, nil, nil, nil, nil, 117,
419
- nil, nil, nil, nil, 91, 78, 119, nil, 118, nil,
420
- 46, 119, nil, 33, nil, nil, 92, nil, 162, 164,
421
- 53, 122, 85, 101, nil, nil, 122, 117, 46, nil,
422
- nil, 93, 136, nil, 84, 53, 33, 95, 33, 119,
423
- 124, nil, nil, 117, 116, 46, 116, nil, nil, nil,
424
- nil, 178, 33, nil, 122, 119, 84, nil, 84, 95,
425
- nil, 95, nil, nil, 141, nil, nil, nil, nil, 46,
426
- 122, 144, nil, nil, nil, nil, 46, nil, nil, nil,
427
- nil, nil, nil, 116, nil, nil, nil, nil, 116, nil,
428
- nil, nil, nil, 85, nil, 84, nil, nil, 95, nil,
429
- 84, nil, nil, 95, 167, 84, nil, nil, 95, 46,
430
- nil, nil, nil, nil, nil, nil, 116, nil, nil, 174,
431
- nil, nil, nil, nil, 46, nil, nil, nil, 84, nil,
432
- nil, 95, 116, nil, nil, nil, nil, nil, nil, nil,
433
- nil, nil, nil, nil, 84, nil, nil, 95 ]
609
+ 24, 85, 59, 60, 37, 76, 180, 76, 135, 120,
610
+ 82, 182, 57, 125, 71, 20, 78, 131, 195, 176,
611
+ 184, 115, 76, 186, 130, 129, 48, 56, 190, 207,
612
+ 214, 89, 226, 168, 197, 59, 60, 101, 106, 76,
613
+ 206, 42, 100, 100, 62, 57, 242, 181, 109, 199,
614
+ 142, 179, 141, 76, 129, 129, 162, 99, 99, 108,
615
+ 56, 220, 114, 29, 83, 34, 219, 127, 90, 76,
616
+ 35, 94, 171, 193, 221, 194, 40, 139, 119, 176,
617
+ 149, 141, 141, 184, 146, 86, nil, 138, nil, nil,
618
+ 134, 152, 151, nil, 129, 129, 100, 92, 95, 59,
619
+ nil, 164, 136, nil, 133, 59, 178, 178, nil, 57,
620
+ nil, 99, 165, 189, 129, 57, 175, 175, 129, nil,
621
+ 135, 213, 213, 245, 56, 252, 249, 237, nil, nil,
622
+ 56, 173, 173, 172, 172, 257, 239, 129, 246, nil,
623
+ 254, 141, 85, 202, nil, 141, 212, 212, 176, 128,
624
+ 204, 145, nil, nil, 100, nil, 211, 211, 76, 209,
625
+ 209, 129, nil, nil, 141, nil, 178, 216, nil, 99,
626
+ 178, 210, 210, 208, 208, nil, 175, nil, 76, 85,
627
+ 175, 85, nil, 129, nil, nil, nil, 227, 141, 139,
628
+ nil, 173, nil, 172, nil, 173, 235, 172, nil, 138,
629
+ nil, nil, 134, nil, nil, nil, nil, nil, 76, nil,
630
+ 141, nil, 85, 178, 136, nil, 133, 244, nil, 76,
631
+ 76, nil, nil, 175, nil, nil, nil, nil, 250, 251,
632
+ nil, nil, nil, nil, nil, 178, 85, 85, 173, nil,
633
+ 172, nil, nil, nil, nil, 175, nil, nil, 259, nil,
634
+ nil, nil, nil, nil, nil, 260, nil, nil, nil, nil,
635
+ 173, nil, 172 ]
434
636
 
435
637
  racc_goto_check = [
436
- 4, 2, 22, 17, 3, 23, 17, 27, 48, 41,
437
- 37, 25, 15, 17, 16, 18, 44, 28, 36, 31,
438
- 20, 40, 32, 21, 42, 46, 43, 23, 30, 22,
439
- 19, 45, 5, 47, 1, nil, 19, 17, nil, nil,
440
- 39, 17, 39, nil, nil, nil, 15, nil, 41, 18,
441
- nil, nil, 37, 17, nil, 44, nil, nil, nil, 17,
442
- nil, nil, nil, nil, 19, 18, 3, 48, nil, 17,
443
- nil, nil, nil, nil, 17, 17, 17, 17, 27, 39,
444
- 19, 18, 25, 15, 39, 23, 18, 18, 28, 18,
445
- 29, 32, 46, 17, nil, 24, 19, 41, nil, 22,
446
- 17, 19, 19, 3, 19, nil, 2, 17, nil, nil,
447
- nil, nil, 39, nil, 17, nil, nil, nil, nil, 17,
448
- nil, nil, nil, nil, 17, 29, 18, nil, 39, nil,
449
- 24, 18, nil, 4, nil, nil, 18, nil, 2, 2,
450
- 17, 19, 24, 29, nil, nil, 19, 17, 24, nil,
451
- nil, 19, 17, nil, 35, 17, 4, 33, 4, 18,
452
- 29, nil, nil, 17, 24, 24, 24, nil, nil, nil,
453
- nil, 2, 4, nil, 19, 18, 35, nil, 35, 33,
454
- nil, 33, nil, nil, 29, nil, nil, nil, nil, 24,
455
- 19, 29, nil, nil, nil, nil, 24, nil, nil, nil,
456
- nil, nil, nil, 24, nil, nil, nil, nil, 24, nil,
457
- nil, nil, nil, 24, nil, 35, nil, nil, 33, nil,
458
- 35, nil, nil, 33, 29, 35, nil, nil, 33, 24,
459
- nil, nil, nil, nil, nil, nil, 24, nil, nil, 29,
460
- nil, nil, nil, nil, 24, nil, nil, nil, 35, nil,
461
- nil, 33, 24, nil, nil, nil, nil, nil, nil, nil,
462
- nil, nil, nil, nil, 35, nil, nil, 33 ]
638
+ 2, 4, 23, 24, 64, 24, 57, 24, 43, 28,
639
+ 23, 53, 22, 28, 44, 1, 44, 28, 67, 55,
640
+ 55, 46, 24, 29, 39, 49, 17, 21, 29, 38,
641
+ 38, 44, 45, 47, 29, 23, 24, 33, 33, 24,
642
+ 34, 32, 22, 22, 50, 22, 51, 52, 44, 27,
643
+ 26, 56, 48, 24, 49, 49, 20, 21, 21, 17,
644
+ 21, 58, 44, 3, 59, 25, 57, 60, 61, 24,
645
+ 62, 63, 18, 65, 53, 66, 5, 23, 44, 55,
646
+ 68, 48, 48, 55, 69, 25, nil, 22, nil, nil,
647
+ 42, 33, 64, nil, 49, 49, 22, 3, 3, 23,
648
+ nil, 24, 21, nil, 41, 23, 23, 23, nil, 22,
649
+ nil, 21, 2, 23, 49, 22, 22, 22, 49, nil,
650
+ 43, 48, 48, 29, 21, 67, 55, 28, nil, nil,
651
+ 21, 21, 21, 41, 41, 57, 39, 49, 47, nil,
652
+ 29, 48, 4, 2, nil, 48, 23, 23, 55, 3,
653
+ 2, 25, nil, nil, 22, nil, 22, 22, 24, 42,
654
+ 42, 49, nil, nil, 48, nil, 23, 44, nil, 21,
655
+ 23, 21, 21, 41, 41, nil, 22, nil, 24, 4,
656
+ 22, 4, nil, 49, nil, nil, nil, 44, 48, 23,
657
+ nil, 21, nil, 41, nil, 21, 2, 41, nil, 22,
658
+ nil, nil, 42, nil, nil, nil, nil, nil, 24, nil,
659
+ 48, nil, 4, 23, 21, nil, 41, 44, nil, 24,
660
+ 24, nil, nil, 22, nil, nil, nil, nil, 44, 44,
661
+ nil, nil, nil, nil, nil, 23, 4, 4, 21, nil,
662
+ 41, nil, nil, nil, nil, 22, nil, nil, 2, nil,
663
+ nil, nil, nil, nil, nil, 2, nil, nil, nil, nil,
664
+ 21, nil, 41 ]
463
665
 
464
666
  racc_goto_pointer = [
465
- nil, 34, 1, 4, -6, 13, nil, nil, nil, nil,
466
- nil, nil, nil, nil, nil, 3, -61, -6, 6, 21,
467
- -39, -71, -30, -69, 83, -48, nil, -52, -42, 78,
468
- -80, -28, -57, 98, nil, 95, -65, -73, nil, -41,
469
- -60, -72, -96, -36, -11, 28, 22, -66, -91 ]
667
+ nil, 15, 0, 63, -23, 67, nil, nil, nil, nil,
668
+ nil, nil, nil, nil, nil, nil, nil, 13, -44, nil,
669
+ -54, 14, -1, -11, -10, 60, -38, -93, -71, -97,
670
+ nil, nil, 30, -6, -115, nil, nil, nil, -128, -64,
671
+ nil, 16, 2, -80, -1, -155, -42, -82, -36, -63,
672
+ 29, -169, -71, -107, nil, -98, -66, -111, -116, 43,
673
+ -19, 34, 62, 36, -4, -53, -51, -108, -13, -7 ]
470
674
 
471
675
  racc_goto_default = [
472
- nil, nil, nil, 69, 10, 11, 14, 16, 20, 21,
473
- 23, 25, 1, 5, 7, nil, 38, 13, 56, 57,
474
- nil, nil, nil, nil, 4, nil, 88, 50, 52, nil,
475
- 73, nil, nil, 58, 44, 45, nil, nil, 127, 51,
476
- nil, nil, nil, nil, nil, nil, nil, nil, nil ]
676
+ nil, nil, nil, 104, 31, 3, 6, 7, 10, 12,
677
+ 14, 16, 19, 23, 28, 30, 2, nil, 50, 52,
678
+ 54, 68, 72, 73, 22, 27, nil, nil, nil, nil,
679
+ 9, 11, nil, nil, 102, 155, 103, 105, nil, nil,
680
+ 132, 64, 66, 67, nil, 122, nil, nil, 77, 61,
681
+ nil, nil, nil, nil, 183, 70, nil, nil, nil, nil,
682
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil ]
477
683
 
478
684
  racc_token_table = {
479
685
  false => 0,
@@ -495,34 +701,41 @@ racc_token_table = {
495
701
  :DOT => 16,
496
702
  :COLON => 17,
497
703
  :TYPE => 18,
498
- :QMARK => 19,
499
- :LPAREN => 20,
500
- :RPAREN => 21,
501
- :ISEQUAL => 22,
502
- :GREATEREQUAL => 23,
503
- :GREATERTHAN => 24,
504
- :LESSTHAN => 25,
505
- :IF => 26,
506
- :ELSE => 27,
507
- :IMPORT => 28,
508
- :DEFINE => 29,
509
- :ELSIF => 30,
510
- :VARIABLE => 31,
511
- :CLASS => 32,
512
- :INHERITS => 33,
513
- :NODE => 34,
514
- :BOOLEAN => 35,
515
- :NAME => 36,
516
- :SEMIC => 37,
517
- :CASE => 38,
518
- :DEFAULT => 39,
519
- :AT => 40,
520
- :LCOLLECT => 41,
521
- :RCOLLECT => 42 }
704
+ :LLCOLLECT => 19,
705
+ :RRCOLLECT => 20,
706
+ :QMARK => 21,
707
+ :LPAREN => 22,
708
+ :RPAREN => 23,
709
+ :ISEQUAL => 24,
710
+ :GREATEREQUAL => 25,
711
+ :GREATERTHAN => 26,
712
+ :LESSTHAN => 27,
713
+ :IF => 28,
714
+ :ELSE => 29,
715
+ :IMPORT => 30,
716
+ :DEFINE => 31,
717
+ :ELSIF => 32,
718
+ :VARIABLE => 33,
719
+ :CLASS => 34,
720
+ :INHERITS => 35,
721
+ :NODE => 36,
722
+ :BOOLEAN => 37,
723
+ :NAME => 38,
724
+ :SEMIC => 39,
725
+ :CASE => 40,
726
+ :DEFAULT => 41,
727
+ :AT => 42,
728
+ :LCOLLECT => 43,
729
+ :RCOLLECT => 44,
730
+ :CLASSNAME => 45,
731
+ :CLASSREF => 46,
732
+ :NOT => 47,
733
+ :OR => 48,
734
+ :AND => 49 }
522
735
 
523
736
  racc_use_result_var = true
524
737
 
525
- racc_nt_base = 43
738
+ racc_nt_base = 50
526
739
 
527
740
  Racc_arg = [
528
741
  racc_action_table,
@@ -560,6 +773,8 @@ Racc_token_to_s_table = [
560
773
  'DOT',
561
774
  'COLON',
562
775
  'TYPE',
776
+ 'LLCOLLECT',
777
+ 'RRCOLLECT',
563
778
  'QMARK',
564
779
  'LPAREN',
565
780
  'RPAREN',
@@ -584,33 +799,53 @@ Racc_token_to_s_table = [
584
799
  'AT',
585
800
  'LCOLLECT',
586
801
  'RCOLLECT',
802
+ 'CLASSNAME',
803
+ 'CLASSREF',
804
+ 'NOT',
805
+ 'OR',
806
+ 'AND',
587
807
  '$start',
588
808
  'program',
589
809
  'statements',
590
- 'nothing',
810
+ 'nil',
591
811
  'statement',
592
- 'object',
593
- 'collectable',
812
+ 'resource',
813
+ 'virtualresource',
594
814
  'collection',
595
815
  'assignment',
596
816
  'casestatement',
817
+ 'ifstatement',
597
818
  'import',
598
819
  'fstatement',
599
820
  'definition',
600
821
  'hostclass',
601
822
  'nodedef',
602
- 'classnames',
603
- 'classname',
823
+ 'resourceoverride',
824
+ 'funcvalues',
825
+ 'namestrings',
826
+ 'resourcerefs',
827
+ 'namestring',
604
828
  'name',
605
829
  'variable',
606
830
  'quotedtext',
607
- 'objectinstances',
831
+ 'resourceref',
832
+ 'fqname',
833
+ 'resourceinstances',
608
834
  'endsemi',
609
835
  'params',
610
836
  'endcomma',
837
+ 'at',
838
+ 'collectname',
839
+ 'collectrhand',
840
+ 'collstatements',
841
+ 'collstatement',
842
+ 'colljoin',
843
+ 'collexpr',
844
+ 'colllval',
845
+ 'simplervalue',
846
+ 'resourceinst',
847
+ 'resourcename',
611
848
  'type',
612
- 'objectinst',
613
- 'objectname',
614
849
  'selector',
615
850
  'array',
616
851
  'rvalue',
@@ -618,8 +853,9 @@ Racc_token_to_s_table = [
618
853
  'rvalues',
619
854
  'comma',
620
855
  'boolean',
621
- 'objectref',
622
856
  'funcrvalue',
857
+ 'iftest',
858
+ 'else',
623
859
  'caseopts',
624
860
  'caseopt',
625
861
  'casevalues',
@@ -627,12 +863,17 @@ Racc_token_to_s_table = [
627
863
  'svalues',
628
864
  'selectval',
629
865
  'sintvalues',
866
+ 'qtexts',
630
867
  'argumentlist',
631
- 'parent',
868
+ 'classparent',
632
869
  'hostnames',
870
+ 'nodeparent',
633
871
  'hostname',
872
+ 'nothing',
634
873
  'arguments',
635
- 'argument']
874
+ 'argument',
875
+ 'nameordefault',
876
+ 'fqnameordefault']
636
877
 
637
878
  Racc_debug_parser = false
638
879
 
@@ -640,15 +881,21 @@ Racc_debug_parser = false
640
881
 
641
882
  # reduce 0 omitted
642
883
 
643
- module_eval <<'.,.,', 'grammar.ra', 26
884
+ module_eval <<'.,.,', 'grammar.ra', 33
644
885
  def _reduce_1( val, _values, result )
645
- if val[0].is_a?(AST::ASTArray)
646
- result = val[0]
886
+ if val[0]
887
+ # Make sure we always return an array.
888
+ if val[0].is_a?(AST::ASTArray)
889
+ if val[0].children.empty?
890
+ result = nil
891
+ else
892
+ result = val[0]
893
+ end
894
+ else
895
+ result = aryfy(val[0])
896
+ end
647
897
  else
648
- result = AST::ASTArray.new(
649
- :line => @lexer.line,
650
- :children => [val[0]]
651
- )
898
+ result = nil
652
899
  end
653
900
  result
654
901
  end
@@ -658,17 +905,18 @@ module_eval <<'.,.,', 'grammar.ra', 26
658
905
 
659
906
  # reduce 3 omitted
660
907
 
661
- module_eval <<'.,.,', 'grammar.ra', 41
908
+ module_eval <<'.,.,', 'grammar.ra', 49
662
909
  def _reduce_4( val, _values, result )
663
- if val[0].instance_of?(AST::ASTArray)
664
- val[0].push(val[1])
665
- result = val[0]
666
- else
667
- result = AST::ASTArray.new(
668
- :file => @lexer.file,
669
- :line => @lexer.line,
670
- :children => [val[0],val[1]]
671
- )
910
+ if val[0] and val[1]
911
+ if val[0].instance_of?(AST::ASTArray)
912
+ val[0].push(val[1])
913
+ result = val[0]
914
+ else
915
+ result = ast AST::ASTArray, :children => [val[0],val[1]]
916
+ end
917
+ elsif obj = (val[0] || val[1])
918
+ result = obj
919
+ else result = nil
672
920
  end
673
921
  result
674
922
  end
@@ -694,38 +942,50 @@ module_eval <<'.,.,', 'grammar.ra', 41
694
942
 
695
943
  # reduce 14 omitted
696
944
 
697
- module_eval <<'.,.,', 'grammar.ra', 64
698
- def _reduce_15( val, _values, result )
945
+ # reduce 15 omitted
946
+
947
+ # reduce 16 omitted
948
+
949
+ module_eval <<'.,.,', 'grammar.ra', 71
950
+ def _reduce_17( val, _values, result )
699
951
  args = aryfy(val[2])
700
- result = AST::Function.new(
701
- :line => @lexer.line,
702
- :file => @lexer.file,
952
+ result = ast AST::Function,
703
953
  :name => val[0],
704
954
  :arguments => args,
705
955
  :ftype => :statement
706
- )
707
956
  result
708
957
  end
709
958
  .,.,
710
959
 
711
- module_eval <<'.,.,', 'grammar.ra', 74
712
- def _reduce_16( val, _values, result )
960
+ module_eval <<'.,.,', 'grammar.ra', 77
961
+ def _reduce_18( val, _values, result )
962
+ result = ast AST::Function,
963
+ :name => val[0],
964
+ :arguments => AST::ASTArray.new({}),
965
+ :ftype => :statement
966
+ result
967
+ end
968
+ .,.,
969
+
970
+ module_eval <<'.,.,', 'grammar.ra', 84
971
+ def _reduce_19( val, _values, result )
713
972
  args = aryfy(val[1])
714
- result = AST::Function.new(
715
- :line => @lexer.line,
716
- :file => @lexer.file,
973
+ result = ast AST::Function,
717
974
  :name => val[0],
718
975
  :arguments => args,
719
976
  :ftype => :statement
720
- )
721
977
  result
722
978
  end
723
979
  .,.,
724
980
 
725
- # reduce 17 omitted
981
+ # reduce 20 omitted
726
982
 
727
- module_eval <<'.,.,', 'grammar.ra', 93
728
- def _reduce_18( val, _values, result )
983
+ # reduce 21 omitted
984
+
985
+ # reduce 22 omitted
986
+
987
+ module_eval <<'.,.,', 'grammar.ra', 94
988
+ def _reduce_23( val, _values, result )
729
989
  result = aryfy(val[0], val[2])
730
990
  result.line = @lexer.line
731
991
  result.file = @lexer.file
@@ -733,98 +993,102 @@ module_eval <<'.,.,', 'grammar.ra', 93
733
993
  end
734
994
  .,.,
735
995
 
736
- # reduce 19 omitted
996
+ # reduce 24 omitted
737
997
 
738
- # reduce 20 omitted
998
+ # reduce 25 omitted
739
999
 
740
- # reduce 21 omitted
1000
+ # reduce 26 omitted
741
1001
 
742
- module_eval <<'.,.,', 'grammar.ra', 128
743
- def _reduce_22( val, _values, result )
744
- if val[0].instance_of?(AST::ASTArray)
745
- raise Puppet::ParseError, "Invalid name"
1002
+ module_eval <<'.,.,', 'grammar.ra', 101
1003
+ def _reduce_27( val, _values, result )
1004
+ result = ast AST::Name, :value => val[0]
1005
+ result
1006
+ end
1007
+ .,.,
1008
+
1009
+ # reduce 28 omitted
1010
+
1011
+ module_eval <<'.,.,', 'grammar.ra', 112
1012
+ def _reduce_29( val, _values, result )
1013
+ unless val[0].is_a?(AST::ASTArray)
1014
+ val[0] = aryfy(val[0])
746
1015
  end
1016
+
1017
+ val[0].push(val[2])
1018
+
1019
+ result = val[0]
1020
+ result
1021
+ end
1022
+ .,.,
1023
+
1024
+ module_eval <<'.,.,', 'grammar.ra', 133
1025
+ def _reduce_30( val, _values, result )
747
1026
  array = val[2]
748
- if array.instance_of?(AST::ObjectInst)
1027
+ if array.instance_of?(AST::ResourceInst)
749
1028
  array = [array]
750
1029
  end
751
- result = AST::ASTArray.new(
752
- :line => @lexer.line,
753
- :file => @lexer.file
754
- )
755
- # this iterates across each specified objectinstance
1030
+ result = ast AST::ASTArray
1031
+
1032
+ # this iterates across each specified resourceinstance
756
1033
  array.each { |instance|
757
- unless instance.instance_of?(AST::ObjectInst)
1034
+ unless instance.instance_of?(AST::ResourceInst)
758
1035
  raise Puppet::Dev, "Got something that isn't an instance"
759
1036
  end
760
1037
  # now, i need to somehow differentiate between those things with
761
1038
  # arrays in their names, and normal things
762
- result.push AST::ObjectDef.new(
763
- :pin => "{}",
764
- :line => @lexer.line,
765
- :file => @lexer.file,
1039
+ result.push ast(AST::ResourceDef,
766
1040
  :type => val[0],
767
- :name => instance[0],
768
- :params => instance[1]
769
- )
1041
+ :title => instance[0],
1042
+ :params => instance[1])
770
1043
  }
771
1044
  result
772
1045
  end
773
1046
  .,.,
774
1047
 
775
- module_eval <<'.,.,', 'grammar.ra', 142
776
- def _reduce_23( val, _values, result )
777
- if val[0].instance_of?(AST::ASTArray)
778
- Puppet.notice "invalid name"
779
- raise Puppet::ParseError, "Invalid name"
780
- end
781
- # an object but without a name
782
- # this cannot be an instance of a library type
783
- result = AST::ObjectDef.new(
784
- :pin => "{}",
785
- :line => @lexer.line,
786
- :file => @lexer.file,
787
- :type => val[0],
788
- :params => val[2]
789
- )
1048
+ module_eval <<'.,.,', 'grammar.ra', 136
1049
+ def _reduce_31( val, _values, result )
1050
+ # This is a deprecated syntax.
1051
+ error "All resource specifications require names"
790
1052
  result
791
1053
  end
792
1054
  .,.,
793
1055
 
794
- module_eval <<'.,.,', 'grammar.ra', 154
795
- def _reduce_24( val, _values, result )
796
- # a template setting for a type
797
- if val[0].instance_of?(AST::ASTArray)
798
- raise Puppet::ParseError, "Invalid type"
799
- end
800
- result = AST::TypeDefaults.new(
801
- :pin => "{}",
802
- :line => @lexer.line,
803
- :file => @lexer.file,
804
- :type => val[0],
805
- :params => val[2]
806
- )
1056
+ module_eval <<'.,.,', 'grammar.ra', 139
1057
+ def _reduce_32( val, _values, result )
1058
+ # a defaults setting for a type
1059
+ result = ast(AST::ResourceDefaults, :type => val[0], :params => val[2])
1060
+ result
1061
+ end
1062
+ .,.,
1063
+
1064
+ module_eval <<'.,.,', 'grammar.ra', 144
1065
+ def _reduce_33( val, _values, result )
1066
+ result = ast AST::ResourceOverride, :object => val[0], :params => val[2]
807
1067
  result
808
1068
  end
809
1069
  .,.,
810
1070
 
811
- module_eval <<'.,.,', 'grammar.ra', 177
812
- def _reduce_25( val, _values, result )
813
- unless Puppet[:storeconfigs]
814
- raise Puppet::ParseError, "You cannot collect without storeconfigs being set"
1071
+ module_eval <<'.,.,', 'grammar.ra', 171
1072
+ def _reduce_34( val, _values, result )
1073
+ type = val[0]
1074
+
1075
+ if type == :exported and ! Puppet[:storeconfigs]
1076
+ error "You cannot collect without storeconfigs being set"
815
1077
  end
816
1078
 
817
- if val[1].is_a? AST::TypeDefaults
818
- raise Puppet::ParseError, "Defaults are not collectable"
1079
+ if val[1].is_a? AST::ResourceDefaults
1080
+ error "Defaults are not virtualizable"
819
1081
  end
820
1082
 
821
- # Just mark our objects as collectable and pass them through.
1083
+ method = type.to_s + "="
1084
+
1085
+ # Just mark our resources as exported and pass them through.
822
1086
  if val[1].instance_of?(AST::ASTArray)
823
1087
  val[1].each do |obj|
824
- obj.collectable = true
1088
+ obj.send(method, true)
825
1089
  end
826
1090
  else
827
- val[1].collectable = true
1091
+ val[1].send(method, true)
828
1092
  end
829
1093
 
830
1094
  result = val[1]
@@ -832,41 +1096,131 @@ module_eval <<'.,.,', 'grammar.ra', 177
832
1096
  end
833
1097
  .,.,
834
1098
 
835
- module_eval <<'.,.,', 'grammar.ra', 190
836
- def _reduce_26( val, _values, result )
837
- unless Puppet[:storeconfigs]
838
- raise Puppet::ParseError, "You cannot collect without storeconfigs being set"
1099
+ module_eval <<'.,.,', 'grammar.ra', 172
1100
+ def _reduce_35( val, _values, result )
1101
+ result = :virtual
1102
+ result
1103
+ end
1104
+ .,.,
1105
+
1106
+ module_eval <<'.,.,', 'grammar.ra', 173
1107
+ def _reduce_36( val, _values, result )
1108
+ result = :exported
1109
+ result
1110
+ end
1111
+ .,.,
1112
+
1113
+ module_eval <<'.,.,', 'grammar.ra', 196
1114
+ def _reduce_37( val, _values, result )
1115
+ if val[0] =~ /^[a-z]/
1116
+ Puppet.warning addcontext("Collection names must now be capitalized")
839
1117
  end
840
- result = AST::Collection.new(
841
- :line => @lexer.line,
842
- :file => @lexer.file,
843
- :type => val[0]
844
- )
1118
+ type = val[0].downcase
1119
+ args = {:type => type}
1120
+
1121
+ if val[1].is_a?(AST::CollExpr)
1122
+ args[:query] = val[1]
1123
+ args[:query].type = type
1124
+ args[:form] = args[:query].form
1125
+ else
1126
+ args[:form] = val[1]
1127
+ end
1128
+ if args[:form] == :exported and ! Puppet[:storeconfigs]
1129
+ error "You cannot collect exported resources without storeconfigs being set"
1130
+ end
1131
+ result = ast AST::Collection, args
845
1132
  result
846
1133
  end
847
1134
  .,.,
848
1135
 
849
- module_eval <<'.,.,', 'grammar.ra', 198
850
- def _reduce_27( val, _values, result )
851
- result = AST::ObjectInst.new(
852
- :line => @lexer.line,
853
- :file => @lexer.file,
854
- :children => [val[0],val[2]]
855
- )
1136
+ # reduce 38 omitted
1137
+
1138
+ # reduce 39 omitted
1139
+
1140
+ module_eval <<'.,.,', 'grammar.ra', 207
1141
+ def _reduce_40( val, _values, result )
1142
+ if val[1]
1143
+ result = val[1]
1144
+ result.form = :virtual
1145
+ else
1146
+ result = :virtual
1147
+ end
856
1148
  result
857
1149
  end
858
1150
  .,.,
859
1151
 
860
- # reduce 28 omitted
1152
+ module_eval <<'.,.,', 'grammar.ra', 215
1153
+ def _reduce_41( val, _values, result )
1154
+ if val[1]
1155
+ result = val[1]
1156
+ result.form = :exported
1157
+ else
1158
+ result = :exported
1159
+ end
1160
+ result
1161
+ end
1162
+ .,.,
861
1163
 
862
- module_eval <<'.,.,', 'grammar.ra', 212
863
- def _reduce_29( val, _values, result )
864
- if val[0].instance_of?(AST::ObjectInst)
865
- result = AST::ASTArray.new(
866
- :line => @lexer.line,
867
- :file => @lexer.file,
868
- :children => [val[0],val[2]]
869
- )
1164
+ # reduce 42 omitted
1165
+
1166
+ # reduce 43 omitted
1167
+
1168
+ module_eval <<'.,.,', 'grammar.ra', 223
1169
+ def _reduce_44( val, _values, result )
1170
+ result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2]
1171
+ result
1172
+ end
1173
+ .,.,
1174
+
1175
+ # reduce 45 omitted
1176
+
1177
+ module_eval <<'.,.,', 'grammar.ra', 229
1178
+ def _reduce_46( val, _values, result )
1179
+ result = val[1]
1180
+ result.parens = true
1181
+ result
1182
+ end
1183
+ .,.,
1184
+
1185
+ # reduce 47 omitted
1186
+
1187
+ # reduce 48 omitted
1188
+
1189
+ module_eval <<'.,.,', 'grammar.ra', 237
1190
+ def _reduce_49( val, _values, result )
1191
+ result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2]
1192
+ #result = ast AST::CollExpr
1193
+ #result.push *val
1194
+ result
1195
+ end
1196
+ .,.,
1197
+
1198
+ module_eval <<'.,.,', 'grammar.ra', 242
1199
+ def _reduce_50( val, _values, result )
1200
+ result = ast AST::CollExpr, :test1 => val[0], :oper => val[1], :test2 => val[2]
1201
+ #result = ast AST::CollExpr
1202
+ #result.push *val
1203
+ result
1204
+ end
1205
+ .,.,
1206
+
1207
+ # reduce 51 omitted
1208
+
1209
+ # reduce 52 omitted
1210
+
1211
+ module_eval <<'.,.,', 'grammar.ra', 249
1212
+ def _reduce_53( val, _values, result )
1213
+ result = ast AST::ResourceInst, :children => [val[0],val[2]]
1214
+ result
1215
+ end
1216
+ .,.,
1217
+
1218
+ # reduce 54 omitted
1219
+
1220
+ module_eval <<'.,.,', 'grammar.ra', 259
1221
+ def _reduce_55( val, _values, result )
1222
+ if val[0].instance_of?(AST::ResourceInst)
1223
+ result = ast AST::ASTArray, :children => [val[0],val[2]]
870
1224
  else
871
1225
  val[0].push val[2]
872
1226
  result = val[0]
@@ -875,744 +1229,553 @@ module_eval <<'.,.,', 'grammar.ra', 212
875
1229
  end
876
1230
  .,.,
877
1231
 
878
- # reduce 30 omitted
1232
+ # reduce 56 omitted
879
1233
 
880
- # reduce 31 omitted
1234
+ # reduce 57 omitted
881
1235
 
882
- module_eval <<'.,.,', 'grammar.ra', 223
883
- def _reduce_32( val, _values, result )
884
- result = AST::Name.new(
885
- :line => @lexer.line,
886
- :file => @lexer.file,
887
- :value => val[0]
888
- )
1236
+ module_eval <<'.,.,', 'grammar.ra', 266
1237
+ def _reduce_58( val, _values, result )
1238
+ result = ast AST::Name, :value => val[0]
889
1239
  result
890
1240
  end
891
1241
  .,.,
892
1242
 
893
- module_eval <<'.,.,', 'grammar.ra', 231
894
- def _reduce_33( val, _values, result )
895
- result = AST::Type.new(
896
- :line => @lexer.line,
897
- :file => @lexer.file,
898
- :value => val[0]
899
- )
1243
+ module_eval <<'.,.,', 'grammar.ra', 270
1244
+ def _reduce_59( val, _values, result )
1245
+ result = ast AST::Type, :value => val[0]
900
1246
  result
901
1247
  end
902
1248
  .,.,
903
1249
 
904
- # reduce 34 omitted
1250
+ # reduce 60 omitted
905
1251
 
906
- # reduce 35 omitted
1252
+ # reduce 61 omitted
907
1253
 
908
- # reduce 36 omitted
1254
+ # reduce 62 omitted
909
1255
 
910
- # reduce 37 omitted
1256
+ # reduce 63 omitted
911
1257
 
912
- # reduce 38 omitted
1258
+ # reduce 64 omitted
913
1259
 
914
- # reduce 39 omitted
1260
+ # reduce 65 omitted
915
1261
 
916
- module_eval <<'.,.,', 'grammar.ra', 254
917
- def _reduce_40( val, _values, result )
1262
+ module_eval <<'.,.,', 'grammar.ra', 286
1263
+ def _reduce_66( val, _values, result )
1264
+ if val[0] =~ /::/
1265
+ raise Puppet::ParseError, "Cannot assign to variables in other namespaces"
1266
+ end
918
1267
  # this is distinct from referencing a variable
919
- variable = AST::Name.new(
920
- :line => @lexer.line,
921
- :file => @lexer.file,
922
- :value => val[0].sub(/^\$/,'')
923
- )
924
- result = AST::VarDef.new(
925
- :pin => "=",
926
- :line => @lexer.line,
927
- :file => @lexer.file,
928
- :name => variable,
929
- :value => val[2]
930
- )
1268
+ variable = ast AST::Name, :value => val[0]
1269
+ result = ast AST::VarDef, :name => variable, :value => val[2]
931
1270
  result
932
1271
  end
933
1272
  .,.,
934
1273
 
935
- module_eval <<'.,.,', 'grammar.ra', 263
936
- def _reduce_41( val, _values, result )
937
- result = AST::ASTArray.new(
938
- :line => @lexer.line,
939
- :file => @lexer.file,
940
- :children => []
941
- )
1274
+ module_eval <<'.,.,', 'grammar.ra', 291
1275
+ def _reduce_67( val, _values, result )
1276
+ result = ast AST::ASTArray
942
1277
  result
943
1278
  end
944
1279
  .,.,
945
1280
 
946
- module_eval <<'.,.,', 'grammar.ra', 263
947
- def _reduce_42( val, _values, result )
1281
+ module_eval <<'.,.,', 'grammar.ra', 291
1282
+ def _reduce_68( val, _values, result )
948
1283
  result = val[0]
949
1284
  result
950
1285
  end
951
1286
  .,.,
952
1287
 
953
- module_eval <<'.,.,', 'grammar.ra', 276
954
- def _reduce_43( val, _values, result )
1288
+ module_eval <<'.,.,', 'grammar.ra', 300
1289
+ def _reduce_69( val, _values, result )
955
1290
  if val[0].instance_of?(AST::ASTArray)
956
1291
  val[0].push(val[2])
957
1292
  result = val[0]
958
1293
  else
959
- result = AST::ASTArray.new(
960
- :line => @lexer.line,
961
- :file => @lexer.file,
962
- :children => [val[0],val[2]]
963
- )
1294
+ result = ast AST::ASTArray, :children => [val[0],val[2]]
964
1295
  end
965
1296
  result
966
1297
  end
967
1298
  .,.,
968
1299
 
969
- module_eval <<'.,.,', 'grammar.ra', 291
970
- def _reduce_44( val, _values, result )
971
- leaf = AST::String.new(
972
- :line => @lexer.line,
973
- :file => @lexer.file,
974
- :value => val[0]
975
- )
976
- result = AST::ObjectParam.new(
977
- :pin => "=>",
978
- :line => @lexer.line,
979
- :file => @lexer.file,
980
- :param => leaf,
981
- :value => val[2]
982
- )
1300
+ module_eval <<'.,.,', 'grammar.ra', 304
1301
+ def _reduce_70( val, _values, result )
1302
+ result = ast AST::ResourceParam, :param => val[0], :value => val[2]
983
1303
  result
984
1304
  end
985
1305
  .,.,
986
1306
 
987
- # reduce 45 omitted
1307
+ # reduce 71 omitted
988
1308
 
989
- module_eval <<'.,.,', 'grammar.ra', 304
990
- def _reduce_46( val, _values, result )
1309
+ module_eval <<'.,.,', 'grammar.ra', 313
1310
+ def _reduce_72( val, _values, result )
991
1311
  if val[0].instance_of?(AST::ASTArray)
992
1312
  result = val[0].push(val[2])
993
1313
  else
994
- result = AST::ASTArray.new(
995
- :line => @lexer.line,
996
- :file => @lexer.file,
997
- :children => [val[0],val[2]]
998
- )
1314
+ result = ast AST::ASTArray, :children => [val[0],val[2]]
999
1315
  end
1000
1316
  result
1001
1317
  end
1002
1318
  .,.,
1003
1319
 
1004
- # reduce 47 omitted
1320
+ # reduce 73 omitted
1005
1321
 
1006
- # reduce 48 omitted
1322
+ # reduce 74 omitted
1007
1323
 
1008
- # reduce 49 omitted
1324
+ # reduce 75 omitted
1009
1325
 
1010
- # reduce 50 omitted
1326
+ # reduce 76 omitted
1011
1327
 
1012
- # reduce 51 omitted
1328
+ # reduce 77 omitted
1013
1329
 
1014
- # reduce 52 omitted
1330
+ # reduce 78 omitted
1015
1331
 
1016
- # reduce 53 omitted
1332
+ # reduce 79 omitted
1017
1333
 
1018
- # reduce 54 omitted
1334
+ # reduce 80 omitted
1335
+
1336
+ # reduce 81 omitted
1337
+
1338
+ # reduce 82 omitted
1339
+
1340
+ # reduce 83 omitted
1019
1341
 
1020
- # reduce 55 omitted
1342
+ # reduce 84 omitted
1021
1343
 
1022
- module_eval <<'.,.,', 'grammar.ra', 326
1023
- def _reduce_56( val, _values, result )
1344
+ # reduce 85 omitted
1345
+
1346
+ # reduce 86 omitted
1347
+
1348
+ # reduce 87 omitted
1349
+
1350
+ module_eval <<'.,.,', 'grammar.ra', 339
1351
+ def _reduce_88( val, _values, result )
1024
1352
  args = aryfy(val[2])
1025
- result = AST::Function.new(
1026
- :line => @lexer.line,
1027
- :file => @lexer.file,
1353
+ result = ast AST::Function,
1028
1354
  :name => val[0],
1029
1355
  :arguments => args,
1030
1356
  :ftype => :rvalue
1031
- )
1032
1357
  result
1033
1358
  end
1034
1359
  .,.,
1035
1360
 
1036
- module_eval <<'.,.,', 'grammar.ra', 334
1037
- def _reduce_57( val, _values, result )
1038
- result = AST::String.new(
1039
- :line => @lexer.line,
1040
- :file => @lexer.file,
1041
- :value => val[0]
1042
- )
1361
+ module_eval <<'.,.,', 'grammar.ra', 344
1362
+ def _reduce_89( val, _values, result )
1363
+ result = ast AST::Function,
1364
+ :name => val[0],
1365
+ :arguments => AST::ASTArray.new({}),
1366
+ :ftype => :rvalue
1043
1367
  result
1044
1368
  end
1045
1369
  .,.,
1046
1370
 
1047
- module_eval <<'.,.,', 'grammar.ra', 340
1048
- def _reduce_58( val, _values, result )
1049
- result = AST::FlatString.new(
1050
- :line => @lexer.line,
1051
- :file => @lexer.file,
1052
- :value => val[0]
1053
- )
1371
+ module_eval <<'.,.,', 'grammar.ra', 348
1372
+ def _reduce_90( val, _values, result )
1373
+ result = ast AST::String, :value => val[0]
1054
1374
  result
1055
1375
  end
1056
1376
  .,.,
1057
1377
 
1058
- module_eval <<'.,.,', 'grammar.ra', 348
1059
- def _reduce_59( val, _values, result )
1060
- result = AST::Boolean.new(
1061
- :line => @lexer.line,
1062
- :file => @lexer.file,
1063
- :value => val[0]
1064
- )
1378
+ module_eval <<'.,.,', 'grammar.ra', 350
1379
+ def _reduce_91( val, _values, result )
1380
+ result = ast AST::FlatString, :value => val[0]
1065
1381
  result
1066
1382
  end
1067
1383
  .,.,
1068
1384
 
1069
- module_eval <<'.,.,', 'grammar.ra', 358
1070
- def _reduce_60( val, _values, result )
1071
- result = AST::ObjectRef.new(
1072
- :pin => '[]',
1073
- :line => @lexer.line,
1074
- :file => @lexer.file,
1075
- :type => val[0],
1076
- :name => val[2]
1077
- )
1385
+ module_eval <<'.,.,', 'grammar.ra', 354
1386
+ def _reduce_92( val, _values, result )
1387
+ result = ast AST::Boolean, :value => val[0]
1388
+ result
1389
+ end
1390
+ .,.,
1391
+
1392
+ module_eval <<'.,.,', 'grammar.ra', 359
1393
+ def _reduce_93( val, _values, result )
1394
+ Puppet.warning addcontext("Deprecation notice: Resource references should now be capitalized")
1395
+ result = ast AST::ResourceRef, :type => val[0], :title => val[2]
1396
+ result
1397
+ end
1398
+ .,.,
1399
+
1400
+ module_eval <<'.,.,', 'grammar.ra', 361
1401
+ def _reduce_94( val, _values, result )
1402
+ result = ast AST::ResourceRef, :type => val[0], :title => val[2]
1078
1403
  result
1079
1404
  end
1080
1405
  .,.,
1081
1406
 
1082
- module_eval <<'.,.,', 'grammar.ra', 375
1083
- def _reduce_61( val, _values, result )
1407
+ module_eval <<'.,.,', 'grammar.ra', 374
1408
+ def _reduce_95( val, _values, result )
1409
+ args = {
1410
+ :test => val[1],
1411
+ :statements => val[3]
1412
+ }
1413
+
1414
+ if val[5]
1415
+ args[:else] = val[5]
1416
+ end
1417
+
1418
+ result = ast AST::IfStatement, args
1419
+ result
1420
+ end
1421
+ .,.,
1422
+
1423
+ # reduce 96 omitted
1424
+
1425
+ module_eval <<'.,.,', 'grammar.ra', 379
1426
+ def _reduce_97( val, _values, result )
1427
+ result = ast AST::Else, :statements => val[2]
1428
+ result
1429
+ end
1430
+ .,.,
1431
+
1432
+ # reduce 98 omitted
1433
+
1434
+ module_eval <<'.,.,', 'grammar.ra', 391
1435
+ def _reduce_99( val, _values, result )
1084
1436
  options = val[3]
1085
1437
  unless options.instance_of?(AST::ASTArray)
1086
- options = AST::ASTArray.new(
1087
- :line => @lexer.line,
1088
- :file => @lexer.file,
1089
- :children => [val[3]]
1090
- )
1438
+ options = ast AST::ASTArray, :children => [val[3]]
1091
1439
  end
1092
- result = AST::CaseStatement.new(
1093
- :test => val[1],
1094
- :options => options,
1095
- :file => @lexer.file,
1096
- :line => @lexer.line
1097
- )
1440
+ result = ast AST::CaseStatement, :test => val[1], :options => options
1098
1441
  result
1099
1442
  end
1100
1443
  .,.,
1101
1444
 
1102
- # reduce 62 omitted
1445
+ # reduce 100 omitted
1103
1446
 
1104
- module_eval <<'.,.,', 'grammar.ra', 389
1105
- def _reduce_63( val, _values, result )
1447
+ module_eval <<'.,.,', 'grammar.ra', 401
1448
+ def _reduce_101( val, _values, result )
1106
1449
  if val[0].instance_of?(AST::ASTArray)
1107
1450
  val[0].push val[1]
1108
1451
  result = val[0]
1109
1452
  else
1110
- result = AST::ASTArray.new(
1111
- :line => @lexer.line,
1112
- :file => @lexer.file,
1113
- :children => [val[0], val[1]]
1114
- )
1453
+ result = ast AST::ASTArray, :children => [val[0], val[1]]
1115
1454
  end
1116
1455
  result
1117
1456
  end
1118
1457
  .,.,
1119
1458
 
1120
- module_eval <<'.,.,', 'grammar.ra', 399
1121
- def _reduce_64( val, _values, result )
1122
- result = AST::CaseOpt.new(
1123
- :pin => ":",
1124
- :value => val[0],
1125
- :file => @lexer.file,
1126
- :line => @lexer.line,
1127
- :statements => val[3]
1128
- )
1459
+ module_eval <<'.,.,', 'grammar.ra', 405
1460
+ def _reduce_102( val, _values, result )
1461
+ result = ast AST::CaseOpt, :value => val[0], :statements => val[3]
1129
1462
  result
1130
1463
  end
1131
1464
  .,.,
1132
1465
 
1133
- module_eval <<'.,.,', 'grammar.ra', 411
1134
- def _reduce_65( val, _values, result )
1135
- result = AST::CaseOpt.new(
1136
- :pin => ":",
1466
+ module_eval <<'.,.,', 'grammar.ra', 410
1467
+ def _reduce_103( val, _values, result )
1468
+ result = ast(AST::CaseOpt,
1137
1469
  :value => val[0],
1138
- :file => @lexer.file,
1139
- :line => @lexer.line,
1140
- :statements => AST::ASTArray.new(
1141
- :line => @lexer.line,
1142
- :file => @lexer.file,
1143
- :children => []
1144
- )
1470
+ :statements => ast(AST::ASTArray)
1145
1471
  )
1146
1472
  result
1147
1473
  end
1148
1474
  .,.,
1149
1475
 
1150
- # reduce 66 omitted
1476
+ # reduce 104 omitted
1151
1477
 
1152
- module_eval <<'.,.,', 'grammar.ra', 425
1153
- def _reduce_67( val, _values, result )
1478
+ module_eval <<'.,.,', 'grammar.ra', 420
1479
+ def _reduce_105( val, _values, result )
1154
1480
  if val[0].instance_of?(AST::ASTArray)
1155
1481
  val[0].push(val[2])
1156
1482
  result = val[0]
1157
1483
  else
1158
- result = AST::ASTArray.new(
1159
- :line => @lexer.line,
1160
- :file => @lexer.file,
1161
- :children => [val[0],val[2]]
1162
- )
1484
+ result = ast AST::ASTArray, :children => [val[0],val[2]]
1163
1485
  end
1164
1486
  result
1165
1487
  end
1166
1488
  .,.,
1167
1489
 
1168
- module_eval <<'.,.,', 'grammar.ra', 435
1169
- def _reduce_68( val, _values, result )
1170
- result = AST::Selector.new(
1171
- :pin => "?",
1172
- :line => @lexer.line,
1173
- :file => @lexer.file,
1174
- :param => val[0],
1175
- :values => val[2]
1176
- )
1490
+ module_eval <<'.,.,', 'grammar.ra', 424
1491
+ def _reduce_106( val, _values, result )
1492
+ result = ast AST::Selector, :param => val[0], :values => val[2]
1177
1493
  result
1178
1494
  end
1179
1495
  .,.,
1180
1496
 
1181
- # reduce 69 omitted
1497
+ # reduce 107 omitted
1182
1498
 
1183
- module_eval <<'.,.,', 'grammar.ra', 437
1184
- def _reduce_70( val, _values, result )
1499
+ module_eval <<'.,.,', 'grammar.ra', 426
1500
+ def _reduce_108( val, _values, result )
1185
1501
  result = val[1]
1186
1502
  result
1187
1503
  end
1188
1504
  .,.,
1189
1505
 
1190
- # reduce 71 omitted
1506
+ # reduce 109 omitted
1191
1507
 
1192
- module_eval <<'.,.,', 'grammar.ra', 452
1193
- def _reduce_72( val, _values, result )
1508
+ module_eval <<'.,.,', 'grammar.ra', 437
1509
+ def _reduce_110( val, _values, result )
1194
1510
  if val[0].instance_of?(AST::ASTArray)
1195
1511
  val[0].push(val[2])
1196
1512
  result = val[0]
1197
1513
  else
1198
- result = AST::ASTArray.new(
1199
- :line => @lexer.line,
1200
- :file => @lexer.file,
1201
- :children => [val[0],val[2]]
1202
- )
1514
+ result = ast AST::ASTArray, :children => [val[0],val[2]]
1203
1515
  end
1204
1516
  result
1205
1517
  end
1206
1518
  .,.,
1207
1519
 
1208
- module_eval <<'.,.,', 'grammar.ra', 462
1209
- def _reduce_73( val, _values, result )
1210
- result = AST::ObjectParam.new(
1211
- :pin => "=>",
1212
- :line => @lexer.line,
1213
- :file => @lexer.file,
1214
- :param => val[0],
1215
- :value => val[2]
1216
- )
1520
+ module_eval <<'.,.,', 'grammar.ra', 441
1521
+ def _reduce_111( val, _values, result )
1522
+ result = ast AST::ResourceParam, :param => val[0], :value => val[2]
1217
1523
  result
1218
1524
  end
1219
1525
  .,.,
1220
1526
 
1221
- # reduce 74 omitted
1527
+ # reduce 112 omitted
1222
1528
 
1223
- # reduce 75 omitted
1529
+ # reduce 113 omitted
1224
1530
 
1225
- # reduce 76 omitted
1531
+ # reduce 114 omitted
1226
1532
 
1227
- # reduce 77 omitted
1533
+ # reduce 115 omitted
1228
1534
 
1229
- # reduce 78 omitted
1535
+ # reduce 116 omitted
1230
1536
 
1231
- # reduce 79 omitted
1537
+ # reduce 117 omitted
1232
1538
 
1233
- module_eval <<'.,.,', 'grammar.ra', 476
1234
- def _reduce_80( val, _values, result )
1235
- result = AST::Default.new(
1236
- :line => @lexer.line,
1237
- :file => @lexer.file,
1238
- :value => val[0]
1239
- )
1539
+ module_eval <<'.,.,', 'grammar.ra', 451
1540
+ def _reduce_118( val, _values, result )
1541
+ result = ast AST::Default, :value => val[0]
1240
1542
  result
1241
1543
  end
1242
1544
  .,.,
1243
1545
 
1244
- module_eval <<'.,.,', 'grammar.ra', 535
1245
- def _reduce_81( val, _values, result )
1246
- # importing files
1247
- # yuk, i hate keywords
1248
- # we'll probably have to have some kind of search path eventually
1249
- # but for now, just use a path relative to the file doing the importing
1250
- dir = @lexer.file.sub(%r{[^/]+$},'').sub(/\/$/, '')
1251
- if dir == ""
1252
- dir = "."
1253
- end
1254
- result = AST::ASTArray.new(
1255
- :file => @lexer.file,
1256
- :line => @lexer.line
1257
- )
1546
+ module_eval <<'.,.,', 'grammar.ra', 453
1547
+ def _reduce_119( val, _values, result )
1548
+ result = [val[0].value]
1549
+ result
1550
+ end
1551
+ .,.,
1258
1552
 
1259
- Dir.chdir(dir) {
1260
- # We can't interpolate at this point since we don't have any
1261
- # scopes set up. Warn the user if they use a variable reference
1262
- pat = val[1].value
1263
- if pat.index("$")
1264
- Puppet.warning(
1265
- "The import of #{pat} contains a variable reference;" +
1266
- " variables are not interpolated for imports " +
1267
- "in file #{@lexer.file} at line #{@lexer.line}"
1268
- )
1269
- end
1270
- files = Dir.glob(pat)
1271
- if files.size == 0
1272
- files = Dir.glob(pat + ".pp")
1273
- if files.size == 0
1274
- raise Puppet::ImportError.new("No file(s) found for import " +
1275
- "of '#{pat}'")
1276
- end
1277
- end
1553
+ module_eval <<'.,.,', 'grammar.ra', 457
1554
+ def _reduce_120( val, _values, result )
1555
+ results = val[0] << val[2].value
1556
+ result
1557
+ end
1558
+ .,.,
1278
1559
 
1279
- files.each { |file|
1280
- parser = Puppet::Parser::Parser.new()
1281
- parser.files = self.files
1282
- Puppet.debug("importing '%s'" % file)
1560
+ module_eval <<'.,.,', 'grammar.ra', 465
1561
+ def _reduce_121( val, _values, result )
1562
+ val[1].each do |file|
1563
+ import(file)
1564
+ end
1283
1565
 
1284
- unless file =~ /^#{File::SEPARATOR}/
1285
- file = File.join(dir, file)
1286
- end
1287
- begin
1288
- parser.file = file
1289
- rescue Puppet::ImportError
1290
- Puppet.warning(
1291
- "Importing %s would result in an import loop" %
1292
- File.join(dir, file)
1293
- )
1294
- next
1295
- end
1296
- # push the results into the main result array
1297
- parser.parse.each do |child|
1298
- result.push child
1299
- end
1300
- }
1301
- }
1566
+ result = AST::ASTArray.new(:children => [])
1302
1567
  result
1303
1568
  end
1304
1569
  .,.,
1305
1570
 
1306
- module_eval <<'.,.,', 'grammar.ra', 546
1307
- def _reduce_82( val, _values, result )
1308
- result = AST::CompDef.new(
1309
- :type => AST::Name.new(:value => val[1], :line => @lexer.line),
1310
- :args => val[2],
1311
- :file => @lexer.file,
1312
- :line => @lexer.line,
1313
- :keyword => val[0],
1314
- :code => val[4]
1315
- )
1571
+ module_eval <<'.,.,', 'grammar.ra', 475
1572
+ def _reduce_122( val, _values, result )
1573
+ interp.newdefine fqname(val[1]), :arguments => val[2], :code => val[4]
1574
+ @lexer.indefine = false
1575
+ result = nil
1576
+
1577
+ #} | DEFINE NAME argumentlist parent LBRACE RBRACE {
1316
1578
  result
1317
1579
  end
1318
1580
  .,.,
1319
1581
 
1320
- module_eval <<'.,.,', 'grammar.ra', 559
1321
- def _reduce_83( val, _values, result )
1322
- result = AST::CompDef.new(
1323
- :type => AST::Name.new(:value => val[1], :line => @lexer.line),
1324
- :args => val[2],
1325
- :file => @lexer.file,
1326
- :line => @lexer.line,
1327
- :keyword => val[0],
1328
- :code => AST::ASTArray.new(
1329
- :line => @lexer.line,
1330
- :file => @lexer.file,
1331
- :children => []
1332
- )
1333
- )
1582
+ module_eval <<'.,.,', 'grammar.ra', 479
1583
+ def _reduce_123( val, _values, result )
1584
+ interp.newdefine fqname(val[1]), :arguments => val[2]
1585
+ @lexer.indefine = false
1586
+ result = nil
1334
1587
  result
1335
1588
  end
1336
1589
  .,.,
1337
1590
 
1338
- module_eval <<'.,.,', 'grammar.ra', 576
1339
- def _reduce_84( val, _values, result )
1340
- #:args => val[2],
1341
- args = {
1342
- :type => AST::Name.new(:value => val[1], :line => @lexer.line),
1343
- :file => @lexer.file,
1344
- :line => @lexer.line,
1345
- :keyword => val[0],
1346
- :code => val[4]
1347
- }
1348
- # It'll be an ASTArray if we didn't get a parent
1349
- if val[2].instance_of?(AST::Name)
1350
- args[:parentclass] = val[2]
1351
- end
1352
- result = AST::ClassDef.new(args)
1591
+ module_eval <<'.,.,', 'grammar.ra', 487
1592
+ def _reduce_124( val, _values, result )
1593
+ # Our class gets defined in the parent namespace, not our own.
1594
+ @lexer.namepop
1595
+ interp.newclass fqname(val[1]), :code => val[4], :parent => val[2]
1596
+ result = nil
1353
1597
  result
1354
1598
  end
1355
1599
  .,.,
1356
1600
 
1357
- module_eval <<'.,.,', 'grammar.ra', 593
1358
- def _reduce_85( val, _values, result )
1359
- args = {
1360
- :type => AST::Name.new(:value => val[1], :line => @lexer.line),
1361
- :file => @lexer.file,
1362
- :line => @lexer.line,
1363
- :keyword => val[0],
1364
- :code => AST::ASTArray.new(
1365
- :line => @lexer.line,
1366
- :file => @lexer.file,
1367
- :children => []
1368
- )
1369
- }
1370
- # It'll be an ASTArray if we didn't get a parent
1371
- if val[2].instance_of?(AST::Name)
1372
- args[:parentclass] = val[2]
1373
- end
1374
- result = AST::ClassDef.new(args)
1601
+ module_eval <<'.,.,', 'grammar.ra', 492
1602
+ def _reduce_125( val, _values, result )
1603
+ # Our class gets defined in the parent namespace, not our own.
1604
+ @lexer.namepop
1605
+ interp.newclass fqname(val[1]), :parent => val[2]
1606
+ result = nil
1375
1607
  result
1376
1608
  end
1377
1609
  .,.,
1378
1610
 
1379
- module_eval <<'.,.,', 'grammar.ra', 614
1380
- def _reduce_86( val, _values, result )
1381
- unless val[1].instance_of?(AST::ASTArray)
1382
- val[1] = AST::ASTArray.new(
1383
- :line => val[1].line,
1384
- :file => val[1].file,
1385
- :children => [val[1]]
1386
- )
1387
- end
1388
- args = {
1389
- :file => @lexer.file,
1390
- :line => @lexer.line,
1391
- :names => val[1],
1392
- :keyword => val[0],
1393
- :code => val[4]
1394
- }
1395
- if val[2].instance_of?(AST::Name)
1396
- args[:parentclass] = val[2]
1397
- end
1398
- result = AST::NodeDef.new(args)
1611
+ module_eval <<'.,.,', 'grammar.ra', 497
1612
+ def _reduce_126( val, _values, result )
1613
+ interp.newnode val[1], :parent => val[2], :code => val[4]
1614
+ result = nil
1399
1615
  result
1400
1616
  end
1401
1617
  .,.,
1402
1618
 
1403
- module_eval <<'.,.,', 'grammar.ra', 637
1404
- def _reduce_87( val, _values, result )
1405
- unless val[1].instance_of?(AST::ASTArray)
1406
- val[1] = AST::ASTArray.new(
1407
- :line => val[1].line,
1408
- :file => val[1].file,
1409
- :children => [val[1]]
1410
- )
1411
- end
1412
- args = {
1413
- :file => @lexer.file,
1414
- :line => @lexer.line,
1415
- :keyword => val[0],
1416
- :names => val[1],
1417
- :code => AST::ASTArray.new(
1418
- :line => @lexer.line,
1419
- :file => @lexer.file,
1420
- :children => []
1421
- )
1422
- }
1423
- if val[2].instance_of?(AST::Name)
1424
- args[:parentclass] = val[2]
1425
- end
1426
- result = AST::NodeDef.new(args)
1619
+ module_eval <<'.,.,', 'grammar.ra', 500
1620
+ def _reduce_127( val, _values, result )
1621
+ interp.newnode val[1], :parent => val[2]
1622
+ result = nil
1427
1623
  result
1428
1624
  end
1429
1625
  .,.,
1430
1626
 
1431
- # reduce 88 omitted
1627
+ # reduce 128 omitted
1432
1628
 
1433
- module_eval <<'.,.,', 'grammar.ra', 652
1434
- def _reduce_89( val, _values, result )
1435
- if val[0].instance_of?(AST::ASTArray)
1436
- result = val[0]
1437
- result.push val[2]
1438
- else
1439
- result = AST::ASTArray.new(
1440
- :line => @lexer.line,
1441
- :file => @lexer.file,
1442
- :children => [val[0], val[2]]
1443
- )
1444
- end
1629
+ # reduce 129 omitted
1630
+
1631
+ # reduce 130 omitted
1632
+
1633
+ module_eval <<'.,.,', 'grammar.ra', 512
1634
+ def _reduce_131( val, _values, result )
1635
+ result = val[0]
1636
+ result = [result] unless result.is_a?(Array)
1637
+ result << val[2]
1445
1638
  result
1446
1639
  end
1447
1640
  .,.,
1448
1641
 
1449
- module_eval <<'.,.,', 'grammar.ra', 660
1450
- def _reduce_90( val, _values, result )
1451
- result = AST::HostName.new(
1452
- :line => @lexer.line,
1453
- :file => @lexer.file,
1454
- :value => val[0]
1455
- )
1642
+ # reduce 132 omitted
1643
+
1644
+ # reduce 133 omitted
1645
+
1646
+ # reduce 134 omitted
1647
+
1648
+ module_eval <<'.,.,', 'grammar.ra', 520
1649
+ def _reduce_135( val, _values, result )
1650
+ result = nil
1456
1651
  result
1457
1652
  end
1458
1653
  .,.,
1459
1654
 
1460
- module_eval <<'.,.,', 'grammar.ra', 666
1461
- def _reduce_91( val, _values, result )
1462
- result = AST::HostName.new(
1463
- :line => @lexer.line,
1464
- :file => @lexer.file,
1465
- :value => val[0]
1466
- )
1655
+ module_eval <<'.,.,', 'grammar.ra', 524
1656
+ def _reduce_136( val, _values, result )
1657
+ result = ast AST::ASTArray, :children => []
1467
1658
  result
1468
1659
  end
1469
1660
  .,.,
1470
1661
 
1471
- module_eval <<'.,.,', 'grammar.ra', 672
1472
- def _reduce_92( val, _values, result )
1473
- result = AST::Default.new(
1474
- :line => @lexer.line,
1475
- :file => @lexer.file,
1476
- :value => val[0]
1477
- )
1662
+ # reduce 137 omitted
1663
+
1664
+ module_eval <<'.,.,', 'grammar.ra', 529
1665
+ def _reduce_138( val, _values, result )
1666
+ result = nil
1478
1667
  result
1479
1668
  end
1480
1669
  .,.,
1481
1670
 
1482
- module_eval <<'.,.,', 'grammar.ra', 680
1483
- def _reduce_93( val, _values, result )
1484
- result = AST::ASTArray.new(
1485
- :line => @lexer.line,
1486
- :file => @lexer.file,
1487
- :children => []
1488
- )
1671
+ module_eval <<'.,.,', 'grammar.ra', 533
1672
+ def _reduce_139( val, _values, result )
1673
+ result = val[1]
1674
+ result = [result] unless result[0].is_a?(Array)
1489
1675
  result
1490
1676
  end
1491
1677
  .,.,
1492
1678
 
1493
- # reduce 94 omitted
1679
+ # reduce 140 omitted
1494
1680
 
1495
- module_eval <<'.,.,', 'grammar.ra', 685
1496
- def _reduce_95( val, _values, result )
1497
- result = val[1]
1681
+ module_eval <<'.,.,', 'grammar.ra', 540
1682
+ def _reduce_141( val, _values, result )
1683
+ result = val[0]
1684
+ result = [result] unless result[0].is_a?(Array)
1685
+ result << val[2]
1498
1686
  result
1499
1687
  end
1500
1688
  .,.,
1501
1689
 
1502
- module_eval <<'.,.,', 'grammar.ra', 696
1503
- def _reduce_96( val, _values, result )
1504
- if val[1].instance_of?(AST::ASTArray)
1505
- result = val[1]
1506
- else
1507
- result = AST::ASTArray.new(
1508
- :line => @lexer.line,
1509
- :file => @lexer.file,
1510
- :children => [val[1]]
1511
- )
1512
- end
1690
+ module_eval <<'.,.,', 'grammar.ra', 545
1691
+ def _reduce_142( val, _values, result )
1692
+ Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
1693
+ result = [val[0], val[2]]
1513
1694
  result
1514
1695
  end
1515
1696
  .,.,
1516
1697
 
1517
- # reduce 97 omitted
1698
+ module_eval <<'.,.,', 'grammar.ra', 549
1699
+ def _reduce_143( val, _values, result )
1700
+ Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
1701
+ result = [val[0]]
1702
+ result
1703
+ end
1704
+ .,.,
1518
1705
 
1519
- module_eval <<'.,.,', 'grammar.ra', 710
1520
- def _reduce_98( val, _values, result )
1521
- if val[0].instance_of?(AST::ASTArray)
1522
- val[0].push(val[2])
1523
- result = val[0]
1524
- else
1525
- result = AST::ASTArray.new(
1526
- :line => @lexer.line,
1527
- :file => @lexer.file,
1528
- :children => [val[0],val[2]]
1529
- )
1530
- end
1706
+ module_eval <<'.,.,', 'grammar.ra', 551
1707
+ def _reduce_144( val, _values, result )
1708
+ result = [val[0], val[2]]
1531
1709
  result
1532
1710
  end
1533
1711
  .,.,
1534
1712
 
1535
- module_eval <<'.,.,', 'grammar.ra', 718
1536
- def _reduce_99( val, _values, result )
1537
- result = AST::CompArgument.new(
1538
- :line => @lexer.line,
1539
- :file => @lexer.file,
1540
- :children => [val[0],val[2]]
1541
- )
1713
+ module_eval <<'.,.,', 'grammar.ra', 553
1714
+ def _reduce_145( val, _values, result )
1715
+ result = [val[0]]
1542
1716
  result
1543
1717
  end
1544
1718
  .,.,
1545
1719
 
1546
- module_eval <<'.,.,', 'grammar.ra', 725
1547
- def _reduce_100( val, _values, result )
1548
- result = AST::CompArgument.new(
1549
- :line => @lexer.line,
1550
- :file => @lexer.file,
1551
- :children => [val[0]]
1552
- )
1720
+ # reduce 146 omitted
1721
+
1722
+ module_eval <<'.,.,', 'grammar.ra', 558
1723
+ def _reduce_147( val, _values, result )
1724
+ result = val[1]
1553
1725
  result
1554
1726
  end
1555
1727
  .,.,
1556
1728
 
1557
- # reduce 101 omitted
1729
+ # reduce 148 omitted
1558
1730
 
1559
- module_eval <<'.,.,', 'grammar.ra', 734
1560
- def _reduce_102( val, _values, result )
1561
- result = AST::Name.new(
1562
- :value => val[1],
1563
- :file => @lexer.file,
1564
- :line => @lexer.line
1565
- )
1731
+ module_eval <<'.,.,', 'grammar.ra', 563
1732
+ def _reduce_149( val, _values, result )
1733
+ result = val[1]
1566
1734
  result
1567
1735
  end
1568
1736
  .,.,
1569
1737
 
1570
- module_eval <<'.,.,', 'grammar.ra', 743
1571
- def _reduce_103( val, _values, result )
1572
- name = val[0].sub(/^\$/,'')
1573
- result = AST::Variable.new(
1574
- :line => @lexer.line,
1575
- :file => @lexer.file,
1576
- :value => name
1577
- )
1738
+ # reduce 150 omitted
1739
+
1740
+ # reduce 151 omitted
1741
+
1742
+ # reduce 152 omitted
1743
+
1744
+ # reduce 153 omitted
1745
+
1746
+ module_eval <<'.,.,', 'grammar.ra', 570
1747
+ def _reduce_154( val, _values, result )
1748
+ result = ast AST::Variable, :value => val[0]
1578
1749
  result
1579
1750
  end
1580
1751
  .,.,
1581
1752
 
1582
- module_eval <<'.,.,', 'grammar.ra', 755
1583
- def _reduce_104( val, _values, result )
1753
+ module_eval <<'.,.,', 'grammar.ra', 578
1754
+ def _reduce_155( val, _values, result )
1584
1755
  if val[1].instance_of?(AST::ASTArray)
1585
1756
  result = val[1]
1586
1757
  else
1587
- result = AST::ASTArray.new(
1588
- :line => @lexer.line,
1589
- :file => @lexer.file,
1590
- :children => [val[1]]
1591
- )
1758
+ result = ast AST::ASTArray, :children => [val[1]]
1592
1759
  end
1593
1760
  result
1594
1761
  end
1595
1762
  .,.,
1596
1763
 
1597
- module_eval <<'.,.,', 'grammar.ra', 761
1598
- def _reduce_105( val, _values, result )
1599
- result = AST::ASTArray.new(
1600
- :line => @lexer.line,
1601
- :file => @lexer.file,
1602
- :children => []
1603
- )
1764
+ module_eval <<'.,.,', 'grammar.ra', 580
1765
+ def _reduce_156( val, _values, result )
1766
+ result = ast AST::ASTArray
1604
1767
  result
1605
1768
  end
1606
1769
  .,.,
1607
1770
 
1608
- # reduce 106 omitted
1771
+ # reduce 157 omitted
1609
1772
 
1610
- # reduce 107 omitted
1773
+ # reduce 158 omitted
1611
1774
 
1612
- # reduce 108 omitted
1775
+ # reduce 159 omitted
1613
1776
 
1614
- module_eval <<'.,.,', 'grammar.ra', 766
1615
- def _reduce_109( val, _values, result )
1777
+ module_eval <<'.,.,', 'grammar.ra', 585
1778
+ def _reduce_160( val, _values, result )
1616
1779
  result = nil
1617
1780
  result
1618
1781
  end