puppet-retrospec 0.7.0 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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