eac_tools 0.88.0 → 0.90.0

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 (415) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +41 -34
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/eac_ruby_utils/MIT-LICENCE +16 -0
  5. data/sub/eac_ruby_utils/README.rdoc +3 -0
  6. data/sub/eac_ruby_utils/eac_ruby_utils.gemspec +26 -0
  7. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_abstract.rb +100 -0
  8. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/array_accessor.rb +25 -0
  9. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/base_accessor.rb +57 -0
  10. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/boolean_accessor.rb +16 -0
  11. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/class_methods.rb +20 -0
  12. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/common_accessor.rb +30 -0
  13. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/enumerable_accessor.rb +52 -0
  14. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/hash_accessor.rb +57 -0
  15. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/instance_methods.rb +21 -0
  16. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/set_accessor.rb +25 -0
  17. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable.rb +15 -0
  18. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_instance_method.rb +34 -0
  19. data/sub/eac_ruby_utils/lib/eac_ruby_utils/arguments_consumer.rb +80 -0
  20. data/sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb +47 -0
  21. data/sub/eac_ruby_utils/lib/eac_ruby_utils/bit_array.rb +81 -0
  22. data/sub/eac_ruby_utils/lib/eac_ruby_utils/blank_not_blank.rb +19 -0
  23. data/sub/eac_ruby_utils/lib/eac_ruby_utils/boolean.rb +31 -0
  24. data/sub/eac_ruby_utils/lib/eac_ruby_utils/by_reference.rb +23 -0
  25. data/sub/eac_ruby_utils/lib/eac_ruby_utils/byte.rb +106 -0
  26. data/sub/eac_ruby_utils/lib/eac_ruby_utils/byte_array.rb +36 -0
  27. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/class_setup.rb +52 -0
  28. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb +41 -0
  29. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_concern.rb +20 -0
  30. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/class_accessors.rb +36 -0
  31. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/class_initialize.rb +39 -0
  32. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/instance_initialize.rb +64 -0
  33. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/super_args.rb +55 -0
  34. data/sub/eac_ruby_utils/lib/eac_ruby_utils/common_constructor.rb +93 -0
  35. data/sub/eac_ruby_utils/lib/eac_ruby_utils/compact.rb +32 -0
  36. data/sub/eac_ruby_utils/lib/eac_ruby_utils/compare_by.rb +28 -0
  37. data/sub/eac_ruby_utils/lib/eac_ruby_utils/context.rb +33 -0
  38. data/sub/eac_ruby_utils/lib/eac_ruby_utils/contextualizable.rb +21 -0
  39. data/sub/eac_ruby_utils/lib/eac_ruby_utils/core_ext.rb +7 -0
  40. data/sub/eac_ruby_utils/lib/eac_ruby_utils/custom_format.rb +53 -0
  41. data/sub/eac_ruby_utils/lib/eac_ruby_utils/enum.rb +102 -0
  42. data/sub/eac_ruby_utils/lib/eac_ruby_utils/enumerables_methods.rb +42 -0
  43. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/append_command_options.rb +38 -0
  44. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/concat.rb +41 -0
  45. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/debugging.rb +19 -0
  46. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/execution.rb +52 -0
  47. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/extra_options.rb +28 -0
  48. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command.rb +45 -0
  49. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_env.rb +28 -0
  50. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/command/envvars.rb +27 -0
  51. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb +23 -0
  52. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/command.rb +67 -0
  53. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/composite_command.rb +45 -0
  54. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb +93 -0
  55. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/execution_error.rb +8 -0
  56. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/execution_result.rb +45 -0
  57. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/file.rb +22 -0
  58. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/local_env.rb +17 -0
  59. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/process.rb +27 -0
  60. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/spawn.rb +32 -0
  61. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env/dasho_options.rb +53 -0
  62. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env/identity_file.rb +25 -0
  63. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env/quiet.rb +24 -0
  64. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env/terminal.rb +34 -0
  65. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/ssh_env.rb +74 -0
  66. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs.rb +23 -0
  67. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/clearable_directory.rb +57 -0
  68. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/extname.rb +30 -0
  69. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/temp/directory.rb +16 -0
  70. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/temp/file.rb +34 -0
  71. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs/temp.rb +52 -0
  72. data/sub/eac_ruby_utils/lib/eac_ruby_utils/fs.rb +9 -0
  73. data/sub/eac_ruby_utils/lib/eac_ruby_utils/gems_registry/gem.rb +80 -0
  74. data/sub/eac_ruby_utils/lib/eac_ruby_utils/gems_registry.rb +34 -0
  75. data/sub/eac_ruby_utils/lib/eac_ruby_utils/inflector.rb +29 -0
  76. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/class_methods.rb +14 -0
  77. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb +30 -0
  78. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/integer_list.rb +23 -0
  79. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/item.rb +48 -0
  80. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/list.rb +129 -0
  81. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/lists.rb +51 -0
  82. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/string_list.rb +19 -0
  83. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/symbol_list.rb +19 -0
  84. data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable.rb +17 -0
  85. data/sub/eac_ruby_utils/lib/eac_ruby_utils/local_time_zone.rb +48 -0
  86. data/sub/eac_ruby_utils/lib/eac_ruby_utils/locales/from_all_gems.rb +4 -0
  87. data/sub/eac_ruby_utils/lib/eac_ruby_utils/locales/from_gem.rb +47 -0
  88. data/sub/eac_ruby_utils/lib/eac_ruby_utils/locales/module_i18n_translate.rb +74 -0
  89. data/sub/eac_ruby_utils/lib/eac_ruby_utils/locales.rb +9 -0
  90. data/sub/eac_ruby_utils/lib/eac_ruby_utils/method_class.rb +30 -0
  91. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/base.rb +34 -0
  92. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/hash.rb +20 -0
  93. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/set.rb +19 -0
  94. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable.rb +9 -0
  95. data/sub/eac_ruby_utils/lib/eac_ruby_utils/options_consumer.rb +62 -0
  96. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patch.rb +11 -0
  97. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/addressable/uri/query_value.rb +37 -0
  98. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/addressable/uri.rb +4 -0
  99. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/addressable.rb +4 -0
  100. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/abstract.rb +9 -0
  101. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/common_constructor.rb +9 -0
  102. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/method_class.rb +9 -0
  103. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/self_included_modules.rb +7 -0
  104. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/settings_provider.rb +10 -0
  105. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class/static_method_class.rb +9 -0
  106. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/class.rb +4 -0
  107. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerable/boolean_combinations.rb +45 -0
  108. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerable.rb +4 -0
  109. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerator/current.rb +9 -0
  110. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerator/stopped.rb +14 -0
  111. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/enumerator.rb +4 -0
  112. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/if_key.rb +12 -0
  113. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/options_consumer.rb +10 -0
  114. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/sym_keys_hash.rb +10 -0
  115. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/to_struct.rb +10 -0
  116. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash.rb +5 -0
  117. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel/ibr.rb +10 -0
  118. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel/nyi.rb +10 -0
  119. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel.rb +4 -0
  120. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/abstract_methods.rb +10 -0
  121. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/acts_as_abstract.rb +14 -0
  122. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/acts_as_immutable.rb +10 -0
  123. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/acts_as_instance_method.rb +10 -0
  124. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/common_concern.rb +9 -0
  125. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/compare_by.rb +9 -0
  126. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/context.rb +11 -0
  127. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/i18n_translate.rb +9 -0
  128. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/immutable.rb +11 -0
  129. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/listable.rb +10 -0
  130. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/module_parent.rb +5 -0
  131. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/patch.rb +9 -0
  132. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/require_sub.rb +9 -0
  133. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/simple_cache.rb +10 -0
  134. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/speaker.rb +9 -0
  135. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module.rb +4 -0
  136. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/asserts.rb +25 -0
  137. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/call_if_proc.rb +11 -0
  138. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/compact.rb +20 -0
  139. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/debug.rb +55 -0
  140. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/i18n_translate.rb +13 -0
  141. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/if_nil.rb +17 -0
  142. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/if_present.rb +19 -0
  143. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/if_respond.rb +22 -0
  144. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/recursive_build.rb +12 -0
  145. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_bool.rb +12 -0
  146. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_pathname.rb +15 -0
  147. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_uri.rb +15 -0
  148. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object.rb +5 -0
  149. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/assert_parent.rb +12 -0
  150. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/basename_noext.rb +10 -0
  151. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/basename_sub.rb +13 -0
  152. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/child_of.rb +16 -0
  153. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/if_exist.rb +10 -0
  154. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/mkpath_s.rb +12 -0
  155. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/parent_n.rb +11 -0
  156. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/readlink_r.rb +11 -0
  157. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/reqdir_glob.rb +13 -0
  158. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname.rb +4 -0
  159. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp/if_match.rb +16 -0
  160. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp/to_parser.rb +10 -0
  161. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp.rb +4 -0
  162. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/string/delimited.rb +16 -0
  163. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/string/inflector.rb +11 -0
  164. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/string.rb +4 -0
  165. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/time/required_zone.rb +11 -0
  166. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/time.rb +4 -0
  167. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches.rb +4 -0
  168. data/sub/eac_ruby_utils/lib/eac_ruby_utils/recursive_builder.rb +51 -0
  169. data/sub/eac_ruby_utils/lib/eac_ruby_utils/regexp_parser.rb +39 -0
  170. data/sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/base.rb +80 -0
  171. data/sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub/sub_file.rb +59 -0
  172. data/sub/eac_ruby_utils/lib/eac_ruby_utils/require_sub.rb +11 -0
  173. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/default_setup.rb +20 -0
  174. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup/conditionals.rb +17 -0
  175. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup/setup_manager.rb +17 -0
  176. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup.rb +27 -0
  177. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup_manager.rb +49 -0
  178. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/stub_speaker.rb +39 -0
  179. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec.rb +9 -0
  180. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/command.rb +32 -0
  181. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb +71 -0
  182. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_replace_objects/replace_instance_method.rb +36 -0
  183. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_replace_objects.rb +52 -0
  184. data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby.rb +9 -0
  185. data/sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider/setting_value.rb +79 -0
  186. data/sub/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb +50 -0
  187. data/sub/eac_ruby_utils/lib/eac_ruby_utils/simple_cache.rb +77 -0
  188. data/sub/eac_ruby_utils/lib/eac_ruby_utils/speaker/receiver.rb +64 -0
  189. data/sub/eac_ruby_utils/lib/eac_ruby_utils/speaker/sender.rb +37 -0
  190. data/sub/eac_ruby_utils/lib/eac_ruby_utils/speaker.rb +16 -0
  191. data/sub/eac_ruby_utils/lib/eac_ruby_utils/static_method_class.rb +12 -0
  192. data/sub/eac_ruby_utils/lib/eac_ruby_utils/string_delimited.rb +70 -0
  193. data/sub/eac_ruby_utils/lib/eac_ruby_utils/struct.rb +63 -0
  194. data/sub/eac_ruby_utils/lib/eac_ruby_utils/unimplemented_method_error.rb +6 -0
  195. data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +5 -0
  196. data/sub/eac_ruby_utils/lib/eac_ruby_utils/wildcards.rb +26 -0
  197. data/sub/eac_ruby_utils/lib/eac_ruby_utils/yaml.rb +105 -0
  198. data/sub/eac_ruby_utils/lib/eac_ruby_utils.rb +6 -0
  199. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_abstract_spec.rb +94 -0
  200. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/array_accessor_spec.rb +43 -0
  201. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/common_accessor_spec.rb +57 -0
  202. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/hash_accessor_spec.rb +42 -0
  203. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/set_accessor_spec.rb +43 -0
  204. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/arguments_consumer_spec.rb +17 -0
  205. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/bit_array_spec.rb +22 -0
  206. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/blank_not_blank_spec.rb +16 -0
  207. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/byte_spec.rb +54 -0
  208. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/common_concern_spec.rb +65 -0
  209. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/common_constructor_spec.rb +151 -0
  210. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/compact_spec.rb +21 -0
  211. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/compare_by_spec.rb +39 -0
  212. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/custom_format_spec.rb +60 -0
  213. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/enum_spec.rb +44 -0
  214. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/enumerables_methods_spec.rb +50 -0
  215. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/base_example.rb +97 -0
  216. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/local_env_spec.rb +11 -0
  217. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/ssh_env_spec.rb +17 -0
  218. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/executable_spec.rb +37 -0
  219. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/ssh_env_spec.rb +25 -0
  220. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/extname_spec.rb +18 -0
  221. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/temp/directory_spec.rb +12 -0
  222. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/temp_spec.rb +52 -0
  223. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/inflector_spec.rb +16 -0
  224. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/listable_spec.rb +225 -0
  225. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/local_time_zone_spec.rb +17 -0
  226. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/method_class_spec.rb +46 -0
  227. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/module_ancestors_variable/hash_spec.rb +57 -0
  228. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/module_ancestors_variable/set_spec.rb +57 -0
  229. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/options_consumer_spec.rb +80 -0
  230. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/addressable/uri/query_value_spec.rb +25 -0
  231. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/abstract_spec.rb +25 -0
  232. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/acts_as_abstract_spec.rb +14 -0
  233. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/method_class_spec.rb +20 -0
  234. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/self_included_modules_spec.rb +30 -0
  235. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/static_method_class_spec.rb +20 -0
  236. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/enumerable/boolean_combinations_spec.rb +39 -0
  237. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/enumerator/current_spec.rb +26 -0
  238. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/enumerator/stopped_spec.rb +32 -0
  239. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/hash/if_key_spec.rb +23 -0
  240. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/hash/options_consumer_spec.rb +17 -0
  241. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/hash/sym_keys_hash_spec.rb +13 -0
  242. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/compare_by_spec.rb +37 -0
  243. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/listable_spec.rb +15 -0
  244. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/simple_cache_spec.rb +15 -0
  245. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/speaker_spec.rb +15 -0
  246. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/call_if_proc_spec.rb +11 -0
  247. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/compact_spec.rb +20 -0
  248. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/if_present_spec.rb +13 -0
  249. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/recursive_build_spec.rb +62 -0
  250. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/template_spec_files/path/my_stub_with_template +1 -0
  251. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/assert_parent_spec.rb +21 -0
  252. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/basename_noext_spec.rb +26 -0
  253. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/basename_sub_spec.rb +17 -0
  254. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/child_of_spec.rb +26 -0
  255. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/parent_n_spec.rb +33 -0
  256. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/string/delimited_spec.rb +34 -0
  257. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb +65 -0
  258. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/require_sub/base_spec/stubbed_module_a.rb +6 -0
  259. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/require_sub/base_spec/stubbed_not_module.rb +6 -0
  260. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/require_sub/base_spec.rb +19 -0
  261. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/rspec/setup/setup_manager_spec.rb +17 -0
  262. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_clean_environment_spec.rb +31 -0
  263. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/ruby/on_replace_objects_spec.rb +65 -0
  264. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/settings_provider_spec.rb +64 -0
  265. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/simple_cache_spec.rb +129 -0
  266. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/static_method_class_spec.rb +44 -0
  267. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/struct_spec.rb +57 -0
  268. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/wildcards_spec.rb +27 -0
  269. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/yaml_spec.rb +76 -0
  270. data/sub/eac_ruby_utils/spec/locales/pt-BR.yml +58 -0
  271. data/sub/eac_ruby_utils/spec/spec_helper.rb +15 -0
  272. data/sub/eac_templates/Gemfile +8 -0
  273. data/sub/eac_templates/README.textile +59 -0
  274. data/sub/eac_templates/eac_templates.gemspec +20 -0
  275. data/sub/eac_templates/lib/eac_templates/abstract/directory.rb +42 -0
  276. data/sub/eac_templates/lib/eac_templates/abstract/file.rb +25 -0
  277. data/sub/eac_templates/lib/eac_templates/abstract/fs_object.rb +94 -0
  278. data/sub/eac_templates/lib/eac_templates/abstract/fs_object_by_pathname.rb +13 -0
  279. data/sub/eac_templates/lib/eac_templates/abstract/not_found_error.rb +8 -0
  280. data/sub/eac_templates/lib/eac_templates/abstract/with_directory_file_methods.rb +46 -0
  281. data/sub/eac_templates/lib/eac_templates/core_ext.rb +4 -0
  282. data/sub/eac_templates/lib/eac_templates/interface_methods.rb +12 -0
  283. data/sub/eac_templates/lib/eac_templates/modules/ancestor/directory.rb +17 -0
  284. data/sub/eac_templates/lib/eac_templates/modules/ancestor/file.rb +16 -0
  285. data/sub/eac_templates/lib/eac_templates/modules/ancestor/fs_object.rb +23 -0
  286. data/sub/eac_templates/lib/eac_templates/modules/ancestor.rb +37 -0
  287. data/sub/eac_templates/lib/eac_templates/modules/base/directory.rb +44 -0
  288. data/sub/eac_templates/lib/eac_templates/modules/base/file.rb +27 -0
  289. data/sub/eac_templates/lib/eac_templates/modules/base/fs_object.rb +18 -0
  290. data/sub/eac_templates/lib/eac_templates/modules/base.rb +66 -0
  291. data/sub/{avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0.rb → eac_templates/lib/eac_templates/modules.rb} +2 -2
  292. data/sub/eac_templates/lib/eac_templates/patches/module/erb_template.rb +9 -0
  293. data/sub/eac_templates/lib/eac_templates/patches/module/template.rb +9 -0
  294. data/sub/eac_templates/lib/eac_templates/patches/module.rb +4 -0
  295. data/sub/eac_templates/lib/eac_templates/patches/object/erb_template.rb +9 -0
  296. data/sub/eac_templates/lib/eac_templates/patches/object/template.rb +9 -0
  297. data/sub/eac_templates/lib/eac_templates/patches/object.rb +4 -0
  298. data/sub/eac_templates/lib/eac_templates/patches.rb +4 -0
  299. data/sub/eac_templates/lib/eac_templates/sources/directory.rb +37 -0
  300. data/sub/eac_templates/lib/eac_templates/sources/file.rb +13 -0
  301. data/sub/eac_templates/lib/eac_templates/sources/from_all_gems.rb +4 -0
  302. data/sub/eac_templates/lib/eac_templates/sources/from_gem.rb +37 -0
  303. data/sub/eac_templates/lib/eac_templates/sources/fs_object.rb +53 -0
  304. data/sub/eac_templates/lib/eac_templates/sources/internal_set.rb +22 -0
  305. data/sub/eac_templates/lib/eac_templates/sources/set.rb +56 -0
  306. data/sub/eac_templates/lib/eac_templates/sources/single.rb +29 -0
  307. data/sub/eac_templates/lib/eac_templates/sources.rb +9 -0
  308. data/sub/eac_templates/lib/eac_templates/variables/content.rb +52 -0
  309. data/sub/eac_templates/lib/eac_templates/variables/directory.rb +48 -0
  310. data/sub/eac_templates/lib/eac_templates/variables/file.rb +26 -0
  311. data/sub/eac_templates/lib/eac_templates/variables/fs_object.rb +65 -0
  312. data/sub/eac_templates/lib/eac_templates/variables/not_found_error.rb +7 -0
  313. data/sub/eac_templates/lib/eac_templates/variables/providers/base.rb +24 -0
  314. data/sub/eac_templates/lib/eac_templates/variables/providers/config_reader.rb +29 -0
  315. data/sub/eac_templates/lib/eac_templates/variables/providers/entries_reader.rb +25 -0
  316. data/sub/eac_templates/lib/eac_templates/variables/providers/generic.rb +25 -0
  317. data/sub/eac_templates/lib/eac_templates/variables/providers/hash.rb +29 -0
  318. data/sub/eac_templates/lib/eac_templates/variables/providers.rb +25 -0
  319. data/sub/eac_templates/lib/eac_templates/variables.rb +9 -0
  320. data/sub/eac_templates/lib/eac_templates/version.rb +5 -0
  321. data/sub/eac_templates/lib/eac_templates.rb +7 -0
  322. data/sub/eac_templates/spec/lib/eac_templates/modules/base_spec.rb +141 -0
  323. data/sub/eac_templates/spec/lib/eac_templates/modules/base_spec_files/path1/a_module/a/a_a +1 -0
  324. data/sub/eac_templates/spec/lib/eac_templates/modules/base_spec_files/path1/a_module/b +1 -0
  325. data/sub/eac_templates/spec/lib/eac_templates/modules/base_spec_files/path1/sub_class/a/a_c +1 -0
  326. data/sub/eac_templates/spec/lib/eac_templates/modules/base_spec_files/path1/super_class/a/a_b +1 -0
  327. data/sub/eac_templates/spec/lib/eac_templates/modules/base_spec_files/path1/super_class/b +1 -0
  328. data/sub/eac_templates/spec/lib/eac_templates/modules/base_spec_files/path2/a_module/a/a_b +1 -0
  329. data/sub/eac_templates/spec/lib/eac_templates/modules/base_spec_files/path2/a_module/b +1 -0
  330. data/sub/eac_templates/spec/lib/eac_templates/modules/base_spec_files/path2/a_module/c +1 -0
  331. data/sub/eac_templates/spec/lib/eac_templates/modules/base_spec_files/path2/prepended_module/c +1 -0
  332. data/sub/eac_templates/spec/lib/eac_templates/modules/base_spec_files/path2/sub_class/b +1 -0
  333. data/sub/eac_templates/spec/lib/eac_templates/modules/base_spec_files/path2/super_class/a/a_b +1 -0
  334. data/sub/eac_templates/spec/lib/eac_templates/modules/base_spec_files/path2/super_class/b +1 -0
  335. data/sub/eac_templates/spec/lib/eac_templates/patches/object/template_spec.rb +26 -0
  336. data/sub/eac_templates/spec/lib/eac_templates/patches/object/template_spec_files/path/my_stub_with_template +1 -0
  337. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec.rb +42 -0
  338. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec_files/path1/subdir1/file1.template +1 -0
  339. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec_files/path1/subdir1/file2 +1 -0
  340. data/sub/eac_templates/spec/lib/eac_templates/sources/set_spec_files/path2/subdir1/file3.template +1 -0
  341. data/sub/eac_templates/spec/lib/eac_templates/variables/content_spec.rb +35 -0
  342. data/sub/eac_templates/spec/lib/eac_templates/variables/content_spec_files/expected_content +2 -0
  343. data/sub/eac_templates/spec/lib/eac_templates/variables/content_spec_files/source.template +2 -0
  344. data/sub/eac_templates/spec/rubocop_spec.rb +3 -0
  345. data/sub/{avm-eac_asciidoctor_base0 → eac_templates}/spec/spec_helper.rb +0 -4
  346. metadata +350 -83
  347. data/sub/avm-eac_asciidoctor_base0/avm-eac_asciidoctor_base0.gemspec +0 -24
  348. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/documents_owner.rb +0 -30
  349. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/file_formats/base/file_resource_name.rb +0 -37
  350. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/file_formats/base.rb +0 -17
  351. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/apache_host.rb +0 -19
  352. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/apache_path.rb +0 -12
  353. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/base.rb +0 -33
  354. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/body_target.rb +0 -37
  355. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/header_lines.rb +0 -92
  356. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/media.rb +0 -28
  357. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document/pre_process_line.rb +0 -64
  358. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/document.rb +0 -101
  359. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build/theme.rb +0 -41
  360. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/build.rb +0 -59
  361. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/deploy.rb +0 -28
  362. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/base.rb +0 -21
  363. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/breadcrumbs.rb +0 -55
  364. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs/document_builder.rb +0 -63
  365. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/child_docs.rb +0 -35
  366. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros/default_body.rb +0 -21
  367. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances/macros.rb +0 -13
  368. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/instances.rb +0 -11
  369. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators/base.rb +0 -28
  370. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/source_generators.rb +0 -11
  371. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base/instance_to_build.rb +0 -45
  372. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base/theme.rb +0 -46
  373. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/base.rb +0 -49
  374. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document/media.rb +0 -28
  375. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document/title.rb +0 -31
  376. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/document.rb +0 -56
  377. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/build.rb +0 -54
  378. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/document/build.rb +0 -46
  379. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/document.rb +0 -30
  380. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners/documents.rb +0 -28
  381. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runners.rb +0 -13
  382. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources.rb +0 -11
  383. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/version.rb +0 -7
  384. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/file_formats/base_spec.rb +0 -13
  385. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec.rb +0 -81
  386. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build/document_spec_files/pre_processed_root_body.adoc +0 -25
  387. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec.rb +0 -22
  388. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/_media/a_media_file +0 -1
  389. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc1/_media/a_media_file +0 -1
  390. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc1/body.adoc +0 -11
  391. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc1/title +0 -1
  392. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/body.adoc +0 -11
  393. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/doc2_1/_media/a_media_file +0 -1
  394. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/doc2_1/body.adoc +0 -11
  395. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/doc2_1/title +0 -1
  396. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.source/content/doc2/title +0 -1
  397. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/_media/a_media_file +0 -1
  398. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/_theme/main.css +0 -1
  399. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc1/_media/a_media_file +0 -1
  400. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc1/index.html +0 -1
  401. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc2/doc2_1/_media/a_media_file +0 -1
  402. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc2/doc2_1/index.html +0 -1
  403. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/doc2/index.html +0 -1
  404. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/instances/build_spec_files/first.target/index.html +0 -1
  405. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec.rb +0 -8
  406. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/content/body.adoc +0 -11
  407. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/content/title +0 -1
  408. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/source_generators/base_spec_files/no_options/theme/main.css +0 -1
  409. data/sub/avm-eac_asciidoctor_base0/spec/lib/avm/eac_asciidoctor_base0/sources/base_spec.rb +0 -16
  410. data/sub/avm-eac_asciidoctor_base0/spec/spec_helper/eac_asciidoctor_base0_stubs.rb +0 -55
  411. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/content/body.adoc +0 -11
  412. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/content/title +0 -1
  413. data/sub/avm-eac_asciidoctor_base0/template/avm/eac_asciidoctor_base0/source_generators/base/theme/main.css +0 -1
  414. /data/sub/{avm-eac_asciidoctor_base0 → eac_ruby_utils}/Gemfile +0 -0
  415. /data/sub/{avm-eac_asciidoctor_base0/spec/rubocop_spec.rb → eac_ruby_utils/spec/rubocop_check_spec.rb} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9265f04b7e93de5298e85230f877408831a90e29f98e283cb8e34e59fccfa753
