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