hirohig_palindrome 0.1.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 (283) hide show
  1. checksums.yaml +7 -0
  2. data/.DS_Store +0 -0
  3. data/.gitignore +8 -0
  4. data/.travis.yml +6 -0
  5. data/Gemfile +8 -0
  6. data/Gemfile.lock +30 -0
  7. data/README.md +36 -0
  8. data/Rakefile +10 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +8 -0
  11. data/hirohig_palindrome.gemspec +33 -0
  12. data/lib/hirohig_palindrome/version.rb +3 -0
  13. data/lib/hirohig_palindrome.rb +17 -0
  14. data/vendor/.DS_Store +0 -0
  15. data/vendor/bundle/.DS_Store +0 -0
  16. data/vendor/bundle/ruby/.DS_Store +0 -0
  17. data/vendor/bundle/ruby/2.6.0/.DS_Store +0 -0
  18. data/vendor/bundle/ruby/2.6.0/bin/rake +27 -0
  19. data/vendor/bundle/ruby/2.6.0/cache/ansi-1.5.0.gem +0 -0
  20. data/vendor/bundle/ruby/2.6.0/cache/builder-3.2.4.gem +0 -0
  21. data/vendor/bundle/ruby/2.6.0/cache/minitest-5.14.0.gem +0 -0
  22. data/vendor/bundle/ruby/2.6.0/cache/minitest-reporters-1.2.0.gem +0 -0
  23. data/vendor/bundle/ruby/2.6.0/cache/rake-12.3.3.gem +0 -0
  24. data/vendor/bundle/ruby/2.6.0/cache/ruby-progressbar-1.10.1.gem +0 -0
  25. data/vendor/bundle/ruby/2.6.0/gems/.DS_Store +0 -0
  26. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/.index +77 -0
  27. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/.yardopts +8 -0
  28. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/DEMO.md +451 -0
  29. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/HISTORY.md +217 -0
  30. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/LICENSE.txt +23 -0
  31. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/NOTICE.md +170 -0
  32. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/README.md +91 -0
  33. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/01_ansicode.md +65 -0
  34. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/02_core.md +11 -0
  35. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/03_logger.md +30 -0
  36. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/04_progressbar.md +62 -0
  37. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/05_mixin.md +37 -0
  38. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/06_string.md +56 -0
  39. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/07_columns.md +89 -0
  40. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/08_table.md +28 -0
  41. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/09_diff.md +47 -0
  42. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/10_bbcode.md +24 -0
  43. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/11_terminal.md +8 -0
  44. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/applique/ae.rb +1 -0
  45. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/applique/output.rb +5 -0
  46. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/bbcode.rb +334 -0
  47. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/chain.rb +50 -0
  48. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/chart.rb +100 -0
  49. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/code.rb +349 -0
  50. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/columns.rb +197 -0
  51. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/constants.rb +25 -0
  52. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/core.rb +30 -0
  53. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/diff.rb +215 -0
  54. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/hexdump.rb +122 -0
  55. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/logger.rb +211 -0
  56. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/mixin.rb +121 -0
  57. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/progressbar.rb +292 -0
  58. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/string.rb +254 -0
  59. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/table.rb +179 -0
  60. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal/curses.rb +26 -0
  61. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal/stty.rb +62 -0
  62. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal/termios.rb +68 -0
  63. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal/win32.rb +107 -0
  64. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal.rb +44 -0
  65. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/version.rb +15 -0
  66. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi.rb +22 -0
  67. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi.yml +77 -0
  68. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/case_ansicode.rb +43 -0
  69. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/case_bbcode.rb +35 -0
  70. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/case_mixin.rb +35 -0
  71. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/case_progressbar.rb +21 -0
  72. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/test_helper.rb +3 -0
  73. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/CHANGES +119 -0
  74. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/MIT-LICENSE +20 -0
  75. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/README.md +258 -0
  76. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/Rakefile +194 -0
  77. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/builder.blurb +27 -0
  78. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/builder.gemspec +45 -0
  79. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/doc/jamis.rb +592 -0
  80. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/doc/releases/builder-1.2.4.rdoc +31 -0
  81. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/doc/releases/builder-2.0.0.rdoc +46 -0
  82. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/doc/releases/builder-2.1.1.rdoc +58 -0
  83. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/blankslate.rb +138 -0
  84. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/blankslate.rb +24 -0
  85. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/version.rb +9 -0
  86. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/xchar.rb +198 -0
  87. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/xmlbase.rb +200 -0
  88. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/xmlevents.rb +64 -0
  89. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/xmlmarkup.rb +345 -0
  90. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder.rb +14 -0
  91. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/rakelib/publish.rake +21 -0
  92. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/rakelib/tags.rake +63 -0
  93. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/rakelib/testing.rake +8 -0
  94. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/helper.rb +13 -0
  95. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/performance.rb +42 -0
  96. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/preload.rb +40 -0
  97. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_blankslate.rb +208 -0
  98. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_eventbuilder.rb +151 -0
  99. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_markupbuilder.rb +617 -0
  100. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_method_caching.rb +63 -0
  101. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_namecollision.rb +40 -0
  102. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_xchar.rb +85 -0
  103. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/.autotest +34 -0
  104. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/History.rdoc +1380 -0
  105. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/Manifest.txt +27 -0
  106. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/README.rdoc +764 -0
  107. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/Rakefile +72 -0
  108. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/design_rationale.rb +52 -0
  109. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/hoe/minitest.rb +32 -0
  110. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/assertions.rb +807 -0
  111. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/autorun.rb +13 -0
  112. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/benchmark.rb +455 -0
  113. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/expectations.rb +303 -0
  114. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/hell.rb +11 -0
  115. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/mock.rb +240 -0
  116. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/parallel.rb +70 -0
  117. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/pride.rb +4 -0
  118. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/pride_plugin.rb +142 -0
  119. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/spec.rb +342 -0
  120. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/test.rb +220 -0
  121. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/unit.rb +45 -0
  122. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest.rb +1053 -0
  123. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/metametameta.rb +117 -0
  124. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_assertions.rb +1567 -0
  125. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_benchmark.rb +137 -0
  126. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_mock.rb +872 -0
  127. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_reporter.rb +299 -0
  128. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_spec.rb +1041 -0
  129. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_test.rb +1080 -0
  130. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/.gitignore +27 -0
  131. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/.ruby-gemset +1 -0
  132. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/.travis.yml +10 -0
  133. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/.yardopts +6 -0
  134. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/CHANGELOG.md +40 -0
  135. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/Gemfile +2 -0
  136. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/LICENSE +20 -0
  137. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/README.md +115 -0
  138. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/Rakefile +60 -0
  139. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/assets/default-reporter.png +0 -0
  140. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/assets/mean_time_reporter.png +0 -0
  141. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/assets/progress-reporter.png +0 -0
  142. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/assets/spec-reporter.png +0 -0
  143. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/extensible_backtrace_filter.rb +67 -0
  144. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/minitest_reporter_plugin.rb +75 -0
  145. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/old_activesupport_fix.rb +24 -0
  146. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/relative_position.rb +26 -0
  147. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/ansi.rb +31 -0
  148. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/base_reporter.rb +117 -0
  149. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/default_reporter.rb +228 -0
  150. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/html_reporter.rb +221 -0
  151. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/junit_reporter.rb +157 -0
  152. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/mean_time_reporter.rb +392 -0
  153. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/progress_reporter.rb +96 -0
  154. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/ruby_mate_reporter.rb +54 -0
  155. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/rubymine_reporter.rb +117 -0
  156. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/spec_reporter.rb +61 -0
  157. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/version.rb +5 -0
  158. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters.rb +89 -0
  159. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/templates/index.html.erb +83 -0
  160. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/minitest-reporters.gemspec +31 -0
  161. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/junit_filename_bug_example_test.rb +21 -0
  162. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/mean_time_test.rb +8 -0
  163. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/progress_detailed_skip_test.rb +8 -0
  164. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/progress_test.rb +8 -0
  165. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/sample_test.rb +15 -0
  166. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/spec_test.rb +13 -0
  167. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/gallery/bad_test.rb +25 -0
  168. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/gallery/good_test.rb +14 -0
  169. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/integration/reporters/junit_reporter_test.rb +12 -0
  170. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/integration/reporters/mean_time_reporter_test.rb +7 -0
  171. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/integration/reporters/progress_reporter_test.rb +34 -0
  172. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/test_helper.rb +22 -0
  173. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/extensible_backtrace_filter_test.rb +42 -0
  174. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/mean_time_reporter_unit_test.rb +152 -0
  175. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/minitest_reporter_plugin_test.rb +14 -0
  176. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/reporters_test.rb +52 -0
  177. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/spec_reporter_test.rb +41 -0
  178. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/CONTRIBUTING.rdoc +43 -0
  179. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/Gemfile +3 -0
  180. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/History.rdoc +2344 -0
  181. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/MIT-LICENSE +21 -0
  182. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/README.rdoc +156 -0
  183. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/Rakefile +41 -0
  184. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/azure-pipelines.yml +11 -0
  185. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/bundle +105 -0
  186. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/console +7 -0
  187. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/rake +29 -0
  188. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/rdoc +29 -0
  189. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/rubocop +29 -0
  190. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/setup +6 -0
  191. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/command_line_usage.rdoc +158 -0
  192. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/Rakefile1 +38 -0
  193. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/Rakefile2 +35 -0
  194. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/a.c +6 -0
  195. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/b.c +6 -0
  196. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/main.c +11 -0
  197. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/glossary.rdoc +42 -0
  198. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/jamis.rb +592 -0
  199. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/proto_rake.rdoc +127 -0
  200. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/rake.1 +156 -0
  201. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/rakefile.rdoc +622 -0
  202. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/rational.rdoc +151 -0
  203. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/exe/rake +27 -0
  204. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/application.rb +824 -0
  205. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/backtrace.rb +24 -0
  206. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/clean.rb +78 -0
  207. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/cloneable.rb +17 -0
  208. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb +107 -0
  209. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/default_loader.rb +15 -0
  210. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb +195 -0
  211. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/early_time.rb +22 -0
  212. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/ext/core.rb +26 -0
  213. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/ext/string.rb +176 -0
  214. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb +25 -0
  215. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_list.rb +435 -0
  216. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_task.rb +54 -0
  217. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_utils.rb +137 -0
  218. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb +145 -0
  219. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb +57 -0
  220. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb +17 -0
  221. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/late_time.rb +18 -0
  222. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/linked_list.rb +112 -0
  223. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb +54 -0
  224. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/multi_task.rb +14 -0
  225. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/name_space.rb +38 -0
  226. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/packagetask.rb +207 -0
  227. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/phony.rb +16 -0
  228. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/private_reader.rb +21 -0
  229. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/promise.rb +100 -0
  230. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb +30 -0
  231. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/rake_module.rb +67 -0
  232. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb +27 -0
  233. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb +20 -0
  234. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/scope.rb +43 -0
  235. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task.rb +413 -0
  236. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb +8 -0
  237. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task_arguments.rb +109 -0
  238. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task_manager.rb +324 -0
  239. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/tasklib.rb +12 -0
  240. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/testtask.rb +224 -0
  241. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb +49 -0
  242. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/thread_pool.rb +163 -0
  243. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/trace_output.rb +23 -0
  244. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/version.rb +10 -0
  245. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/win32.rb +51 -0
  246. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake.rb +71 -0
  247. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/rake.gemspec +42 -0
  248. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/LICENSE.txt +19 -0
  249. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/README.md +38 -0
  250. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/Rakefile +2 -0
  251. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/base.rb +183 -0
  252. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/calculators/length.rb +100 -0
  253. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/calculators/running_average.rb +9 -0
  254. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/bar.rb +102 -0
  255. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/percentage.rb +29 -0
  256. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/rate.rb +43 -0
  257. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/time.rb +107 -0
  258. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/title.rb +13 -0
  259. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components.rb +5 -0
  260. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/errors/invalid_progress_error.rb +4 -0
  261. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format/formatter.rb +27 -0
  262. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format/molecule.rb +60 -0
  263. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format/string.rb +36 -0
  264. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format.rb +3 -0
  265. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/output.rb +68 -0
  266. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/outputs/non_tty.rb +47 -0
  267. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/outputs/null.rb +33 -0
  268. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/outputs/tty.rb +32 -0
  269. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/progress.rb +118 -0
  270. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/refinements/enumerator.rb +23 -0
  271. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/refinements.rb +1 -0
  272. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/throttle.rb +25 -0
  273. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/time.rb +32 -0
  274. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/timer.rb +72 -0
  275. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/version.rb +3 -0
  276. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar.rb +22 -0
  277. data/vendor/bundle/ruby/2.6.0/specifications/ansi-1.5.0.gemspec +49 -0
  278. data/vendor/bundle/ruby/2.6.0/specifications/builder-3.2.4.gemspec +23 -0
  279. data/vendor/bundle/ruby/2.6.0/specifications/minitest-5.14.0.gemspec +41 -0
  280. data/vendor/bundle/ruby/2.6.0/specifications/minitest-reporters-1.2.0.gemspec +48 -0
  281. data/vendor/bundle/ruby/2.6.0/specifications/rake-12.3.3.gemspec +49 -0
  282. data/vendor/bundle/ruby/2.6.0/specifications/ruby-progressbar-1.10.1.gemspec +46 -0
  283. metadata +326 -0