4
- data.tar.gz: 7ef8d84e342637f04f601e0e7cd24b5467aef94a312c1089f21f5175a60dcaeb
3
+ metadata.gz: 787446031a9526afc4babd3a23a2aec4c16dab1b2e8271a221ab07f7bb9771b8
4
+ data.tar.gz: 771835fd2129c8d000e53989d7df0cc6d593735cd8383d024e51924e92020a95
5
5
  SHA512:
6
- metadata.gz: 901958c5e2a18cb40c1f7972aeb27c6f6d1a808650401babca74abef1be0acff0782a60e8ba02607dc670b7f51bb55e6bfa2a054a409f4bcf531328609a57729
7
- data.tar.gz: ccaf49462bc9e1de20dc17f80d61f188da7259da6526a0fce62ba258963f20a961c0f10f2295470ae8132bf1eb6c0954c869190e09ba03556fec99df4b2087bf
6
+ metadata.gz: 3bc03434fb242c584880222da4f64804c1d9f004fcb59ee84d3b53378248a46483786ff5e12528076ffd601a30fc274493d7f8606708f134ee1ad9f6b1b909cb
7
+ data.tar.gz: 3ee27159d1ec0089c30425288a4bd7fbddc57c8782cf6ef0767c87589137172c8cf634eeafe281661f9982a847b95492aef980605e2a8e3b4dac533f2efb5305
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- eac_tools (0.88.0)
5
- avm (~> 0.90, >= 0.90.1)
4
+ eac_tools (0.90.0)
5
+ avm (~> 0.91)
6
6
  avm-eac_asciidoctor_base0 (~> 0.23)
