puppet-retrospec 0.7.0 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1258) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +7 -3
  3. data/README.md +8 -0
  4. data/VERSION +1 -1
  5. data/bin/retrospec +7 -0
  6. data/lib/retrospec.rb +1 -0
  7. data/lib/retrospec/helpers.rb +1 -1
  8. data/lib/retrospec/version.rb +2 -2
  9. data/puppet-retrospec.gemspec +1268 -9
  10. data/vendor/gems/puppet-3.7.3/COMMITTERS.md +244 -0
  11. data/vendor/gems/puppet-3.7.3/CONTRIBUTING.md +91 -0
  12. data/vendor/gems/puppet-3.7.3/Gemfile +102 -0
  13. data/vendor/gems/puppet-3.7.3/LICENSE +17 -0
  14. data/vendor/gems/puppet-3.7.3/README.md +76 -0
  15. data/vendor/gems/puppet-3.7.3/Rakefile +68 -0
  16. data/vendor/gems/puppet-3.7.3/bin/extlookup2hiera +56 -0
  17. data/vendor/gems/puppet-3.7.3/bin/puppet +8 -0
  18. data/vendor/gems/puppet-3.7.3/conf/auth.conf +120 -0
  19. data/vendor/gems/puppet-3.7.3/conf/fileserver.conf +42 -0
  20. data/vendor/gems/puppet-3.7.3/conf/tagmail.conf +16 -0
  21. data/vendor/gems/puppet-3.7.3/install.rb +429 -0
  22. data/vendor/gems/puppet-3.7.3/lib/hiera/backend/puppet_backend.rb +103 -0
  23. data/vendor/gems/puppet-3.7.3/lib/hiera/scope.rb +60 -0
  24. data/vendor/gems/puppet-3.7.3/lib/hiera_puppet.rb +87 -0
  25. data/vendor/gems/puppet-3.7.3/lib/puppet.rb +277 -0
  26. data/vendor/gems/puppet-3.7.3/lib/puppet/agent.rb +121 -0
  27. data/vendor/gems/puppet-3.7.3/lib/puppet/agent/disabler.rb +53 -0
  28. data/vendor/gems/puppet-3.7.3/lib/puppet/agent/locker.rb +43 -0
  29. data/vendor/gems/puppet-3.7.3/lib/puppet/application.rb +513 -0
  30. data/vendor/gems/puppet-3.7.3/lib/puppet/application/agent.rb +480 -0
  31. data/vendor/gems/puppet-3.7.3/lib/puppet/application/apply.rb +299 -0
  32. data/vendor/gems/puppet-3.7.3/lib/puppet/application/ca.rb +5 -0
  33. data/vendor/gems/puppet-3.7.3/lib/puppet/application/catalog.rb +4 -0
  34. data/vendor/gems/puppet-3.7.3/lib/puppet/application/cert.rb +277 -0
  35. data/vendor/gems/puppet-3.7.3/lib/puppet/application/certificate.rb +15 -0
  36. data/vendor/gems/puppet-3.7.3/lib/puppet/application/certificate_request.rb +7 -0
  37. data/vendor/gems/puppet-3.7.3/lib/puppet/application/certificate_revocation_list.rb +7 -0
  38. data/vendor/gems/puppet-3.7.3/lib/puppet/application/config.rb +4 -0
  39. data/vendor/gems/puppet-3.7.3/lib/puppet/application/describe.rb +254 -0
  40. data/vendor/gems/puppet-3.7.3/lib/puppet/application/device.rb +238 -0
  41. data/vendor/gems/puppet-3.7.3/lib/puppet/application/doc.rb +273 -0
  42. data/vendor/gems/puppet-3.7.3/lib/puppet/application/face_base.rb +250 -0
  43. data/vendor/gems/puppet-3.7.3/lib/puppet/application/facts.rb +4 -0
  44. data/vendor/gems/puppet-3.7.3/lib/puppet/application/file.rb +4 -0
  45. data/vendor/gems/puppet-3.7.3/lib/puppet/application/filebucket.rb +184 -0
  46. data/vendor/gems/puppet-3.7.3/lib/puppet/application/help.rb +4 -0
  47. data/vendor/gems/puppet-3.7.3/lib/puppet/application/indirection_base.rb +4 -0
  48. data/vendor/gems/puppet-3.7.3/lib/puppet/application/inspect.rb +179 -0
  49. data/vendor/gems/puppet-3.7.3/lib/puppet/application/instrumentation_data.rb +7 -0
  50. data/vendor/gems/puppet-3.7.3/lib/puppet/application/instrumentation_listener.rb +7 -0
  51. data/vendor/gems/puppet-3.7.3/lib/puppet/application/instrumentation_probe.rb +7 -0
  52. data/vendor/gems/puppet-3.7.3/lib/puppet/application/key.rb +4 -0
  53. data/vendor/gems/puppet-3.7.3/lib/puppet/application/kick.rb +351 -0
  54. data/vendor/gems/puppet-3.7.3/lib/puppet/application/man.rb +4 -0
  55. data/vendor/gems/puppet-3.7.3/lib/puppet/application/master.rb +304 -0
  56. data/vendor/gems/puppet-3.7.3/lib/puppet/application/module.rb +4 -0
  57. data/vendor/gems/puppet-3.7.3/lib/puppet/application/node.rb +4 -0
  58. data/vendor/gems/puppet-3.7.3/lib/puppet/application/parser.rb +5 -0
  59. data/vendor/gems/puppet-3.7.3/lib/puppet/application/plugin.rb +3 -0
  60. data/vendor/gems/puppet-3.7.3/lib/puppet/application/queue.rb +161 -0
  61. data/vendor/gems/puppet-3.7.3/lib/puppet/application/report.rb +4 -0
  62. data/vendor/gems/puppet-3.7.3/lib/puppet/application/resource.rb +228 -0
  63. data/vendor/gems/puppet-3.7.3/lib/puppet/application/resource_type.rb +7 -0
  64. data/vendor/gems/puppet-3.7.3/lib/puppet/application/secret_agent.rb +9 -0
  65. data/vendor/gems/puppet-3.7.3/lib/puppet/application/status.rb +4 -0
  66. data/vendor/gems/puppet-3.7.3/lib/puppet/bindings.rb +147 -0
  67. data/vendor/gems/puppet-3.7.3/lib/puppet/coercion.rb +40 -0
  68. data/vendor/gems/puppet-3.7.3/lib/puppet/configurer.rb +305 -0
  69. data/vendor/gems/puppet-3.7.3/lib/puppet/configurer/downloader.rb +66 -0
  70. data/vendor/gems/puppet-3.7.3/lib/puppet/configurer/downloader_factory.rb +34 -0
  71. data/vendor/gems/puppet-3.7.3/lib/puppet/configurer/fact_handler.rb +37 -0
  72. data/vendor/gems/puppet-3.7.3/lib/puppet/configurer/plugin_handler.rb +23 -0
  73. data/vendor/gems/puppet-3.7.3/lib/puppet/confine.rb +80 -0
  74. data/vendor/gems/puppet-3.7.3/lib/puppet/confine/any.rb +26 -0
  75. data/vendor/gems/puppet-3.7.3/lib/puppet/confine/exists.rb +19 -0
  76. data/vendor/gems/puppet-3.7.3/lib/puppet/confine/false.rb +19 -0
  77. data/vendor/gems/puppet-3.7.3/lib/puppet/confine/feature.rb +17 -0
  78. data/vendor/gems/puppet-3.7.3/lib/puppet/confine/true.rb +20 -0
  79. data/vendor/gems/puppet-3.7.3/lib/puppet/confine/variable.rb +59 -0
  80. data/vendor/gems/puppet-3.7.3/lib/puppet/confine_collection.rb +50 -0
  81. data/vendor/gems/puppet-3.7.3/lib/puppet/confiner.rb +46 -0
  82. data/vendor/gems/puppet-3.7.3/lib/puppet/context.rb +101 -0
  83. data/vendor/gems/puppet-3.7.3/lib/puppet/context/trusted_information.rb +56 -0
  84. data/vendor/gems/puppet-3.7.3/lib/puppet/daemon.rb +182 -0
  85. data/vendor/gems/puppet-3.7.3/lib/puppet/data_binding.rb +12 -0
  86. data/vendor/gems/puppet-3.7.3/lib/puppet/defaults.rb +2084 -0
  87. data/vendor/gems/puppet-3.7.3/lib/puppet/dsl.rb +7 -0
  88. data/vendor/gems/puppet-3.7.3/lib/puppet/dsl/resource_api.rb +120 -0
  89. data/vendor/gems/puppet-3.7.3/lib/puppet/dsl/resource_type_api.rb +34 -0
  90. data/vendor/gems/puppet-3.7.3/lib/puppet/environments.rb +434 -0
  91. data/vendor/gems/puppet-3.7.3/lib/puppet/error.rb +62 -0
  92. data/vendor/gems/puppet-3.7.3/lib/puppet/external/dot.rb +326 -0
  93. data/vendor/gems/puppet-3.7.3/lib/puppet/external/nagios.rb +46 -0
  94. data/vendor/gems/puppet-3.7.3/lib/puppet/external/nagios/base.rb +472 -0
  95. data/vendor/gems/puppet-3.7.3/lib/puppet/external/nagios/grammar.ry +248 -0
  96. data/vendor/gems/puppet-3.7.3/lib/puppet/external/nagios/makefile +9 -0
  97. data/vendor/gems/puppet-3.7.3/lib/puppet/external/nagios/parser.rb +400 -0
  98. data/vendor/gems/puppet-3.7.3/lib/puppet/external/pson/common.rb +385 -0
  99. data/vendor/gems/puppet-3.7.3/lib/puppet/external/pson/pure.rb +15 -0
  100. data/vendor/gems/puppet-3.7.3/lib/puppet/external/pson/pure/generator.rb +394 -0
  101. data/vendor/gems/puppet-3.7.3/lib/puppet/external/pson/pure/parser.rb +318 -0
  102. data/vendor/gems/puppet-3.7.3/lib/puppet/external/pson/version.rb +8 -0
  103. data/vendor/gems/puppet-3.7.3/lib/puppet/face.rb +12 -0
  104. data/vendor/gems/puppet-3.7.3/lib/puppet/face/ca.rb +254 -0
  105. data/vendor/gems/puppet-3.7.3/lib/puppet/face/catalog.rb +130 -0
  106. data/vendor/gems/puppet-3.7.3/lib/puppet/face/catalog/select.rb +49 -0
  107. data/vendor/gems/puppet-3.7.3/lib/puppet/face/certificate.rb +160 -0
  108. data/vendor/gems/puppet-3.7.3/lib/puppet/face/certificate_request.rb +53 -0
  109. data/vendor/gems/puppet-3.7.3/lib/puppet/face/certificate_revocation_list.rb +58 -0
  110. data/vendor/gems/puppet-3.7.3/lib/puppet/face/config.rb +119 -0
  111. data/vendor/gems/puppet-3.7.3/lib/puppet/face/facts.rb +81 -0
  112. data/vendor/gems/puppet-3.7.3/lib/puppet/face/file.rb +47 -0
  113. data/vendor/gems/puppet-3.7.3/lib/puppet/face/file/download.rb +57 -0
  114. data/vendor/gems/puppet-3.7.3/lib/puppet/face/file/store.rb +21 -0
  115. data/vendor/gems/puppet-3.7.3/lib/puppet/face/help.rb +194 -0
  116. data/vendor/gems/puppet-3.7.3/lib/puppet/face/help/action.erb +86 -0
  117. data/vendor/gems/puppet-3.7.3/lib/puppet/face/help/face.erb +111 -0
  118. data/vendor/gems/puppet-3.7.3/lib/puppet/face/help/global.erb +16 -0
  119. data/vendor/gems/puppet-3.7.3/lib/puppet/face/help/man.erb +152 -0
  120. data/vendor/gems/puppet-3.7.3/lib/puppet/face/instrumentation_data.rb +30 -0
  121. data/vendor/gems/puppet-3.7.3/lib/puppet/face/instrumentation_listener.rb +98 -0
  122. data/vendor/gems/puppet-3.7.3/lib/puppet/face/instrumentation_probe.rb +79 -0
  123. data/vendor/gems/puppet-3.7.3/lib/puppet/face/key.rb +15 -0
  124. data/vendor/gems/puppet-3.7.3/lib/puppet/face/man.rb +99 -0
  125. data/vendor/gems/puppet-3.7.3/lib/puppet/face/module.rb +19 -0
  126. data/vendor/gems/puppet-3.7.3/lib/puppet/face/module/build.rb +63 -0
  127. data/vendor/gems/puppet-3.7.3/lib/puppet/face/module/changes.rb +41 -0
  128. data/vendor/gems/puppet-3.7.3/lib/puppet/face/module/generate.rb +251 -0
  129. data/vendor/gems/puppet-3.7.3/lib/puppet/face/module/install.rb +145 -0
  130. data/vendor/gems/puppet-3.7.3/lib/puppet/face/module/list.rb +275 -0
  131. data/vendor/gems/puppet-3.7.3/lib/puppet/face/module/search.rb +94 -0
  132. data/vendor/gems/puppet-3.7.3/lib/puppet/face/module/uninstall.rb +78 -0
  133. data/vendor/gems/puppet-3.7.3/lib/puppet/face/module/upgrade.rb +86 -0
  134. data/vendor/gems/puppet-3.7.3/lib/puppet/face/node.rb +43 -0
  135. data/vendor/gems/puppet-3.7.3/lib/puppet/face/node/clean.rb +159 -0
  136. data/vendor/gems/puppet-3.7.3/lib/puppet/face/parser.rb +160 -0
  137. data/vendor/gems/puppet-3.7.3/lib/puppet/face/plugin.rb +65 -0
  138. data/vendor/gems/puppet-3.7.3/lib/puppet/face/report.rb +54 -0
  139. data/vendor/gems/puppet-3.7.3/lib/puppet/face/resource.rb +53 -0
  140. data/vendor/gems/puppet-3.7.3/lib/puppet/face/resource_type.rb +81 -0
  141. data/vendor/gems/puppet-3.7.3/lib/puppet/face/secret_agent.rb +54 -0
  142. data/vendor/gems/puppet-3.7.3/lib/puppet/face/status.rb +53 -0
  143. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/base.rb +94 -0
  144. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/cfacter.rb +14 -0
  145. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/eventlog.rb +5 -0
  146. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/external_facts.rb +5 -0
  147. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/libuser.rb +8 -0
  148. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/msgpack.rb +3 -0
  149. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/pe_license.rb +4 -0
  150. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/pson.rb +4 -0
  151. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/rack.rb +19 -0
  152. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/rails.rb +47 -0
  153. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/rdoc1.rb +16 -0
  154. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/rubygems.rb +7 -0
  155. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/selinux.rb +3 -0
  156. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/ssh.rb +3 -0
  157. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/stomp.rb +5 -0
  158. data/vendor/gems/puppet-3.7.3/lib/puppet/feature/zlib.rb +5 -0
  159. data/vendor/gems/puppet-3.7.3/lib/puppet/file_bucket.rb +4 -0
  160. data/vendor/gems/puppet-3.7.3/lib/puppet/file_bucket/dipper.rb +119 -0
  161. data/vendor/gems/puppet-3.7.3/lib/puppet/file_bucket/file.rb +157 -0
  162. data/vendor/gems/puppet-3.7.3/lib/puppet/file_collection.rb +19 -0
  163. data/vendor/gems/puppet-3.7.3/lib/puppet/file_collection/lookup.rb +10 -0
  164. data/vendor/gems/puppet-3.7.3/lib/puppet/file_serving.rb +3 -0
  165. data/vendor/gems/puppet-3.7.3/lib/puppet/file_serving/base.rb +95 -0
  166. data/vendor/gems/puppet-3.7.3/lib/puppet/file_serving/configuration.rb +109 -0
  167. data/vendor/gems/puppet-3.7.3/lib/puppet/file_serving/configuration/parser.rb +121 -0
  168. data/vendor/gems/puppet-3.7.3/lib/puppet/file_serving/content.rb +45 -0
  169. data/vendor/gems/puppet-3.7.3/lib/puppet/file_serving/fileset.rb +172 -0
  170. data/vendor/gems/puppet-3.7.3/lib/puppet/file_serving/metadata.rb +199 -0
  171. data/vendor/gems/puppet-3.7.3/lib/puppet/file_serving/mount.rb +39 -0
  172. data/vendor/gems/puppet-3.7.3/lib/puppet/file_serving/mount/file.rb +121 -0
  173. data/vendor/gems/puppet-3.7.3/lib/puppet/file_serving/mount/modules.rb +24 -0
  174. data/vendor/gems/puppet-3.7.3/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
  175. data/vendor/gems/puppet-3.7.3/lib/puppet/file_serving/mount/plugins.rb +35 -0
  176. data/vendor/gems/puppet-3.7.3/lib/puppet/file_serving/terminus_helper.rb +21 -0
  177. data/vendor/gems/puppet-3.7.3/lib/puppet/file_serving/terminus_selector.rb +30 -0
  178. data/vendor/gems/puppet-3.7.3/lib/puppet/file_system.rb +366 -0
  179. data/vendor/gems/puppet-3.7.3/lib/puppet/file_system/file18.rb +5 -0
  180. data/vendor/gems/puppet-3.7.3/lib/puppet/file_system/file19.rb +46 -0
  181. data/vendor/gems/puppet-3.7.3/lib/puppet/file_system/file19windows.rb +107 -0
  182. data/vendor/gems/puppet-3.7.3/lib/puppet/file_system/file_impl.rb +145 -0
  183. data/vendor/gems/puppet-3.7.3/lib/puppet/file_system/memory_file.rb +71 -0
  184. data/vendor/gems/puppet-3.7.3/lib/puppet/file_system/memory_impl.rb +78 -0
  185. data/vendor/gems/puppet-3.7.3/lib/puppet/file_system/path_pattern.rb +97 -0
  186. data/vendor/gems/puppet-3.7.3/lib/puppet/file_system/uniquefile.rb +190 -0
  187. data/vendor/gems/puppet-3.7.3/lib/puppet/forge.rb +226 -0
  188. data/vendor/gems/puppet-3.7.3/lib/puppet/forge/cache.rb +59 -0
  189. data/vendor/gems/puppet-3.7.3/lib/puppet/forge/errors.rb +112 -0
  190. data/vendor/gems/puppet-3.7.3/lib/puppet/forge/repository.rb +182 -0
  191. data/vendor/gems/puppet-3.7.3/lib/puppet/functions.rb +555 -0
  192. data/vendor/gems/puppet-3.7.3/lib/puppet/functions/assert_type.rb +59 -0
  193. data/vendor/gems/puppet-3.7.3/lib/puppet/functions/each.rb +111 -0
  194. data/vendor/gems/puppet-3.7.3/lib/puppet/functions/epp.rb +54 -0
  195. data/vendor/gems/puppet-3.7.3/lib/puppet/functions/filter.rb +113 -0
  196. data/vendor/gems/puppet-3.7.3/lib/puppet/functions/import.rb +7 -0
  197. data/vendor/gems/puppet-3.7.3/lib/puppet/functions/inline_epp.rb +88 -0
  198. data/vendor/gems/puppet-3.7.3/lib/puppet/functions/map.rb +97 -0
  199. data/vendor/gems/puppet-3.7.3/lib/puppet/functions/match.rb +102 -0
  200. data/vendor/gems/puppet-3.7.3/lib/puppet/functions/reduce.rb +94 -0
  201. data/vendor/gems/puppet-3.7.3/lib/puppet/functions/slice.rb +126 -0
  202. data/vendor/gems/puppet-3.7.3/lib/puppet/functions/with.rb +23 -0
  203. data/vendor/gems/puppet-3.7.3/lib/puppet/graph.rb +11 -0
  204. data/vendor/gems/puppet-3.7.3/lib/puppet/graph/key.rb +26 -0
  205. data/vendor/gems/puppet-3.7.3/lib/puppet/graph/prioritizer.rb +29 -0
  206. data/vendor/gems/puppet-3.7.3/lib/puppet/graph/random_prioritizer.rb +16 -0
  207. data/vendor/gems/puppet-3.7.3/lib/puppet/graph/rb_tree_map.rb +388 -0
  208. data/vendor/gems/puppet-3.7.3/lib/puppet/graph/relationship_graph.rb +246 -0
  209. data/vendor/gems/puppet-3.7.3/lib/puppet/graph/sequential_prioritizer.rb +31 -0
  210. data/vendor/gems/puppet-3.7.3/lib/puppet/graph/simple_graph.rb +566 -0
  211. data/vendor/gems/puppet-3.7.3/lib/puppet/graph/title_hash_prioritizer.rb +16 -0
  212. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector.rb +61 -0
  213. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/active_record.rb +29 -0
  214. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/catalog/active_record.rb +39 -0
  215. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/catalog/compiler.rb +182 -0
  216. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/catalog/json.rb +6 -0
  217. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/catalog/msgpack.rb +6 -0
  218. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/catalog/queue.rb +9 -0
  219. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/catalog/rest.rb +6 -0
  220. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/catalog/static_compiler.rb +214 -0
  221. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/catalog/store_configs.rb +8 -0
  222. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/catalog/yaml.rb +22 -0
  223. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate/ca.rb +9 -0
  224. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate/disabled_ca.rb +22 -0
  225. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate/file.rb +9 -0
  226. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate/rest.rb +16 -0
  227. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate_request/ca.rb +22 -0
  228. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate_request/disabled_ca.rb +22 -0
  229. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate_request/file.rb +8 -0
  230. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate_request/memory.rb +6 -0
  231. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate_request/rest.rb +10 -0
  232. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate_revocation_list/ca.rb +8 -0
  233. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +22 -0
  234. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate_revocation_list/file.rb +8 -0
  235. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate_revocation_list/rest.rb +10 -0
  236. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate_status.rb +4 -0
  237. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate_status/file.rb +91 -0
  238. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/certificate_status/rest.rb +11 -0
  239. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/code.rb +6 -0
  240. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/couch.rb +78 -0
  241. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/data_binding/hiera.rb +7 -0
  242. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/data_binding/none.rb +5 -0
  243. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/direct_file_server.rb +19 -0
  244. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/envelope.rb +11 -0
  245. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/errors.rb +5 -0
  246. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/exec.rb +38 -0
  247. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/face.rb +139 -0
  248. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/facts/active_record.rb +44 -0
  249. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/facts/couch.rb +36 -0
  250. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/facts/facter.rb +78 -0
  251. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/facts/inventory_active_record.rb +110 -0
  252. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/facts/inventory_service.rb +20 -0
  253. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/facts/memory.rb +9 -0
  254. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/facts/network_device.rb +24 -0
  255. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/facts/rest.rb +8 -0
  256. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/facts/store_configs.rb +8 -0
  257. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/facts/yaml.rb +82 -0
  258. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/file_bucket_file/file.rb +142 -0
  259. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/file_bucket_file/rest.rb +8 -0
  260. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/file_bucket_file/selector.rb +53 -0
  261. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/file_content.rb +5 -0
  262. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/file_content/file.rb +7 -0
  263. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/file_content/file_server.rb +7 -0
  264. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/file_content/rest.rb +9 -0
  265. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/file_content/selector.rb +30 -0
  266. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/file_metadata.rb +5 -0
  267. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/file_metadata/file.rb +22 -0
  268. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/file_metadata/file_server.rb +7 -0
  269. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/file_metadata/rest.rb +9 -0
  270. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/file_metadata/selector.rb +30 -0
  271. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/file_server.rb +65 -0
  272. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/hiera.rb +48 -0
  273. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/indirection.rb +336 -0
  274. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/instrumentation_data.rb +3 -0
  275. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/instrumentation_data/local.rb +22 -0
  276. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/instrumentation_data/rest.rb +8 -0
  277. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/instrumentation_listener.rb +3 -0
  278. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/instrumentation_listener/local.rb +26 -0
  279. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/instrumentation_listener/rest.rb +8 -0
  280. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/instrumentation_probe.rb +3 -0
  281. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/instrumentation_probe/local.rb +27 -0
  282. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/instrumentation_probe/rest.rb +8 -0
  283. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/json.rb +76 -0
  284. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/key/ca.rb +16 -0
  285. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/key/disabled_ca.rb +22 -0
  286. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/key/file.rb +49 -0
  287. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/key/memory.rb +6 -0
  288. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/ldap.rb +79 -0
  289. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/memory.rb +34 -0
  290. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/msgpack.rb +82 -0
  291. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/node/active_record.rb +22 -0
  292. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/node/exec.rb +69 -0
  293. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/node/ldap.rb +257 -0
  294. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/node/memory.rb +10 -0
  295. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/node/msgpack.rb +7 -0
  296. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/node/plain.rb +20 -0
  297. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/node/rest.rb +7 -0
  298. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/node/store_configs.rb +8 -0
  299. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/node/write_only_yaml.rb +32 -0
  300. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/node/yaml.rb +22 -0
  301. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/none.rb +9 -0
  302. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/plain.rb +9 -0
  303. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/queue.rb +80 -0
  304. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/report/msgpack.rb +11 -0
  305. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/report/processor.rb +59 -0
  306. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/report/rest.rb +15 -0
  307. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/report/yaml.rb +11 -0
  308. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/request.rb +317 -0
  309. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/resource/active_record.rb +104 -0
  310. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/resource/ral.rb +64 -0
  311. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/resource/rest.rb +17 -0
  312. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/resource/store_configs.rb +13 -0
  313. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/resource/validator.rb +8 -0
  314. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/resource_type.rb +5 -0
  315. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/resource_type/parser.rb +101 -0
  316. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/resource_type/rest.rb +7 -0
  317. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/rest.rb +267 -0
  318. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/run/local.rb +15 -0
  319. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/run/rest.rb +12 -0
  320. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/ssl_file.rb +180 -0
  321. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/status.rb +3 -0
  322. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/status/local.rb +12 -0
  323. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/status/rest.rb +9 -0
  324. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/store_configs.rb +30 -0
  325. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/terminus.rb +169 -0
  326. data/vendor/gems/puppet-3.7.3/lib/puppet/indirector/yaml.rb +63 -0
  327. data/vendor/gems/puppet-3.7.3/lib/puppet/interface.rb +235 -0
  328. data/vendor/gems/puppet-3.7.3/lib/puppet/interface/action.rb +374 -0
  329. data/vendor/gems/puppet-3.7.3/lib/puppet/interface/action_builder.rb +149 -0
  330. data/vendor/gems/puppet-3.7.3/lib/puppet/interface/action_manager.rb +101 -0
  331. data/vendor/gems/puppet-3.7.3/lib/puppet/interface/documentation.rb +342 -0
  332. data/vendor/gems/puppet-3.7.3/lib/puppet/interface/face_collection.rb +125 -0
  333. data/vendor/gems/puppet-3.7.3/lib/puppet/interface/option.rb +150 -0
  334. data/vendor/gems/puppet-3.7.3/lib/puppet/interface/option_builder.rb +93 -0
  335. data/vendor/gems/puppet-3.7.3/lib/puppet/interface/option_manager.rb +99 -0
  336. data/vendor/gems/puppet-3.7.3/lib/puppet/loaders.rb +19 -0
  337. data/vendor/gems/puppet-3.7.3/lib/puppet/metatype/manager.rb +184 -0
  338. data/vendor/gems/puppet-3.7.3/lib/puppet/module.rb +339 -0
  339. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool.rb +194 -0
  340. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/applications.rb +14 -0
  341. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/applications/application.rb +98 -0
  342. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/applications/builder.rb +148 -0
  343. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/applications/checksummer.rb +62 -0
  344. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/applications/installer.rb +353 -0
  345. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/applications/searcher.rb +29 -0
  346. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/applications/uninstaller.rb +117 -0
  347. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/applications/unpacker.rb +100 -0
  348. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/applications/upgrader.rb +279 -0
  349. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/checksums.rb +49 -0
  350. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/contents_description.rb +84 -0
  351. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/dependency.rb +42 -0
  352. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/errors.rb +11 -0
  353. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/errors/base.rb +15 -0
  354. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/errors/installer.rb +95 -0
  355. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/errors/shared.rb +188 -0
  356. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/errors/uninstaller.rb +45 -0
  357. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/errors/upgrader.rb +63 -0
  358. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/install_directory.rb +45 -0
  359. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/installed_modules.rb +98 -0
  360. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/local_tarball.rb +90 -0
  361. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/metadata.rb +209 -0
  362. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/modulefile.rb +78 -0
  363. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/shared_behaviors.rb +180 -0
  364. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +7 -0
  365. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +79 -0
  366. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +18 -0
  367. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +41 -0
  368. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/skeleton/templates/generator/metadata.json.erb +1 -0
  369. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +7 -0
  370. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +1 -0
  371. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +12 -0
  372. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/tar.rb +17 -0
  373. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/tar/gnu.rb +19 -0
  374. data/vendor/gems/puppet-3.7.3/lib/puppet/module_tool/tar/mini.rb +53 -0
  375. data/vendor/gems/puppet-3.7.3/lib/puppet/network.rb +3 -0
  376. data/vendor/gems/puppet-3.7.3/lib/puppet/network/auth_config_parser.rb +84 -0
  377. data/vendor/gems/puppet-3.7.3/lib/puppet/network/authconfig.rb +76 -0
  378. data/vendor/gems/puppet-3.7.3/lib/puppet/network/authentication.rb +35 -0
  379. data/vendor/gems/puppet-3.7.3/lib/puppet/network/authorization.rb +34 -0
  380. data/vendor/gems/puppet-3.7.3/lib/puppet/network/authstore.rb +282 -0
  381. data/vendor/gems/puppet-3.7.3/lib/puppet/network/client_request.rb +29 -0
  382. data/vendor/gems/puppet-3.7.3/lib/puppet/network/format.rb +110 -0
  383. data/vendor/gems/puppet-3.7.3/lib/puppet/network/format_handler.rb +105 -0
  384. data/vendor/gems/puppet-3.7.3/lib/puppet/network/format_support.rb +124 -0
  385. data/vendor/gems/puppet-3.7.3/lib/puppet/network/formats.rb +216 -0
  386. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http.rb +20 -0
  387. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/api.rb +2 -0
  388. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/api/v1.rb +222 -0
  389. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/api/v2.rb +32 -0
  390. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/api/v2/authorization.rb +15 -0
  391. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/api/v2/environments.rb +35 -0
  392. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/compression.rb +118 -0
  393. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/connection.rb +240 -0
  394. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/error.rb +69 -0
  395. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/factory.rb +44 -0
  396. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/handler.rb +186 -0
  397. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/issues.rb +11 -0
  398. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/memory_response.rb +13 -0
  399. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/nocache_pool.rb +21 -0
  400. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/pool.rb +120 -0
  401. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/rack.rb +33 -0
  402. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/rack/rest.rb +138 -0
  403. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/request.rb +56 -0
  404. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/response.rb +11 -0
  405. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/route.rb +100 -0
  406. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/session.rb +17 -0
  407. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/site.rb +39 -0
  408. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/webrick.rb +129 -0
  409. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http/webrick/rest.rb +104 -0
  410. data/vendor/gems/puppet-3.7.3/lib/puppet/network/http_pool.rb +61 -0
  411. data/vendor/gems/puppet-3.7.3/lib/puppet/network/resolver.rb +86 -0
  412. data/vendor/gems/puppet-3.7.3/lib/puppet/network/rest_controller.rb +2 -0
  413. data/vendor/gems/puppet-3.7.3/lib/puppet/network/rights.rb +219 -0
  414. data/vendor/gems/puppet-3.7.3/lib/puppet/network/server.rb +39 -0
  415. data/vendor/gems/puppet-3.7.3/lib/puppet/node.rb +184 -0
  416. data/vendor/gems/puppet-3.7.3/lib/puppet/node/environment.rb +595 -0
  417. data/vendor/gems/puppet-3.7.3/lib/puppet/node/facts.rb +155 -0
  418. data/vendor/gems/puppet-3.7.3/lib/puppet/parameter.rb +585 -0
  419. data/vendor/gems/puppet-3.7.3/lib/puppet/parameter/boolean.rb +15 -0
  420. data/vendor/gems/puppet-3.7.3/lib/puppet/parameter/package_options.rb +31 -0
  421. data/vendor/gems/puppet-3.7.3/lib/puppet/parameter/path.rb +57 -0
  422. data/vendor/gems/puppet-3.7.3/lib/puppet/parameter/value.rb +93 -0
  423. data/vendor/gems/puppet-3.7.3/lib/puppet/parameter/value_collection.rb +211 -0
  424. data/vendor/gems/puppet-3.7.3/lib/puppet/parser.rb +7 -0
  425. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast.rb +129 -0
  426. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/arithmetic_operator.rb +91 -0
  427. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/astarray.rb +50 -0
  428. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/asthash.rb +37 -0
  429. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/block_expression.rb +40 -0
  430. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/boolean_operator.rb +46 -0
  431. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/branch.rb +22 -0
  432. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/caseopt.rb +52 -0
  433. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/casestatement.rb +41 -0
  434. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/collection.rb +53 -0
  435. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/collexpr.rb +109 -0
  436. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/comparison_operator.rb +38 -0
  437. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/definition.rb +17 -0
  438. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/else.rb +22 -0
  439. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/function.rb +59 -0
  440. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/hostclass.rb +29 -0
  441. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/ifstatement.rb +34 -0
  442. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/in_operator.rb +24 -0
  443. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/lambda.rb +135 -0
  444. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/leaf.rb +232 -0
  445. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/match_operator.rb +28 -0
  446. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/method_call.rb +77 -0
  447. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/minus.rb +23 -0
  448. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/node.rb +25 -0
  449. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/nop.rb +11 -0
  450. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/not.rb +19 -0
  451. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/pops_bridge.rb +242 -0
  452. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/relationship.rb +47 -0
  453. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/resource.rb +67 -0
  454. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/resource_defaults.rb +24 -0
  455. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/resource_instance.rb +9 -0
  456. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/resource_override.rb +62 -0
  457. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/resource_reference.rb +28 -0
  458. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/resourceparam.rb +27 -0
  459. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/selector.rb +50 -0
  460. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/top_level_construct.rb +4 -0
  461. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/ast/vardef.rb +38 -0
  462. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/code_merger.rb +13 -0
  463. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/collector.rb +177 -0
  464. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/compiler.rb +625 -0
  465. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/e4_parser_adapter.rb +81 -0
  466. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/files.rb +137 -0
  467. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions.rb +262 -0
  468. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/assert_type.rb +31 -0
  469. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/contain.rb +36 -0
  470. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/create_resources.rb +82 -0
  471. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/defined.rb +73 -0
  472. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/digest.rb +5 -0
  473. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/each.rb +48 -0
  474. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/epp.rb +45 -0
  475. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/extlookup.rb +153 -0
  476. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/fail.rb +4 -0
  477. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/file.rb +31 -0
  478. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/filter.rb +44 -0
  479. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/fqdn_rand.rb +21 -0
  480. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/generate.rb +37 -0
  481. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/hiera.rb +26 -0
  482. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/hiera_array.rb +27 -0
  483. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/hiera_hash.rb +29 -0
  484. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/hiera_include.rb +44 -0
  485. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/include.rb +35 -0
  486. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/inline_epp.rb +76 -0
  487. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/inline_template.rb +21 -0
  488. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/lookup.rb +144 -0
  489. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/map.rb +43 -0
  490. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/match.rb +28 -0
  491. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/md5.rb +5 -0
  492. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/realize.rb +14 -0
  493. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/reduce.rb +71 -0
  494. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/regsubst.rb +116 -0
  495. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/require.rb +61 -0
  496. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/search.rb +12 -0
  497. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/sha1.rb +5 -0
  498. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/shellquote.rb +61 -0
  499. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/slice.rb +48 -0
  500. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/split.rb +28 -0
  501. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/sprintf.rb +36 -0
  502. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/tag.rb +6 -0
  503. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/tagged.rb +18 -0
  504. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/template.rb +30 -0
  505. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/versioncmp.rb +30 -0
  506. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/functions/with.rb +21 -0
  507. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/grammar.ra +806 -0
  508. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/lexer.rb +608 -0
  509. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/makefile +8 -0
  510. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/methods.rb +69 -0
  511. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/parser.rb +2559 -0
  512. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/parser_factory.rb +76 -0
  513. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/parser_support.rb +195 -0
  514. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/relationship.rb +62 -0
  515. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/resource.rb +275 -0
  516. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/resource/param.rb +25 -0
  517. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/scope.rb +906 -0
  518. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/templatewrapper.rb +127 -0
  519. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/type_loader.rb +152 -0
  520. data/vendor/gems/puppet-3.7.3/lib/puppet/parser/yaml_trimmer.rb +7 -0
  521. data/vendor/gems/puppet-3.7.3/lib/puppet/pops.rb +118 -0
  522. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/adaptable.rb +190 -0
  523. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/adapters.rb +109 -0
  524. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/binder.rb +393 -0
  525. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/binder_issues.rb +122 -0
  526. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/bindings_checker.rb +197 -0
  527. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/bindings_composer.rb +175 -0
  528. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/bindings_factory.rb +805 -0
  529. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/bindings_label_provider.rb +43 -0
  530. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/bindings_loader.rb +88 -0
  531. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/bindings_model.rb +68 -0
  532. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/bindings_model_dumper.rb +187 -0
  533. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/bindings_model_meta.rb +215 -0
  534. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/bindings_validator_factory.rb +28 -0
  535. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/config/binder_config.rb +107 -0
  536. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/config/binder_config_checker.rb +142 -0
  537. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/config/diagnostic_producer.rb +32 -0
  538. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/config/issues.rb +86 -0
  539. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/injector.rb +767 -0
  540. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/injector_entry.rb +57 -0
  541. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/key_factory.rb +67 -0
  542. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/lookup.rb +199 -0
  543. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/producers.rb +826 -0
  544. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +34 -0
  545. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +84 -0
  546. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +53 -0
  547. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/binder/system_bindings.rb +60 -0
  548. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/containment.rb +104 -0
  549. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/evaluator/access_operator.rb +596 -0
  550. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +175 -0
  551. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/evaluator/callable_signature.rb +100 -0
  552. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/evaluator/closure.rb +228 -0
  553. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/evaluator/compare_operator.rb +172 -0
  554. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/evaluator/epp_evaluator.rb +88 -0
  555. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/evaluator/evaluator_impl.rb +1115 -0
  556. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/evaluator/external_syntax_support.rb +49 -0
  557. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/evaluator/relationship_operator.rb +157 -0
  558. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/evaluator/runtime3_support.rb +599 -0
  559. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/functions/dispatch.rb +76 -0
  560. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/functions/dispatcher.rb +70 -0
  561. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/functions/function.rb +77 -0
  562. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/issue_reporter.rb +87 -0
  563. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/issues.rb +548 -0
  564. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/label_provider.rb +76 -0
  565. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/loader/base_loader.rb +102 -0
  566. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/loader/dependency_loader.rb +60 -0
  567. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/loader/gem_support.rb +49 -0
  568. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/loader/loader.rb +180 -0
  569. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/loader/loader_paths.rb +118 -0
  570. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/loader/module_loaders.rb +256 -0
  571. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/loader/null_loader.rb +44 -0
  572. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/loader/ruby_function_instantiator.rb +34 -0
  573. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/loader/simple_environment_loader.rb +20 -0
  574. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/loader/static_loader.rb +79 -0
  575. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/loader/uri_helper.rb +22 -0
  576. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/loaders.rb +231 -0
  577. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/model/ast_transformer.rb +643 -0
  578. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/model/ast_tree_dumper.rb +386 -0
  579. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/model/factory.rb +1055 -0
  580. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/model/model.rb +114 -0
  581. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/model/model_label_provider.rb +106 -0
  582. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/model/model_meta.rb +576 -0
  583. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/model/model_tree_dumper.rb +407 -0
  584. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/model/tree_dumper.rb +59 -0
  585. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/parser/code_merger.rb +17 -0
  586. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/parser/egrammar.ra +757 -0
  587. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/parser/eparser.rb +2655 -0
  588. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/parser/epp_parser.rb +51 -0
  589. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/parser/epp_support.rb +247 -0
  590. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/parser/evaluating_parser.rb +140 -0
  591. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/parser/heredoc_support.rb +139 -0
  592. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/parser/interpolation_support.rb +231 -0
  593. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/parser/lexer2.rb +696 -0
  594. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/parser/lexer_support.rb +113 -0
  595. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/parser/locatable.rb +23 -0
  596. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/parser/locator.rb +291 -0
  597. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/parser/parser_support.rb +242 -0
  598. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/parser/slurp_support.rb +95 -0
  599. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/patterns.rb +44 -0
  600. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/semantic_error.rb +17 -0
  601. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/types/class_loader.rb +129 -0
  602. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/types/enumeration.rb +34 -0
  603. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/types/type_calculator.rb +1703 -0
  604. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/types/type_factory.rb +432 -0
  605. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/types/type_parser.rb +475 -0
  606. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/types/types.rb +397 -0
  607. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/types/types_meta.rb +223 -0
  608. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/utils.rb +142 -0
  609. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/validation.rb +432 -0
  610. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/validation/checker4_0.rb +760 -0
  611. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/validation/validator_factory_4_0.rb +30 -0
  612. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/visitable.rb +6 -0
  613. data/vendor/gems/puppet-3.7.3/lib/puppet/pops/visitor.rb +89 -0
  614. data/vendor/gems/puppet-3.7.3/lib/puppet/property.rb +617 -0
  615. data/vendor/gems/puppet-3.7.3/lib/puppet/property/boolean.rb +7 -0
  616. data/vendor/gems/puppet-3.7.3/lib/puppet/property/ensure.rb +105 -0
  617. data/vendor/gems/puppet-3.7.3/lib/puppet/property/keyvalue.rb +95 -0
  618. data/vendor/gems/puppet-3.7.3/lib/puppet/property/list.rb +78 -0
  619. data/vendor/gems/puppet-3.7.3/lib/puppet/property/ordered_list.rb +29 -0
  620. data/vendor/gems/puppet-3.7.3/lib/puppet/provider.rb +651 -0
  621. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/aixobject.rb +392 -0
  622. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/augeas/augeas.rb +509 -0
  623. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/cisco.rb +9 -0
  624. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/command.rb +25 -0
  625. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/computer/computer.rb +20 -0
  626. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/confine.rb +6 -0
  627. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/cron/crontab.rb +260 -0
  628. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/exec.rb +100 -0
  629. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/exec/posix.rb +48 -0
  630. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/exec/shell.rb +25 -0
  631. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/exec/windows.rb +55 -0
  632. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/file/posix.rb +136 -0
  633. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/file/windows.rb +104 -0
  634. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/group/aix.rb +141 -0
  635. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/group/directoryservice.rb +12 -0
  636. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/group/groupadd.rb +85 -0
  637. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/group/ldap.rb +45 -0
  638. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/group/pw.rb +48 -0
  639. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/group/windows_adsi.rb +86 -0
  640. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/host/parsed.rb +44 -0
  641. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/interface/cisco.rb +27 -0
  642. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/ldap.rb +137 -0
  643. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/macauthorization/macauthorization.rb +309 -0
  644. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/mailalias/aliases.rb +39 -0
  645. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/maillist/mailman.rb +108 -0
  646. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/mcx/mcxcontent.rb +172 -0
  647. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/mount.rb +58 -0
  648. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/mount/parsed.rb +123 -0
  649. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/naginator.rb +63 -0
  650. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/nameservice.rb +292 -0
  651. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/nameservice/directoryservice.rb +588 -0
  652. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/nameservice/objectadd.rb +33 -0
  653. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/nameservice/pw.rb +21 -0
  654. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/network_device.rb +68 -0
  655. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package.rb +52 -0
  656. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/aix.rb +152 -0
  657. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/appdmg.rb +106 -0
  658. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/apple.rb +47 -0
  659. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/apt.rb +116 -0
  660. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/aptitude.rb +29 -0
  661. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/aptrpm.rb +83 -0
  662. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/blastwave.rb +111 -0
  663. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/dpkg.rb +165 -0
  664. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/fink.rb +79 -0
  665. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/freebsd.rb +47 -0
  666. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/gem.rb +135 -0
  667. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/hpux.rb +44 -0
  668. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/macports.rb +107 -0
  669. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/msi.rb +125 -0
  670. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/nim.rb +280 -0
  671. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/openbsd.rb +228 -0
  672. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/opkg.rb +76 -0
  673. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/pacman.rb +234 -0
  674. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/pip.rb +119 -0
  675. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/pkg.rb +201 -0
  676. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/pkgdmg.rb +149 -0
  677. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/pkgin.rb +87 -0
  678. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/pkgutil.rb +186 -0
  679. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/portage.rb +149 -0
  680. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/ports.rb +94 -0
  681. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/portupgrade.rb +241 -0
  682. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/rpm.rb +187 -0
  683. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/rug.rb +52 -0
  684. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/sun.rb +132 -0
  685. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/sunfreeware.rb +9 -0
  686. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/up2date.rb +40 -0
  687. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/urpmi.rb +55 -0
  688. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/windows.rb +113 -0
  689. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/windows/exe_package.rb +70 -0
  690. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/windows/msi_package.rb +62 -0
  691. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/windows/package.rb +92 -0
  692. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/yum.rb +199 -0
  693. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/yumhelper.py +159 -0
  694. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/package/zypper.rb +90 -0
  695. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/parsedfile.rb +459 -0
  696. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +558 -0
  697. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/selboolean/getsetsebool.rb +47 -0
  698. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/selmodule/semodule.rb +134 -0
  699. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/base.rb +106 -0
  700. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/bsd.rb +51 -0
  701. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/daemontools.rb +194 -0
  702. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/debian.rb +64 -0
  703. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/freebsd.rb +143 -0
  704. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/gentoo.rb +45 -0
  705. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/init.rb +169 -0
  706. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/launchd.rb +353 -0
  707. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/openbsd.rb +342 -0
  708. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/openrc.rb +71 -0
  709. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/openwrt.rb +36 -0
  710. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/redhat.rb +67 -0
  711. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/runit.rb +111 -0
  712. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/service.rb +42 -0
  713. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/smf.rb +116 -0
  714. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/src.rb +120 -0
  715. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/systemd.rb +65 -0
  716. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/upstart.rb +355 -0
  717. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/service/windows.rb +106 -0
  718. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/ssh_authorized_key/parsed.rb +105 -0
  719. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/sshkey/parsed.rb +40 -0
  720. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/user/aix.rb +369 -0
  721. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/user/directoryservice.rb +685 -0
  722. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/user/hpux.rb +66 -0
  723. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/user/ldap.rb +128 -0
  724. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/user/pw.rb +97 -0
  725. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/user/user_role_add.rb +210 -0
  726. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/user/useradd.rb +231 -0
  727. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/user/windows_adsi.rb +99 -0
  728. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/vlan/cisco.rb +28 -0
  729. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/yumrepo/inifile.rb +300 -0
  730. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/zfs/zfs.rb +83 -0
  731. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/zone/solaris.rb +361 -0
  732. data/vendor/gems/puppet-3.7.3/lib/puppet/provider/zpool/zpool.rb +120 -0
  733. data/vendor/gems/puppet-3.7.3/lib/puppet/rails.rb +139 -0
  734. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/benchmark.rb +63 -0
  735. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +13 -0
  736. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/database/002_remove_duplicated_index_on_all_tables.rb +13 -0
  737. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
  738. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/database/004_add_inventory_service_tables.rb +36 -0
  739. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/database/schema.rb +136 -0
  740. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/fact_name.rb +7 -0
  741. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/fact_value.rb +10 -0
  742. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/host.rb +258 -0
  743. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/inventory_fact.rb +5 -0
  744. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/inventory_node.rb +43 -0
  745. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/param_name.rb +25 -0
  746. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/param_value.rb +74 -0
  747. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/puppet_tag.rb +10 -0
  748. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/resource.rb +235 -0
  749. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/resource_tag.rb +26 -0
  750. data/vendor/gems/puppet-3.7.3/lib/puppet/rails/source_file.rb +8 -0
  751. data/vendor/gems/puppet-3.7.3/lib/puppet/reference/configuration.rb +73 -0
  752. data/vendor/gems/puppet-3.7.3/lib/puppet/reference/function.rb +17 -0
  753. data/vendor/gems/puppet-3.7.3/lib/puppet/reference/indirection.rb +71 -0
  754. data/vendor/gems/puppet-3.7.3/lib/puppet/reference/metaparameter.rb +44 -0
  755. data/vendor/gems/puppet-3.7.3/lib/puppet/reference/providers.rb +119 -0
  756. data/vendor/gems/puppet-3.7.3/lib/puppet/reference/report.rb +23 -0
  757. data/vendor/gems/puppet-3.7.3/lib/puppet/reference/type.rb +116 -0
  758. data/vendor/gems/puppet-3.7.3/lib/puppet/relationship.rb +103 -0
  759. data/vendor/gems/puppet-3.7.3/lib/puppet/reports.rb +89 -0
  760. data/vendor/gems/puppet-3.7.3/lib/puppet/reports/http.rb +31 -0
  761. data/vendor/gems/puppet-3.7.3/lib/puppet/reports/log.rb +14 -0
  762. data/vendor/gems/puppet-3.7.3/lib/puppet/reports/rrdgraph.rb +128 -0
  763. data/vendor/gems/puppet-3.7.3/lib/puppet/reports/store.rb +68 -0
  764. data/vendor/gems/puppet-3.7.3/lib/puppet/reports/tagmail.rb +179 -0
  765. data/vendor/gems/puppet-3.7.3/lib/puppet/resource.rb +605 -0
  766. data/vendor/gems/puppet-3.7.3/lib/puppet/resource/catalog.rb +554 -0
  767. data/vendor/gems/puppet-3.7.3/lib/puppet/resource/status.rb +155 -0
  768. data/vendor/gems/puppet-3.7.3/lib/puppet/resource/type.rb +413 -0
  769. data/vendor/gems/puppet-3.7.3/lib/puppet/resource/type_collection.rb +230 -0
  770. data/vendor/gems/puppet-3.7.3/lib/puppet/resource/type_collection_helper.rb +7 -0
  771. data/vendor/gems/puppet-3.7.3/lib/puppet/run.rb +109 -0
  772. data/vendor/gems/puppet-3.7.3/lib/puppet/scheduler.rb +16 -0
  773. data/vendor/gems/puppet-3.7.3/lib/puppet/scheduler/job.rb +53 -0
  774. data/vendor/gems/puppet-3.7.3/lib/puppet/scheduler/scheduler.rb +44 -0
  775. data/vendor/gems/puppet-3.7.3/lib/puppet/scheduler/splay_job.rb +32 -0
  776. data/vendor/gems/puppet-3.7.3/lib/puppet/scheduler/timer.rb +13 -0
  777. data/vendor/gems/puppet-3.7.3/lib/puppet/settings.rb +1442 -0
  778. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/array_setting.rb +17 -0
  779. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/autosign_setting.rb +22 -0
  780. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/base_setting.rb +195 -0
  781. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/boolean_setting.rb +32 -0
  782. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/config_file.rb +139 -0
  783. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/directory_setting.rb +12 -0
  784. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/duration_setting.rb +32 -0
  785. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/enum_setting.rb +16 -0
  786. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/environment_conf.rb +175 -0
  787. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/errors.rb +11 -0
  788. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/file_or_directory_setting.rb +34 -0
  789. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/file_setting.rb +234 -0
  790. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/ini_file.rb +171 -0
  791. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/path_setting.rb +8 -0
  792. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/priority_setting.rb +42 -0
  793. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/string_setting.rb +9 -0
  794. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/terminus_setting.rb +14 -0
  795. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/ttl_setting.rb +48 -0
  796. data/vendor/gems/puppet-3.7.3/lib/puppet/settings/value_translator.rb +15 -0
  797. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl.rb +13 -0
  798. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/base.rb +140 -0
  799. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/certificate.rb +65 -0
  800. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/certificate_authority.rb +517 -0
  801. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/certificate_authority/autosign_command.rb +45 -0
  802. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/certificate_authority/interface.rb +178 -0
  803. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/certificate_factory.rb +219 -0
  804. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/certificate_request.rb +299 -0
  805. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/certificate_request_attributes.rb +37 -0
  806. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/certificate_revocation_list.rb +110 -0
  807. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/certificate_signer.rb +22 -0
  808. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/configuration.rb +64 -0
  809. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/digest.rb +20 -0
  810. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/host.rb +372 -0
  811. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/inventory.rb +55 -0
  812. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/key.rb +59 -0
  813. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/oids.rb +78 -0
  814. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/validator.rb +60 -0
  815. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/validator/default_validator.rb +175 -0
  816. data/vendor/gems/puppet-3.7.3/lib/puppet/ssl/validator/no_validator.rb +20 -0
  817. data/vendor/gems/puppet-3.7.3/lib/puppet/status.rb +45 -0
  818. data/vendor/gems/puppet-3.7.3/lib/puppet/test/test_helper.rb +243 -0
  819. data/vendor/gems/puppet-3.7.3/lib/puppet/transaction.rb +370 -0
  820. data/vendor/gems/puppet-3.7.3/lib/puppet/transaction/additional_resource_generator.rb +126 -0
  821. data/vendor/gems/puppet-3.7.3/lib/puppet/transaction/event.rb +107 -0
  822. data/vendor/gems/puppet-3.7.3/lib/puppet/transaction/event_manager.rb +122 -0
  823. data/vendor/gems/puppet-3.7.3/lib/puppet/transaction/report.rb +383 -0
  824. data/vendor/gems/puppet-3.7.3/lib/puppet/transaction/resource_harness.rb +251 -0
  825. data/vendor/gems/puppet-3.7.3/lib/puppet/type.rb +2452 -0
  826. data/vendor/gems/puppet-3.7.3/lib/puppet/type/augeas.rb +201 -0
  827. data/vendor/gems/puppet-3.7.3/lib/puppet/type/component.rb +77 -0
  828. data/vendor/gems/puppet-3.7.3/lib/puppet/type/computer.rb +66 -0
  829. data/vendor/gems/puppet-3.7.3/lib/puppet/type/cron.rb +488 -0
  830. data/vendor/gems/puppet-3.7.3/lib/puppet/type/exec.rb +592 -0
  831. data/vendor/gems/puppet-3.7.3/lib/puppet/type/file.rb +933 -0
  832. data/vendor/gems/puppet-3.7.3/lib/puppet/type/file/checksum.rb +43 -0
  833. data/vendor/gems/puppet-3.7.3/lib/puppet/type/file/content.rb +241 -0
  834. data/vendor/gems/puppet-3.7.3/lib/puppet/type/file/ctime.rb +20 -0
  835. data/vendor/gems/puppet-3.7.3/lib/puppet/type/file/ensure.rb +189 -0
  836. data/vendor/gems/puppet-3.7.3/lib/puppet/type/file/group.rb +41 -0
  837. data/vendor/gems/puppet-3.7.3/lib/puppet/type/file/mode.rb +168 -0
  838. data/vendor/gems/puppet-3.7.3/lib/puppet/type/file/mtime.rb +18 -0
  839. data/vendor/gems/puppet-3.7.3/lib/puppet/type/file/owner.rb +44 -0
  840. data/vendor/gems/puppet-3.7.3/lib/puppet/type/file/selcontext.rb +124 -0
  841. data/vendor/gems/puppet-3.7.3/lib/puppet/type/file/source.rb +259 -0
  842. data/vendor/gems/puppet-3.7.3/lib/puppet/type/file/target.rb +87 -0
  843. data/vendor/gems/puppet-3.7.3/lib/puppet/type/file/type.rb +19 -0
  844. data/vendor/gems/puppet-3.7.3/lib/puppet/type/filebucket.rb +122 -0
  845. data/vendor/gems/puppet-3.7.3/lib/puppet/type/group.rb +188 -0
  846. data/vendor/gems/puppet-3.7.3/lib/puppet/type/host.rb +86 -0
  847. data/vendor/gems/puppet-3.7.3/lib/puppet/type/interface.rb +116 -0
  848. data/vendor/gems/puppet-3.7.3/lib/puppet/type/k5login.rb +88 -0
  849. data/vendor/gems/puppet-3.7.3/lib/puppet/type/macauthorization.rb +167 -0
  850. data/vendor/gems/puppet-3.7.3/lib/puppet/type/mailalias.rb +48 -0
  851. data/vendor/gems/puppet-3.7.3/lib/puppet/type/maillist.rb +62 -0
  852. data/vendor/gems/puppet-3.7.3/lib/puppet/type/mcx.rb +98 -0
  853. data/vendor/gems/puppet-3.7.3/lib/puppet/type/mount.rb +286 -0
  854. data/vendor/gems/puppet-3.7.3/lib/puppet/type/nagios_command.rb +3 -0
  855. data/vendor/gems/puppet-3.7.3/lib/puppet/type/nagios_contact.rb +3 -0
  856. data/vendor/gems/puppet-3.7.3/lib/puppet/type/nagios_contactgroup.rb +3 -0
  857. data/vendor/gems/puppet-3.7.3/lib/puppet/type/nagios_host.rb +3 -0
  858. data/vendor/gems/puppet-3.7.3/lib/puppet/type/nagios_hostdependency.rb +3 -0
  859. data/vendor/gems/puppet-3.7.3/lib/puppet/type/nagios_hostescalation.rb +3 -0
  860. data/vendor/gems/puppet-3.7.3/lib/puppet/type/nagios_hostextinfo.rb +3 -0
  861. data/vendor/gems/puppet-3.7.3/lib/puppet/type/nagios_hostgroup.rb +3 -0
  862. data/vendor/gems/puppet-3.7.3/lib/puppet/type/nagios_service.rb +3 -0
  863. data/vendor/gems/puppet-3.7.3/lib/puppet/type/nagios_servicedependency.rb +3 -0
  864. data/vendor/gems/puppet-3.7.3/lib/puppet/type/nagios_serviceescalation.rb +3 -0
  865. data/vendor/gems/puppet-3.7.3/lib/puppet/type/nagios_serviceextinfo.rb +3 -0
  866. data/vendor/gems/puppet-3.7.3/lib/puppet/type/nagios_servicegroup.rb +3 -0
  867. data/vendor/gems/puppet-3.7.3/lib/puppet/type/nagios_timeperiod.rb +3 -0
  868. data/vendor/gems/puppet-3.7.3/lib/puppet/type/notify.rb +44 -0
  869. data/vendor/gems/puppet-3.7.3/lib/puppet/type/package.rb +466 -0
  870. data/vendor/gems/puppet-3.7.3/lib/puppet/type/resources.rb +187 -0
  871. data/vendor/gems/puppet-3.7.3/lib/puppet/type/router.rb +17 -0
  872. data/vendor/gems/puppet-3.7.3/lib/puppet/type/schedule.rb +469 -0
  873. data/vendor/gems/puppet-3.7.3/lib/puppet/type/scheduled_task.rb +169 -0
  874. data/vendor/gems/puppet-3.7.3/lib/puppet/type/selboolean.rb +26 -0
  875. data/vendor/gems/puppet-3.7.3/lib/puppet/type/selmodule.rb +59 -0
  876. data/vendor/gems/puppet-3.7.3/lib/puppet/type/service.rb +234 -0
  877. data/vendor/gems/puppet-3.7.3/lib/puppet/type/ssh_authorized_key.rb +153 -0
  878. data/vendor/gems/puppet-3.7.3/lib/puppet/type/sshkey.rb +73 -0
  879. data/vendor/gems/puppet-3.7.3/lib/puppet/type/stage.rb +27 -0
  880. data/vendor/gems/puppet-3.7.3/lib/puppet/type/tidy.rb +324 -0
  881. data/vendor/gems/puppet-3.7.3/lib/puppet/type/user.rb +698 -0
  882. data/vendor/gems/puppet-3.7.3/lib/puppet/type/vlan.rb +26 -0
  883. data/vendor/gems/puppet-3.7.3/lib/puppet/type/whit.rb +34 -0
  884. data/vendor/gems/puppet-3.7.3/lib/puppet/type/yumrepo.rb +363 -0
  885. data/vendor/gems/puppet-3.7.3/lib/puppet/type/zfs.rb +150 -0
  886. data/vendor/gems/puppet-3.7.3/lib/puppet/type/zone.rb +382 -0
  887. data/vendor/gems/puppet-3.7.3/lib/puppet/type/zpool.rb +91 -0
  888. data/vendor/gems/puppet-3.7.3/lib/puppet/util.rb +554 -0
  889. data/vendor/gems/puppet-3.7.3/lib/puppet/util/autoload.rb +231 -0
  890. data/vendor/gems/puppet-3.7.3/lib/puppet/util/backups.rb +86 -0
  891. data/vendor/gems/puppet-3.7.3/lib/puppet/util/cacher.rb +74 -0
  892. data/vendor/gems/puppet-3.7.3/lib/puppet/util/checksums.rb +202 -0
  893. data/vendor/gems/puppet-3.7.3/lib/puppet/util/classgen.rb +236 -0
  894. data/vendor/gems/puppet-3.7.3/lib/puppet/util/colors.rb +217 -0
  895. data/vendor/gems/puppet-3.7.3/lib/puppet/util/command_line.rb +199 -0
  896. data/vendor/gems/puppet-3.7.3/lib/puppet/util/command_line/puppet_option_parser.rb +87 -0
  897. data/vendor/gems/puppet-3.7.3/lib/puppet/util/command_line/trollop.rb +824 -0
  898. data/vendor/gems/puppet-3.7.3/lib/puppet/util/constant_inflector.rb +24 -0
  899. data/vendor/gems/puppet-3.7.3/lib/puppet/util/diff.rb +79 -0
  900. data/vendor/gems/puppet-3.7.3/lib/puppet/util/docs.rb +128 -0
  901. data/vendor/gems/puppet-3.7.3/lib/puppet/util/errors.rb +106 -0
  902. data/vendor/gems/puppet-3.7.3/lib/puppet/util/execution.rb +327 -0
  903. data/vendor/gems/puppet-3.7.3/lib/puppet/util/execution_stub.rb +26 -0
  904. data/vendor/gems/puppet-3.7.3/lib/puppet/util/feature.rb +97 -0
  905. data/vendor/gems/puppet-3.7.3/lib/puppet/util/file_watcher.rb +28 -0
  906. data/vendor/gems/puppet-3.7.3/lib/puppet/util/fileparsing.rb +376 -0
  907. data/vendor/gems/puppet-3.7.3/lib/puppet/util/filetype.rb +303 -0
  908. data/vendor/gems/puppet-3.7.3/lib/puppet/util/http_proxy.rb +65 -0
  909. data/vendor/gems/puppet-3.7.3/lib/puppet/util/inifile.rb +341 -0
  910. data/vendor/gems/puppet-3.7.3/lib/puppet/util/inline_docs.rb +26 -0
  911. data/vendor/gems/puppet-3.7.3/lib/puppet/util/instance_loader.rb +81 -0
  912. data/vendor/gems/puppet-3.7.3/lib/puppet/util/instrumentation.rb +152 -0
  913. data/vendor/gems/puppet-3.7.3/lib/puppet/util/instrumentation/data.rb +46 -0
  914. data/vendor/gems/puppet-3.7.3/lib/puppet/util/instrumentation/indirection_probe.rb +41 -0
  915. data/vendor/gems/puppet-3.7.3/lib/puppet/util/instrumentation/instrumentable.rb +136 -0
  916. data/vendor/gems/puppet-3.7.3/lib/puppet/util/instrumentation/listener.rb +72 -0
  917. data/vendor/gems/puppet-3.7.3/lib/puppet/util/instrumentation/listeners/log.rb +23 -0
  918. data/vendor/gems/puppet-3.7.3/lib/puppet/util/instrumentation/listeners/performance.rb +24 -0
  919. data/vendor/gems/puppet-3.7.3/lib/puppet/util/json_lockfile.rb +44 -0
  920. data/vendor/gems/puppet-3.7.3/lib/puppet/util/ldap.rb +2 -0
  921. data/vendor/gems/puppet-3.7.3/lib/puppet/util/ldap/connection.rb +71 -0
  922. data/vendor/gems/puppet-3.7.3/lib/puppet/util/ldap/generator.rb +42 -0
  923. data/vendor/gems/puppet-3.7.3/lib/puppet/util/ldap/manager.rb +278 -0
  924. data/vendor/gems/puppet-3.7.3/lib/puppet/util/libuser.conf +15 -0
  925. data/vendor/gems/puppet-3.7.3/lib/puppet/util/libuser.rb +12 -0
  926. data/vendor/gems/puppet-3.7.3/lib/puppet/util/limits.rb +12 -0
  927. data/vendor/gems/puppet-3.7.3/lib/puppet/util/lockfile.rb +66 -0
  928. data/vendor/gems/puppet-3.7.3/lib/puppet/util/log.rb +343 -0
  929. data/vendor/gems/puppet-3.7.3/lib/puppet/util/log/destination.rb +49 -0
  930. data/vendor/gems/puppet-3.7.3/lib/puppet/util/log/destinations.rb +232 -0
  931. data/vendor/gems/puppet-3.7.3/lib/puppet/util/log/rate_limited_logger.rb +40 -0
  932. data/vendor/gems/puppet-3.7.3/lib/puppet/util/logging.rb +181 -0
  933. data/vendor/gems/puppet-3.7.3/lib/puppet/util/metaid.rb +21 -0
  934. data/vendor/gems/puppet-3.7.3/lib/puppet/util/methodhelper.rb +32 -0
  935. data/vendor/gems/puppet-3.7.3/lib/puppet/util/metric.rb +210 -0
  936. data/vendor/gems/puppet-3.7.3/lib/puppet/util/monkey_patches.rb +225 -0
  937. data/vendor/gems/puppet-3.7.3/lib/puppet/util/monkey_patches/lines.rb +13 -0
  938. data/vendor/gems/puppet-3.7.3/lib/puppet/util/nagios_maker.rb +85 -0
  939. data/vendor/gems/puppet-3.7.3/lib/puppet/util/network_device.rb +17 -0
  940. data/vendor/gems/puppet-3.7.3/lib/puppet/util/network_device/base.rb +27 -0
  941. data/vendor/gems/puppet-3.7.3/lib/puppet/util/network_device/cisco.rb +4 -0
  942. data/vendor/gems/puppet-3.7.3/lib/puppet/util/network_device/cisco/device.rb +267 -0
  943. data/vendor/gems/puppet-3.7.3/lib/puppet/util/network_device/cisco/facts.rb +72 -0
  944. data/vendor/gems/puppet-3.7.3/lib/puppet/util/network_device/cisco/interface.rb +82 -0
  945. data/vendor/gems/puppet-3.7.3/lib/puppet/util/network_device/config.rb +93 -0
  946. data/vendor/gems/puppet-3.7.3/lib/puppet/util/network_device/ipcalc.rb +68 -0
  947. data/vendor/gems/puppet-3.7.3/lib/puppet/util/network_device/transport.rb +5 -0
  948. data/vendor/gems/puppet-3.7.3/lib/puppet/util/network_device/transport/base.rb +26 -0
  949. data/vendor/gems/puppet-3.7.3/lib/puppet/util/network_device/transport/ssh.rb +122 -0
  950. data/vendor/gems/puppet-3.7.3/lib/puppet/util/network_device/transport/telnet.rb +44 -0
  951. data/vendor/gems/puppet-3.7.3/lib/puppet/util/package.rb +31 -0
  952. data/vendor/gems/puppet-3.7.3/lib/puppet/util/pidlock.rb +62 -0
  953. data/vendor/gems/puppet-3.7.3/lib/puppet/util/platform.rb +22 -0
  954. data/vendor/gems/puppet-3.7.3/lib/puppet/util/plugins.rb +82 -0
  955. data/vendor/gems/puppet-3.7.3/lib/puppet/util/posix.rb +137 -0
  956. data/vendor/gems/puppet-3.7.3/lib/puppet/util/profiler.rb +53 -0
  957. data/vendor/gems/puppet-3.7.3/lib/puppet/util/profiler/aggregate.rb +85 -0
  958. data/vendor/gems/puppet-3.7.3/lib/puppet/util/profiler/around_profiler.rb +67 -0
  959. data/vendor/gems/puppet-3.7.3/lib/puppet/util/profiler/logging.rb +48 -0
  960. data/vendor/gems/puppet-3.7.3/lib/puppet/util/profiler/object_counts.rb +17 -0
  961. data/vendor/gems/puppet-3.7.3/lib/puppet/util/profiler/wall_clock.rb +35 -0
  962. data/vendor/gems/puppet-3.7.3/lib/puppet/util/provider_features.rb +184 -0
  963. data/vendor/gems/puppet-3.7.3/lib/puppet/util/pson.rb +13 -0
  964. data/vendor/gems/puppet-3.7.3/lib/puppet/util/queue.rb +96 -0
  965. data/vendor/gems/puppet-3.7.3/lib/puppet/util/queue/stomp.rb +60 -0
  966. data/vendor/gems/puppet-3.7.3/lib/puppet/util/rails/cache_accumulator.rb +65 -0
  967. data/vendor/gems/puppet-3.7.3/lib/puppet/util/rails/collection_merger.rb +17 -0
  968. data/vendor/gems/puppet-3.7.3/lib/puppet/util/rails/reference_serializer.rb +32 -0
  969. data/vendor/gems/puppet-3.7.3/lib/puppet/util/rdoc.rb +96 -0
  970. data/vendor/gems/puppet-3.7.3/lib/puppet/util/reference.rb +124 -0
  971. data/vendor/gems/puppet-3.7.3/lib/puppet/util/resource_template.rb +61 -0
  972. data/vendor/gems/puppet-3.7.3/lib/puppet/util/retryaction.rb +47 -0
  973. data/vendor/gems/puppet-3.7.3/lib/puppet/util/rubygems.rb +75 -0
  974. data/vendor/gems/puppet-3.7.3/lib/puppet/util/run_mode.rb +82 -0
  975. data/vendor/gems/puppet-3.7.3/lib/puppet/util/selinux.rb +222 -0
  976. data/vendor/gems/puppet-3.7.3/lib/puppet/util/ssl.rb +53 -0
  977. data/vendor/gems/puppet-3.7.3/lib/puppet/util/storage.rb +89 -0
  978. data/vendor/gems/puppet-3.7.3/lib/puppet/util/suidmanager.rb +191 -0
  979. data/vendor/gems/puppet-3.7.3/lib/puppet/util/symbolic_file_mode.rb +144 -0
  980. data/vendor/gems/puppet-3.7.3/lib/puppet/util/tag_set.rb +41 -0
  981. data/vendor/gems/puppet-3.7.3/lib/puppet/util/tagging.rb +56 -0
  982. data/vendor/gems/puppet-3.7.3/lib/puppet/util/terminal.rb +16 -0
  983. data/vendor/gems/puppet-3.7.3/lib/puppet/util/user_attr.rb +21 -0
  984. data/vendor/gems/puppet-3.7.3/lib/puppet/util/warnings.rb +32 -0
  985. data/vendor/gems/puppet-3.7.3/lib/puppet/util/watched_file.rb +37 -0
  986. data/vendor/gems/puppet-3.7.3/lib/puppet/util/watcher.rb +17 -0
  987. data/vendor/gems/puppet-3.7.3/lib/puppet/util/watcher/change_watcher.rb +33 -0
  988. data/vendor/gems/puppet-3.7.3/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
  989. data/vendor/gems/puppet-3.7.3/lib/puppet/util/watcher/timer.rb +19 -0
  990. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows.rb +28 -0
  991. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/access_control_entry.rb +84 -0
  992. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/access_control_list.rb +113 -0
  993. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/adsi.rb +430 -0
  994. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/api_types.rb +255 -0
  995. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/com.rb +224 -0
  996. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/error.rb +83 -0
  997. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/file.rb +401 -0
  998. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/process.rb +354 -0
  999. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/registry.rb +80 -0
  1000. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/root_certs.rb +108 -0
  1001. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/security.rb +920 -0
  1002. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/security_descriptor.rb +62 -0
  1003. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/sid.rb +162 -0
  1004. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/string.rb +16 -0
  1005. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/taskscheduler.rb +1241 -0
  1006. data/vendor/gems/puppet-3.7.3/lib/puppet/util/windows/user.rb +292 -0
  1007. data/vendor/gems/puppet-3.7.3/lib/puppet/util/yaml.rb +24 -0
  1008. data/vendor/gems/puppet-3.7.3/lib/puppet/util/zaml.rb +419 -0
  1009. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor.rb +57 -0
  1010. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/load_pathspec.rb +1 -0
  1011. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/load_rgen.rb +1 -0
  1012. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/load_safe_yaml.rb +1 -0
  1013. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/load_semantic.rb +1 -0
  1014. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/pathspec/CHANGELOG.md +2 -0
  1015. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/pathspec/LICENSE +201 -0
  1016. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/pathspec/PUPPET_README.md +6 -0
  1017. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/pathspec/README.md +53 -0
  1018. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/pathspec/lib/pathspec.rb +121 -0
  1019. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +275 -0
  1020. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +17 -0
  1021. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +14 -0
  1022. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/require_vendored.rb +9 -0
  1023. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/CHANGELOG +197 -0
  1024. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/MIT-LICENSE +20 -0
  1025. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/PUPPET_README.md +6 -0
  1026. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/README.rdoc +78 -0
  1027. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/Rakefile +41 -0
  1028. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/TODO +41 -0
  1029. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/anounce.txt +61 -0
  1030. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/design_rationale.txt +71 -0
  1031. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/ea_support/ea_support.rb +54 -0
  1032. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/ea_support/id_store.rb +32 -0
  1033. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel.rb +562 -0
  1034. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_ext.rb +45 -0
  1035. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_generator.rb +43 -0
  1036. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_to_uml13.rb +103 -0
  1037. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/ea_support/uml13_to_uml13_ea.rb +89 -0
  1038. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel.rb +559 -0
  1039. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel_ext.rb +26 -0
  1040. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/mmgen/metamodel_generator.rb +20 -0
  1041. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/mmgen/mm_ext/ecore_mmgen_ext.rb +91 -0
  1042. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/mmgen/mmgen.rb +28 -0
  1043. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/mmgen/templates/annotations.tpl +37 -0
  1044. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/mmgen/templates/metamodel_generator.tpl +172 -0
  1045. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/array_extensions.rb +45 -0
  1046. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore.rb +218 -0
  1047. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_builder_methods.rb +81 -0
  1048. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_ext.rb +69 -0
  1049. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_interface.rb +47 -0
  1050. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_to_ruby.rb +167 -0
  1051. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/ecore/ruby_to_ecore.rb +91 -0
  1052. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/environment.rb +129 -0
  1053. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/fragment/dump_file_cache.rb +63 -0
  1054. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/fragment/fragmented_model.rb +140 -0
  1055. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/fragment/model_fragment.rb +289 -0
  1056. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_instantiator.rb +66 -0
  1057. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_xml_instantiator.rb +66 -0
  1058. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/instantiator/default_xml_instantiator.rb +117 -0
  1059. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/instantiator/ecore_xml_instantiator.rb +169 -0
  1060. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_instantiator.rb +126 -0
  1061. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.rb +331 -0
  1062. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.y +94 -0
  1063. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/instantiator/nodebased_xml_instantiator.rb +137 -0
  1064. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/instantiator/qualified_name_resolver.rb +97 -0
  1065. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/instantiator/reference_resolver.rb +128 -0
  1066. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/instantiator/resolution_helper.rb +47 -0
  1067. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/instantiator/xmi11_instantiator.rb +168 -0
  1068. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder.rb +224 -0
  1069. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_extensions.rb +556 -0
  1070. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_runtime.rb +174 -0
  1071. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/constant_order_helper.rb +89 -0
  1072. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/data_types.rb +77 -0
  1073. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/annotation.rb +30 -0
  1074. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/feature.rb +168 -0
  1075. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/mm_multiple.rb +23 -0
  1076. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/module_extension.rb +42 -0
  1077. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/model_builder.rb +32 -0
  1078. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/model_builder/builder_context.rb +334 -0
  1079. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/model_builder/model_serializer.rb +225 -0
  1080. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/model_builder/reference_resolver.rb +156 -0
  1081. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/serializer/json_serializer.rb +121 -0
  1082. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/serializer/opposite_reference_filter.rb +18 -0
  1083. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/serializer/qualified_name_provider.rb +47 -0
  1084. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi11_serializer.rb +116 -0
  1085. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi20_serializer.rb +71 -0
  1086. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/serializer/xml_serializer.rb +98 -0
  1087. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/template_language.rb +297 -0
  1088. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/template_language/directory_template_container.rb +83 -0
  1089. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/template_language/output_handler.rb +87 -0
  1090. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/template_language/template_container.rb +234 -0
  1091. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/template_language/template_helper.rb +26 -0
  1092. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/transformer.rb +475 -0
  1093. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/util/auto_class_creator.rb +61 -0
  1094. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/util/cached_glob.rb +67 -0
  1095. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/util/file_cache_map.rb +124 -0
  1096. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/util/file_change_detector.rb +84 -0
  1097. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/util/method_delegation.rb +114 -0
  1098. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator.rb +68 -0
  1099. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator_base.rb +142 -0
  1100. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/util/model_dumper.rb +29 -0
  1101. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/util/name_helper.rb +42 -0
  1102. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/rgen/util/pattern_matcher.rb +329 -0
  1103. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/transformers/ecore_to_uml13.rb +79 -0
  1104. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/lib/transformers/uml13_to_ecore.rb +127 -0
  1105. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/array_extensions_test.rb +64 -0
  1106. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/ea_instantiator_test.rb +35 -0
  1107. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/ea_serializer_test.rb +23 -0
  1108. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/ecore_self_test.rb +54 -0
  1109. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/environment_test.rb +90 -0
  1110. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/json_test.rb +171 -0
  1111. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/metamodel_builder_test.rb +1482 -0
  1112. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/metamodel_from_ecore_test.rb +57 -0
  1113. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/metamodel_order_test.rb +131 -0
  1114. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test.rb +98 -0
  1115. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/TestModel.rb +70 -0
  1116. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel.ecore +42 -0
  1117. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb +44 -0
  1118. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/using_builtin_types.ecore +9 -0
  1119. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/method_delegation_test.rb +178 -0
  1120. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/model_builder/builder_context_test.rb +59 -0
  1121. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/model_builder/builder_test.rb +242 -0
  1122. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/model_builder/ecore_original.rb +163 -0
  1123. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/model_builder/ecore_original_regenerated.rb +163 -0
  1124. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/model_builder/reference_resolver_test.rb +156 -0
  1125. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/model_builder/serializer_test.rb +94 -0
  1126. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/model_builder/statemachine_metamodel.rb +42 -0
  1127. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/model_builder/test_model/statemachine1.rb +23 -0
  1128. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/model_builder_test.rb +6 -0
  1129. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/model_fragment_test.rb +30 -0
  1130. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/output_handler_test.rb +58 -0
  1131. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/qualified_name_provider_test.rb +48 -0
  1132. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/qualified_name_resolver_test.rb +102 -0
  1133. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/reference_resolver_test.rb +117 -0
  1134. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/rgen_test.rb +26 -0
  1135. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test.rb +163 -0
  1136. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/expected_result1.txt +29 -0
  1137. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/expected_result2.txt +9 -0
  1138. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/expected_result3.txt +4 -0
  1139. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestDefaultIndent.out +1 -0
  1140. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestTabIndent.out +1 -0
  1141. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/a.tpl +12 -0
  1142. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/b.tpl +5 -0
  1143. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/code/array.tpl +11 -0
  1144. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/content/author.tpl +7 -0
  1145. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/content/chapter.tpl +5 -0
  1146. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/local.tpl +8 -0
  1147. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/test.tpl +8 -0
  1148. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/evaluate_test/test.tpl +7 -0
  1149. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/indent_string_test.tpl +12 -0
  1150. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/index/c/cmod.tpl +1 -0
  1151. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/index/chapter.tpl +3 -0
  1152. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/no_backslash_r_test.tpl +5 -0
  1153. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/no_indent.tpl +3 -0
  1154. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/sub1/no_indent.tpl +3 -0
  1155. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test.tpl +24 -0
  1156. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test2.tpl +13 -0
  1157. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test3.tpl +10 -0
  1158. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/null_context_test.tpl +17 -0
  1159. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/root.tpl +31 -0
  1160. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1.tpl +9 -0
  1161. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1/sub1.tpl +3 -0
  1162. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/test.tpl +4 -0
  1163. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/template_language_test/testout.txt +29 -0
  1164. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/testmodel/class_model_checker.rb +119 -0
  1165. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.eap +0 -0
  1166. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.xml +1029 -0
  1167. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel_partial.xml +317 -0
  1168. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/testmodel/ecore_model_checker.rb +101 -0
  1169. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/testmodel/manual_testmodel.xml +22 -0
  1170. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/testmodel/object_model_checker.rb +67 -0
  1171. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/transformer_test.rb +254 -0
  1172. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/util/file_cache_map_test.rb +99 -0
  1173. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/util/pattern_matcher_test.rb +97 -0
  1174. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/util_test.rb +5 -0
  1175. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/xml_instantiator_test.rb +160 -0
  1176. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_ecore_model_checker.rb +94 -0
  1177. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_ecore_instantiator.rb +53 -0
  1178. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_metamodel.rb +49 -0
  1179. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_to_ecore.rb +75 -0
  1180. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/CHANGES.md +104 -0
  1181. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/Gemfile +11 -0
  1182. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/LICENSE.txt +22 -0
  1183. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/PUPPET_README.md +6 -0
  1184. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/README.md +179 -0
  1185. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/Rakefile +6 -0
  1186. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml.rb +253 -0
  1187. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/deep.rb +34 -0
  1188. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/date.rb +27 -0
  1189. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/hexadecimal.rb +12 -0
  1190. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/sexagesimal.rb +26 -0
  1191. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/psych_handler.rb +92 -0
  1192. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/psych_resolver.rb +52 -0
  1193. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/resolver.rb +94 -0
  1194. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/safe_to_ruby_visitor.rb +17 -0
  1195. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_hack.rb +36 -0
  1196. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_node_monkeypatch.rb +43 -0
  1197. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_resolver.rb +38 -0
  1198. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform.rb +41 -0
  1199. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_boolean.rb +21 -0
  1200. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_date.rb +11 -0
  1201. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_float.rb +33 -0
  1202. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_integer.rb +25 -0
  1203. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_nil.rb +18 -0
  1204. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_symbol.rb +13 -0
  1205. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/transformation_map.rb +47 -0
  1206. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/lib/safe_yaml/version.rb +3 -0
  1207. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/run_specs_all_ruby_versions.sh +21 -0
  1208. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/safe_yaml.gemspec +18 -0
  1209. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/spec/exploit.1.9.2.yaml +2 -0
  1210. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/spec/exploit.1.9.3.yaml +2 -0
  1211. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/spec/psych_resolver_spec.rb +10 -0
  1212. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/spec/resolver_specs.rb +250 -0
  1213. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/spec/safe_yaml_spec.rb +702 -0
  1214. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/spec/spec_helper.rb +18 -0
  1215. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/spec/support/exploitable_back_door.rb +29 -0
  1216. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/spec/syck_resolver_spec.rb +10 -0
  1217. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/spec/transform/base64_spec.rb +11 -0
  1218. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/spec/transform/to_date_spec.rb +34 -0
  1219. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/spec/transform/to_float_spec.rb +42 -0
  1220. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/spec/transform/to_integer_spec.rb +59 -0
  1221. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml/spec/transform/to_symbol_spec.rb +49 -0
  1222. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/safe_yaml_patches.rb +9 -0
  1223. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/Gemfile +20 -0
  1224. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/PUPPET_README.md +6 -0
  1225. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/Rakefile +69 -0
  1226. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/lib/semantic.rb +7 -0
  1227. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/lib/semantic/dependency.rb +181 -0
  1228. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/lib/semantic/dependency/graph.rb +60 -0
  1229. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/lib/semantic/dependency/graph_node.rb +117 -0
  1230. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +46 -0
  1231. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/lib/semantic/dependency/source.rb +25 -0
  1232. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/lib/semantic/dependency/unsatisfiable_graph.rb +31 -0
  1233. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/lib/semantic/version.rb +168 -0
  1234. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/lib/semantic/version_range.rb +424 -0
  1235. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/spec/spec_helper.rb +24 -0
  1236. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +141 -0
  1237. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +162 -0
  1238. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +143 -0
  1239. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +5 -0
  1240. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +44 -0
  1241. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +383 -0
  1242. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +307 -0
  1243. data/vendor/gems/puppet-3.7.3/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +608 -0
  1244. data/vendor/gems/puppet-3.7.3/lib/puppet/version.rb +89 -0
  1245. data/vendor/gems/puppet-3.7.3/lib/puppetx.rb +89 -0
  1246. data/vendor/gems/puppet-3.7.3/lib/puppetx/puppet/bindings_scheme_handler.rb +130 -0
  1247. data/vendor/gems/puppet-3.7.3/lib/puppetx/puppet/syntax_checker.rb +91 -0
  1248. data/vendor/gems/puppet-3.7.3/lib/puppetx/puppetlabs/syntax_checkers/json.rb +37 -0
  1249. data/vendor/gems/puppet-3.7.3/lib/semver.rb +124 -0
  1250. data/vendor/gems/puppet-3.7.3/puppet-3.7.3.gemspec +3648 -0
  1251. data/vendor/gems/puppet-3.7.3/tasks/benchmark.rake +144 -0
  1252. data/vendor/gems/puppet-3.7.3/tasks/ci.rake +29 -0
  1253. data/vendor/gems/puppet-3.7.3/tasks/manpages.rake +84 -0
  1254. data/vendor/gems/puppet-3.7.3/tasks/memwalk.rake +195 -0
  1255. data/vendor/gems/puppet-3.7.3/tasks/parallel.rake +408 -0
  1256. data/vendor/gems/puppet-3.7.3/tasks/parser.rake +19 -0
  1257. data/vendor/gems/puppet-3.7.3/tasks/yard.rake +59 -0
  1258. metadata +1351 -35