@@ -0,0 +1,138 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #--
4
+ # Copyright 2004, 2006 by Jim Weirich (jim@weirichhouse.org).
5
+ # All rights reserved.
6
+
7
+ # Permission is granted for use, copying, modification, distribution,
8
+ # and distribution of modified versions of this work as long as the
9
+ # above copyright notice is included.
10
+ #++
11
+
12
+ class String
13
+ if instance_methods.first.is_a?(Symbol)
14
+ def _blankslate_as_name
15
+ to_sym
16
+ end
17
+ else
18
+ def _blankslate_as_name
19
+ self
20
+ end
21
+ end
22
+ end
23
+
24
+ class Symbol
25
+ if instance_methods.first.is_a?(Symbol)
26
+ def _blankslate_as_name
27
+ self
28
+ end
29
+ else
30
+ def _blankslate_as_name
31
+ to_s
32
+ end
33
+ end
34
+ end
35
+
36
+ ######################################################################
37
+ # BlankSlate provides an abstract base class with no predefined
38
+ # methods (except for <tt>\_\_send__</tt> and <tt>\_\_id__</tt>).
39
+ # BlankSlate is useful as a base class when writing classes that
40
+ # depend upon <tt>method_missing</tt> (e.g. dynamic proxies).
41
+ #
42
+ class BlankSlate
43
+ class << self
44
+
45
+ # Hide the method named +name+ in the BlankSlate class. Don't
46
+ # hide +instance_eval+ or any method beginning with "__".
47
+ def hide(name)
48
+ warn_level = $VERBOSE
49
+ $VERBOSE = nil
50
+ if instance_methods.include?(name._blankslate_as_name) &&
51
+ name !~ /^(__|instance_eval$)/
52
+ @hidden_methods ||= {}
53
+ @hidden_methods[name.to_sym] = instance_method(name)
54
+ undef_method name
55
+ end
56
+ ensure
57
+ $VERBOSE = warn_level
58
+ end
59
+
60
+ def find_hidden_method(name)
61
+ @hidden_methods ||= {}
62
+ @hidden_methods[name] || superclass.find_hidden_method(name)
63
+ end
64
+
65
+ # Redefine a previously hidden method so that it may be called on a blank
66
+ # slate object.
67
+ def reveal(name)
68
+ hidden_method = find_hidden_method(name)
69
+ fail "Don't know how to reveal method '#{name}'" unless hidden_method
70
+ define_method(name, hidden_method)
71
+ end
72
+ end
73
+
74
+ instance_methods.each { |m| hide(m) }
75
+ end
76
+
77
+ ######################################################################
78
+ # Since Ruby is very dynamic, methods added to the ancestors of
79
+ # BlankSlate <em>after BlankSlate is defined</em> will show up in the
80
+ # list of available BlankSlate methods. We handle this by defining a
81
+ # hook in the Object and Kernel classes that will hide any method
82
+ # defined after BlankSlate has been loaded.
83
+ #
84
+ module Kernel
85
+ class << self
86
+ alias_method :blank_slate_method_added, :method_added
87
+
88
+ # Detect method additions to Kernel and remove them in the
89
+ # BlankSlate class.
90
+ def method_added(name)
91
+ result = blank_slate_method_added(name)
92
+ return result if self != Kernel
93
+ BlankSlate.hide(name)
94
+ result
95
+ end
96
+ end
97
+ end
98
+
99
+ ######################################################################
100
+ # Same as above, except in Object.
101
+ #
102
+ class Object
103
+ class << self
104
+ alias_method :blank_slate_method_added, :method_added
105
+
106
+ # Detect method additions to Object and remove them in the
107
+ # BlankSlate class.
108
+ def method_added(name)
109
+ result = blank_slate_method_added(name)
110
+ return result if self != Object
111
+ BlankSlate.hide(name)
112
+ result
113
+ end
114
+
115
+ def find_hidden_method(name)
116
+ nil
117
+ end
118
+ end
119
+ end
120
+
121
+ ######################################################################
122
+ # Also, modules included into Object need to be scanned and have their
123
+ # instance methods removed from blank slate. In theory, modules
124
+ # included into Kernel would have to be removed as well, but a
125
+ # "feature" of Ruby prevents late includes into modules from being
126
+ # exposed in the first place.
127
+ #
128
+ class Module
129
+ alias blankslate_original_append_features append_features
130
+ def append_features(mod)
131
+ result = blankslate_original_append_features(mod)
132
+ return result if mod != Object
133
+ instance_methods.each do |name|
134
+ BlankSlate.hide(name)
135
+ end
136
+ result
137
+ end
138
+ end
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #--
4
+ # Copyright 2004, 2006 by Jim Weirich (jim@weirichhouse.org).
5
+ # All rights reserved.
6
+
7
+ # Permission is granted for use, copying, modification, distribution,
8
+ # and distribution of modified versions of this work as long as the
9
+ # above copyright notice is included.
10
+ #++
11
+
12
+ ######################################################################
13
+ # BlankSlate has been promoted to a top level name and is now
14
+ # available as a standalone gem. We make the name available in the
15
+ # Builder namespace for compatibility.
16
+ #
17
+ module Builder
18
+ if Object::const_defined?(:BasicObject)
19
+ BlankSlate = ::BasicObject
20
+ else
21
+ require 'blankslate'
22
+ BlankSlate = ::BlankSlate
23
+ end
24
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+ module Builder
3
+ VERSION_NUMBERS = [
4
+ VERSION_MAJOR = 3,
5
+ VERSION_MINOR = 2,
6
+ VERSION_BUILD = 4,
7
+ ]
8
+ VERSION = VERSION_NUMBERS.join(".")
9
+ end
@@ -0,0 +1,198 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ # The XChar library is provided courtesy of Sam Ruby (See
5
+ # http://intertwingly.net/stories/2005/09/28/xchar.rb)
6
+
7
+ # --------------------------------------------------------------------
8
+
9
+ # If the Builder::XChar module is not currently defined, fail on any
10
+ # name clashes in standard library classes.
11
+
12
+ module Builder
13
+ def self.check_for_name_collision(klass, method_name, defined_constant=nil)
14
+ if klass.method_defined?(method_name.to_s)
15
+ fail RuntimeError,
16
+ "Name Collision: Method '#{method_name}' is already defined in #{klass}"
17
+ end
18
+ end
19
+ end
20
+
21
+ if ! defined?(Builder::XChar) and ! String.method_defined?(:encode)
22
+ Builder.check_for_name_collision(String, "to_xs")
23
+ Builder.check_for_name_collision(Integer, "xchr")
24
+ end
25
+
26
+ ######################################################################
27
+ module Builder
28
+
29
+ ####################################################################
30
+ # XML Character converter, from Sam Ruby:
31
+ # (see http://intertwingly.net/stories/2005/09/28/xchar.rb).
32
+ #
33
+ module XChar # :nodoc:
34
+
35
+ # See
36
+ # http://intertwingly.net/stories/2004/04/14/i18n.html#CleaningWindows
37
+ # for details.
38
+ CP1252 = { # :nodoc:
39
+ 128 => 8364, # euro sign
40
+ 130 => 8218, # single low-9 quotation mark
41
+ 131 => 402, # latin small letter f with hook
42
+ 132 => 8222, # double low-9 quotation mark
43
+ 133 => 8230, # horizontal ellipsis
44
+ 134 => 8224, # dagger
45
+ 135 => 8225, # double dagger
46
+ 136 => 710, # modifier letter circumflex accent
47
+ 137 => 8240, # per mille sign
48
+ 138 => 352, # latin capital letter s with caron
49
+ 139 => 8249, # single left-pointing angle quotation mark
50
+ 140 => 338, # latin capital ligature oe
51
+ 142 => 381, # latin capital letter z with caron
52
+ 145 => 8216, # left single quotation mark
53
+ 146 => 8217, # right single quotation mark
54
+ 147 => 8220, # left double quotation mark
55
+ 148 => 8221, # right double quotation mark
56
+ 149 => 8226, # bullet
57
+ 150 => 8211, # en dash
58
+ 151 => 8212, # em dash
59
+ 152 => 732, # small tilde
60
+ 153 => 8482, # trade mark sign
61
+ 154 => 353, # latin small letter s with caron
62
+ 155 => 8250, # single right-pointing angle quotation mark
63
+ 156 => 339, # latin small ligature oe
64
+ 158 => 382, # latin small letter z with caron
65
+ 159 => 376, # latin capital letter y with diaeresis
66
+ }
67
+
68
+ # See http://www.w3.org/TR/REC-xml/#dt-chardata for details.
69
+ PREDEFINED = {
70
+ 38 => '&amp;', # ampersand
71
+ 60 => '&lt;', # left angle bracket
72
+ 62 => '&gt;', # right angle bracket
73
+ }
74
+
75
+ # See http://www.w3.org/TR/REC-xml/#charsets for details.
76
+ VALID = [
77
+ 0x9, 0xA, 0xD,
78
+ (0x20..0xD7FF),
79
+ (0xE000..0xFFFD),
80
+ (0x10000..0x10FFFF)
81
+ ]
82
+
83
+ # http://www.fileformat.info/info/unicode/char/fffd/index.htm
84
+ REPLACEMENT_CHAR =
85
+ if String.method_defined?(:encode)
86
+ "\uFFFD"
87
+ elsif $KCODE == 'UTF8'
88
+ "\xEF\xBF\xBD"
89
+ else
90
+ '*'
91
+ end
92
+ end
93
+
94
+ end
95
+
96
+
97
+ if String.method_defined?(:encode)
98
+ module Builder
99
+ module XChar # :nodoc:
100
+ CP1252_DIFFERENCES, UNICODE_EQUIVALENT = Builder::XChar::CP1252.each.
101
+ inject([[],[]]) {|(domain,range),(key,value)|
102
+ [domain << key,range << value]
103
+ }.map {|seq| seq.pack('U*').force_encoding('utf-8')}
104
+
105
+ XML_PREDEFINED = Regexp.new('[' +
106
+ Builder::XChar::PREDEFINED.keys.pack('U*').force_encoding('utf-8') +
107
+ ']')
108
+
109
+ INVALID_XML_CHAR = Regexp.new('[^'+
110
+ Builder::XChar::VALID.map { |item|
111
+ case item
112
+ when Integer
113
+ [item].pack('U').force_encoding('utf-8')
114
+ when Range
115
+ [item.first, '-'.ord, item.last].pack('UUU').force_encoding('utf-8')
116
+ end
117
+ }.join +
118
+ ']')
119
+
120
+ ENCODING_BINARY = Encoding.find('BINARY')
121
+ ENCODING_UTF8 = Encoding.find('UTF-8')
122
+ ENCODING_ISO1 = Encoding.find('ISO-8859-1')
123
+
124
+ # convert a string to valid UTF-8, compensating for a number of
125
+ # common errors.
126
+ def XChar.unicode(string)
127
+ if string.encoding == ENCODING_BINARY
128
+ if string.ascii_only?
129
+ string
130
+ else
131
+ string = string.clone.force_encoding(ENCODING_UTF8)
132
+ if string.valid_encoding?
133
+ string
134
+ else
135
+ string.encode(ENCODING_UTF8, ENCODING_ISO1)
136
+ end
137
+ end
138
+
139
+ elsif string.encoding == ENCODING_UTF8
140
+ if string.valid_encoding?
141
+ string
142
+ else
143
+ string.encode(ENCODING_UTF8, ENCODING_ISO1)
144
+ end
145
+
146
+ else
147
+ string.encode(ENCODING_UTF8)
148
+ end
149
+ end
150
+
151
+ # encode a string per XML rules
152
+ def XChar.encode(string)
153
+ unicode(string).
154
+ tr(CP1252_DIFFERENCES, UNICODE_EQUIVALENT).
155
+ gsub(INVALID_XML_CHAR, REPLACEMENT_CHAR).
156
+ gsub(XML_PREDEFINED) {|c| PREDEFINED[c.ord]}
157
+ end
158
+ end
159
+ end
160
+
161
+ else
162
+
163
+ ######################################################################
164
+ # Enhance the Integer class with a XML escaped character conversion.
165
+ #
166
+ class Integer
167
+ XChar = Builder::XChar if ! defined?(XChar)
168
+
169
+ # XML escaped version of chr. When <tt>escape</tt> is set to false
170
+ # the CP1252 fix is still applied but utf-8 characters are not
171
+ # converted to character entities.
172
+ def xchr(escape=true)
173
+ n = XChar::CP1252[self] || self
174
+ case n when *XChar::VALID
175
+ XChar::PREDEFINED[n] or
176
+ (n<128 ? n.chr : (escape ? "&##{n};" : [n].pack('U*')))
177
+ else
178
+ Builder::XChar::REPLACEMENT_CHAR
179
+ end
180
+ end
181
+ end
182
+
183
+
184
+ ######################################################################
185
+ # Enhance the String class with a XML escaped character version of
186
+ # to_s.
187
+ #
188
+ class String
189
+ # XML escaped version of to_s. When <tt>escape</tt> is set to false
190
+ # the CP1252 fix is still applied but utf-8 characters are not
191
+ # converted to character entities.
192
+ def to_xs(escape=true)
193
+ unpack('U*').map {|n| n.xchr(escape)}.join # ASCII, UTF-8
194
+ rescue
195
+ unpack('C*').map {|n| n.xchr}.join # ISO-8859-1, WIN-1252
196
+ end
197
+ end
198
+ end
@@ -0,0 +1,200 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'builder/blankslate'
5
+
6
+ module Builder
7
+
8
+ # Generic error for builder
9
+ class IllegalBlockError < RuntimeError; end
10
+
11
+ # XmlBase is a base class for building XML builders. See
12
+ # Builder::XmlMarkup and Builder::XmlEvents for examples.
13
+ class XmlBase < BlankSlate
14
+
15
+ class << self
16
+ attr_accessor :cache_method_calls
17
+ end
18
+
19
+ # Create an XML markup builder.
20
+ #
21
+ # out :: Object receiving the markup. +out+ must respond to
22
+ # <tt><<</tt>.
23
+ # indent :: Number of spaces used for indentation (0 implies no
24
+ # indentation and no line breaks).
25
+ # initial :: Level of initial indentation.
26
+ # encoding :: When <tt>encoding</tt> and $KCODE are set to 'utf-8'
27
+ # characters aren't converted to character entities in
28
+ # the output stream.
29
+ def initialize(indent=0, initial=0, encoding='utf-8')
30
+ @indent = indent
31
+ @level = initial
32
+ @encoding = encoding.downcase
33
+ end
34
+
35
+ def explicit_nil_handling?
36
+ @explicit_nil_handling
37
+ end
38
+
39
+ # Create a tag named +sym+. Other than the first argument which
40
+ # is the tag name, the arguments are the same as the tags
41
+ # implemented via <tt>method_missing</tt>.
42
+ def tag!(sym, *args, &block)
43
+ text = nil
44
+ attrs = nil
45
+ sym = "#{sym}:#{args.shift}" if args.first.kind_of?(::Symbol)
46
+ sym = sym.to_sym unless sym.class == ::Symbol
47
+ args.each do |arg|
48
+ case arg
49
+ when ::Hash
50
+ attrs ||= {}
51
+ attrs.merge!(arg)
52
+ when nil
53
+ attrs ||= {}
54
+ attrs.merge!({:nil => true}) if explicit_nil_handling?
55
+ else
56
+ text ||= ''.dup
57
+ text << arg.to_s
58
+ end
59
+ end
60
+ if block
61
+ unless text.nil?
62
+ ::Kernel::raise ::ArgumentError,
63
+ "XmlMarkup cannot mix a text argument with a block"
64
+ end
65
+ _indent
66
+ _start_tag(sym, attrs)
67
+ _newline
68
+ begin
69
+ _nested_structures(block)
70
+ ensure
71
+ _indent
72
+ _end_tag(sym)
73
+ _newline
74
+ end
75
+ elsif text.nil?
76
+ _indent
77
+ _start_tag(sym, attrs, true)
78
+ _newline
79
+ else
80
+ _indent
81
+ _start_tag(sym, attrs)
82
+ text! text
83
+ _end_tag(sym)
84
+ _newline
85
+ end
86
+ @target
87
+ end
88
+
89
+ # Create XML markup based on the name of the method. This method
90
+ # is never invoked directly, but is called for each markup method
91
+ # in the markup block that isn't cached.
92
+ def method_missing(sym, *args, &block)
93
+ cache_method_call(sym) if ::Builder::XmlBase.cache_method_calls
94
+ tag!(sym, *args, &block)
95
+ end
96
+
97
+ # Append text to the output target. Escape any markup. May be
98
+ # used within the markup brackets as:
99
+ #
100
+ # builder.p { |b| b.br; b.text! "HI" } #=> <p><br/>HI</p>
101
+ def text!(text)
102
+ _text(_escape(text))
103
+ end
104
+
105
+ # Append text to the output target without escaping any markup.
106
+ # May be used within the markup brackets as:
107
+ #
108
+ # builder.p { |x| x << "<br/>HI" } #=> <p><br/>HI</p>
109
+ #
110
+ # This is useful when using non-builder enabled software that
111
+ # generates strings. Just insert the string directly into the
112
+ # builder without changing the inserted markup.
113
+ #
114
+ # It is also useful for stacking builder objects. Builders only
115
+ # use <tt><<</tt> to append to the target, so by supporting this
116
+ # method/operation builders can use other builders as their
117
+ # targets.
118
+ def <<(text)
119
+ _text(text)
120
+ end
121
+
122
+ # For some reason, nil? is sent to the XmlMarkup object. If nil?
123
+ # is not defined and method_missing is invoked, some strange kind
124
+ # of recursion happens. Since nil? won't ever be an XML tag, it
125
+ # is pretty safe to define it here. (Note: this is an example of
126
+ # cargo cult programming,
127
+ # cf. http://fishbowl.pastiche.org/2004/10/13/cargo_cult_programming).
128
+ def nil?
129
+ false
130
+ end
131
+
132
+ private
133
+
134
+ require 'builder/xchar'
135
+ if ::String.method_defined?(:encode)
136
+ def _escape(text)
137
+ result = XChar.encode(text)
138
+ begin
139
+ encoding = ::Encoding::find(@encoding)
140
+ raise Exception if encoding.dummy?
141
+ result.encode(encoding)
142
+ rescue
143
+ # if the encoding can't be supported, use numeric character references
144
+ result.
145
+ gsub(/[^\u0000-\u007F]/) {|c| "&##{c.ord};"}.
146
+ force_encoding('ascii')
147
+ end
148
+ end
149
+ else
150
+ def _escape(text)
151
+ if (text.method(:to_xs).arity == 0)
152
+ text.to_xs
153
+ else
154
+ text.to_xs((@encoding != 'utf-8' or $KCODE != 'UTF8'))
155
+ end
156
+ end
157
+ end
158
+
159
+ def _escape_attribute(text)
160
+ _escape(text).gsub("\n", "&#10;").gsub("\r", "&#13;").
161
+ gsub(%r{"}, '&quot;') # " WART
162
+ end
163
+
164
+ def _newline
165
+ return if @indent == 0
166
+ text! "\n"
167
+ end
168
+
169
+ def _indent
170
+ return if @indent == 0 || @level == 0
171
+ text!(" " * (@level * @indent))
172
+ end
173
+
174
+ def _nested_structures(block)
175
+ @level += 1
176
+ block.call(self)
177
+ ensure
178
+ @level -= 1
179
+ end
180
+
181
+ # If XmlBase.cache_method_calls = true, we dynamicly create the method
182
+ # missed as an instance method on the XMLBase object. Because XML
183
+ # documents are usually very repetative in nature, the next node will
184
+ # be handled by the new method instead of method_missing. As
185
+ # method_missing is very slow, this speeds up document generation
186
+ # significantly.
187
+ def cache_method_call(sym)
188
+ class << self; self; end.class_eval do
189
+ unless method_defined?(sym)
190
+ define_method(sym) do |*args, &block|
191
+ tag!(sym, *args, &block)
192
+ end
193
+ end
194
+ end
195
+ end
196
+ end
197
+
198
+ XmlBase.cache_method_calls = true
199
+
200
+ end
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #--
5
+ # Copyright 2004 by Jim Weirich (jim@weirichhouse.org).
6
+ # All rights reserved.
7
+
8
+ # Permission is granted for use, copying, modification, distribution,
9
+ # and distribution of modified versions of this work as long as the
10
+ # above copyright notice is included.
11
+ #++
12
+
13
+ require 'builder/xmlmarkup'
14
+
15
+ module Builder
16
+
17
+ # Create a series of SAX-like XML events (e.g. start_tag, end_tag)
18
+ # from the markup code. XmlEvent objects are used in a way similar
19
+ # to XmlMarkup objects, except that a series of events are generated
20
+ # and passed to a handler rather than generating character-based
21
+ # markup.
22
+ #
23
+ # Usage:
24
+ # xe = Builder::XmlEvents.new(hander)
25
+ # xe.title("HI") # Sends start_tag/end_tag/text messages to the handler.
26
+ #
27
+ # Indentation may also be selected by providing value for the
28
+ # indentation size and initial indentation level.
29
+ #
30
+ # xe = Builder::XmlEvents.new(handler, indent_size, initial_indent_level)
31
+ #
32
+ # == XML Event Handler
33
+ #
34
+ # The handler object must expect the following events.
35
+ #
36
+ # [<tt>start_tag(tag, attrs)</tt>]
37
+ # Announces that a new tag has been found. +tag+ is the name of
38
+ # the tag and +attrs+ is a hash of attributes for the tag.
39
+ #
40
+ # [<tt>end_tag(tag)</tt>]
41
+ # Announces that an end tag for +tag+ has been found.
42
+ #
43
+ # [<tt>text(text)</tt>]
44
+ # Announces that a string of characters (+text+) has been found.
45
+ # A series of characters may be broken up into more than one
46
+ # +text+ call, so the client cannot assume that a single
47
+ # callback contains all the text data.
48
+ #
49
+ class XmlEvents < XmlMarkup
50
+ def text!(text)
51
+ @target.text(text)
52
+ end
53
+
54
+ def _start_tag(sym, attrs, end_too=false)
55
+ @target.start_tag(sym, attrs)
56
+ _end_tag(sym) if end_too
57
+ end
58
+
59
+ def _end_tag(sym)
60
+ @target.end_tag(sym)
61
+ end
62
+ end
63
+
64
+ end