7
7
  avm-eac_generic_base0 (~> 0.13)
8
8
  avm-eac_github_base0 (~> 0.3)
@@ -20,17 +20,24 @@ PATH
20
20
  avm-eac_wordpress_base0 (~> 0.3, >= 0.3.2)
21
21
  avm-git (~> 0.17)
22
22
  avm-tools (~> 0.161)
23
- eac_ruby_utils (~> 0.121)
23
+ eac_ruby_utils (~> 0.122)
24
24
 
25
25
  PATH
26
- remote: sub/avm-eac_asciidoctor_base0
26
+ remote: sub/eac_ruby_utils
27
27
  specs:
28
- avm-eac_asciidoctor_base0 (0.23.0)
29
- asciidoctor (~> 2.0, >= 2.0.22)
30
- avm-eac_webapp_base0 (~> 0.19)
31
- eac_ruby_utils (~> 0.121)
32
- os (~> 1.1, >= 1.1.4)
33
- rouge (~> 3.30)
28
+ eac_ruby_utils (0.122.0)
29
+ activesupport (>= 4, < 7)
30
+ addressable (~> 2.8, >= 2.8.6)
31
+ bundler
32
+ filesize (~> 0.2)
33
+ net-ssh (~> 4.2)
34
+
35
+ PATH
36
+ remote: sub/eac_templates
37
+ specs:
38
+ eac_templates (0.6.0)
39
+ eac_config (~> 0.14, >= 0.14.2)
40
+ eac_ruby_utils (~> 0.122)
34
41
 
