paynow_sdk 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 (286) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.travis.yml +6 -0
  4. data/Gemfile +8 -0
  5. data/Gemfile.lock +30 -0
  6. data/README.md +36 -0
  7. data/Rakefile +10 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +8 -0
  10. data/lib/paynow_sdk.rb +269 -0
  11. data/lib/paynow_sdk/version.rb +3 -0
  12. data/paynow_sdk.gemspec +27 -0
  13. data/vendor/cache/ansi-1.5.0.gem +0 -0
  14. data/vendor/cache/builder-3.2.4.gem +0 -0
  15. data/vendor/cache/minitest-5.14.1.gem +0 -0
  16. data/vendor/cache/minitest-reporters-1.4.2.gem +0 -0
  17. data/vendor/cache/rake-12.3.3.gem +0 -0
  18. data/vendor/cache/ruby-progressbar-1.10.1.gem +0 -0
  19. data/vendor/cache/ruby/2.7.0/bin/rake +27 -0
  20. data/vendor/cache/ruby/2.7.0/cache/ansi-1.5.0.gem +0 -0
  21. data/vendor/cache/ruby/2.7.0/cache/builder-3.2.4.gem +0 -0
  22. data/vendor/cache/ruby/2.7.0/cache/minitest-5.14.1.gem +0 -0
  23. data/vendor/cache/ruby/2.7.0/cache/minitest-reporters-1.4.2.gem +0 -0
  24. data/vendor/cache/ruby/2.7.0/cache/rake-12.3.3.gem +0 -0
  25. data/vendor/cache/ruby/2.7.0/cache/ruby-progressbar-1.10.1.gem +0 -0
  26. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/.index +77 -0
  27. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/.yardopts +8 -0
  28. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/DEMO.md +451 -0
  29. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/HISTORY.md +217 -0
  30. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/LICENSE.txt +23 -0
  31. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/NOTICE.md +170 -0
  32. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/README.md +91 -0
  33. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/demo/01_ansicode.md +65 -0
  34. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/demo/02_core.md +11 -0
  35. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/demo/03_logger.md +30 -0
  36. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/demo/04_progressbar.md +62 -0
  37. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/demo/05_mixin.md +37 -0
  38. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/demo/06_string.md +56 -0
  39. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/demo/07_columns.md +89 -0
  40. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/demo/08_table.md +28 -0
  41. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/demo/09_diff.md +47 -0
  42. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/demo/10_bbcode.md +24 -0
  43. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/demo/11_terminal.md +8 -0
  44. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/demo/applique/ae.rb +1 -0
  45. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/demo/applique/output.rb +5 -0
  46. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi.rb +22 -0
  47. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi.yml +77 -0
  48. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/bbcode.rb +334 -0
  49. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/chain.rb +50 -0
  50. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/chart.rb +100 -0
  51. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/code.rb +349 -0
  52. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/columns.rb +197 -0
  53. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/constants.rb +25 -0
  54. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/core.rb +30 -0
  55. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/diff.rb +215 -0
  56. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/hexdump.rb +122 -0
  57. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/logger.rb +211 -0
  58. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/mixin.rb +121 -0
  59. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/progressbar.rb +292 -0
  60. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/string.rb +254 -0
  61. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/table.rb +179 -0
  62. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/terminal.rb +44 -0
  63. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/terminal/curses.rb +26 -0
  64. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/terminal/stty.rb +62 -0
  65. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/terminal/termios.rb +68 -0
  66. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/terminal/win32.rb +107 -0
  67. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/lib/ansi/version.rb +15 -0
  68. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/test/case_ansicode.rb +43 -0
  69. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/test/case_bbcode.rb +35 -0
  70. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/test/case_mixin.rb +35 -0
  71. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/test/case_progressbar.rb +21 -0
  72. data/vendor/cache/ruby/2.7.0/gems/ansi-1.5.0/test/test_helper.rb +3 -0
  73. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/CHANGES +119 -0
  74. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/MIT-LICENSE +20 -0
  75. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/README.md +258 -0
  76. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/Rakefile +194 -0
  77. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/builder.blurb +27 -0
  78. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/builder.gemspec +45 -0
  79. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/doc/jamis.rb +592 -0
  80. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/doc/releases/builder-1.2.4.rdoc +31 -0
  81. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/doc/releases/builder-2.0.0.rdoc +46 -0
  82. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/doc/releases/builder-2.1.1.rdoc +58 -0
  83. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/lib/blankslate.rb +138 -0
  84. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/lib/builder.rb +14 -0
  85. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/lib/builder/blankslate.rb +24 -0
  86. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/lib/builder/version.rb +9 -0
  87. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/lib/builder/xchar.rb +198 -0
  88. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/lib/builder/xmlbase.rb +200 -0
  89. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/lib/builder/xmlevents.rb +64 -0
  90. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/lib/builder/xmlmarkup.rb +345 -0
  91. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/rakelib/publish.rake +21 -0
  92. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/rakelib/tags.rake +63 -0
  93. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/rakelib/testing.rake +8 -0
  94. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/test/helper.rb +13 -0
  95. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/test/performance.rb +42 -0
  96. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/test/preload.rb +40 -0
  97. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/test/test_blankslate.rb +208 -0
  98. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/test/test_eventbuilder.rb +151 -0
  99. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/test/test_markupbuilder.rb +617 -0
  100. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/test/test_method_caching.rb +63 -0
  101. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/test/test_namecollision.rb +40 -0
  102. data/vendor/cache/ruby/2.7.0/gems/builder-3.2.4/test/test_xchar.rb +85 -0
  103. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/.autotest +34 -0
  104. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/History.rdoc +1392 -0
  105. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/Manifest.txt +27 -0
  106. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/README.rdoc +764 -0
  107. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/Rakefile +74 -0
  108. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/design_rationale.rb +52 -0
  109. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/lib/hoe/minitest.rb +32 -0
  110. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/lib/minitest.rb +1056 -0
  111. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/lib/minitest/assertions.rb +807 -0
  112. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/lib/minitest/autorun.rb +13 -0
  113. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/lib/minitest/benchmark.rb +455 -0
  114. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/lib/minitest/expectations.rb +303 -0
  115. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/lib/minitest/hell.rb +11 -0
  116. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/lib/minitest/mock.rb +240 -0
  117. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/lib/minitest/parallel.rb +70 -0
  118. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/lib/minitest/pride.rb +4 -0
  119. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/lib/minitest/pride_plugin.rb +142 -0
  120. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/lib/minitest/spec.rb +342 -0
  121. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/lib/minitest/test.rb +220 -0
  122. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/lib/minitest/unit.rb +45 -0
  123. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/test/minitest/metametameta.rb +136 -0
  124. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/test/minitest/test_minitest_assertions.rb +1567 -0
  125. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/test/minitest/test_minitest_benchmark.rb +137 -0
  126. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/test/minitest/test_minitest_mock.rb +872 -0
  127. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/test/minitest/test_minitest_reporter.rb +299 -0
  128. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/test/minitest/test_minitest_spec.rb +1061 -0
  129. data/vendor/cache/ruby/2.7.0/gems/minitest-5.14.1/test/minitest/test_minitest_test.rb +1084 -0
  130. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/.gitignore +28 -0
  131. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/.rubocop.yml +77 -0
  132. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/.ruby-gemset +1 -0
  133. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/.travis.yml +15 -0
  134. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/.yardopts +6 -0
  135. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/CHANGELOG.md +120 -0
  136. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/Gemfile +2 -0
  137. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/LICENSE +20 -0
  138. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/README.md +135 -0
  139. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/Rakefile +70 -0
  140. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/appveyor.yml +22 -0
  141. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/assets/default-reporter.png +0 -0
  142. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/assets/mean_time_reporter.png +0 -0
  143. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/assets/progress-reporter.png +0 -0
  144. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/assets/spec-reporter.png +0 -0
  145. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/extensible_backtrace_filter.rb +67 -0
  146. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/minitest_reporter_plugin.rb +82 -0
  147. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/old_activesupport_fix.rb +24 -0
  148. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/relative_position.rb +26 -0
  149. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/reporters.rb +91 -0
  150. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/reporters/ansi.rb +30 -0
  151. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/reporters/base_reporter.rb +136 -0
  152. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/reporters/default_reporter.rb +245 -0
  153. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/reporters/html_reporter.rb +224 -0
  154. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/reporters/junit_reporter.rb +174 -0
  155. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/reporters/mean_time_reporter.rb +388 -0
  156. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/reporters/progress_reporter.rb +104 -0
  157. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/reporters/ruby_mate_reporter.rb +54 -0
  158. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/reporters/rubymine_reporter.rb +116 -0
  159. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/reporters/spec_reporter.rb +61 -0
  160. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/reporters/version.rb +5 -0
  161. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/lib/minitest/templates/index.html.erb +85 -0
  162. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/minitest-reporters.gemspec +31 -0
  163. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/fixtures/junit_filename_bug_example_test.rb +41 -0
  164. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/fixtures/mean_time_test.rb +36 -0
  165. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/fixtures/progress_detailed_skip_test.rb +8 -0
  166. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/fixtures/progress_test.rb +8 -0
  167. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/fixtures/sample_test.rb +15 -0
  168. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/fixtures/spec_test.rb +18 -0
  169. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/gallery/bad_test.rb +25 -0
  170. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/gallery/good_test.rb +14 -0
  171. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/integration/reporters/junit_reporter_test.rb +12 -0
  172. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/integration/reporters/mean_time_reporter_test.rb +7 -0
  173. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/integration/reporters/progress_reporter_test.rb +40 -0
  174. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/test_helper.rb +22 -0
  175. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/unit/minitest/extensible_backtrace_filter_test.rb +42 -0
  176. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/unit/minitest/junit_reporter_test.rb +46 -0
  177. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/unit/minitest/mean_time_reporter_unit_test.rb +149 -0
  178. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/unit/minitest/minitest_reporter_plugin_test.rb +14 -0
  179. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/unit/minitest/reporters_test.rb +65 -0
  180. data/vendor/cache/ruby/2.7.0/gems/minitest-reporters-1.4.2/test/unit/minitest/spec_reporter_test.rb +62 -0
  181. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/CONTRIBUTING.rdoc +43 -0
  182. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/Gemfile +3 -0
  183. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/History.rdoc +2344 -0
  184. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/MIT-LICENSE +21 -0
  185. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/README.rdoc +156 -0
  186. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/Rakefile +41 -0
  187. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/azure-pipelines.yml +11 -0
  188. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/bin/bundle +105 -0
  189. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/bin/console +7 -0
  190. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/bin/rake +29 -0
  191. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/bin/rdoc +29 -0
  192. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/bin/rubocop +29 -0
  193. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/bin/setup +6 -0
  194. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/doc/command_line_usage.rdoc +158 -0
  195. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/doc/example/Rakefile1 +38 -0
  196. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/doc/example/Rakefile2 +35 -0
  197. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/doc/example/a.c +6 -0
  198. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/doc/example/b.c +6 -0
  199. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/doc/example/main.c +11 -0
  200. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/doc/glossary.rdoc +42 -0
  201. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/doc/jamis.rb +592 -0
  202. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/doc/proto_rake.rdoc +127 -0
  203. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/doc/rake.1 +156 -0
  204. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/doc/rakefile.rdoc +622 -0
  205. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/doc/rational.rdoc +151 -0
  206. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/exe/rake +27 -0
  207. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake.rb +71 -0
  208. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/application.rb +824 -0
  209. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/backtrace.rb +24 -0
  210. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/clean.rb +78 -0
  211. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/cloneable.rb +17 -0
  212. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb +107 -0
  213. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/default_loader.rb +15 -0
  214. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb +195 -0
  215. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/early_time.rb +22 -0
  216. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/ext/core.rb +26 -0
  217. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/ext/string.rb +176 -0
  218. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb +25 -0
  219. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_list.rb +435 -0
  220. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_task.rb +54 -0
  221. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_utils.rb +137 -0
  222. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb +145 -0
  223. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb +57 -0
  224. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb +17 -0
  225. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/late_time.rb +18 -0
  226. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/linked_list.rb +112 -0
  227. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb +54 -0
  228. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/multi_task.rb +14 -0
  229. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/name_space.rb +38 -0
  230. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/packagetask.rb +207 -0
  231. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/phony.rb +16 -0
  232. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/private_reader.rb +21 -0
  233. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/promise.rb +100 -0
  234. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb +30 -0
  235. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/rake_module.rb +67 -0
  236. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb +27 -0
  237. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb +20 -0
  238. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/scope.rb +43 -0
  239. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/task.rb +413 -0
  240. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb +8 -0
  241. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/task_arguments.rb +109 -0
  242. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/task_manager.rb +324 -0
  243. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/tasklib.rb +12 -0
  244. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/testtask.rb +224 -0
  245. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb +49 -0
  246. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/thread_pool.rb +163 -0
  247. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/trace_output.rb +23 -0
  248. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/version.rb +10 -0
  249. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/lib/rake/win32.rb +51 -0
  250. data/vendor/cache/ruby/2.7.0/gems/rake-12.3.3/rake.gemspec +42 -0
  251. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/LICENSE.txt +19 -0
  252. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/README.md +38 -0
  253. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/Rakefile +2 -0
  254. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar.rb +22 -0
  255. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/base.rb +183 -0
  256. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/calculators/length.rb +100 -0
  257. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/calculators/running_average.rb +9 -0
  258. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components.rb +5 -0
  259. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/bar.rb +102 -0
  260. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/percentage.rb +29 -0
  261. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/rate.rb +43 -0
  262. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/time.rb +107 -0
  263. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/title.rb +13 -0
  264. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/errors/invalid_progress_error.rb +4 -0
  265. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format.rb +3 -0
  266. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format/formatter.rb +27 -0
  267. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format/molecule.rb +60 -0
  268. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format/string.rb +36 -0
  269. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/output.rb +68 -0
  270. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/outputs/non_tty.rb +47 -0
  271. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/outputs/null.rb +33 -0
  272. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/outputs/tty.rb +32 -0
  273. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/progress.rb +118 -0
  274. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/refinements.rb +1 -0
  275. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/refinements/enumerator.rb +23 -0
  276. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/throttle.rb +25 -0
  277. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/time.rb +32 -0
  278. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/timer.rb +72 -0
  279. data/vendor/cache/ruby/2.7.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/version.rb +3 -0
  280. data/vendor/cache/ruby/2.7.0/specifications/ansi-1.5.0.gemspec +42 -0
  281. data/vendor/cache/ruby/2.7.0/specifications/builder-3.2.4.gemspec +23 -0
  282. data/vendor/cache/ruby/2.7.0/specifications/minitest-5.14.1.gemspec +38 -0
  283. data/vendor/cache/ruby/2.7.0/specifications/minitest-reporters-1.4.2.gemspec +43 -0
  284. data/vendor/cache/ruby/2.7.0/specifications/rake-12.3.3.gemspec +43 -0
  285. data/vendor/cache/ruby/2.7.0/specifications/ruby-progressbar-1.10.1.gemspec +40 -0
  286. metadata +330 -0