@@ -0,0 +1,95 @@
1
+ # This module is an integral part of the Lexer.
2
+ # It defines the string slurping behavior - finding the string and non string parts in interpolated
3
+ # strings, translating escape sequences in strings to their single character equivalence.
4
+ #
5
+ # PERFORMANCE NOTE: The various kinds of slurping could be made even more generic, but requires
6
+ # additional parameter passing and evaluation of conditional logic.
7
+ # TODO: More detailed performance analysis of excessive character escaping and interpolation.
8
+ #
9
+ module Puppet::Pops::Parser::SlurpSupport
10
+
11
+ SLURP_SQ_PATTERN = /(?:[^\\]|^|[^\\])(?:[\\]{2})*[']/
12
+ SLURP_DQ_PATTERN = /(?:[^\\]|^|[^\\])(?:[\\]{2})*(["]|[$]\{?)/
13
+ SLURP_UQ_PATTERN = /(?:[^\\]|^|[^\\])(?:[\\]{2})*([$]\{?|\z)/
14
+ SLURP_ALL_PATTERN = /.*(\z)/m
15
+ SQ_ESCAPES = %w{ \\ ' }
16
+ DQ_ESCAPES = %w{ \\ $ ' " r n t s u}+["\r\n", "\n"]
17
+ UQ_ESCAPES = %w{ \\ $ r n t s u}+["\r\n", "\n"]
18
+
19
+ def slurp_sqstring
20
+ # skip the leading '
21
+ @scanner.pos += 1
22
+ str = slurp(@scanner, SLURP_SQ_PATTERN, SQ_ESCAPES, :ignore_invalid_escapes) || lex_error("Unclosed quote after \"'\" followed by '#{followed_by}'")
23
+ str[0..-2] # strip closing "'" from result
24
+ end
25
+
26
+ def slurp_dqstring
27
+ scn = @scanner
28
+ last = scn.matched
29
+ str = slurp(scn, SLURP_DQ_PATTERN, DQ_ESCAPES, false)
30
+ unless str
31
+ lex_error("Unclosed quote after #{format_quote(last)} followed by '#{followed_by}'")
32
+ end
33
+
34
+ # Terminator may be a single char '"', '$', or two characters '${' group match 1 (scn[1]) from the last slurp holds this
35
+ terminator = scn[1]
36
+ [str[0..(-1 - terminator.length)], terminator]
37
+ end
38
+
39
+ # Copy from old lexer - can do much better
40
+ def slurp_uqstring
41
+ scn = @scanner
42
+ last = scn.matched
43
+ ignore = true
44
+ str = slurp(scn, @lexing_context[:uq_slurp_pattern], @lexing_context[:escapes], :ignore_invalid_escapes)
45
+
46
+ # Terminator may be a single char '$', two characters '${', or empty string '' at the end of intput.
47
+ # Group match 1 holds this.
48
+ # The exceptional case is found by looking at the subgroup 1 of the most recent match made by the scanner (i.e. @scanner[1]).
49
+ # This is the last match made by the slurp method (having called scan_until on the scanner).
50
+ # If there is a terminating character is must be stripped and returned separately.
51
+ #
52
+ terminator = scn[1]
53
+ [str[0..(-1 - terminator.length)], terminator]
54
+ end
55
+
56
+ # Slurps a string from the given scanner until the given pattern and then replaces any escaped
57
+ # characters given by escapes into their control-character equivalent or in case of line breaks, replaces the
58
+ # pattern \r?\n with an empty string.
59
+ # The returned string contains the terminating character. Returns nil if the scanner can not scan until the given
60
+ # pattern.
61
+ #
62
+ def slurp(scanner, pattern, escapes, ignore_invalid_escapes)
63
+ str = scanner.scan_until(pattern) || return
64
+
65
+ # Process unicode escapes first as they require getting 4 hex digits
66
+ # If later a \u is found it is warned not to be a unicode escape
67
+ if escapes.include?('u')
68
+ str.gsub!(/\\u([\da-fA-F]{4})/m) {
69
+ [$1.hex].pack("U")
70
+ }
71
+ end
72
+
73
+ str.gsub!(/\\([^\r\n]|(?:\r?\n))/m) {
74
+ ch = $1
75
+ if escapes.include? ch
76
+ case ch
77
+ when 'r' ; "\r"
78
+ when 'n' ; "\n"
79
+ when 't' ; "\t"
80
+ when 's' ; " "
81
+ when 'u'
82
+ Puppet.warning(positioned_message("Unicode escape '\\u' was not followed by 4 hex digits"))
83
+ "\\u"
84
+ when "\n" ; ''
85
+ when "\r\n"; ''
86
+ else ch
87
+ end
88
+ else
89
+ Puppet.warning(positioned_message("Unrecognized escape sequence '\\#{ch}'")) unless ignore_invalid_escapes
90
+ "\\#{ch}"
91
+ end
92
+ }
93
+ str
94
+ end
95
+ end
@@ -0,0 +1,44 @@
1
+ # The Patterns module contains common regular expression patters for the Puppet DSL language
2
+ module Puppet::Pops::Patterns
3
+
4
+ # NUMERIC matches hex, octal, decimal, and floating point and captures several parts
5
+ # 0 = entire matched number, leading and trailing whitespace and sign included
6
+ # 1 = sign, +, - or nothing
7
+ # 2 = entire numeric part
8
+ # 3 = hexadecimal number
9
+ # 4 = non hex integer portion, possibly with leading 0 (octal)
10
+ # 5 = floating point part, starts with ".", decimals and optional exponent
11
+ #
12
+ # Thus, a hex number has group 3 value, an octal value has group 4 (if it starts with 0), and no group 3
13
+ # and a floating point value has group 4 and group 5.
14
+ #
15
+ NUMERIC = %r{\A[[:blank:]]*([-+]?)[[:blank:]]*((0[xX][0-9A-Fa-f]+)|(0?\d+)((?:\.\d+)?(?:[eE]-?\d+)?))[[:blank:]]*\z}
16
+
17
+ # ILLEGAL_P3_1_HOSTNAME matches if a hostname contains illegal characters.
18
+ # This check does not prevent pathological names like 'a....b', '.....', "---". etc.
19
+ ILLEGAL_HOSTNAME_CHARS = %r{[^-\w.]}
20
+
21
+ # NAME matches a name the same way as the lexer.
22
+ NAME = %r{\A((::)?[a-z]\w*)(::[a-z]\w*)*\z}
23
+
24
+ # CLASSREF_EXT matches a class reference the same way as the lexer - i.e. the external source form
25
+ # where each part must start with a capital letter A-Z.
26
+ #
27
+ CLASSREF_EXT = %r{\A((::){0,1}[A-Z][\w]*)+\z}
28
+
29
+ # CLASSREF matches a class reference the way it is represented internally in the
30
+ # model (i.e. in lower case).
31
+ #
32
+ CLASSREF = %r{\A((::){0,1}[a-z][\w]*)+\z}
33
+
34
+ # DOLLAR_VAR matches a variable name including the initial $ character
35
+ DOLLAR_VAR = %r{\$(::)?(\w+::)*\w+}
36
+
37
+ # VAR_NAME matches the name part of a variable (The $ character is not included)
38
+ # Note, that only the final segment may start with an underscore.
39
+ VAR_NAME = %r{\A(:?(::)?[a-z]\w*)*(:?(::)?[a-z_]\w*)\z}
40
+
41
+ # A Numeric var name must be the decimal number 0, or a decimal number not starting with 0
42
+ NUMERIC_VAR_NAME = %r{\A(?:0|(?:[1-9][0-9]*))\z}
43
+
44
+ end
@@ -0,0 +1,17 @@
1
+ # Error that is used to raise an Issue. See {Puppet::Pops::Issues}.
2
+ #
3
+ class Puppet::Pops::SemanticError < RuntimeError
4
+ attr_accessor :issue
5
+ attr_accessor :semantic
6
+ attr_accessor :options
7
+
8
+ # @param issue [Puppet::Pops::Issues::Issue] the issue describing the severity and message
9
+ # @param semantic [Puppet::Pops::Model::Locatable, nil] the expression causing the failure, or nil if unknown
10
+ # @param options [Hash] an options hash with Symbol to value mapping - these are the arguments to the issue
11
+ #
12
+ def initialize(issue, semantic=nil, options = {})
13
+ @issue = issue
14
+ @semantic = semantic
15
+ @options = options
16
+ end
17
+ end
@@ -0,0 +1,129 @@
1
+ require 'rgen/metamodel_builder'
2
+
3
+ # The ClassLoader provides a Class instance given a class name or a meta-type.
4
+ # If the class is not already loaded, it is loaded using the Puppet Autoloader.
5
+ # This means it can load a class from a gem, or from puppet modules.
6
+ #
7
+ class Puppet::Pops::Types::ClassLoader
8
+ @autoloader = Puppet::Util::Autoload.new("ClassLoader", "", :wrap => false)
9
+
10
+ # Returns a Class given a fully qualified class name.
11
+ # Lookup of class is never relative to the calling namespace.
12
+ # @param name [String, Array<String>, Array<Symbol>, Puppet::Pops::Types::PAnyType] A fully qualified
13
+ # class name String (e.g. '::Foo::Bar', 'Foo::Bar'), a PAnyType, or a fully qualified name in Array form where each part
14
+ # is either a String or a Symbol, e.g. `%w{Puppetx Puppetlabs SomeExtension}`.
15
+ # @return [Class, nil] the looked up class or nil if no such class is loaded
16
+ # @raise ArgumentError If the given argument has the wrong type
17
+ # @api public
18
+ #
19
+ def self.provide(name)
20
+ case name
21
+ when String
22
+ provide_from_string(name)
23
+
24
+ when Array
25
+ provide_from_name_path(name.join('::'), name)
26
+
27
+ when Puppet::Pops::Types::PAnyType, Puppet::Pops::Types::PType
28
+ provide_from_type(name)
29
+
30
+ else
31
+ raise ArgumentError, "Cannot provide a class from a '#{name.class.name}'"
32
+ end
33
+ end
34
+
35
+ private
36
+
37
+ def self.provide_from_type(type)
38
+ case type
39
+ when Puppet::Pops::Types::PRuntimeType
40
+ raise ArgumentError.new("Only Runtime type 'ruby' is supported, got #{type.runtime}") unless type.runtime == :ruby
41
+ provide_from_string(type.runtime_type_name)
42
+
43
+ when Puppet::Pops::Types::PBooleanType
44
+ # There is no other thing to load except this Enum meta type
45
+ RGen::MetamodelBuilder::MMBase::Boolean
46
+
47
+ when Puppet::Pops::Types::PType
48
+ # TODO: PType should has a type argument (a PAnyType) so the Class' class could be returned
49
+ # (but this only matters in special circumstances when meta programming has been used).
50
+ Class
51
+
52
+ when Puppet::Pops::Type::POptionalType
53
+ # cannot make a distinction between optional and its type
54
+ provide_from_type(type.optional_type)
55
+
56
+ # Although not expected to be the first choice for getting a concrete class for these
57
+ # types, these are of value if the calling logic just has a reference to type.
58
+ #
59
+ when Puppet::Pops::Types::PArrayType ; Array
60
+ when Puppet::Pops::Types::PTupleType ; Array
61
+ when Puppet::Pops::Types::PHashType ; Hash
62
+ when Puppet::Pops::Types::PStructType ; Hash
63
+ when Puppet::Pops::Types::PRegexpType ; Regexp
64
+ when Puppet::Pops::Types::PIntegerType ; Integer
65
+ when Puppet::Pops::Types::PStringType ; String
66
+ when Puppet::Pops::Types::PPatternType ; String
67
+ when Puppet::Pops::Types::PEnumType ; String
68
+ when Puppet::Pops::Types::PFloatType ; Float
69
+ when Puppet::Pops::Types::PNilType ; NilClass
70
+ when Puppet::Pops::Types::PCallableType ; Proc
71
+ else
72
+ nil
73
+ end
74
+ end
75
+
76
+ def self.provide_from_string(name)
77
+ name_path = name.split('::')
78
+ # always from the root, so remove an empty first segment
79
+ if name_path[0].empty?
80
+ name_path = name_path[1..-1]
81
+ end
82
+ provide_from_name_path(name, name_path)
83
+ end
84
+
85
+ def self.provide_from_name_path(name, name_path)
86
+ # If class is already loaded, try this first
87
+ result = find_class(name_path)
88
+
89
+ unless result.is_a?(Class)
90
+ # Attempt to load it using the auto loader
91
+ loaded_path = nil
92
+ if paths_for_name(name).find {|path| loaded_path = path; @autoloader.load(path) }
93
+ result = find_class(name_path)
94
+ unless result.is_a?(Class)
95
+ raise RuntimeError, "Loading of #{name} using relative path: '#{loaded_path}' did not create expected class"
96
+ end
97
+ end
98
+ end
99
+ return nil unless result.is_a?(Class)
100
+ result
101
+ end
102
+
103
+ def self.find_class(name_path)
104
+ name_path.reduce(Object) do |ns, name|
105
+ begin
106
+ ns.const_get(name)
107
+ rescue NameError
108
+ return nil
109
+ end
110
+ end
111
+ end
112
+
113
+ def self.paths_for_name(fq_name)
114
+ [de_camel(fq_name), downcased_path(fq_name)]
115
+ end
116
+
117
+ def self.downcased_path(fq_name)
118
+ fq_name.to_s.gsub(/::/, '/').downcase
119
+ end
120
+
121
+ def self.de_camel(fq_name)
122
+ fq_name.to_s.gsub(/::/, '/').
123
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
124
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
125
+ tr("-", "_").
126
+ downcase
127
+ end
128
+
129
+ end
@@ -0,0 +1,34 @@
1
+ # The Enumeration class provides default Enumerable::Enumerator creation for Puppet Programming Language
2
+ # runtime objects that supports the concept of enumeration.
3
+ #
4
+ class Puppet::Pops::Types::Enumeration
5
+ # Produces an Enumerable::Enumerator for Array, Hash, Integer, Integer Range, and String.
6
+ #
7
+ def self.enumerator(o)
8
+ @@singleton ||= new
9
+ @@singleton.enumerator(o)
10
+ end
11
+
12
+ # Produces an Enumerator for Array, Hash, Integer, Integer Range, and String.
13
+ #
14
+ def enumerator(o)
15
+ case o
16
+ when String
17
+ x = o.chars
18
+ # Ruby 1.8.7 returns Enumerable::Enumerator, Ruby 1.8.9 Enumerator, and 2.0.0 an Array
19
+ x.is_a?(Array) ? x.each : x
20
+ when Integer
21
+ o.times
22
+ when Array
23
+ o.each
24
+ when Hash
25
+ o.each
26
+ when Puppet::Pops::Types::PIntegerType
27
+ # Not enumerable if representing an infinite range
28
+ return nil if o.to.nil? || o.from.nil?
29
+ o.each
30
+ else
31
+ nil
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,1703 @@
1
+ # The TypeCalculator can answer questions about puppet types.
2
+ #
3
+ # The Puppet type system is primarily based on sub-classing. When asking the type calculator to infer types from Ruby in general, it
4
+ # may not provide the wanted answer; it does not for instance take module inclusions and extensions into account. In general the type
5
+ # system should be unsurprising for anyone being exposed to the notion of type. The type `Data` may require a bit more explanation; this
6
+ # is an abstract type that includes all scalar types, as well as Array with an element type compatible with Data, and Hash with key
7
+ # compatible with scalar and elements compatible with Data. Expressed differently; Data is what you typically express using JSON (with
8
+ # the exception that the Puppet type system also includes Pattern (regular expression) as a scalar.
9
+ #
10
+ # Inference
11
+ # ---------
12
+ # The `infer(o)` method infers a Puppet type for scalar Ruby objects, and for Arrays and Hashes.
13
+ # The inference result is instance specific for single typed collections
14
+ # and allows answering questions about its embedded type. It does not however preserve multiple types in
15
+ # a collection, and can thus not answer questions like `[1,a].infer() =~ Array[Integer, String]` since the inference
16
+ # computes the common type Scalar when combining Integer and String.
17
+ #
18
+ # The `infer_generic(o)` method infers a generic Puppet type for scalar Ruby object, Arrays and Hashes.
19
+ # This inference result does not contain instance specific information; e.g. Array[Integer] where the integer
20
+ # range is the generic default. Just `infer` it also combines types into a common type.
21
+ #
22
+ # The `infer_set(o)` method works like `infer` but preserves all type information. It does not do any
23
+ # reduction into common types or ranges. This method of inference is best suited for answering questions
24
+ # about an object being an instance of a type. It correctly answers: `[1,a].infer_set() =~ Array[Integer, String]`
25
+ #
26
+ # The `generalize!(t)` method modifies an instance specific inference result to a generic. The method mutates
27
+ # the given argument. Basically, this removes string instances from String, and range from Integer and Float.
28
+ #
29
+ # Assignability
30
+ # -------------
31
+ # The `assignable?(t1, t2)` method answers if t2 conforms to t1. The type t2 may be an instance, in which case
32
+ # its type is inferred, or a type.
33
+ #
34
+ # Instance?
35
+ # ---------
36
+ # The `instance?(t, o)` method answers if the given object (instance) is an instance that is assignable to the given type.
37
+ #
38
+ # String
39
+ # ------
40
+ # Creates a string representation of a type.
41
+ #
42
+ # Creation of Type instances
43
+ # --------------------------
44
+ # Instance of the classes in the {Puppet::Pops::Types type model} are used to denote a specific type. It is most convenient
45
+ # to use the {Puppet::Pops::Types::TypeFactory TypeFactory} when creating instances.
46
+ #
47
+ # @note
48
+ # In general, new instances of the wanted type should be created as they are assigned to models using containment, and a
49
+ # contained object can only be in one container at a time. Also, the type system may include more details in each type
50
+ # instance, such as if it may be nil, be empty, contain a certain count etc. Or put differently, the puppet types are not
51
+ # singletons.
52
+ #
53
+ # All types support `copy` which should be used when assigning a type where it is unknown if it is bound or not
54
+ # to a parent type. A check can be made with `t.eContainer().nil?`
55
+ #
56
+ # Equality and Hash
57
+ # -----------------
58
+ # Type instances are equal in terms of Ruby eql? and `==` if they describe the same type, but they are not `equal?` if they are not
59
+ # the same type instance. Two types that describe the same type have identical hash - this makes them usable as hash keys.
60
+ #
61
+ # Types and Subclasses
62
+ # --------------------
63
+ # In general, the type calculator should be used to answer questions if a type is a subtype of another (using {#assignable?}, or
64
+ # {#instance?} if the question is if a given object is an instance of a given type (or is a subtype thereof).
65
+ # Many of the types also have a Ruby subtype relationship; e.g. PHashType and PArrayType are both subtypes of PCollectionType, and
66
+ # PIntegerType, PFloatType, PStringType,... are subtypes of PScalarType. Even if it is possible to answer certain questions about
67
+ # type by looking at the Ruby class of the types this is considered an implementation detail, and such checks should in general
68
+ # be performed by the type_calculator which implements the type system semantics.
69
+ #
70
+ # The PRuntimeType
71
+ # -------------
72
+ # The PRuntimeType corresponds to a type in the runtime system (currently only supported runtime is 'ruby'). The
73
+ # type has a runtime_type_name that corresponds to a Ruby Class name.
74
+ # A Runtime[ruby] type can be used to describe any ruby class except for the puppet types that are specialized
75
+ # (i.e. PRuntimeType should not be used for Integer, String, etc. since there are specialized types for those).
76
+ # When the type calculator deals with PRuntimeTypes and checks for assignability, it determines the
77
+ # "common ancestor class" of two classes.
78
+ # This check is made based on the superclasses of the two classes being compared. In order to perform this, the
79
+ # classes must be present (i.e. they are resolved from the string form in the PRuntimeType to a
80
+ # loaded, instantiated Ruby Class). In general this is not a problem, since the question to produce the common
81
+ # super type for two objects means that the classes must be present or there would have been
82
+ # no instances present in the first place. If however the classes are not present, the type
83
+ # calculator will fall back and state that the two types at least have Any in common.
84
+ #
85
+ # @see Puppet::Pops::Types::TypeFactory TypeFactory for how to create instances of types
86
+ # @see Puppet::Pops::Types::TypeParser TypeParser how to construct a type instance from a String
87
+ # @see Puppet::Pops::Types Types for details about the type model
88
+ #
89
+ # Using the Type Calculator
90
+ # -----
91
+ # The type calculator can be directly used via its class methods. If doing time critical work and doing many
92
+ # calls to the type calculator, it is more performant to create an instance and invoke the corresponding
93
+ # instance methods. Note that inference is an expensive operation, rather than inferring the same thing
94
+ # several times, it is in general better to infer once and then copy the result if mutation to a more generic form is
95
+ # required.
96
+ #
97
+ # @api public
98
+ #
99
+ class Puppet::Pops::Types::TypeCalculator
100
+
101
+ Types = Puppet::Pops::Types
102
+ TheInfinity = 1.0 / 0.0 # because the Infinity symbol is not defined
103
+
104
+ # @api public
105
+ def self.assignable?(t1, t2)
106
+ singleton.assignable?(t1,t2)
107
+ end
108
+
109
+ # Answers, does the given callable accept the arguments given in args (an array or a tuple)
110
+ # @param callable [Puppet::Pops::Types::PCallableType] - the callable
111
+ # @param args [Puppet::Pops::Types::PArrayType, Puppet::Pops::Types::PTupleType] args optionally including a lambda callable at the end
112
+ # @return [Boolan] true if the callable accepts the arguments
113
+ #
114
+ # @api public
115
+ def self.callable?(callable, args)
116
+ singleton.callable?(callable, args)
117
+ end
118
+
119
+ # Produces a String representation of the given type.
120
+ # @param t [Puppet::Pops::Types::PAnyType] the type to produce a string form
121
+ # @return [String] the type in string form
122
+ #
123
+ # @api public
124
+ #
125
+ def self.string(t)
126
+ singleton.string(t)
127
+ end
128
+
129
+ # @api public
130
+ def self.infer(o)
131
+ singleton.infer(o)
132
+ end
133
+
134
+ # @api public
135
+ def self.generalize!(o)
136
+ singleton.generalize!(o)
137
+ end
138
+
139
+ # @api public
140
+ def self.infer_set(o)
141
+ singleton.infer_set(o)
142
+ end
143
+
144
+ # @api public
145
+ def self.debug_string(t)
146
+ singleton.debug_string(t)
147
+ end
148
+
149
+ # @api public
150
+ def self.enumerable(t)
151
+ singleton.enumerable(t)
152
+ end
153
+
154
+ # @api private
155
+ def self.singleton()
156
+ @tc_instance ||= new
157
+ end
158
+
159
+ # @api public
160
+ #
161
+ def initialize
162
+ @@assignable_visitor ||= Puppet::Pops::Visitor.new(nil,"assignable",1,1)
163
+ @@infer_visitor ||= Puppet::Pops::Visitor.new(nil,"infer",0,0)
164
+ @@infer_set_visitor ||= Puppet::Pops::Visitor.new(nil,"infer_set",0,0)
165
+ @@instance_of_visitor ||= Puppet::Pops::Visitor.new(nil,"instance_of",1,1)
166
+ @@string_visitor ||= Puppet::Pops::Visitor.new(nil,"string",0,0)
167
+ @@inspect_visitor ||= Puppet::Pops::Visitor.new(nil,"debug_string",0,0)
168
+ @@enumerable_visitor ||= Puppet::Pops::Visitor.new(nil,"enumerable",0,0)
169
+ @@extract_visitor ||= Puppet::Pops::Visitor.new(nil,"extract",0,0)
170
+ @@generalize_visitor ||= Puppet::Pops::Visitor.new(nil,"generalize",0,0)
171
+ @@callable_visitor ||= Puppet::Pops::Visitor.new(nil,"callable",1,1)
172
+
173
+ da = Types::PArrayType.new()
174
+ da.element_type = Types::PDataType.new()
175
+ @data_array = da
176
+
177
+ h = Types::PHashType.new()
178
+ h.element_type = Types::PDataType.new()
179
+ h.key_type = Types::PScalarType.new()
180
+ @data_hash = h
181
+
182
+ @data_t = Types::PDataType.new()
183
+ @scalar_t = Types::PScalarType.new()
184
+ @numeric_t = Types::PNumericType.new()
185
+ @t = Types::PAnyType.new()
186
+
187
+ # Data accepts a Tuple that has 0-infinity Data compatible entries (e.g. a Tuple equivalent to Array).
188
+ data_tuple = Types::PTupleType.new()
189
+ data_tuple.addTypes(Types::PDataType.new())
190
+ data_tuple.size_type = Types::PIntegerType.new()
191
+ data_tuple.size_type.from = 0
192
+ data_tuple.size_type.to = nil # infinity
193
+ @data_tuple_t = data_tuple
194
+
195
+ # Variant type compatible with Data
196
+ data_variant = Types::PVariantType.new()
197
+ data_variant.addTypes(@data_hash.copy)
198
+ data_variant.addTypes(@data_array.copy)
199
+ data_variant.addTypes(Types::PScalarType.new)
200
+ data_variant.addTypes(Types::PNilType.new)
201
+ data_variant.addTypes(@data_tuple_t.copy)
202
+ @data_variant_t = data_variant
203
+
204
+ collection_default_size = Types::PIntegerType.new()
205
+ collection_default_size.from = 0
206
+ collection_default_size.to = nil # infinity
207
+ @collection_default_size_t = collection_default_size
208
+
209
+ non_empty_string = Types::PStringType.new
210
+ non_empty_string.size_type = Types::PIntegerType.new()
211
+ non_empty_string.size_type.from = 1
212
+ non_empty_string.size_type.to = nil # infinity
213
+ @non_empty_string_t = non_empty_string
214
+
215
+ @nil_t = Types::PNilType.new
216
+ end
217
+
218
+ # Convenience method to get a data type for comparisons
219
+ # @api private the returned value may not be contained in another element
220
+ #
221
+ def data
222
+ @data_t
223
+ end
224
+
225
+ # Convenience method to get a variant compatible with the Data type.
226
+ # @api private the returned value may not be contained in another element
227
+ #
228
+ def data_variant
229
+ @data_variant_t
230
+ end
231
+
232
+ def self.data_variant
233
+ singleton.data_variant
234
+ end
235
+
236
+ # Answers the question 'is it possible to inject an instance of the given class'
237
+ # A class is injectable if it has a special *assisted inject* class method called `inject` taking
238
+ # an injector and a scope as argument, or if it has a zero args `initialize` method.
239
+ #
240
+ # @param klazz [Class, PRuntimeType] the class/type to check if it is injectable
241
+ # @return [Class, nil] the injectable Class, or nil if not injectable
242
+ # @api public
243
+ #
244
+ def injectable_class(klazz)
245
+ # Handle case when we get a PType instead of a class
246
+ if klazz.is_a?(Types::PRuntimeType)
247
+ klazz = Puppet::Pops::Types::ClassLoader.provide(klazz)
248
+ end
249
+
250
+ # data types can not be injected (check again, it is not safe to assume that given RubyRuntime klazz arg was ok)
251
+ return false unless type(klazz).is_a?(Types::PRuntimeType)
252
+ if (klazz.respond_to?(:inject) && klazz.method(:inject).arity() == -4) || klazz.instance_method(:initialize).arity() == 0
253
+ klazz
254
+ else
255
+ nil
256
+ end
257
+ end
258
+
259
+ # Answers 'can an instance of type t2 be assigned to a variable of type t'.
260
+ # Does not accept nil/undef unless the type accepts it.
261
+ #
262
+ # @api public
263
+ #
264
+ def assignable?(t, t2)
265
+ if t.is_a?(Class)
266
+ t = type(t)
267
+ end
268
+
269
+ if t2.is_a?(Class)
270
+ t2 = type(t2)
271
+ end
272
+ # Unit can be assigned to anything
273
+ return true if t2.class == Types::PUnitType
274
+
275
+ @@assignable_visitor.visit_this_1(self, t, t2)
276
+ end
277
+
278
+ # Returns an enumerable if the t represents something that can be iterated
279
+ def enumerable(t)
280
+ @@enumerable_visitor.visit_this_0(self, t)
281
+ end
282
+
283
+ # Answers, does the given callable accept the arguments given in args (an array or a tuple)
284
+ #
285
+ def callable?(callable, args)
286
+ return false if !self.class.is_kind_of_callable?(callable)
287
+ # Note that polymorphism is for the args type, the callable is always a callable
288
+ @@callable_visitor.visit_this_1(self, args, callable)
289
+ end
290
+
291
+ # Answers if the two given types describe the same type
292
+ def equals(left, right)
293
+ return false unless left.is_a?(Types::PAnyType) && right.is_a?(Types::PAnyType)
294
+ # Types compare per class only - an extra test must be made if the are mutually assignable
295
+ # to find all types that represent the same type of instance
296
+ #
297
+ left == right || (assignable?(right, left) && assignable?(left, right))
298
+ end
299
+
300
+ # Answers 'what is the Puppet Type corresponding to the given Ruby class'
301
+ # @param c [Class] the class for which a puppet type is wanted
302
+ # @api public
303
+ #
304
+ def type(c)
305
+ raise ArgumentError, "Argument must be a Class" unless c.is_a? Class
306
+
307
+ # Can't use a visitor here since we don't have an instance of the class
308
+ case
309
+ when c <= Integer
310
+ type = Types::PIntegerType.new()
311
+ when c == Float
312
+ type = Types::PFloatType.new()
313
+ when c == Numeric
314
+ type = Types::PNumericType.new()
315
+ when c == String
316
+ type = Types::PStringType.new()
317
+ when c == Regexp
318
+ type = Types::PRegexpType.new()
319
+ when c == NilClass
320
+ type = Types::PNilType.new()
321
+ when c == FalseClass, c == TrueClass
322
+ type = Types::PBooleanType.new()
323
+ when c == Class
324
+ type = Types::PType.new()
325
+ when c == Array
326
+ # Assume array of data values
327
+ type = Types::PArrayType.new()
328
+ type.element_type = Types::PDataType.new()
329
+ when c == Hash
330
+ # Assume hash with scalar keys and data values
331
+ type = Types::PHashType.new()
332
+ type.key_type = Types::PScalarType.new()
333
+ type.element_type = Types::PDataType.new()
334
+ else
335
+ type = Types::PRuntimeType.new(:runtime => :ruby, :runtime_type_name => c.name)
336
+ end
337
+ type
338
+ end
339
+
340
+ # Generalizes value specific types. The given type is mutated and returned.
341
+ # @api public
342
+ def generalize!(o)
343
+ @@generalize_visitor.visit_this_0(self, o)
344
+ o.eAllContents.each { |x| @@generalize_visitor.visit_this_0(self, x) }
345
+ o
346
+ end
347
+
348
+ def generalize_Object(o)
349
+ # do nothing, there is nothing to change for most types
350
+ end
351
+
352
+ def generalize_PStringType(o)
353
+ o.values = []
354
+ o.size_type = nil
355
+ []
356
+ end
357
+
358
+ def generalize_PCollectionType(o)
359
+ # erase the size constraint from Array and Hash (if one exists, it is transformed to -Infinity - + Infinity, which is
360
+ # not desirable.
361
+ o.size_type = nil
362
+ end
363
+
364
+ def generalize_PFloatType(o)
365
+ o.to = nil
366
+ o.from = nil
367
+ end
368
+
369
+ def generalize_PIntegerType(o)
370
+ o.to = nil
371
+ o.from = nil
372
+ end
373
+
374
+ # Answers 'what is the single common Puppet Type describing o', or if o is an Array or Hash, what is the
375
+ # single common type of the elements (or keys and elements for a Hash).
376
+ # @api public
377
+ #
378
+ def infer(o)
379
+ @@infer_visitor.visit_this_0(self, o)
380
+ end
381
+
382
+ def infer_generic(o)
383
+ result = generalize!(infer(o))
384
+ result
385
+ end
386
+
387
+ # Answers 'what is the set of Puppet Types of o'
388
+ # @api public
389
+ #
390
+ def infer_set(o)
391
+ @@infer_set_visitor.visit_this_0(self, o)
392
+ end
393
+
394
+ def instance_of(t, o)
395
+ @@instance_of_visitor.visit_this_1(self, t, o)
396
+ end
397
+
398
+ def instance_of_Object(t, o)
399
+ # Undef is Undef and Any, but nothing else when checking instance?
400
+ return false if (o.nil?) && t.class != Types::PAnyType
401
+ assignable?(t, infer(o))
402
+ end
403
+
404
+ # Anything is an instance of Unit
405
+ # @api private
406
+ def instance_of_PUnitType(t, o)
407
+ true
408
+ end
409
+
410
+ def instance_of_PArrayType(t, o)
411
+ return false unless o.is_a?(Array)
412
+ return false unless o.all? {|element| instance_of(t.element_type, element) }
413
+ size_t = t.size_type || @collection_default_size_t
414
+ size_t2 = size_as_type(o)
415
+ # optimize by calling directly
416
+ assignable_PIntegerType(size_t, size_t2)
417
+ end
418
+
419
+ def instance_of_PTupleType(t, o)
420
+ return false unless o.is_a?(Array)
421
+ # compute the tuple's min/max size, and check if that size matches
422
+ size_t = t.size_type || Puppet::Pops::Types::TypeFactory.range(*t.size_range)
423
+
424
+ # compute the array's size as type
425
+ size_t2 = size_as_type(o)
426
+ return false unless assignable?(size_t, size_t2)
427
+ o.each_with_index do |element, index|
428
+ return false unless instance_of(t.types[index] || t.types[-1], element)
429
+ end
430
+ true
431
+ end
432
+
433
+ def instance_of_PStructType(t, o)
434
+ return false unless o.is_a?(Hash)
435
+ h = t.hashed_elements
436
+ # all keys must be present and have a value (even if nil/undef)
437
+ (o.keys - h.keys).empty? && h.all? { |k,v| instance_of(v, o[k]) }
438
+ end
439
+
440
+ def instance_of_PHashType(t, o)
441
+ return false unless o.is_a?(Hash)
442
+ key_t = t.key_type
443
+ element_t = t.element_type
444
+ return false unless o.keys.all? {|key| instance_of(key_t, key) } && o.values.all? {|value| instance_of(element_t, value) }
445
+ size_t = t.size_type || @collection_default_size_t
446
+ size_t2 = size_as_type(o)
447
+ # optimize by calling directly
448
+ assignable_PIntegerType(size_t, size_t2)
449
+ end
450
+
451
+ def instance_of_PDataType(t, o)
452
+ instance_of(@data_variant_t, o)
453
+ end
454
+
455
+ def instance_of_PNilType(t, o)
456
+ o.nil? || o == :undef
457
+ end
458
+
459
+ def instance_of_POptionalType(t, o)
460
+ instance_of_PNilType(t, o) || instance_of(t.optional_type, o)
461
+ end
462
+
463
+ def instance_of_PVariantType(t, o)
464
+ # instance of variant if o is instance? of any of variant's types
465
+ t.types.any? { |option_t| instance_of(option_t, o) }
466
+ end
467
+
468
+ # Answers 'is o an instance of type t'
469
+ # @api public
470
+ #
471
+ def self.instance?(t, o)
472
+ singleton.instance_of(t,o)
473
+ end
474
+
475
+ # Answers 'is o an instance of type t'
476
+ # @api public
477
+ #
478
+ def instance?(t, o)
479
+ instance_of(t,o)
480
+ end
481
+
482
+ # Answers if t is a puppet type
483
+ # @api public
484
+ #
485
+ def is_ptype?(t)
486
+ return t.is_a?(Types::PAnyType)
487
+ end
488
+
489
+ # Answers if t represents the puppet type PNilType
490
+ # @api public
491
+ #
492
+ def is_pnil?(t)
493
+ return t.nil? || t.is_a?(Types::PNilType)
494
+ end
495
+
496
+ # Answers, 'What is the common type of t1 and t2?'
497
+ #
498
+ # TODO: The current implementation should be optimized for performance
499
+ #
500
+ # @api public
501
+ #
502
+ def common_type(t1, t2)
503
+ raise ArgumentError, 'two types expected' unless (is_ptype?(t1) || is_pnil?(t1)) && (is_ptype?(t2) || is_pnil?(t2))
504
+
505
+ # TODO: This is not right since Scalar U Undef is Any
506
+ # if either is nil, the common type is the other
507
+ if is_pnil?(t1)
508
+ return t2
509
+ elsif is_pnil?(t2)
510
+ return t1
511
+ end
512
+
513
+ # If either side is Unit, it is the other type
514
+ if t1.is_a?(Types::PUnitType)
515
+ return t2
516
+ elsif t2.is_a?(Types::PUnitType)
517
+ return t1
518
+ end
519
+
520
+ # Simple case, one is assignable to the other
521
+ if assignable?(t1, t2)
522
+ return t1
523
+ elsif assignable?(t2, t1)
524
+ return t2
525
+ end
526
+
527
+ # when both are arrays, return an array with common element type
528
+ if t1.is_a?(Types::PArrayType) && t2.is_a?(Types::PArrayType)
529
+ type = Types::PArrayType.new()
530
+ type.element_type = common_type(t1.element_type, t2.element_type)
531
+ return type
532
+ end
533
+
534
+ # when both are hashes, return a hash with common key- and element type
535
+ if t1.is_a?(Types::PHashType) && t2.is_a?(Types::PHashType)
536
+ type = Types::PHashType.new()
537
+ type.key_type = common_type(t1.key_type, t2.key_type)
538
+ type.element_type = common_type(t1.element_type, t2.element_type)
539
+ return type
540
+ end
541
+
542
+ # when both are host-classes, reduce to PHostClass[] (since one was not assignable to the other)
543
+ if t1.is_a?(Types::PHostClassType) && t2.is_a?(Types::PHostClassType)
544
+ return Types::PHostClassType.new()
545
+ end
546
+
547
+ # when both are resources, reduce to Resource[T] or Resource[] (since one was not assignable to the other)
548
+ if t1.is_a?(Types::PResourceType) && t2.is_a?(Types::PResourceType)
549
+ result = Types::PResourceType.new()
550
+ # only Resource[] unless the type name is the same
551
+ if t1.type_name == t2.type_name then result.type_name = t1.type_name end
552
+ # the cross assignability test above has already determined that they do not have the same type and title
553
+ return result
554
+ end
555
+
556
+ # Integers have range, expand the range to the common range
557
+ if t1.is_a?(Types::PIntegerType) && t2.is_a?(Types::PIntegerType)
558
+ t1range = from_to_ordered(t1.from, t1.to)
559
+ t2range = from_to_ordered(t2.from, t2.to)
560
+ t = Types::PIntegerType.new()
561
+ from = [t1range[0], t2range[0]].min
562
+ to = [t1range[1], t2range[1]].max
563
+ t.from = from unless from == TheInfinity
564
+ t.to = to unless to == TheInfinity
565
+ return t
566
+ end
567
+
568
+ # Floats have range, expand the range to the common range
569
+ if t1.is_a?(Types::PFloatType) && t2.is_a?(Types::PFloatType)
570
+ t1range = from_to_ordered(t1.from, t1.to)
571
+ t2range = from_to_ordered(t2.from, t2.to)
572
+ t = Types::PFloatType.new()
573
+ from = [t1range[0], t2range[0]].min
574
+ to = [t1range[1], t2range[1]].max
575
+ t.from = from unless from == TheInfinity
576
+ t.to = to unless to == TheInfinity
577
+ return t
578
+ end
579
+
580
+ if t1.is_a?(Types::PStringType) && t2.is_a?(Types::PStringType)
581
+ t = Types::PStringType.new()
582
+ t.values = t1.values | t2.values
583
+ return t
584
+ end
585
+
586
+ if t1.is_a?(Types::PPatternType) && t2.is_a?(Types::PPatternType)
587
+ t = Types::PPatternType.new()
588
+ # must make copies since patterns are contained types, not data-types
589
+ t.patterns = (t1.patterns | t2.patterns).map(&:copy)
590
+ return t
591
+ end
592
+
593
+ if t1.is_a?(Types::PEnumType) && t2.is_a?(Types::PEnumType)
594
+ # The common type is one that complies with either set
595
+ t = Types::PEnumType.new
596
+ t.values = t1.values | t2.values
597
+ return t
598
+ end
599
+
600
+ if t1.is_a?(Types::PVariantType) && t2.is_a?(Types::PVariantType)
601
+ # The common type is one that complies with either set
602
+ t = Types::PVariantType.new
603
+ t.types = (t1.types | t2.types).map(&:copy)
604
+ return t
605
+ end
606
+
607
+ if t1.is_a?(Types::PRegexpType) && t2.is_a?(Types::PRegexpType)
608
+ # if they were identical, the general rule would return a parameterized regexp
609
+ # since they were not, the result is a generic regexp type
610
+ return Types::PPatternType.new()
611
+ end
612
+
613
+ if t1.is_a?(Types::PCallableType) && t2.is_a?(Types::PCallableType)
614
+ # They do not have the same signature, and one is not assignable to the other,
615
+ # what remains is the most general form of Callable
616
+ return Types::PCallableType.new()
617
+ end
618
+
619
+ # Common abstract types, from most specific to most general
620
+ if common_numeric?(t1, t2)
621
+ return Types::PNumericType.new()
622
+ end
623
+
624
+ if common_scalar?(t1, t2)
625
+ return Types::PScalarType.new()
626
+ end
627
+
628
+ if common_data?(t1,t2)
629
+ return Types::PDataType.new()
630
+ end
631
+
632
+ # Meta types Type[Integer] + Type[String] => Type[Data]
633
+ if t1.is_a?(Types::PType) && t2.is_a?(Types::PType)
634
+ type = Types::PType.new()
635
+ type.type = common_type(t1.type, t2.type)
636
+ return type
637
+ end
638
+
639
+ # If both are Runtime types
640
+ if t1.is_a?(Types::PRuntimeType) && t2.is_a?(Types::PRuntimeType)
641
+ if t1.runtime == t2.runtime && t1.runtime_type_name == t2.runtime_type_name
642
+ return t1
643
+ end
644
+ # finding the common super class requires that names are resolved to class
645
+ # NOTE: This only supports runtime type of :ruby
646
+ c1 = Types::ClassLoader.provide_from_type(t1)
647
+ c2 = Types::ClassLoader.provide_from_type(t2)
648
+ if c1 && c2
649
+ c2_superclasses = superclasses(c2)
650
+ superclasses(c1).each do|c1_super|
651
+ c2_superclasses.each do |c2_super|
652
+ if c1_super == c2_super
653
+ return Types::PRuntimeType.new(:runtime => :ruby, :runtime_type_name => c1_super.name)
654
+ end
655
+ end
656
+ end
657
+ end
658
+ end
659
+
660
+ # They better both be Any type, or the wrong thing was asked and nil is returned
661
+ if t1.is_a?(Types::PAnyType) && t2.is_a?(Types::PAnyType)
662
+ return Types::PAnyType.new()
663
+ end
664
+ end
665
+
666
+ # Produces the superclasses of the given class, including the class
667
+ def superclasses(c)
668
+ result = [c]
669
+ while s = c.superclass
670
+ result << s
671
+ c = s
672
+ end
673
+ result
674
+ end
675
+
676
+ # Produces a string representing the type
677
+ # @api public
678
+ #
679
+ def string(t)
680
+ @@string_visitor.visit_this_0(self, t)
681
+ end
682
+
683
+ # Produces a debug string representing the type (possibly with more information that the regular string format)
684
+ # @api public
685
+ #
686
+ def debug_string(t)
687
+ @@inspect_visitor.visit_this_0(self, t)
688
+ end
689
+
690
+
691
+ # Reduces an enumerable of types to a single common type.
692
+ # @api public
693
+ #
694
+ def reduce_type(enumerable)
695
+ enumerable.reduce(nil) {|memo, t| common_type(memo, t) }
696
+ end
697
+
698
+ # Reduce an enumerable of objects to a single common type
699
+ # @api public
700
+ #
701
+ def infer_and_reduce_type(enumerable)
702
+ reduce_type(enumerable.collect() {|o| infer(o) })
703
+ end
704
+
705
+ # The type of all classes is PType
706
+ # @api private
707
+ #
708
+ def infer_Class(o)
709
+ Types::PType.new()
710
+ end
711
+
712
+ # @api private
713
+ def infer_Closure(o)
714
+ o.type()
715
+ end
716
+
717
+ # @api private
718
+ def infer_Function(o)
719
+ o.class.dispatcher.to_type
720
+ end
721
+
722
+ # @api private
723
+ def infer_Object(o)
724
+ Types::PRuntimeType.new(:runtime => :ruby, :runtime_type_name => o.class.name)
725
+ end
726
+
727
+ # The type of all types is PType
728
+ # @api private
729
+ #
730
+ def infer_PAnyType(o)
731
+ type = Types::PType.new()
732
+ type.type = o.copy
733
+ type
734
+ end
735
+
736
+ # The type of all types is PType
737
+ # This is the metatype short circuit.
738
+ # @api private
739
+ #
740
+ def infer_PType(o)
741
+ type = Types::PType.new()
742
+ type.type = o.copy
743
+ type
744
+ end
745
+
746
+ # @api private
747
+ def infer_String(o)
748
+ t = Types::PStringType.new()
749
+ t.addValues(o)
750
+ t.size_type = size_as_type(o)
751
+ t
752
+ end
753
+
754
+ # @api private
755
+ def infer_Float(o)
756
+ t = Types::PFloatType.new()
757
+ t.from = o
758
+ t.to = o
759
+ t
760
+ end
761
+
762
+ # @api private
763
+ def infer_Integer(o)
764
+ t = Types::PIntegerType.new()
765
+ t.from = o
766
+ t.to = o
767
+ t
768
+ end
769
+
770
+ # @api private
771
+ def infer_Regexp(o)
772
+ t = Types::PRegexpType.new()
773
+ t.pattern = o.source
774
+ t
775
+ end
776
+
777
+ # @api private
778
+ def infer_NilClass(o)
779
+ Types::PNilType.new()
780
+ end
781
+
782
+ # Inference of :default as PDefaultType, and all other are Ruby[Symbol]
783
+ # @api private
784
+ def infer_Symbol(o)
785
+ case o
786
+ when :default
787
+ Types::PDefaultType.new()
788
+ else
789
+ infer_Object(o)
790
+ end
791
+ end
792
+
793
+ # @api private
794
+ def infer_TrueClass(o)
795
+ Types::PBooleanType.new()
796
+ end
797
+
798
+ # @api private
799
+ def infer_FalseClass(o)
800
+ Types::PBooleanType.new()
801
+ end
802
+
803
+ # @api private
804
+ # A Puppet::Parser::Resource, or Puppet::Resource
805
+ #
806
+ def infer_Resource(o)
807
+ t = Types::PResourceType.new()
808
+ t.type_name = o.type.to_s.downcase
809
+ # Only Puppet::Resource can have a title that is a symbol :undef, a PResource cannot.
810
+ # A mapping must be made to empty string. A nil value will result in an error later
811
+ title = o.title
812
+ t.title = (:undef == title ? '' : title)
813
+ type = Types::PType.new()
814
+ type.type = t
815
+ type
816
+ end
817
+
818
+ # @api private
819
+ def infer_Array(o)
820
+ type = Types::PArrayType.new()
821
+ type.element_type =
822
+ if o.empty?
823
+ Types::PNilType.new()
824
+ else
825
+ infer_and_reduce_type(o)
826
+ end
827
+ type.size_type = size_as_type(o)
828
+ type
829
+ end
830
+
831
+ # @api private
832
+ def infer_Hash(o)
833
+ type = Types::PHashType.new()
834
+ if o.empty?
835
+ ktype = Types::PNilType.new()
836
+ etype = Types::PNilType.new()
837
+ else
838
+ ktype = infer_and_reduce_type(o.keys())
839
+ etype = infer_and_reduce_type(o.values())
840
+ end
841
+ type.key_type = ktype
842
+ type.element_type = etype
843
+ type.size_type = size_as_type(o)
844
+ type
845
+ end
846
+
847
+ def size_as_type(collection)
848
+ size = collection.size
849
+ t = Types::PIntegerType.new()
850
+ t.from = size
851
+ t.to = size
852
+ t
853
+ end
854
+
855
+ # Common case for everything that intrinsically only has a single type
856
+ def infer_set_Object(o)
857
+ infer(o)
858
+ end
859
+
860
+ def infer_set_Array(o)
861
+ if o.empty?
862
+ type = Types::PArrayType.new()
863
+ type.element_type = Types::PNilType.new()
864
+ type.size_type = size_as_type(o)
865
+ else
866
+ type = Types::PTupleType.new()
867
+ type.types = o.map() {|x| infer_set(x) }
868
+ end
869
+ type
870
+ end
871
+
872
+ def infer_set_Hash(o)
873
+ type = Types::PHashType.new()
874
+ if o.empty?
875
+ ktype = Types::PNilType.new()
876
+ vtype = Types::PNilType.new()
877
+ else
878
+ ktype = Types::PVariantType.new()
879
+ ktype.types = o.keys.map() {|k| infer_set(k) }
880
+ etype = Types::PVariantType.new()
881
+ etype.types = o.values.map() {|e| infer_set(e) }
882
+ end
883
+ type.key_type = unwrap_single_variant(ktype)
884
+ type.element_type = unwrap_single_variant(etype)
885
+ type.size_type = size_as_type(o)
886
+ type
887
+ end
888
+
889
+ def unwrap_single_variant(possible_variant)
890
+ if possible_variant.is_a?(Types::PVariantType) && possible_variant.types.size == 1
891
+ possible_variant.types[0]
892
+ else
893
+ possible_variant
894
+ end
895
+ end
896
+
897
+ # False in general type calculator
898
+ # @api private
899
+ def assignable_Object(t, t2)
900
+ false
901
+ end
902
+
903
+ # @api private
904
+ def assignable_PAnyType(t, t2)
905
+ t2.is_a?(Types::PAnyType)
906
+ end
907
+
908
+ # @api private
909
+ def assignable_PNilType(t, t2)
910
+ # Only undef/nil is assignable to nil type
911
+ t2.is_a?(Types::PNilType)
912
+ end
913
+
914
+ # Anything is assignable to a Unit type
915
+ # @api private
916
+ def assignable_PUnitType(t, t2)
917
+ true
918
+ end
919
+
920
+ # @api private
921
+ def assignable_PDefaultType(t, t2)
922
+ # Only default is assignable to default type
923
+ t2.is_a?(Types::PDefaultType)
924
+ end
925
+
926
+ # @api private
927
+ def assignable_PScalarType(t, t2)
928
+ t2.is_a?(Types::PScalarType)
929
+ end
930
+
931
+ # @api private
932
+ def assignable_PNumericType(t, t2)
933
+ t2.is_a?(Types::PNumericType)
934
+ end
935
+
936
+ # @api private
937
+ def assignable_PIntegerType(t, t2)
938
+ return false unless t2.is_a?(Types::PIntegerType)
939
+ trange = from_to_ordered(t.from, t.to)
940
+ t2range = from_to_ordered(t2.from, t2.to)
941
+ # If t2 min and max are within the range of t
942
+ trange[0] <= t2range[0] && trange[1] >= t2range[1]
943
+ end
944
+
945
+ # Transform int range to a size constraint
946
+ # if range == nil the constraint is 1,1
947
+ # if range.from == nil min size = 1
948
+ # if range.to == nil max size == Infinity
949
+ #
950
+ def size_range(range)
951
+ return [1,1] if range.nil?
952
+ from = range.from
953
+ to = range.to
954
+ x = from.nil? ? 1 : from
955
+ y = to.nil? ? TheInfinity : to
956
+ if x < y
957
+ [x, y]
958
+ else
959
+ [y, x]
960
+ end
961
+ end
962
+
963
+ # @api private
964
+ def from_to_ordered(from, to)
965
+ x = (from.nil? || from == :default) ? -TheInfinity : from
966
+ y = (to.nil? || to == :default) ? TheInfinity : to
967
+ if x < y
968
+ [x, y]
969
+ else
970
+ [y, x]
971
+ end
972
+ end
973
+
974
+ # @api private
975
+ def assignable_PVariantType(t, t2)
976
+ # Data is a specific variant
977
+ t2 = @data_variant_t if t2.is_a?(Types::PDataType)
978
+ if t2.is_a?(Types::PVariantType)
979
+ # A variant is assignable if all of its options are assignable to one of this type's options
980
+ return true if t == t2
981
+ t2.types.all? do |other|
982
+ # if the other is a Variant, all of its options, but be assignable to one of this type's options
983
+ other = other.is_a?(Types::PDataType) ? @data_variant_t : other
984
+ if other.is_a?(Types::PVariantType)
985
+ assignable?(t, other)
986
+ else
987
+ t.types.any? {|option_t| assignable?(option_t, other) }
988
+ end
989
+ end
990
+ else
991
+ # A variant is assignable if t2 is assignable to any of its types
992
+ t.types.any? { |option_t| assignable?(option_t, t2) }
993
+ end
994
+ end
995
+
996
+ # Catch all not callable combinations
997
+ def callable_Object(o, callable_t)
998
+ false
999
+ end
1000
+
1001
+ def callable_PTupleType(args_tuple, callable_t)
1002
+ if args_tuple.size_type
1003
+ raise ArgumentError, "Callable tuple may not have a size constraint when used as args"
1004
+ end
1005
+ # Assume no block was given - i.e. it is nil, and its type is PNilType
1006
+ block_t = @nil_t
1007
+ if self.class.is_kind_of_callable?(args_tuple.types.last)
1008
+ # a split is needed to make it possible to use required, optional, and varargs semantics
1009
+ # of the tuple type.
1010
+ #
1011
+ args_tuple = args_tuple.copy
1012
+ # to drop the callable, it must be removed explicitly since this is an rgen array
1013
+ args_tuple.removeTypes(block_t = args_tuple.types.last())
1014
+ else
1015
+ # no block was given, if it is required, the below will fail
1016
+ end
1017
+ # unless argument types match parameter types
1018
+ return false unless assignable?(callable_t.param_types, args_tuple)
1019
+ # can the given block be *called* with a signature requirement specified by callable_t?
1020
+ assignable?(callable_t.block_type || @nil_t, block_t)
1021
+ end
1022
+
1023
+ # @api private
1024
+ def self.is_kind_of_callable?(t, optional = true)
1025
+ case t
1026
+ when Types::PCallableType
1027
+ true
1028
+ when Types::POptionalType
1029
+ optional && is_kind_of_callable?(t.optional_type, optional)
1030
+ when Types::PVariantType
1031
+ t.types.all? {|t2| is_kind_of_callable?(t2, optional) }
1032
+ else
1033
+ false
1034
+ end
1035
+ end
1036
+
1037
+
1038
+ def callable_PArrayType(args_array, callable_t)
1039
+ return false unless assignable?(callable_t.param_types, args_array)
1040
+ # does not support calling with a block, but have to check that callable is ok with missing block
1041
+ assignable?(callable_t.block_type || @nil_t, @nil_t)
1042
+ end
1043
+
1044
+ def callable_PNilType(nil_t, callable_t)
1045
+ # if callable_t is Optional (or indeed PNilType), this means that 'missing callable' is accepted
1046
+ assignable?(callable_t, nil_t)
1047
+ end
1048
+
1049
+ def callable_PCallableType(given_callable_t, required_callable_t)
1050
+ # If the required callable is euqal or more specific than the given, the given is callable
1051
+ assignable?(required_callable_t, given_callable_t)
1052
+ end
1053
+
1054
+ def max(a,b)
1055
+ a >=b ? a : b
1056
+ end
1057
+
1058
+ def min(a,b)
1059
+ a <= b ? a : b
1060
+ end
1061
+
1062
+ def assignable_PTupleType(t, t2)
1063
+ return true if t == t2 || t.types.empty? && (t2.is_a?(Types::PArrayType))
1064
+ size_t = t.size_type || Puppet::Pops::Types::TypeFactory.range(*t.size_range)
1065
+
1066
+ if t2.is_a?(Types::PTupleType)
1067
+ size_t2 = t2.size_type || Puppet::Pops::Types::TypeFactory.range(*t2.size_range)
1068
+
1069
+ # not assignable if the number of types in t2 is outside number of types in t1
1070
+ if assignable?(size_t, size_t2)
1071
+ t2.types.size.times do |index|
1072
+ return false unless assignable?((t.types[index] || t.types[-1]), t2.types[index])
1073
+ end
1074
+ return true
1075
+ else
1076
+ return false
1077
+ end
1078
+ elsif t2.is_a?(Types::PArrayType)
1079
+ t2_entry = t2.element_type
1080
+
1081
+ # Array of anything can not be assigned (unless tuple is tuple of anything) - this case
1082
+ # was handled at the top of this method.
1083
+ #
1084
+ return false if t2_entry.nil?
1085
+ size_t = t.size_type || Puppet::Pops::Types::TypeFactory.range(*t.size_range)
1086
+ size_t2 = t2.size_type || @collection_default_size_t
1087
+ return false unless assignable?(size_t, size_t2)
1088
+ min(t.types.size, size_t2.range()[1]).times do |index|
1089
+ return false unless assignable?((t.types[index] || t.types[-1]), t2_entry)
1090
+ end
1091
+ true
1092
+ else
1093
+ false
1094
+ end
1095
+ end
1096
+
1097
+ # Produces the tuple entry at the given index given a tuple type, its from/to constraints on the last
1098
+ # type, and an index.
1099
+ # Produces nil if the index is out of bounds
1100
+ # from must be less than to, and from may not be less than 0
1101
+ #
1102
+ # @api private
1103
+ #
1104
+ def tuple_entry_at(tuple_t, from, to, index)
1105
+ regular = (tuple_t.types.size - 1)
1106
+ if index < regular
1107
+ tuple_t.types[index]
1108
+ elsif index < regular + to
1109
+ # in the varargs part
1110
+ tuple_t.types[-1]
1111
+ else
1112
+ nil
1113
+ end
1114
+ end
1115
+
1116
+ # @api private
1117
+ #
1118
+ def assignable_PStructType(t, t2)
1119
+ return true if t == t2 || t.elements.empty? && (t2.is_a?(Types::PHashType))
1120
+ h = t.hashed_elements
1121
+ if t2.is_a?(Types::PStructType)
1122
+ h2 = t2.hashed_elements
1123
+ h.size == h2.size && h.all? {|k, v| assignable?(v, h2[k]) }
1124
+ elsif t2.is_a?(Types::PHashType)
1125
+ size_t2 = t2.size_type || @collection_default_size_t
1126
+ size_t = Types::PIntegerType.new
1127
+ size_t.from = size_t.to = h.size
1128
+ # compatible size
1129
+ # hash key type must be string of min 1 size
1130
+ # hash value t must be assignable to each key
1131
+ element_type = t2.element_type
1132
+ assignable_PIntegerType(size_t, size_t2) &&
1133
+ assignable?(@non_empty_string_t, t2.key_type) &&
1134
+ h.all? {|k,v| assignable?(v, element_type) }
1135
+ else
1136
+ false
1137
+ end
1138
+ end
1139
+
1140
+ # @api private
1141
+ def assignable_POptionalType(t, t2)
1142
+ return true if t2.is_a?(Types::PNilType)
1143
+ if t2.is_a?(Types::POptionalType)
1144
+ assignable?(t.optional_type, t2.optional_type)
1145
+ else
1146
+ assignable?(t.optional_type, t2)
1147
+ end
1148
+ end
1149
+
1150
+ # @api private
1151
+ def assignable_PEnumType(t, t2)
1152
+ return true if t == t2
1153
+ if t.values.empty?
1154
+ return true if t2.is_a?(Types::PStringType) || t2.is_a?(Types::PEnumType) || t2.is_a?(Types::PPatternType)
1155
+ end
1156
+ case t2
1157
+ when Types::PStringType
1158
+ # if the set of strings are all found in the set of enums
1159
+ !t2.values.empty?() && t2.values.all? { |s| t.values.any? { |e| e == s }}
1160
+ when Types::PVariantType
1161
+ t2.types.all? {|variant_t| assignable_PEnumType(t, variant_t) }
1162
+ when Types::PEnumType
1163
+ # empty means any enum
1164
+ return true if t.values.empty?
1165
+ !t2.values.empty? && t2.values.all? { |s| t.values.any? {|e| e == s }}
1166
+ else
1167
+ false
1168
+ end
1169
+ end
1170
+
1171
+ # @api private
1172
+ def assignable_PStringType(t, t2)
1173
+ if t.values.empty?
1174
+ # A general string is assignable by any other string or pattern restricted string
1175
+ # if the string has a size constraint it does not match since there is no reasonable way
1176
+ # to compute the min/max length a pattern will match. For enum, it is possible to test that
1177
+ # each enumerator value is within range
1178
+ size_t = t.size_type || @collection_default_size_t
1179
+ case t2
1180
+ when Types::PStringType
1181
+ # true if size compliant
1182
+ size_t2 = t2.size_type || @collection_default_size_t
1183
+ assignable_PIntegerType(size_t, size_t2)
1184
+
1185
+ when Types::PPatternType
1186
+ # true if size constraint is at least 0 to +Infinity (which is the same as the default)
1187
+ assignable_PIntegerType(size_t, @collection_default_size_t)
1188
+
1189
+ when Types::PEnumType
1190
+ if t2.values && !t2.values.empty?
1191
+ # true if all enum values are within range
1192
+ min, max = t2.values.map(&:size).minmax
1193
+ trange = from_to_ordered(size_t.from, size_t.to)
1194
+ t2range = [min, max]
1195
+ # If t2 min and max are within the range of t
1196
+ trange[0] <= t2range[0] && trange[1] >= t2range[1]
1197
+ else
1198
+ # enum represents all enums, and thus all strings, a sized constrained string can thus not
1199
+ # be assigned any enum (unless it is max size).
1200
+ assignable_PIntegerType(size_t, @collection_default_size_t)
1201
+ end
1202
+ else
1203
+ # no other type matches string
1204
+ false
1205
+ end
1206
+ elsif t2.is_a?(Types::PStringType)
1207
+ # A specific string acts as a set of strings - must have exactly the same strings
1208
+ # In this case, size does not matter since the definition is very precise anyway
1209
+ Set.new(t.values) == Set.new(t2.values)
1210
+ else
1211
+ # All others are false, since no other type describes the same set of specific strings
1212
+ false
1213
+ end
1214
+ end
1215
+
1216
+ # @api private
1217
+ def assignable_PPatternType(t, t2)
1218
+ return true if t == t2
1219
+ case t2
1220
+ when Types::PStringType, Types::PEnumType
1221
+ values = t2.values
1222
+ when Types::PVariantType
1223
+ return t2.types.all? {|variant_t| assignable_PPatternType(t, variant_t) }
1224
+ when Types::PPatternType
1225
+ return t.patterns.empty? ? true : false
1226
+ else
1227
+ return false
1228
+ end
1229
+
1230
+ if t2.values.empty?
1231
+ # Strings / Enums (unknown which ones) cannot all match a pattern, but if there is no pattern it is ok
1232
+ # (There should really always be a pattern, but better safe than sorry).
1233
+ return t.patterns.empty? ? true : false
1234
+ end
1235
+ # all strings in String/Enum type must match one of the patterns in Pattern type,
1236
+ # or Pattern represents all Patterns == all Strings
1237
+ regexps = t.patterns.map {|p| p.regexp }
1238
+ regexps.empty? || t2.values.all? { |v| regexps.any? {|re| re.match(v) } }
1239
+ end
1240
+
1241
+ # @api private
1242
+ def assignable_PFloatType(t, t2)
1243
+ return false unless t2.is_a?(Types::PFloatType)
1244
+ trange = from_to_ordered(t.from, t.to)
1245
+ t2range = from_to_ordered(t2.from, t2.to)
1246
+ # If t2 min and max are within the range of t
1247
+ trange[0] <= t2range[0] && trange[1] >= t2range[1]
1248
+ end
1249
+
1250
+ # @api private
1251
+ def assignable_PBooleanType(t, t2)
1252
+ t2.is_a?(Types::PBooleanType)
1253
+ end
1254
+
1255
+ # @api private
1256
+ def assignable_PRegexpType(t, t2)
1257
+ t2.is_a?(Types::PRegexpType) && (t.pattern.nil? || t.pattern == t2.pattern)
1258
+ end
1259
+
1260
+ # @api private
1261
+ def assignable_PCallableType(t, t2)
1262
+ return false unless t2.is_a?(Types::PCallableType)
1263
+ # nil param_types means, any other Callable is assignable
1264
+ return true if t.param_types.nil?
1265
+
1266
+ # NOTE: these tests are made in reverse as it is calling the callable that is constrained
1267
+ # (it's lower bound), not its upper bound
1268
+ return false unless assignable?(t2.param_types, t.param_types)
1269
+ # names are ignored, they are just information
1270
+ # Blocks must be compatible
1271
+ this_block_t = t.block_type || @nil_t
1272
+ that_block_t = t2.block_type || @nil_t
1273
+ assignable?(that_block_t, this_block_t)
1274
+
1275
+ end
1276
+
1277
+ # @api private
1278
+ def assignable_PCollectionType(t, t2)
1279
+ size_t = t.size_type || @collection_default_size_t
1280
+ case t2
1281
+ when Types::PCollectionType
1282
+ size_t2 = t2.size_type || @collection_default_size_t
1283
+ assignable_PIntegerType(size_t, size_t2)
1284
+ when Types::PTupleType
1285
+ # compute the tuple's min/max size, and check if that size matches
1286
+ from, to = size_range(t2.size_type)
1287
+ t2s = Types::PIntegerType.new()
1288
+ t2s.from = t2.types.size - 1 + from
1289
+ t2s.to = t2.types.size - 1 + to
1290
+ assignable_PIntegerType(size_t, t2s)
1291
+ when Types::PStructType
1292
+ from = to = t2.elements.size
1293
+ t2s = Types::PIntegerType.new()
1294
+ t2s.from = from
1295
+ t2s.to = to
1296
+ assignable_PIntegerType(size_t, t2s)
1297
+ else
1298
+ false
1299
+ end
1300
+ end
1301
+
1302
+ # @api private
1303
+ def assignable_PType(t, t2)
1304
+ return false unless t2.is_a?(Types::PType)
1305
+ return true if t.type.nil? # wide enough to handle all types
1306
+ return false if t2.type.nil? # wider than t
1307
+ assignable?(t.type, t2.type)
1308
+ end
1309
+
1310
+ # Array is assignable if t2 is an Array and t2's element type is assignable, or if t2 is a Tuple
1311
+ # where
1312
+ # @api private
1313
+ def assignable_PArrayType(t, t2)
1314
+ if t2.is_a?(Types::PArrayType)
1315
+ return false unless assignable?(t.element_type, t2.element_type)
1316
+ assignable_PCollectionType(t, t2)
1317
+
1318
+ elsif t2.is_a?(Types::PTupleType)
1319
+ return false unless t2.types.all? {|t2_element| assignable?(t.element_type, t2_element) }
1320
+ t2_regular = t2.types[0..-2]
1321
+ t2_ranged = t2.types[-1]
1322
+ t2_from, t2_to = size_range(t2.size_type)
1323
+ t2_required = t2_regular.size + t2_from
1324
+
1325
+ t_entry = t.element_type
1326
+
1327
+ # Tuple of anything can not be assigned (unless array is tuple of anything) - this case
1328
+ # was handled at the top of this method.
1329
+ #
1330
+ return false if t_entry.nil?
1331
+
1332
+ # array type may be size constrained
1333
+ size_t = t.size_type || @collection_default_size_t
1334
+ min, max = size_t.range
1335
+ # Tuple with fewer min entries can not be assigned
1336
+ return false if t2_required < min
1337
+ # Tuple with more optionally available entries can not be assigned
1338
+ return false if t2_regular.size + t2_to > max
1339
+ # each tuple type must be assignable to the element type
1340
+ t2_required.times do |index|
1341
+ t2_entry = tuple_entry_at(t2, t2_from, t2_to, index)
1342
+ return false unless assignable?(t_entry, t2_entry)
1343
+ end
1344
+ # ... and so must the last, possibly optional (ranged) type
1345
+ return assignable?(t_entry, t2_ranged)
1346
+ else
1347
+ false
1348
+ end
1349
+ end
1350
+
1351
+ # Hash is assignable if t2 is a Hash and t2's key and element types are assignable
1352
+ # @api private
1353
+ def assignable_PHashType(t, t2)
1354
+ case t2
1355
+ when Types::PHashType
1356
+ return false unless assignable?(t.key_type, t2.key_type) && assignable?(t.element_type, t2.element_type)
1357
+ assignable_PCollectionType(t, t2)
1358
+ when Types::PStructType
1359
+ # hash must accept String as key type
1360
+ # hash must accept all value types
1361
+ # hash must accept the size of the struct
1362
+ size_t = t.size_type || @collection_default_size_t
1363
+ min, max = size_t.range
1364
+ struct_size = t2.elements.size
1365
+ element_type = t.element_type
1366
+ ( struct_size >= min && struct_size <= max &&
1367
+ assignable?(t.key_type, @non_empty_string_t) &&
1368
+ t2.hashed_elements.all? {|k,v| assignable?(element_type, v) })
1369
+ else
1370
+ false
1371
+ end
1372
+ end
1373
+
1374
+ # @api private
1375
+ def assignable_PCatalogEntryType(t1, t2)
1376
+ t2.is_a?(Types::PCatalogEntryType)
1377
+ end
1378
+
1379
+ # @api private
1380
+ def assignable_PHostClassType(t1, t2)
1381
+ return false unless t2.is_a?(Types::PHostClassType)
1382
+ # Class = Class[name}, Class[name] != Class
1383
+ return true if t1.class_name.nil?
1384
+ # Class[name] = Class[name]
1385
+ return t1.class_name == t2.class_name
1386
+ end
1387
+
1388
+ # @api private
1389
+ def assignable_PResourceType(t1, t2)
1390
+ return false unless t2.is_a?(Types::PResourceType)
1391
+ return true if t1.type_name.nil?
1392
+ return false if t1.type_name != t2.type_name
1393
+ return true if t1.title.nil?
1394
+ return t1.title == t2.title
1395
+ end
1396
+
1397
+ # Data is assignable by other Data and by Array[Data] and Hash[Scalar, Data]
1398
+ # @api private
1399
+ def assignable_PDataType(t, t2)
1400
+ t2.is_a?(Types::PDataType) || assignable?(@data_variant_t, t2)
1401
+ end
1402
+
1403
+ # Assignable if t2's has the same runtime and the runtime name resolves to
1404
+ # a class that is the same or subclass of t1's resolved runtime type name
1405
+ # @api private
1406
+ def assignable_PRuntimeType(t1, t2)
1407
+ return false unless t2.is_a?(Types::PRuntimeType)
1408
+ return false unless t1.runtime == t2.runtime
1409
+ return true if t1.runtime_type_name.nil? # t1 is wider
1410
+ return false if t2.runtime_type_name.nil? # t1 not nil, so t2 can not be wider
1411
+
1412
+ # NOTE: This only supports Ruby, must change when/if the set of runtimes is expanded
1413
+ c1 = class_from_string(t1.runtime_type_name)
1414
+ c2 = class_from_string(t2.runtime_type_name)
1415
+ return false unless c1.is_a?(Class) && c2.is_a?(Class)
1416
+ !!(c2 <= c1)
1417
+ end
1418
+
1419
+ # @api private
1420
+ def debug_string_Object(t)
1421
+ string(t)
1422
+ end
1423
+
1424
+ # @api private
1425
+ def string_PType(t)
1426
+ if t.type.nil?
1427
+ "Type"
1428
+ else
1429
+ "Type[#{string(t.type)}]"
1430
+ end
1431
+ end
1432
+
1433
+ # @api private
1434
+ def string_NilClass(t) ; '?' ; end
1435
+
1436
+ # @api private
1437
+ def string_String(t) ; t ; end
1438
+
1439
+ # @api private
1440
+ def string_Symbol(t) ; t.to_s ; end
1441
+
1442
+ def string_PAnyType(t) ; "Any" ; end
1443
+
1444
+ # @api private
1445
+ def string_PNilType(t) ; 'Undef' ; end
1446
+
1447
+ # @api private
1448
+ def string_PDefaultType(t) ; 'Default' ; end
1449
+
1450
+ # @api private
1451
+ def string_PBooleanType(t) ; "Boolean" ; end
1452
+
1453
+ # @api private
1454
+ def string_PScalarType(t) ; "Scalar" ; end
1455
+
1456
+ # @api private
1457
+ def string_PDataType(t) ; "Data" ; end
1458
+
1459
+ # @api private
1460
+ def string_PNumericType(t) ; "Numeric" ; end
1461
+
1462
+ # @api private
1463
+ def string_PIntegerType(t)
1464
+ range = range_array_part(t)
1465
+ unless range.empty?
1466
+ "Integer[#{range.join(', ')}]"
1467
+ else
1468
+ "Integer"
1469
+ end
1470
+ end
1471
+
1472
+ # Produces a string from an Integer range type that is used inside other type strings
1473
+ # @api private
1474
+ def range_array_part(t)
1475
+ return [] if t.nil? || (t.from.nil? && t.to.nil?)
1476
+ [t.from.nil? ? 'default' : t.from , t.to.nil? ? 'default' : t.to ]
1477
+ end
1478
+
1479
+ # @api private
1480
+ def string_PFloatType(t)
1481
+ range = range_array_part(t)
1482
+ unless range.empty?
1483
+ "Float[#{range.join(', ')}]"
1484
+ else
1485
+ "Float"
1486
+ end
1487
+ end
1488
+
1489
+ # @api private
1490
+ def string_PRegexpType(t)
1491
+ t.pattern.nil? ? "Regexp" : "Regexp[#{t.regexp.inspect}]"
1492
+ end
1493
+
1494
+ # @api private
1495
+ def string_PStringType(t)
1496
+ # skip values in regular output - see debug_string
1497
+ range = range_array_part(t.size_type)
1498
+ unless range.empty?
1499
+ "String[#{range.join(', ')}]"
1500
+ else
1501
+ "String"
1502
+ end
1503
+ end
1504
+
1505
+ # @api private
1506
+ def debug_string_PStringType(t)
1507
+ range = range_array_part(t.size_type)
1508
+ range_part = range.empty? ? '' : '[' << range.join(' ,') << '], '
1509
+ "String[" << range_part << (t.values.map {|s| "'#{s}'" }).join(', ') << ']'
1510
+ end
1511
+
1512
+ # @api private
1513
+ def string_PEnumType(t)
1514
+ return "Enum" if t.values.empty?
1515
+ "Enum[" << t.values.map {|s| "'#{s}'" }.join(', ') << ']'
1516
+ end
1517
+
1518
+ # @api private
1519
+ def string_PVariantType(t)
1520
+ return "Variant" if t.types.empty?
1521
+ "Variant[" << t.types.map {|t2| string(t2) }.join(', ') << ']'
1522
+ end
1523
+
1524
+ # @api private
1525
+ def string_PTupleType(t)
1526
+ range = range_array_part(t.size_type)
1527
+ return "Tuple" if t.types.empty?
1528
+ s = "Tuple[" << t.types.map {|t2| string(t2) }.join(', ')
1529
+ unless range.empty?
1530
+ s << ", " << range.join(', ')
1531
+ end
1532
+ s << "]"
1533
+ s
1534
+ end
1535
+
1536
+ # @api private
1537
+ def string_PCallableType(t)
1538
+ # generic
1539
+ return "Callable" if t.param_types.nil?
1540
+
1541
+ if t.param_types.types.empty?
1542
+ range = [0, 0]
1543
+ else
1544
+ range = range_array_part(t.param_types.size_type)
1545
+ end
1546
+ # translate to string, and skip Unit types
1547
+ types = t.param_types.types.map {|t2| string(t2) unless t2.class == Types::PUnitType }.compact
1548
+
1549
+ s = "Callable[" << types.join(', ')
1550
+ unless range.empty?
1551
+ (s << ', ') unless types.empty?
1552
+ s << range.join(', ')
1553
+ end
1554
+ # Add block T last (after min, max) if present)
1555
+ #
1556
+ unless t.block_type.nil?
1557
+ (s << ', ') unless types.empty? && range.empty?
1558
+ s << string(t.block_type)
1559
+ end
1560
+ s << "]"
1561
+ s
1562
+ end
1563
+
1564
+ # @api private
1565
+ def string_PStructType(t)
1566
+ return "Struct" if t.elements.empty?
1567
+ "Struct[{" << t.elements.map {|element| string(element) }.join(', ') << "}]"
1568
+ end
1569
+
1570
+ def string_PStructElement(t)
1571
+ "'#{t.name}'=>#{string(t.type)}"
1572
+ end
1573
+
1574
+ # @api private
1575
+ def string_PPatternType(t)
1576
+ return "Pattern" if t.patterns.empty?
1577
+ "Pattern[" << t.patterns.map {|s| "#{s.regexp.inspect}" }.join(', ') << ']'
1578
+ end
1579
+
1580
+ # @api private
1581
+ def string_PCollectionType(t)
1582
+ range = range_array_part(t.size_type)
1583
+ unless range.empty?
1584
+ "Collection[#{range.join(', ')}]"
1585
+ else
1586
+ "Collection"
1587
+ end
1588
+ end
1589
+
1590
+ # @api private
1591
+ def string_PUnitType(t)
1592
+ "Unit"
1593
+ end
1594
+
1595
+ # @api private
1596
+ def string_PRuntimeType(t) ; "Runtime[#{string(t.runtime)}, #{string(t.runtime_type_name)}]" ; end
1597
+
1598
+ # @api private
1599
+ def string_PArrayType(t)
1600
+ parts = [string(t.element_type)] + range_array_part(t.size_type)
1601
+ "Array[#{parts.join(', ')}]"
1602
+ end
1603
+
1604
+ # @api private
1605
+ def string_PHashType(t)
1606
+ parts = [string(t.key_type), string(t.element_type)] + range_array_part(t.size_type)
1607
+ "Hash[#{parts.join(', ')}]"
1608
+ end
1609
+
1610
+ # @api private
1611
+ def string_PCatalogEntryType(t)
1612
+ "CatalogEntry"
1613
+ end
1614
+
1615
+ # @api private
1616
+ def string_PHostClassType(t)
1617
+ if t.class_name
1618
+ "Class[#{t.class_name}]"
1619
+ else
1620
+ "Class"
1621
+ end
1622
+ end
1623
+
1624
+ # @api private
1625
+ def string_PResourceType(t)
1626
+ if t.type_name
1627
+ if t.title
1628
+ "#{capitalize_segments(t.type_name)}['#{t.title}']"
1629
+ else
1630
+ capitalize_segments(t.type_name)
1631
+ end
1632
+ else
1633
+ "Resource"
1634
+ end
1635
+ end
1636
+
1637
+ def string_POptionalType(t)
1638
+ if t.optional_type.nil?
1639
+ "Optional"
1640
+ else
1641
+ "Optional[#{string(t.optional_type)}]"
1642
+ end
1643
+ end
1644
+
1645
+ # Catches all non enumerable types
1646
+ # @api private
1647
+ def enumerable_Object(o)
1648
+ nil
1649
+ end
1650
+
1651
+ # @api private
1652
+ def enumerable_PIntegerType(t)
1653
+ # Not enumerable if representing an infinite range
1654
+ return nil if t.size == TheInfinity
1655
+ t
1656
+ end
1657
+
1658
+ def self.copy_as_tuple(t)
1659
+ case t
1660
+ when Types::PTupleType
1661
+ t.copy
1662
+ when Types::PArrayType
1663
+ # transform array to tuple
1664
+ result = Types::PTupleType.new
1665
+ result.addTypes(t.element_type.copy)
1666
+ result.size_type = t.size_type.nil? ? nil : t.size_type.copy
1667
+ result
1668
+ else
1669
+ raise ArgumentError, "Internal Error: Only Array and Tuple can be given to copy_as_tuple"
1670
+ end
1671
+ end
1672
+
1673
+ private
1674
+
1675
+ NAME_SEGMENT_SEPARATOR = '::'.freeze
1676
+
1677
+ def capitalize_segments(s)
1678
+ s.split(NAME_SEGMENT_SEPARATOR).map(&:capitalize).join(NAME_SEGMENT_SEPARATOR)
1679
+ end
1680
+
1681
+ def class_from_string(str)
1682
+ begin
1683
+ str.split(NAME_SEGMENT_SEPARATOR).inject(Object) do |memo, name_segment|
1684
+ memo.const_get(name_segment)
1685
+ end
1686
+ rescue NameError
1687
+ return nil
1688
+ end
1689
+ end
1690
+
1691
+ def common_data?(t1, t2)
1692
+ assignable?(@data_t, t1) && assignable?(@data_t, t2)
1693
+ end
1694
+
1695
+ def common_scalar?(t1, t2)
1696
+ assignable?(@scalar_t, t1) && assignable?(@scalar_t, t2)
1697
+ end
1698
+
1699
+ def common_numeric?(t1, t2)
1700
+ assignable?(@numeric_t, t1) && assignable?(@numeric_t, t2)
1701
+ end
1702
+
1703
+ end