35
42
  GEM
36
43
  remote: https://rubygems.org/
@@ -50,9 +57,9 @@ GEM
50
57
  eac_ruby_utils (~> 0.119, >= 0.119.2)
51
58
  nokogiri (~> 1.15, >= 1.15.4)
52
59
  ofx-parser (~> 1.1)
53
- asciidoctor (2.0.22)
60
+ asciidoctor (2.0.23)
54
61
  ast (2.4.2)
55
- avm (0.90.1)
62
+ avm (0.91.0)
56
63
  eac_cli (~> 0.40, >= 0.40.1)
57
64
  eac_config (~> 0.14, >= 0.14.2)
58
65
  eac_docker (~> 0.7)
@@ -61,6 +68,12 @@ GEM
61
68
  eac_templates (~> 0.5, >= 0.5.1)
62
69
  minitar (~> 0.9)
63
70
  ruby-progressbar (~> 1.13)
71
+ avm-eac_asciidoctor_base0 (0.23.0)
72
+ asciidoctor (~> 2.0, >= 2.0.22)
73
+ avm-eac_webapp_base0 (~> 0.19)
74
+ eac_ruby_utils (~> 0.121)
75
+ os (~> 1.1, >= 1.1.4)
76
+ rouge (~> 3.30)
64
77
  avm-eac_generic_base0 (0.13.0)