@@ -0,0 +1,617 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #--
5
+ # Portions copyright 2004 by Jim Weirich (jim@weirichhouse.org).
6
+ # Portions copyright 2005 by Sam Ruby (rubys@intertwingly.net).
7
+ # All rights reserved.
8
+
9
+ # Permission is granted for use, copying, modification, distribution,
10
+ # and distribution of modified versions of this work as long as the
11
+ # above copyright notice is included.
12
+ #++
13
+
14
+ require 'helper'
15
+ require 'preload'
16
+ require 'builder'
17
+ require 'builder/xmlmarkup'
18
+
19
+ class TestMarkup < Builder::Test
20
+ def setup
21
+ @xml = Builder::XmlMarkup.new
22
+ end
23
+
24
+ def test_create
25
+ assert_not_nil @xml
26
+ end
27
+
28
+ def test_simple
29
+ @xml.simple
30
+ assert_equal "<simple/>", @xml.target!
31
+ end
32
+
33
+ def test_value
34
+ @xml.value("hi")
35
+ assert_equal "<value>hi</value>", @xml.target!
36
+ end
37
+
38
+ def test_empty_value
39
+ @xml.value("")
40
+ assert_equal "<value></value>", @xml.target!
41
+ end
42
+
43
+ def test_nil_value
44
+ @xml.value(nil)
45
+ assert_equal "<value/>", @xml.target!
46
+ end
47
+
48
+ def test_no_value
49
+ @xml.value()
50
+ assert_equal "<value/>", @xml.target!
51
+ end
52
+
53
+ def test_nested
54
+ @xml.outer { |x| x.inner("x") }
55
+ assert_equal "<outer><inner>x</inner></outer>", @xml.target!
56
+ end
57
+
58
+ def test_attributes
59
+ @xml.ref(:id => 12)
60
+ assert_equal %{<ref id="12"/>}, @xml.target!
61
+ end
62
+
63
+ def test_single_quotes_for_attrs
64
+ @xml = Builder::XmlMarkup.new(:quote => :single)
65
+ @xml.ref(:id => 12)
66
+ assert_equal %{<ref id='12'/>}, @xml.target!
67
+ end
68
+
69
+ def test_mixed_quotes_for_attrs
70
+ @xml = Builder::XmlMarkup.new(:quote => :single)
71
+ x = Builder::XmlMarkup.new(:target=>@xml, :quote => :double)
72
+ @xml.ref(:id => 12) do
73
+ x.link(:id => 13)
74
+ end
75
+ assert_equal %{<ref id='12'><link id="13"/></ref>}, @xml.target!
76
+ end
77
+
78
+ def test_string_attributes_are_escaped_by_default
79
+ @xml.ref(:id => "H&R")
80
+ assert_equal %{<ref id="H&amp;R"/>}, @xml.target!
81
+ end
82
+
83
+ def test_symbol_attributes_are_unescaped_by_default
84
+ @xml.ref(:id => :"H&amp;R")
85
+ assert_equal %{<ref id="H&amp;R"/>}, @xml.target!
86
+ end
87
+
88
+ def test_attributes_escaping_can_be_turned_on
89
+ @xml = Builder::XmlMarkup.new
90
+ @xml.ref(:id => "<H&R \"block\">")
91
+ assert_equal %{<ref id="&lt;H&amp;R &quot;block&quot;&gt;"/>}, @xml.target!
92
+ end
93
+
94
+ def test_mixed_attribute_escaping_with_nested_builders
95
+ x = Builder::XmlMarkup.new(:target=>@xml)
96
+ @xml.ref(:id=>:"H&amp;R") {
97
+ x.element(:tag=>"Long&Short")
98
+ }
99
+ assert_equal "<ref id=\"H&amp;R\"><element tag=\"Long&amp;Short\"/></ref>",
100
+ @xml.target!
101
+ end
102
+
103
+ def test_multiple_attributes
104
+ @xml.ref(:id => 12, :name => "bill")
105
+ assert_match %r{^<ref( id="12"| name="bill"){2}/>$}, @xml.target!
106
+ end
107
+
108
+ def test_attributes_with_text
109
+ @xml.a("link", :href=>"http://onestepback.org")
110
+ assert_equal %{<a href="http://onestepback.org">link</a>}, @xml.target!
111
+ end
112
+
113
+ def test_attributes_with_newlines
114
+ @xml.abbr("W3C", :title=>"World\nWide\rWeb\r\nConsortium")
115
+ assert_equal %{<abbr title="World&#10;Wide&#13;Web&#13;&#10;Consortium">W3C</abbr>},
116
+ @xml.target!
117
+ end
118
+
119
+ def test_complex
120
+ @xml.body(:bg=>"#ffffff") { |x|
121
+ x.title("T", :style=>"red")
122
+ }
123
+ assert_equal %{<body bg="#ffffff"><title style="red">T</title></body>}, @xml.target!
124
+ end
125
+
126
+ def test_funky_symbol
127
+ @xml.tag!("non-ruby-token", :id=>1) { |x| x.ok }
128
+ assert_equal %{<non-ruby-token id="1"><ok/></non-ruby-token>}, @xml.target!
129
+ end
130
+
131
+ def test_tag_can_handle_private_method
132
+ @xml.tag!("loop", :id=>1) { |x| x.ok }
133
+ assert_equal %{<loop id="1"><ok/></loop>}, @xml.target!
134
+ end
135
+
136
+ def test_no_explicit_marker
137
+ @xml.p { |x| x.b("HI") }
138
+ assert_equal "<p><b>HI</b></p>", @xml.target!
139
+ end
140
+
141
+ def test_reference_local_vars
142
+ n = 3
143
+ @xml.ol { |x| n.times { x.li(n) } }
144
+ assert_equal "<ol><li>3</li><li>3</li><li>3</li></ol>", @xml.target!
145
+ end
146
+
147
+ def test_reference_methods
148
+ @xml.title { |x| x.a { x.b(_name) } }
149
+ assert_equal "<title><a><b>bob</b></a></title>", @xml.target!
150
+ end
151
+
152
+ def test_append_text
153
+ @xml.p { |x| x.br; x.text! "HI" }
154
+ assert_equal "<p><br/>HI</p>", @xml.target!
155
+ end
156
+
157
+ def test_ambiguous_markup
158
+ ex = assert_raise(ArgumentError) {
159
+ @xml.h1("data1") { b }
160
+ }
161
+ assert_match(/\btext\b/, ex.message)
162
+ assert_match(/\bblock\b/, ex.message)
163
+ end
164
+
165
+ def test_capitalized_method
166
+ @xml.P { |x| x.B("hi"); x.BR(); x.EM { x.text! "world" } }
167
+ assert_equal "<P><B>hi</B><BR/><EM>world</EM></P>", @xml.target!
168
+ end
169
+
170
+ def test_escaping
171
+ @xml.div { |x| x.text! "<hi>"; x.em("H&R Block") }
172
+ assert_equal %{<div>&lt;hi&gt;<em>H&amp;R Block</em></div>}, @xml.target!
173
+ end
174
+
175
+ def test_nil
176
+ b = Builder::XmlMarkup.new
177
+ b.tag! "foo", nil
178
+ assert_equal %{<foo/>}, b.target!
179
+ end
180
+
181
+ def test_nil_without_explicit_nil_handling
182
+ b = Builder::XmlMarkup.new(:explicit_nil_handling => false)
183
+ b.tag! "foo", nil
184
+ assert_equal %{<foo/>}, b.target!
185
+ end
186
+
187
+ def test_nil_with_explicit_nil_handling
188
+ b = Builder::XmlMarkup.new(:explicit_nil_handling => true)
189
+ b.tag! "foo", nil
190
+ assert_equal %{<foo nil="true"/>}, b.target!
191
+ end
192
+
193
+ def test_non_escaping
194
+ @xml.div("ns:xml"=>:"&xml;") { |x| x << "<h&i>"; x.em("H&R Block") }
195
+ assert_equal %{<div ns:xml="&xml;"><h&i><em>H&amp;R Block</em></div>}, @xml.target!
196
+ end
197
+
198
+ def test_return_value
199
+ str = @xml.x("men")
200
+ assert_equal @xml.target!, str
201
+ end
202
+
203
+ def test_stacked_builders
204
+ b = Builder::XmlMarkup.new( :target => @xml )
205
+ b.div { @xml.span { @xml.a("text", :href=>"ref") } }
206
+ assert_equal "<div><span><a href=\"ref\">text</a></span></div>", @xml.target!
207
+ end
208
+
209
+ def _name
210
+ "bob"
211
+ end
212
+ end
213
+
214
+ class TestAttributeEscaping < Builder::Test
215
+
216
+ def setup
217
+ @xml = Builder::XmlMarkup.new
218
+ end
219
+
220
+ def test_element_gt
221
+ @xml.title('1<2')
222
+ assert_equal '<title>1&lt;2</title>', @xml.target!
223
+ end
224
+
225
+ def test_element_amp
226
+ @xml.title('AT&T')
227
+ assert_equal '<title>AT&amp;T</title>', @xml.target!
228
+ end
229
+
230
+ def test_element_amp2
231
+ @xml.title('&amp;')
232
+ assert_equal '<title>&amp;amp;</title>', @xml.target!
233
+ end
234
+
235
+ def test_attr_less
236
+ @xml.a(:title => '2>1')
237
+ assert_equal '<a title="2&gt;1"/>', @xml.target!
238
+ end
239
+
240
+ def test_attr_amp
241
+ @xml.a(:title => 'AT&T')
242
+ assert_equal '<a title="AT&amp;T"/>', @xml.target!
243
+ end
244
+
245
+ def test_attr_quot
246
+ @xml.a(:title => '"x"')
247
+ assert_equal '<a title="&quot;x&quot;"/>', @xml.target!
248
+ end
249
+
250
+ end
251
+
252
+ class TestNameSpaces < Builder::Test
253
+ def setup
254
+ @xml = Builder::XmlMarkup.new(:indent=>2)
255
+ end
256
+
257
+ def test_simple_name_spaces
258
+ @xml.rdf :RDF
259
+ assert_equal "<rdf:RDF/>\n", @xml.target!
260
+ end
261
+
262
+ def test_long
263
+ xml = Builder::XmlMarkup.new(:indent=>2)
264
+ xml.instruct!
265
+ xml.rdf :RDF,
266
+ "xmlns:rdf" => :"&rdf;",
267
+ "xmlns:rdfs" => :"&rdfs;",
268
+ "xmlns:xsd" => :"&xsd;",
269
+ "xmlns:owl" => :"&owl;" do
270
+ xml.owl :Class, :'rdf:ID'=>'Bird' do
271
+ xml.rdfs :label, 'bird'
272
+ xml.rdfs :subClassOf do
273
+ xml.owl :Restriction do
274
+ xml.owl :onProperty, 'rdf:resource'=>'#wingspan'
275
+ xml.owl :maxCardinality,1,'rdf:datatype'=>'&xsd;nonNegativeInteger'
276
+ end
277
+ end
278
+ end
279
+ end
280
+ assert_match(/^<\?xml/, xml.target!)
281
+ assert_match(/\n<rdf:RDF/m, xml.target!)
282
+ assert_match(/xmlns:rdf="&rdf;"/m, xml.target!)
283
+ assert_match(/<owl:Restriction>/m, xml.target!)
284
+ end
285
+
286
+ def test_ensure
287
+ xml = Builder::XmlMarkup.new
288
+ xml.html do
289
+ xml.body do
290
+ begin
291
+ xml.p do
292
+ raise Exception.new('boom')
293
+ end
294
+ rescue Exception => e
295
+ xml.pre e
296
+ end
297
+ end
298
+ end
299
+ assert_match %r{<p>}, xml.target!
300
+ assert_match %r{</p>}, xml.target!
301
+ end
302
+ end
303
+
304
+ class TestDeclarations < Builder::Test
305
+ def setup
306
+ @xml = Builder::XmlMarkup.new(:indent=>2)
307
+ end
308
+
309
+ def test_declare
310
+ @xml.declare! :element
311
+ assert_equal "<!element>\n", @xml.target!
312
+ end
313
+
314
+ def test_bare_arg
315
+ @xml.declare! :element, :arg
316
+ assert_equal"<!element arg>\n", @xml.target!
317
+ end
318
+
319
+ def test_string_arg
320
+ @xml.declare! :element, "string"
321
+ assert_equal"<!element \"string\">\n", @xml.target!
322
+ end
323
+
324
+ def test_mixed_args
325
+ @xml.declare! :element, :x, "y", :z, "-//OASIS//DTD DocBook XML//EN"
326
+ assert_equal "<!element x \"y\" z \"-//OASIS//DTD DocBook XML//EN\">\n", @xml.target!
327
+ end
328
+
329
+ def test_nested_declarations
330
+ @xml = Builder::XmlMarkup.new
331
+ @xml.declare! :DOCTYPE, :chapter do |x|
332
+ x.declare! :ELEMENT, :chapter, "(title,para+)".intern
333
+ end
334
+ assert_equal "<!DOCTYPE chapter [<!ELEMENT chapter (title,para+)>]>", @xml.target!
335
+ end
336
+
337
+ def test_nested_indented_declarations
338
+ @xml.declare! :DOCTYPE, :chapter do |x|
339
+ x.declare! :ELEMENT, :chapter, "(title,para+)".intern
340
+ end
341
+ assert_equal "<!DOCTYPE chapter [\n <!ELEMENT chapter (title,para+)>\n]>\n", @xml.target!
342
+ end
343
+
344
+ def test_complex_declaration
345
+ @xml.declare! :DOCTYPE, :chapter do |x|
346
+ x.declare! :ELEMENT, :chapter, "(title,para+)".intern
347
+ x.declare! :ELEMENT, :title, "(#PCDATA)".intern
348
+ x.declare! :ELEMENT, :para, "(#PCDATA)".intern
349
+ end
350
+ expected = %{<!DOCTYPE chapter [
351
+ <!ELEMENT chapter (title,para+)>
352
+ <!ELEMENT title (#PCDATA)>
353
+ <!ELEMENT para (#PCDATA)>
354
+ ]>
355
+ }
356
+ assert_equal expected, @xml.target!
357
+ end
358
+ end
359
+
360
+
361
+ class TestSpecialMarkup < Builder::Test
362
+ def setup
363
+ @xml = Builder::XmlMarkup.new(:indent=>2)
364
+ end
365
+
366
+ def test_comment
367
+ @xml.comment!("COMMENT")
368
+ assert_equal "<!-- COMMENT -->\n", @xml.target!
369
+ end
370
+
371
+ def test_indented_comment
372
+ @xml.p { @xml.comment! "OK" }
373
+ assert_equal "<p>\n <!-- OK -->\n</p>\n", @xml.target!
374
+ end
375
+
376
+ def test_instruct
377
+ @xml.instruct! :abc, :version=>"0.9"
378
+ assert_equal "<?abc version=\"0.9\"?>\n", @xml.target!
379
+ end
380
+
381
+ def test_indented_instruct
382
+ @xml.p { @xml.instruct! :xml }
383
+ assert_match %r{<p>\n <\?xml version="1.0" encoding="UTF-8"\?>\n</p>\n},
384
+ @xml.target!
385
+ end
386
+
387
+ def test_instruct_without_attributes
388
+ @xml.instruct! :zz
389
+ assert_equal "<?zz?>\n", @xml.target!
390
+ end
391
+
392
+ def test_xml_instruct
393
+ @xml.instruct!
394
+ assert_match(/^<\?xml version="1.0" encoding="UTF-8"\?>$/, @xml.target!)
395
+ end
396
+
397
+ def test_xml_instruct_with_overrides
398
+ @xml.instruct! :xml, :encoding=>"UCS-2"
399
+ assert_match(/^<\?xml version="1.0" encoding="UCS-2"\?>$/, @xml.target!)
400
+ end
401
+
402
+ def test_xml_instruct_with_standalong
403
+ @xml.instruct! :xml, :encoding=>"UCS-2", :standalone=>"yes"
404
+ assert_match(/^<\?xml version="1.0" encoding="UCS-2" standalone="yes"\?>$/, @xml.target!)
405
+ end
406
+
407
+ def test_no_blocks
408
+ assert_raise(Builder::IllegalBlockError) do
409
+ @xml.instruct! { |x| x.hi }
410
+ end
411
+ assert_raise(Builder::IllegalBlockError) do
412
+ @xml.comment!(:element) { |x| x.hi }
413
+ end
414
+ end
415
+
416
+ def test_cdata
417
+ @xml.cdata!("TEST")
418
+ assert_equal "<![CDATA[TEST]]>\n", @xml.target!
419
+ end
420
+
421
+ def test_cdata_value
422
+ @xml.cdata_value!("content:encoded", "<p>TEST</p>")
423
+ assert_equal "<content:encoded><![CDATA[<p>TEST</p>]]></content:encoded>\n", @xml.target!
424
+ end
425
+
426
+ def test_cdata_with_ampersand
427
+ @xml.cdata!("TEST&CHECK")
428
+ assert_equal "<![CDATA[TEST&CHECK]]>\n", @xml.target!
429
+ end
430
+
431
+ def test_cdata_with_included_close
432
+ @xml.cdata!("TEST]]>CHECK")
433
+ assert_equal "<![CDATA[TEST]]]]><![CDATA[>CHECK]]>\n", @xml.target!
434
+ end
435
+ end
436
+
437
+ class TestIndentedXmlMarkup < Builder::Test
438
+ def setup
439
+ @xml = Builder::XmlMarkup.new(:indent=>2)
440
+ end
441
+
442
+ def test_one_level
443
+ @xml.ol { |x| x.li "text" }
444
+ assert_equal "<ol>\n <li>text</li>\n</ol>\n", @xml.target!
445
+ end
446
+
447
+ def test_two_levels
448
+ @xml.p { |x|
449
+ x.ol { x.li "text" }
450
+ x.br
451
+ }
452
+ assert_equal "<p>\n <ol>\n <li>text</li>\n </ol>\n <br/>\n</p>\n", @xml.target!
453
+ end
454
+
455
+ def test_initial_level
456
+ @xml = Builder::XmlMarkup.new(:indent=>2, :margin=>4)
457
+ @xml.name { |x| x.first("Jim") }
458
+ assert_equal " <name>\n <first>Jim</first>\n </name>\n", @xml.target!
459
+ end
460
+
461
+ class TestUtfMarkup < Builder::Test
462
+ if ! String.method_defined?(:encode)
463
+ def setup
464
+ @old_kcode = $KCODE
465
+ end
466
+
467
+ def teardown
468
+ $KCODE = @old_kcode
469
+ end
470
+
471
+ def test_use_entities_if_no_encoding_is_given_and_kcode_is_none
472
+ $KCODE = 'NONE'
473
+ xml = Builder::XmlMarkup.new
474
+ xml.p("\xE2\x80\x99")
475
+ assert_match(%r(<p>&#8217;</p>), xml.target!) #
476
+ end
477
+
478
+ def test_use_entities_if_encoding_is_utf_but_kcode_is_not
479
+ $KCODE = 'NONE'
480
+ xml = Builder::XmlMarkup.new
481
+ xml.instruct!(:xml, :encoding => 'UTF-8')
482
+ xml.p("\xE2\x80\x99")
483
+ assert_match(%r(<p>&#8217;</p>), xml.target!) #
484
+ end
485
+ else
486
+ # change in behavior. As there is no $KCODE anymore, the default
487
+ # moves from "does not understand utf-8" to "supports utf-8".
488
+
489
+ def test_use_entities_if_no_encoding_is_given_and_kcode_is_none
490
+ xml = Builder::XmlMarkup.new
491
+ xml.p("\xE2\x80\x99")
492
+ assert_match("<p>\u2019</p>", xml.target!) #
493
+ end
494
+
495
+ def test_use_entities_if_encoding_is_utf_but_kcode_is_not
496
+ xml = Builder::XmlMarkup.new
497
+ xml.instruct!(:xml, :encoding => 'UTF-8')
498
+ xml.p("\xE2\x80\x99")
499
+ assert_match("<p>\u2019</p>", xml.target!) #
500
+ end
501
+ end
502
+
503
+ def encode string, encoding
504
+ if !String.method_defined?(:encode)
505
+ $KCODE = encoding
506
+ string
507
+ elsif encoding == 'UTF8'
508
+ string.dup.force_encoding('UTF-8')
509
+ else
510
+ string
511
+ end
512
+ end
513
+
514
+ def test_use_entities_if_kcode_is_utf_but_encoding_is_dummy_encoding
515
+ xml = Builder::XmlMarkup.new
516
+ xml.instruct!(:xml, :encoding => 'UTF-16')
517
+ xml.p(encode("\xE2\x80\x99", 'UTF8'))
518
+ assert_match(%r(<p>&#8217;</p>), xml.target!) #
519
+ end
520
+
521
+ def test_use_entities_if_kcode_is_utf_but_encoding_is_unsupported_encoding
522
+ xml = Builder::XmlMarkup.new
523
+ xml.instruct!(:xml, :encoding => 'UCS-2')
524
+ xml.p(encode("\xE2\x80\x99", 'UTF8'))
525
+ assert_match(%r(<p>&#8217;</p>), xml.target!) #
526
+ end
527
+
528
+ def test_use_utf8_if_encoding_defaults_and_kcode_is_utf8
529
+ xml = Builder::XmlMarkup.new
530
+ xml.p(encode("\xE2\x80\x99",'UTF8'))
531
+ assert_equal encode("<p>\xE2\x80\x99</p>",'UTF8'), xml.target!
532
+ end
533
+
534
+ def test_use_utf8_if_both_encoding_and_kcode_are_utf8
535
+ xml = Builder::XmlMarkup.new
536
+ xml.instruct!(:xml, :encoding => 'UTF-8')
537
+ xml.p(encode("\xE2\x80\x99",'UTF8'))
538
+ assert_match encode("<p>\xE2\x80\x99</p>",'UTF8'), xml.target!
539
+ end
540
+
541
+ def test_use_utf8_if_both_encoding_and_kcode_are_utf8_with_lowercase
542
+ xml = Builder::XmlMarkup.new
543
+ xml.instruct!(:xml, :encoding => 'utf-8')
544
+ xml.p(encode("\xE2\x80\x99",'UTF8'))
545
+ assert_match encode("<p>\xE2\x80\x99</p>",'UTF8'), xml.target!
546
+ end
547
+ end
548
+
549
+ class TestXmlEvents < Builder::Test
550
+ def setup
551
+ @handler = EventHandler.new
552
+ @xe = Builder::XmlEvents.new(:target=>@handler)
553
+ end
554
+
555
+ def test_simple
556
+ @xe.p
557
+ assert_equal [:start, :p, nil], @handler.events.shift
558
+ assert_equal [:end, :p], @handler.events.shift
559
+ end
560
+
561
+ def test_text
562
+ @xe.p("HI")
563
+ assert_equal [:start, :p, nil], @handler.events.shift
564
+ assert_equal [:text, "HI"], @handler.events.shift
565
+ assert_equal [:end, :p], @handler.events.shift
566
+ end
567
+
568
+ def test_attributes
569
+ @xe.p("id"=>"2")
570
+ ev = @handler.events.shift
571
+ assert_equal [:start, :p], ev[0,2]
572
+ assert_equal "2", ev[2]['id']
573
+ assert_equal [:end, :p], @handler.events.shift
574
+ end
575
+
576
+ def test_indented
577
+ @xml = Builder::XmlEvents.new(:indent=>2, :target=>@handler)
578
+ @xml.p { |x| x.b("HI") }
579
+ assert_equal [:start, :p, nil], @handler.events.shift
580
+ assert_equal "\n ", pop_text
581
+ assert_equal [:start, :b, nil], @handler.events.shift
582
+ assert_equal "HI", pop_text
583
+ assert_equal [:end, :b], @handler.events.shift
584
+ assert_equal "\n", pop_text
585
+ assert_equal [:end, :p], @handler.events.shift
586
+ end
587
+
588
+ def pop_text
589
+ result = ''.dup
590
+ while ! @handler.events.empty? && @handler.events[0][0] == :text
591
+ result << @handler.events[0][1]
592
+ @handler.events.shift
593
+ end
594
+ result
595
+ end
596
+
597
+ class EventHandler
598
+ attr_reader :events
599
+ def initialize
600
+ @events = []
601
+ end
602
+
603
+ def start_tag(sym, attrs)
604
+ @events << [:start, sym, attrs]
605
+ end
606
+
607
+ def end_tag(sym)
608
+ @events << [:end, sym]
609
+ end
610
+
611
+ def text(txt)
612
+ @events << [:text, txt]
613
+ end
614
+ end
615
+ end
616
+
617
+ end