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,24 @@
1
+ # ANSI::BBCode
2
+
3
+ The BBCode module provides methods for converting between
4
+ BBCodes, basic HTML and ANSI codes.
5
+
6
+ require 'ansi/bbcode'
7
+
8
+ BBCodes are color and style codes in square brackets, quite
9
+ popular with on line forums.
10
+
11
+ bbcode = "this is [COLOR=red]red[/COLOR], this is [B]bold[/B]"
12
+
13
+ We can convert this to ANSI code simply enough:
14
+
15
+ ansi = ANSI::BBCode.bbcode_to_ansi(bbcode)
16
+
17
+ ansi.assert == "this is \e[0;31mred\e[0m, this is \e[1mbold\e[0m\n"
18
+
19
+ In addition the BBCode module supports conversion to simple HTML.
20
+
21
+ html = ANSI::BBCode.bbcode_to_html(bbcode)
22
+
23
+ html.assert == "this is <font color=\"red\">red</font>, this is <strong>bold</strong><br />\n"
24
+
@@ -0,0 +1,8 @@
1
+ # ANSI::Terminal
2
+
3
+ We should be ables to get the terminal width via the `terminal_width` method.
4
+
5
+ width = ANSI::Terminal.terminal_width
6
+
7
+ Fixnum.assert === width
8
+
@@ -0,0 +1,5 @@
1
+ When "output will be" do |text|
2
+ # how to get result of last block?
3
+ @_.strip.assert == text.strip
4
+ end
5
+
@@ -0,0 +1,334 @@
1
+ # BBCode
2
+ #
3
+ # Copyright (c) 2002 Thomas-Ivo Heinen
4
+ #
5
+ # This module is free software. You may use, modify, and/or redistribute this
6
+ # software under the same terms as Ruby.
7
+ #
8
+ # This program is distributed in the hope that it will be useful, but WITHOUT
9
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
10
+ # FOR A PARTICULAR PURPOSE.
11
+
12
+ #
13
+ module ANSI
14
+
15
+ # TODO: Integrate BBCode with Code module.
16
+
17
+ # The BBCode module helps ease the separation of core and frontend with the
18
+ # core (or submodules) being still able to say, what colors shall be used
19
+ # in it's responses. This is achieved by encoding formatting information
20
+ # using the BBCode tokens. This enables you to "pipe" layout information
21
+ # such as colors, style, font, size and alignment through the core to
22
+ # the frontend.
23
+ #
24
+ # Additionally it converts markups/codes between ANSI, HTML and BBCode
25
+ # almost freely ;)
26
+ #
27
+ # # Converting a bbcode string to ANSI and XHTML
28
+ # str = "this is [COLOR=red]red[/COLOR], this is [B]bold[/B]"
29
+ # print( BBCode.bbcode_to_ansi(str) )
30
+ # print( BBCode.bbcode_to_html(str) )
31
+ #
32
+ module BBCode
33
+
34
+ ## ANSIname => ANSIcode LUT
35
+ ANSINAME2CODE= { "reset" => "\e[0m", "bold" => "\e[1m",
36
+ "underline" => "\e[4m", "blink" => "\e[5m",
37
+ "reverse" => "\e[7m", "invisible" => "\e[8m",
38
+ "black" => "\e[0;30m", "darkgrey" => "\e[1;30m",
39
+ "red" => "\e[0;31m", "lightred" => "\e[1;31m",
40
+ "green" => "\e[0;32m", "lightgreen" => "\e[1;32m",
41
+ "brown" => "\e[0;33m", "yellow" => "\e[1;33m",
42
+ "blue" => "\e[0;34m", "lightblue" => "\e[1;34m",
43
+ "purple" => "\e[0;35m", "magenta" => "\e[1;35m",
44
+ "cyan" => "\e[1;36m", "lightcyan" => "\e[1;36m",
45
+ "grey" => "\e[0;37m", "white" => "\e[1;37m",
46
+ "bgblack" => "\e[40m", "bgred" => "\e[41m",
47
+ "bggreen" => "\e[42m", "bgyellow" => "\e[43m",
48
+ "bgblue" => "\e[44m", "bgmagenta" => "\e[45m",
49
+ "bgcyan" => "\e[46m", "bgwhite" => "\e[47m"
50
+ }
51
+
52
+ ## BBColor => ANSIname LUT
53
+ BBCOLOR2ANSI = { "skyblue" => "blue", "royalblue" => "blue",
54
+ "blue" => "blue", "darkblue" => "blue",
55
+ "orange" => "red", "orangered" => "red",
56
+ "crimson" => "red", "red" => "lightred",
57
+ "firebrick" => "red", "darkred" => "red",
58
+ "green" => "green", "limegreen" => "green",
59
+ "seagreen" => "green", "darkgreen" => "green",
60
+ "deeppink" => "magenta", "tomato" => "red",
61
+ "coral" => "cyan", "purple" => "purple",
62
+ "indigo" => "blue", "burlywood" => "red",
63
+ "sandybrown"=> "red", "sierra" => "sierra",
64
+ "chocolate" => "brown", "teal" => "teal",
65
+ "silver" => "white",
66
+ "black" => "black", "yellow" => "yellow",
67
+ "magenta" => "magenta", "cyan" => "cyan",
68
+ "white" => "white"
69
+ }
70
+
71
+ ## ANSInames => BBCode LUT
72
+ ANSINAME2BBCODE = { "bold" => "B", "underline" => "U", "reverse" => "I",
73
+
74
+ "red" => "COLOR=red", "blue" => "COLOR=blue",
75
+ "green" => "COLOR=green", "cyan" => "COLOR=cyan",
76
+ "magenta"=> "COLOR=deeppink", "purple" => "COLOR=purple",
77
+ "black" => "COLOR=black", "white" => "COLOR=white",
78
+ "yellow" => "COLOR=yellow", "brown" => "COLOR=chocolate"
79
+ }
80
+
81
+ ## Needed for alignments
82
+ @@width = 80
83
+
84
+
85
+ # ---------------------------
86
+
87
+ # Returns the ANSI sequence for given color, if existant
88
+ def BBCode.ansi(colorname)
89
+ colorname.strip!
90
+ return ANSINAME2CODE[ colorname.downcase ]
91
+ end
92
+
93
+ # --- strip_bbcode( string )
94
+ # Will strip any BBCode tags from the given string.
95
+ def BBCode.strip_bbcode(string)
96
+ string.strip!
97
+ return string.gsub(/\[[A-Za-z0-9\/=]+\]/, "")
98
+ end
99
+
100
+ # Returns the string with all ansi escape sequences converted to BBCodes
101
+ def BBCode.ansi_to_bbcode(string)
102
+ return "" if string.nil? || string.to_s.strip.empty?
103
+ result = ""
104
+ tagstack = []
105
+
106
+ ## Iterate over input lines
107
+ string.split("\n").each do |line|
108
+ ## Iterate over found ansi sequences
109
+ line.scan(/\e\[[0-9;]+m/).each do |seq|
110
+ ansiname = ANSINAME2CODE.invert["#{seq}"]
111
+
112
+ ## Pop last tag and form closing tag
113
+ if ansiname == "reset"
114
+ lasttag = tagstack.pop
115
+ bbname = "/" + String.new( lasttag.split("=")[0] )
116
+
117
+ ## Get corresponding BBCode tag + Push to stack
118
+ else
119
+ bbname = ANSINAME2BBCODE[ansiname]
120
+ tagstack.push(bbname)
121
+ end
122
+
123
+ ## Replace ansi sequence by BBCode tag
124
+ replace = sprintf("[%s]", bbname)
125
+ line.sub!(seq, replace)
126
+ end
127
+
128
+ ## Append converted line
129
+ result << sprintf("%s\n", line)
130
+ end
131
+
132
+
133
+ ## Some tags are unclosed
134
+ while !tagstack.empty?
135
+ result << sprintf("[/%s]", String.new(tagstack.pop.split("=")[0]) )
136
+ end
137
+
138
+ return result
139
+ end
140
+
141
+ # Converts a BBCode string to one with ANSI sequences.
142
+ # Returns the string with all formatting instructions in BBCodes converted
143
+ # to ANSI code sequences / aligned with spaces to specified width.
144
+ def BBCode.bbcode_to_ansi(string, usecolors = true)
145
+ return "" if string.nil? || string.to_s.strip.empty?
146
+ result = ""
147
+
148
+ return BBCode.strip_bbcode(string) if !usecolors
149
+
150
+ ## Iterate over lines
151
+ string.split("\n").each do |line|
152
+
153
+ ## TODO: stacking? other styles!
154
+ ANSINAME2BBCODE.each do |key,val|
155
+ line.gsub!(/\[#{val}\]/, ANSINAME2CODE[key])
156
+ line.gsub!(/\[\/#{val}\]/, ANSINAME2CODE["reset"])
157
+ end
158
+
159
+ ## Fonttypes and sizes not available
160
+ line.gsub!(/\[SIZE=\d\]/, "")
161
+ line.gsub!(/\[\/SIZE\]/, "")
162
+ line.gsub!(/\[FONT=[^\]]*\]/, "")
163
+ line.gsub!(/\[\/FONT\]/, "")
164
+
165
+ ## Color-mapping
166
+ colors = line.scan(/\[COLOR=(.*?)\]/i)
167
+ colors = colors.collect{|s| s[0].to_s} if !colors.nil?
168
+ colors.each do |col|
169
+ name = BBCOLOR2ANSI[col.downcase]
170
+ name = BBCOLOR2ANSI["white"] if name.nil?
171
+ code = ANSINAME2CODE[name]
172
+
173
+ line.gsub!(/\[COLOR=#{col}\]/i, code)
174
+ end
175
+ line.gsub!(/\[\/COLOR\]/, ANSINAME2CODE["reset"])
176
+
177
+ ## TODO: Alignment
178
+ ## TODO: IMGs
179
+ ## TODO: EMAILs
180
+ ## TODO: URLs
181
+ ## TODO: QUOTEs
182
+ ## TODO: LISTs
183
+
184
+ result << sprintf("%s\n", line)
185
+ end
186
+
187
+ return result
188
+ end
189
+
190
+ # Converts a HTML string into one with BBCode markup (TODO)
191
+ # Returns the (X)HTML markup string as BBCode
192
+ def BBCode.html_to_bbcode(string)
193
+ return "" if string.nil? || string.to_s.strip.empty?
194
+ result = ""
195
+
196
+ ## Iterate over lines
197
+ string.split(/<br *\/?>/i).each do |line|
198
+ styles = { "strong" => "b", "b" => "b",
199
+ "em" => "i", "i" => "i",
200
+ "u" => "u" }
201
+
202
+ ## preserve B, I, U
203
+ styles.each do |html,code|
204
+ line.gsub!(/<#{html}>/i, "[#{code.upcase}]")
205
+ line.gsub!(/<\/#{html}>/i, "[/#{code.upcase}]")
206
+ end
207
+
208
+ ## TODO: COLORs
209
+ ## TODO: SIZEs
210
+ ## TODO: FONTs
211
+
212
+ ## EMAIL
213
+ line.gsub!(/<a +href *= *\"mailto:(.*?)\".*?>.*?<\/a>/i, "[EMAIL]\\1[/EMAIL]")
214
+
215
+ ## URL
216
+ line.gsub!(/<a +href *= *\"((?:https?|ftp):\/\/.*?)\".*?>(.*?)<\/a>/i, "[URL=\\1]\\2[/URL]")
217
+
218
+ ## Other refs + closing tags => throw away
219
+ line.gsub!(/<a +href *= *\".*?\".*?>/i, "")
220
+ line.gsub!(/<\/a>/i, "")
221
+
222
+ ## IMG
223
+ #line.gsub!(/<img +src *= *\"(.*?)\".*?\/?>/i, "[IMG=\\1]")
224
+ line.gsub!(/<img +src *= *\"(.*?)\".*?\/?>/i, "[IMG]\\1[/IMG]")
225
+
226
+ ## CENTER (right/left??)
227
+ line.gsub!(/<center>/i, "[ALIGN=center]")
228
+ line.gsub!(/<\/center>/i, "[/ALIGN]")
229
+
230
+ ## QUOTE
231
+ line.gsub!(/<(?:xmp|pre)>/i, "[QUOTE]")
232
+ line.gsub!(/<\/(?:xmp|pre)>/i, "[/QUOTE]")
233
+
234
+ ## LIST
235
+ line.gsub!(/<ul>/i, "\n[LIST]\n")
236
+ line.gsub!(/<\/ul>/i, "\n[/LIST]\n")
237
+ line.gsub!(/<li *\/?> */i, "\n[*] ")
238
+
239
+ ## Unkown tags => throw away
240
+ line.gsub!(/<.*? *\/?>/, "")
241
+
242
+ result << sprintf("%s<br />\n", line)
243
+ end
244
+
245
+ return result.gsub!(/<br *\/?>/i, "\n")
246
+ end
247
+
248
+ # Converts a BBCode string to one with HTML markup.
249
+ # Returns the string with all formatting instructions in
250
+ # BBCodes converted to XHTML markups.
251
+ def BBCode.bbcode_to_html(string)
252
+ return "" if string.nil? || string.to_s.strip.empty?
253
+ result = ""
254
+ quote = 0
255
+
256
+ ## Iterate over lines
257
+ string.split("\n").each do |line|
258
+ styles = { "b" => "strong", "i" => "em", "u" => "u" }
259
+
260
+ ## preserve B, I, U
261
+ styles.each do |code,html|
262
+ line.gsub!(/\[#{code}\]/i, "<#{html}>")
263
+ line.gsub!(/\[\/#{code}\]/i, "</#{html}>")
264
+ end
265
+
266
+ ## COLOR => font color=... (TODO: should be numeric!)
267
+ line.gsub!(/\[COLOR=(.*?)\]/i, "<font color=\"\\1\">")
268
+ line.gsub!(/\[\/COLOR\]/i, "</font>")
269
+
270
+ ## SIZE => font size=...
271
+ line.gsub!(/\[SIZE=(.*?)\]/i, "<font size=\"\\1\">")
272
+ line.gsub!(/\[\/SIZE\]/i, "</font>")
273
+
274
+ ## URL
275
+ line.gsub!(/\[URL\]([^\[]+?)\[\/URL\]/i, "<a href=\"\\1\">\\1</a>")
276
+ line.gsub!(/\[URL=(.*?)\](.+?)\[\/URL\]/i, "<a href=\"\\1\">\\2</a>")
277
+
278
+ ## IMG
279
+ line.gsub!(/\[IMG=(.*?)\]/i, "<img src=\"\\1\" />")
280
+
281
+ ## ALIGN=center (TODO: right, left)
282
+ line.gsub!(/\[ALIGN=center\]/i, "<center>")
283
+ line.gsub!(/\[ALIGN=right\]/i, "<center>")
284
+ line.gsub!(/\[ALIGN=left\]/i, "<center>")
285
+ line.gsub!(/\[\/ALIGN\]/i, "</center>")
286
+
287
+ ## QUOTE
288
+ quote+=1 if line =~ /\[QUOTE\]/i
289
+ quote-=1 if (line =~ /\[\/QUOTE\]/i) && (quote > -1)
290
+ line.gsub!(/\[QUOTE\]/i, "<pre>\n")
291
+ line.gsub!(/\[\/QUOTE\]/i, "</pre>\n")
292
+ line.gsub!(/^/, "&#62;"*quote) if quote > 0
293
+
294
+ ## EMAIL
295
+ line.gsub!(/\[EMAIL\](.*?)\[\/EMAIL\]/i, "<a href=\"mailto:\\1\">\\1</a>")
296
+
297
+ ## LIST (TODO: LIST=1, LIST=A)
298
+ line.gsub!(/\[LIST(?:=(.*?))?\]/i, "\n<ul>\n")
299
+ line.gsub!(/\[\/LIST\]/i, "\n</ul>\n")
300
+ line.gsub!(/\[\*\]/i, "\n<li />")
301
+
302
+ ## FONT => font ??????
303
+ ## ?BLUR?, FADE?
304
+
305
+ result << sprintf("%s<br />\n", line)
306
+ end
307
+
308
+ return result
309
+ end
310
+
311
+
312
+ # -- Transitive methods ---------------
313
+
314
+ # Converts an ANSI string to one with HTML markup.
315
+ # Returns the string with ANSI code sequences converted to XHTML markup.
316
+ def BBCode.ansi_to_html(string)
317
+ bbcoded = BBCode.ansi_to_bbcode(string )
318
+ htmled = BBCode.bbcode_to_html(bbcoded)
319
+
320
+ return htmled
321
+ end
322
+
323
+ # Returns the (X)HTML markup code as ANSI sequences
324
+ def BBCode.html_to_ansi(string)
325
+ bbcoded = BBCode.html_to_bbcode(string )
326
+ ansied = BBCode.bbcode_to_ansi(bbcoded)
327
+
328
+ return ansied
329
+ end
330
+
331
+ end #module BBCode
332
+
333
+ end
334
+
@@ -0,0 +1,50 @@
1
+ require 'ansi/code'
2
+
3
+ module ANSI
4
+
5
+ # ANSI::Chain was inspired by Kazuyoshi Tlacaelel's Isna library.
6
+ #
7
+ class Chain
8
+
9
+ #
10
+ def initialize(string)
11
+ @string = string.to_s
12
+ @codes = []
13
+ end
14
+
15
+ #
16
+ attr :string
17
+
18
+ #
19
+ attr :codes
20
+
21
+ #
22
+ def method_missing(s, *a, &b)
23
+ if ANSI::CHART.key?(s)
24
+ @codes << s
25
+ self
26
+ else
27
+ super(s, *a, &b)
28
+ end
29
+ end
30
+
31
+ #
32
+ def to_s
33
+ if codes.empty?
34
+ result = @string
35
+ else
36
+ result = Code.ansi(@string, *codes)
37
+ codes.clear
38
+ end
39
+ result
40
+ end
41
+
42
+ #
43
+ def to_str
44
+ to_s
45
+ end
46
+
47
+ end
48
+
49
+ end
50
+
@@ -0,0 +1,100 @@
1
+ module ANSI
2
+
3
+ # Table of codes used throughout the system.
4
+ #
5
+ # @see http://en.wikipedia.org/wiki/ANSI_escape_code
6
+ CHART = {
7
+ :clear => 0,
8
+ :reset => 0,
9
+ :bright => 1,
10
+ :bold => 1,
11
+ :faint => 2,
12
+ :dark => 2,
13
+ :italic => 3,
14
+ :underline => 4,
15
+ :underscore => 4,
16
+ :blink => 5,
17
+ :slow_blink => 5,
18
+ :rapid => 6,
19
+ :rapid_blink => 6,
20
+ :invert => 7,
21
+ :inverse => 7,
22
+ :reverse => 7,
23
+ :negative => 7,
24
+ :swap => 7,
25
+ :conceal => 8,
26
+ :concealed => 8,
27
+ :hide => 9,
28
+ :strike => 9,
29
+
30
+ :default_font => 10,
31
+ :font_default => 10,
32
+ :font0 => 10,
33
+ :font1 => 11,
34
+ :font2 => 12,
35
+ :font3 => 13,
36
+ :font4 => 14,
37
+ :font5 => 15,
38
+ :font6 => 16,
39
+ :font7 => 17,
40
+ :font8 => 18,
41
+ :font9 => 19,
42
+ :fraktur => 20,
43
+ :bright_off => 21,
44
+ :bold_off => 21,
45
+ :double_underline => 21,
46
+ :clean => 22,
47
+ :italic_off => 23,
48
+ :fraktur_off => 23,
49
+ :underline_off => 24,
50
+ :blink_off => 25,
51
+ :inverse_off => 26,
52
+ :positive => 26,
53
+ :conceal_off => 27,
54
+ :show => 27,
55
+ :reveal => 27,
56
+ :crossed_off => 29,
57
+ :crossed_out_off => 29,
58
+
59
+ :black => 30,
60
+ :red => 31,
61
+ :green => 32,
62
+ :yellow => 33,
63
+ :blue => 34,
64
+ :magenta => 35,
65
+ :cyan => 36,
66
+ :white => 37,
67
+
68
+ :on_black => 40,
69
+ :on_red => 41,
70
+ :on_green => 42,
71
+ :on_yellow => 43,
72
+ :on_blue => 44,
73
+ :on_magenta => 45,
74
+ :on_cyan => 46,
75
+ :on_white => 47,
76
+
77
+ :frame => 51,
78
+ :encircle => 52,
79
+ :overline => 53,
80
+ :frame_off => 54,
81
+ :encircle_off => 54,
82
+ :overline_off => 55,
83
+ }
84
+
85
+ #
86
+ SPECIAL_CHART = {
87
+ :save => "\e[s", # Save current cursor positon.
88
+ :restore => "\e[u", # Restore saved cursor positon.
89
+ :clear_eol => "\e[K", # Clear to the end of the current line.
90
+ :clr => "\e[K", # Clear to the end of the current line.
91
+ :clear_right => "\e[0K", # Clear to the end of the current line.
92
+ :clear_left => "\e[1K", # Clear to the start of the current line.
93
+ :clear_line => "\e[2K", # Clear the entire current line.
94
+ :clear_screen => "\e[2J", # Clear the screen and move cursor to home.
95
+ :cls => "\e[2J", # Clear the screen and move cursor to home.
96
+ :cursor_hide => "\e[?25l", # Hide the cursor.
97
+ :cursor_show => "\e[?25h" # Show the cursor.
98
+ }
99
+
100
+ end