65
78
  avm (~> 0.90)
66
79
  eac_ruby_utils (~> 0.121)
@@ -152,7 +165,7 @@ GEM
152
165
  parslet (~> 2.0)
153
166
  curb (0.9.11)
154
167
  diff-lcs (1.5.1)
155
- eac_cli (0.40.1)
168
+ eac_cli (0.41.0)
156
169
  colorize (~> 0.8, >= 0.8.1)
157
170
  eac_config (~> 0.14, >= 0.14.2)
158
171
  eac_ruby_utils (~> 0.121)
@@ -193,15 +206,6 @@ GEM
193
206
  rubocop (~> 1.60, >= 1.60.1)
194
207
  rubocop-rails (~> 2.23, >= 2.23.1)
195
208
  rubocop-rspec (~> 2.26, >= 2.26.1)
196
- eac_ruby_utils (0.121.0)
197
- activesupport (>= 4, < 7)
198
- addressable (~> 2.8, >= 2.8.6)
199
- bundler
200
- filesize (~> 0.2)
201
- net-ssh (~> 4.2)
202
- eac_templates (0.5.1)
203
- eac_config (~> 0.14, >= 0.14.1)
204
- eac_ruby_utils (~> 0.121)
205
209
  faraday (2.8.1)
206
210
  base64
207
211
  faraday-net_http (>= 2.0, < 3.1)
@@ -222,13 +226,13 @@ GEM
222
226
  rchardet (~> 1.8)
223
227
  hpricot (0.8.6)
224
228
  htmlbeautifier (1.4.3)
225
- i18n (1.14.4)
229
+ i18n (1.14.5)
226
230
  concurrent-ruby (~> 1.0)
227
231
  json (2.7.2)
228
232
  language_server-protocol (3.17.0.3)
229
233
  minitar (0.9)
230
- minitest (5.22.3)
231
- multipart-post (2.4.0)
234
+ minitest (5.23.0)
235
+ multipart-post (2.4.1)
232
236
  net-ssh (4.2.0)
233
237
  nokogiri (1.15.6-x86_64-linux)
234
238
  racc (~> 1.4)
@@ -245,11 +249,12 @@ GEM
245
249
  tty-color (~> 0.5)
246
250
  public_suffix (5.0.5)
247
251
  racc (1.7.3)
248
- rack (3.0.10)
252
+ rack (3.0.11)
249
253
  rainbow (3.1.1)
250
254
  rchardet (1.8.0)
251
- regexp_parser (2.9.0)
252
- rexml (3.2.6)
255
+ regexp_parser (2.9.2)
256
+ rexml (3.2.8)
257
+ strscan (>= 3.0.9)
253
258
  rouge (3.30.0)
254
259
  rspec (3.13.0)
255
260
  rspec-core (~> 3.13.0)
@@ -260,11 +265,11 @@ GEM
260
265
  rspec-expectations (3.13.0)
261
266
  diff-lcs (>= 1.2.0, < 2.0)
262
267
  rspec-support (~> 3.13.0)
263
- rspec-mocks (3.13.0)
268
+ rspec-mocks (3.13.1)
264
269
  diff-lcs (>= 1.2.0, < 2.0)
265
270
  rspec-support (~> 3.13.0)
266
271
  rspec-support (3.13.1)
267
- rubocop (1.63.4)
272
+ rubocop (1.63.5)
268
273
  json (~> 2.3)
269
274
  language_server-protocol (>= 3.17.0)
270
275
  parallel (~> 1.10)
@@ -281,12 +286,12 @@ GEM
281
286
  rubocop (~> 1.41)
282
287
  rubocop-factory_bot (2.25.1)
283
288
  rubocop (~> 1.41)
284
- rubocop-rails (2.24.1)
289
+ rubocop-rails (2.25.0)
285
290
  activesupport (>= 4.2.0)
286
291
  rack (>= 1.1)
287
292
  rubocop (>= 1.33.0, < 2.0)
288
293
  rubocop-ast (>= 1.31.1, < 2.0)
289
- rubocop-rspec (2.29.1)
294
+ rubocop-rspec (2.29.2)
290
295
  rubocop (~> 1.40)
291
296
  rubocop-capybara (~> 2.17)
292
297
  rubocop-factory_bot (~> 2.22)
@@ -301,6 +306,7 @@ GEM
301
306
  unicode-display_width (>= 1.5, < 3.0)
302
307
  unicode_utils (~> 1.4)
303
308
  strings-ansi (0.2.0)
309
+ strscan (3.1.0)
304
310
  tty-color (0.6.0)
305
311
  tty-screen (0.8.2)
306
312
  tty-table (0.12.0)
@@ -311,15 +317,16 @@ GEM
311
317
  concurrent-ruby (~> 1.0)
312
318
  unicode-display_width (2.5.0)
313
319
  unicode_utils (1.4.0)
314
- zeitwerk (2.6.13)
320
+ zeitwerk (2.6.14)
315
321
  zlib (2.1.1)
316
322
 
317
323
  PLATFORMS
318
324
  x86_64-linux
319
325
 
320
326
  DEPENDENCIES
321
- avm-eac_asciidoctor_base0!
322
327
  eac_ruby_gem_support (~> 0.10)
328
+ eac_ruby_utils!
329
+ eac_templates!
323
330
  eac_tools!
324
331
 
325
332
  BUNDLED WITH
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacTools
4
- VERSION = '0.88.0'
4
+ VERSION = '0.90.0'
5
5
  end
@@ -0,0 +1,16 @@
1
+ Copyright 2018 Eduardo Henrique Bogoni <eduardobogoni@gmail.com>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
4
+ associated documentation files (the "Software"), to deal in the Software without restriction,
5
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
6
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
7
+ furnished to do so, subject to the following conditions:
8
+
9
+ The above copyright notice and this permission notice shall be included in all copies or substantial
10
+ portions of the Software.
11
+
12
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
13
+ NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
14
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
15
+ OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
16
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,3 @@
1
+ = E.A.C. Ruby Utilities
2
+
3
+ Utilities for E.A.C.'s Ruby projects.
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
4
+
5
+ # Maintain your gem's version:
6
+ require 'eac_ruby_utils/version'
7
+
8
+ # Describe your gem and declare its dependencies:
9
+ Gem::Specification.new do |s|
10
+ s.name = 'eac_ruby_utils'
11
+ s.version = EacRubyUtils::VERSION
12
+ s.authors = ['Esquilo Azul Company']
13
+ s.summary = 'Utilities for E.A.C.\'s Ruby projects.'
14
+ s.license = 'MIT'
15
+
16
+ s.files = Dir['{lib}/**/*', 'MIT-LICENSE', 'README.rdoc']
17
+ s.required_ruby_version = '>= 2.7'
18
+
19
+ s.add_dependency 'activesupport', '>= 4', '< 7'
20
+ s.add_dependency 'addressable', '~> 2.8', '>= 2.8.6'
21
+ s.add_dependency 'bundler'
22
+ s.add_dependency 'filesize', '~> 0.2'
23
+ s.add_dependency 'net-ssh', '~> 4.2'
24
+ s.add_development_dependency 'avm-eac_ubuntu_base0', '~> 0.5'
25
+ s.add_development_dependency 'eac_ruby_gem_support', '~> 0.9'
26
+ end
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/module_ancestors_variable/hash'
4
+ require 'eac_ruby_utils/patches/class/self_included_modules'
5
+ require 'eac_ruby_utils/patches/module/common_concern'
6
+ require 'eac_ruby_utils/unimplemented_method_error'
7
+
8
+ module EacRubyUtils
9
+ # Support to abstract methods.
10
+ #
11
+ # Usage:
12
+ #
13
+ # require 'eac_ruby_utils/acts_as_abstract'
14
+ #
15
+ # class BaseClass
16
+ # include EacRubyUtils::ActsAsAbstract
17
+ #
18
+ # abstract_methods :mymethod
19
+ # end
20
+ #
21
+ # BaseClass.new.mymethod # raise "Abstract method: mymethod"
22
+ #
23
+ # class SubClass
24
+ # def mymethod
25
+ # "Implemented"
26
+ # end
27
+ # end
28
+ #
29
+ # SubClass.new.mymethod # return "Implemented"
30
+ module ActsAsAbstract
31
+ common_concern
32
+
33
+ class << self
34
+ def abstract?(a_class)
35
+ a_class.self_included_modules.include?(::EacRubyUtils::ActsAsAbstract)
36
+ end
37
+ end
38
+
39
+ module ClassMethods
40
+ # @param name [Symbol]
41
+ # @param arguments [Enumerable<Symbol>]
42
+ # @return [void]
43
+ def abstract_method(name, *arguments)
44
+ abstract_methods_hash[name.to_sym] = arguments
45
+ end
46
+
47
+ # @param methods_names [Enumerable<Object>] Each item can be a symbolizable or a hash.
48
+ # @return [void]
49
+ def abstract_methods(*methods_names)
50
+ methods_names.each do |method_name|
51
+ if method_name.is_a?(::Hash)
52
+ abstract_methods_from_hash(method_name)
53
+ else
54
+ abstract_method(method_name)
55
+ end
56
+ end
57
+ end
58
+
59
+ private
60
+
61
+ # @param hash [Hash]
62
+ # @return [void]
63
+ def abstract_methods_from_hash(hash)
64
+ hash.each { |name, arguments| abstract_method(name, *arguments) }
65
+ end
66
+
67
+ # @return [Hash<Symbol, Array]
68
+ def abstract_methods_hash
69
+ @abstract_methods_hash ||=
70
+ ::EacRubyUtils::ModuleAncestorsVariable::Hash.new(self, __method__)
71
+ end
72
+ end
73
+
74
+ module InstanceMethods
75
+ def respond_to_missing?(method_name, include_private = false)
76
+ super || abstract_method?(method_name)
77
+ end
78
+
79
+ def method_missing(method_name, *arguments, &block)
80
+ raise_abstract_method(method_name) if abstract_method?(method_name)
81
+
82
+ super
83
+ end
84
+
85
+ # @param method_name [Symbol]
86
+ # @return [Boolean]
87
+ def abstract_method?(method_name)
88
+ return false if self.class.method_defined?(method_name)
89
+
90
+ self.class.send(:abstract_methods_hash).key?(method_name.to_sym)
91
+ end
92
+
93
+ def raise_abstract_method(method_name, arguments = [])
94
+ raise ::EacRubyUtils::UnimplementedMethodError,
95
+ "Abstract method #{method_name}(#{arguments.join(', ')}) hit in " \
96
+ "#{self}\" (Class: #{self.class})"
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/acts_as_immutable/enumerable_accessor'
4
+
5
+ module EacRubyUtils
6
+ module ActsAsImmutable
7
+ class ArrayAccessor < ::EacRubyUtils::ActsAsImmutable::EnumerableAccessor
8
+ INITIAL_VALUE = [].freeze
9
+
10
+ # @param value [Object]
11
+ # @return [Array]
12
+ def immutable_value_set_assert(value)
13
+ return value if value.is_a?(::Array)
14
+ return value.to_a if value.respond_to?(:to_a)
15
+
16
+ Array(value)
17
+ end
18
+
19
+ # @return [Array] A empty array.
20
+ def initial_value
21
+ INITIAL_VALUE
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/patches/object/if_respond'
4
+
5
+ module EacRubyUtils
6
+ module ActsAsImmutable
7
+ class BaseAccessor
8
+ FILTER_GET_METHOD_NAME_FORMAT = '%s_get_filter'
9
+ FILTER_SET_METHOD_NAME_FORMAT = '%s_set_filter'
10
+
11
+ common_constructor :name do
12
+ self.name = name.to_sym
13
+ end
14
+
15
+ def duplicate_object(object)
16
+ accessor_new_value = yield(immutable_value_get(object))
17
+ new_values = object.send(:immutable_values_get).merge(name => accessor_new_value)
18
+ r = object.class.new(*object.immutable_constructor_args)
19
+ r.send(:immutable_values_set, new_values)
20
+ r
21
+ end
22
+
23
+ def immutable_value_get(object)
24
+ object.send(:immutable_values_get)[name]
25
+ end
26
+
27
+ # @param object [Object]
28
+ # @return [Object]
29
+ def immutable_value_get_filtered(object)
30
+ r = immutable_value_get(object)
31
+ if object.respond_to?(immutable_value_get_filtered_method_name, true)
32
+ r = object.send(immutable_value_get_filtered_method_name, r)
33
+ end
34
+ r
35
+ end
36
+
37
+ # @return [Symbol]
38
+ def immutable_value_get_filtered_method_name
39
+ format(FILTER_GET_METHOD_NAME_FORMAT, name)
40
+ end
41
+
42
+ # @param object [Object]
43
+ # @return [Object]
44
+ def immutable_value_set_filtered(object, value)
45
+ if object.respond_to?(immutable_value_set_filtered_method_name, true)
46
+ value = object.send(immutable_value_set_filtered_method_name, value)
47
+ end
48
+ immutable_value_set(object, value)
49
+ end
50
+
51
+ # @return [Symbol]
52
+ def immutable_value_set_filtered_method_name
53
+ format(FILTER_SET_METHOD_NAME_FORMAT, name)
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/acts_as_immutable/common_accessor'
4
+ require 'eac_ruby_utils/patches/class/common_constructor'
5
+
6
+ module EacRubyUtils
7
+ module ActsAsImmutable
8
+ class BooleanAccessor < ::EacRubyUtils::ActsAsImmutable::CommonAccessor
9
+ def apply(klass)
10
+ super
11
+ accessor = self
12
+ klass.send(:define_method, "#{name}?") { send(accessor.name) }
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyUtils
4
+ module ActsAsImmutable
5
+ module ClassMethods
6
+ def immutable_accessor(*accessors)
7
+ options = accessors.extract_options!
8
+ options[:type] ||= const_get('TYPE_COMMON')
9
+ accessors.each do |name|
10
+ class_name = "#{options.fetch(:type).to_s.camelize}Accessor"
11
+ ::EacRubyUtils::ActsAsImmutable.const_get(class_name).new(name).apply(self)
12
+ end
13
+ end
14
+
15
+ private
16
+
17
+ def imutable_single_accessor(name, options); end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/acts_as_immutable/base_accessor'
4
+ require 'eac_ruby_utils/patches/class/common_constructor'
5
+
6
+ module EacRubyUtils
7
+ module ActsAsImmutable
8
+ class CommonAccessor < ::EacRubyUtils::ActsAsImmutable::BaseAccessor
9
+ def apply(klass)
10
+ accessor = self
11
+ klass.send(:define_method, name) do |*args|
12
+ case args.count
13
+ when 0 then next accessor.immutable_value_get_filtered(self)
14
+ when 1 then next accessor.immutable_value_set_filtered(self, args.first)
15
+ else
16
+ raise ::ArgumentError, "wrong number of arguments (given #{args.count}, expected 0..1)"
17
+ end
18
+ end
19
+ end
20
+
21
+ def immutable_value_get(object)
22
+ object.send(:immutable_values_get)[name]
23
+ end
24
+
25
+ def immutable_value_set(object, value)
26
+ duplicate_object(object) { |_old_value| value }
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/inflector'
4
+ require 'eac_ruby_utils/acts_as_immutable/base_accessor'
5
+ require 'eac_ruby_utils/patches/class/common_constructor'
6
+
7
+ module EacRubyUtils
8
+ module ActsAsImmutable
9
+ # Should implement in concrect classes:
10
+ # * immutable_value_set_assert(value)
11
+ # * initial_value()
12
+ class EnumerableAccessor < ::EacRubyUtils::ActsAsImmutable::BaseAccessor
13
+ def apply(klass)
14
+ apply_singular(klass)
15
+ apply_plural(klass)
16
+ end
17
+
18
+ def apply_plural(klass)
19
+ accessor = self
20
+ klass.send(:define_method, ::ActiveSupport::Inflector.pluralize(name)) do |*args|
21
+ case args.count
22
+ when 0 then next accessor.immutable_value_get_filtered(self)
23
+ when 1 then next accessor.immutable_value_set_filtered(self, args.first)
24
+ else
25
+ raise ::ArgumentError, "wrong number of arguments (given #{args.count}, expected 0..1)"
26
+ end
27
+ end
28
+ end
29
+
30
+ def apply_singular(klass)
31
+ accessor = self
32
+ klass.send(:define_method, name) do |value|
33
+ accessor.immutable_value_push(self, value)
34
+ end
35
+ end
36
+
37
+ def immutable_value_get(object)
38
+ super || initial_value.dup
39
+ end
40
+
41
+ def immutable_value_push(object, value)
42
+ duplicate_object(object) do |old_value|
43
+ (old_value || initial_value.dup) + [value]
44
+ end
45
+ end
46
+
47
+ def immutable_value_set(object, value)
48
+ duplicate_object(object) { |_old_value| immutable_value_set_assert(value) }
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/acts_as_immutable/base_accessor'
4
+ require 'eac_ruby_utils/patches/class/common_constructor'
5
+
6
+ module EacRubyUtils
7
+ module ActsAsImmutable
8
+ class HashAccessor < ::EacRubyUtils::ActsAsImmutable::BaseAccessor
9
+ def apply(klass)
10
+ apply_plural(klass)
11
+ apply_singular(klass)
12
+ end
13
+
14
+ def immutable_value_get(object)
15
+ super || {}
16
+ end
17
+
18
+ def immutable_value_get_single(object, key)
19
+ immutable_value_get(object)[key]
20
+ end
21
+
22
+ def immutable_value_set(object, new_hash)
23
+ duplicate_object(object) { |_old_value| new_hash }
24
+ end
25
+
26
+ def immutable_value_set_single(object, key, value)
27
+ immutable_value_set(object, immutable_value_get(object).merge(key => value))
28
+ end
29
+
30
+ private
31
+
32
+ def apply_plural(klass)
33
+ accessor = self
34
+ klass.send(:define_method, ::ActiveSupport::Inflector.pluralize(name)) do |*args|
35
+ case args.count
36
+ when 0 then next accessor.immutable_value_get_filtered(self)
37
+ when 1 then next accessor.immutable_value_set_filtered(self, args[0])
38
+ else
39
+ raise ::ArgumentError, "wrong number of arguments (given #{args.count}, expected 0..1)"
40
+ end
41
+ end
42
+ end
43
+
44
+ def apply_singular(klass)
45
+ accessor = self
46
+ klass.send(:define_method, name) do |*args|
47
+ case args.count
48
+ when 1 then next accessor.immutable_value_get_single(self, args[0])
49
+ when 2 then next accessor.immutable_value_set_single(self, *args[0..1])
50
+ else
51
+ raise ::ArgumentError, "wrong number of arguments (given #{args.count}, expected 1..2)"
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyUtils
4
+ module ActsAsImmutable
5
+ module InstanceMethods
6
+ def immutable_constructor_args
7
+ []
8
+ end
9
+
10
+ private
11
+
12
+ def immutable_values_get
13
+ @immutable_values || {}
14
+ end
15
+
16
+ def immutable_values_set(new_values)
17
+ @immutable_values = new_values
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/acts_as_immutable/enumerable_accessor'
4
+
5
+ module EacRubyUtils
6
+ module ActsAsImmutable
7
+ class SetAccessor < ::EacRubyUtils::ActsAsImmutable::EnumerableAccessor
8
+ INITIAL_VALUE = ::Set.new.freeze
9
+
10
+ # @param value [Object]
11
+ # @return [Set]
12
+ def immutable_value_set_assert(value)
13
+ return value if value.is_a?(::Set)
14
+ return value.to_set if value.respond_to?(:to_set)
15
+
16
+ ::Set.new(value)
17
+ end
18
+
19
+ # @return [Set] A empty Set.
20
+ def initial_value
21
+ INITIAL_VALUE
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/patches/module/common_concern'
4
+ require 'eac_ruby_utils/require_sub'
5
+
6
+ module EacRubyUtils
7
+ module ActsAsImmutable
8
+ ::EacRubyUtils.require_sub __FILE__
9
+
10
+ common_concern do
11
+ include ::EacRubyUtils::Listable
12
+ lists.add_symbol :type, :array, :boolean, :common, :hash
13
+ end
14
+ end
15
+ end