challah 1.0.0.beta2 → 1.0.0.beta3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (968) hide show
  1. checksums.yaml +4 -4
  2. data/lib/challah/authorization.rb +13 -6
  3. data/lib/challah/user/providers.rb +3 -1
  4. data/lib/challah/version.rb +1 -1
  5. data/test/authorization_test.rb +15 -0
  6. data/test/user_test.rb +2 -1
  7. data/vendor/bundle/build_info/highline-1.6.18.info +1 -0
  8. data/vendor/bundle/build_info/mime-types-1.23.info +1 -0
  9. data/vendor/bundle/build_info/minitest-4.7.4.info +1 -0
  10. data/vendor/bundle/build_info/multi_json-1.7.3.info +1 -0
  11. data/vendor/bundle/build_info/rdiscount-2.0.7.3.info +1 -0
  12. data/vendor/bundle/build_info/shoulda-3.5.0.info +1 -0
  13. data/vendor/bundle/build_info/shoulda-matchers-2.1.0.info +1 -0
  14. data/vendor/bundle/build_info/tilt-1.4.1.info +1 -0
  15. data/vendor/bundle/build_info/yard-0.8.6.1.info +1 -0
  16. data/vendor/bundle/cache/highline-1.6.18.gem +0 -0
  17. data/vendor/bundle/cache/mime-types-1.23.gem +0 -0
  18. data/vendor/bundle/cache/minitest-4.7.4.gem +0 -0
  19. data/vendor/bundle/cache/multi_json-1.7.3.gem +0 -0
  20. data/vendor/bundle/cache/rdiscount-2.0.7.3.gem +0 -0
  21. data/vendor/bundle/cache/shoulda-3.5.0.gem +0 -0
  22. data/vendor/bundle/cache/shoulda-matchers-2.1.0.gem +0 -0
  23. data/vendor/bundle/cache/tilt-1.4.1.gem +0 -0
  24. data/vendor/bundle/cache/yard-0.8.6.1.gem +0 -0
  25. data/vendor/bundle/gems/highline-1.6.18/AUTHORS +3 -0
  26. data/vendor/bundle/gems/highline-1.6.18/CHANGELOG +342 -0
  27. data/vendor/bundle/gems/highline-1.6.18/COPYING +340 -0
  28. data/vendor/bundle/gems/highline-1.6.18/INSTALL +55 -0
  29. data/vendor/bundle/gems/highline-1.6.18/LICENSE +7 -0
  30. data/vendor/bundle/gems/highline-1.6.18/README.rdoc +63 -0
  31. data/vendor/bundle/gems/highline-1.6.18/Rakefile +50 -0
  32. data/vendor/bundle/gems/highline-1.6.18/TODO +6 -0
  33. data/vendor/bundle/gems/highline-1.6.18/examples/ansi_colors.rb +38 -0
  34. data/vendor/bundle/gems/highline-1.6.18/examples/asking_for_arrays.rb +18 -0
  35. data/vendor/bundle/gems/highline-1.6.18/examples/basic_usage.rb +75 -0
  36. data/vendor/bundle/gems/highline-1.6.18/examples/color_scheme.rb +32 -0
  37. data/vendor/bundle/gems/highline-1.6.18/examples/get_character.rb +12 -0
  38. data/vendor/bundle/gems/highline-1.6.18/examples/limit.rb +12 -0
  39. data/vendor/bundle/gems/highline-1.6.18/examples/menus.rb +65 -0
  40. data/vendor/bundle/gems/highline-1.6.18/examples/overwrite.rb +19 -0
  41. data/vendor/bundle/gems/highline-1.6.18/examples/page_and_wrap.rb +322 -0
  42. data/vendor/bundle/gems/highline-1.6.18/examples/password.rb +7 -0
  43. data/vendor/bundle/gems/highline-1.6.18/examples/repeat_entry.rb +21 -0
  44. data/vendor/bundle/gems/highline-1.6.18/examples/trapping_eof.rb +22 -0
  45. data/vendor/bundle/gems/highline-1.6.18/examples/using_readline.rb +17 -0
  46. data/vendor/bundle/gems/highline-1.6.18/highline.gemspec +37 -0
  47. data/vendor/bundle/gems/highline-1.6.18/lib/highline/color_scheme.rb +134 -0
  48. data/vendor/bundle/gems/highline-1.6.18/lib/highline/compatibility.rb +16 -0
  49. data/vendor/bundle/gems/highline-1.6.18/lib/highline/import.rb +41 -0
  50. data/vendor/bundle/gems/highline-1.6.18/lib/highline/menu.rb +398 -0
  51. data/vendor/bundle/gems/highline-1.6.18/lib/highline/question.rb +475 -0
  52. data/vendor/bundle/gems/highline-1.6.18/lib/highline/simulate.rb +48 -0
  53. data/vendor/bundle/gems/highline-1.6.18/lib/highline/string_extensions.rb +131 -0
  54. data/vendor/bundle/gems/highline-1.6.18/lib/highline/style.rb +181 -0
  55. data/vendor/bundle/gems/highline-1.6.18/lib/highline/system_extensions.rb +218 -0
  56. data/vendor/bundle/gems/highline-1.6.18/lib/highline.rb +1012 -0
  57. data/vendor/bundle/gems/highline-1.6.18/setup.rb +1360 -0
  58. data/vendor/bundle/gems/highline-1.6.18/site/highline.css +65 -0
  59. data/vendor/bundle/gems/highline-1.6.18/site/images/logo.png +0 -0
  60. data/vendor/bundle/gems/highline-1.6.18/site/index.html +58 -0
  61. data/vendor/bundle/gems/highline-1.6.18/test/string_methods.rb +32 -0
  62. data/vendor/bundle/gems/highline-1.6.18/test/tc_color_scheme.rb +96 -0
  63. data/vendor/bundle/gems/highline-1.6.18/test/tc_highline.rb +1123 -0
  64. data/vendor/bundle/gems/highline-1.6.18/test/tc_import.rb +52 -0
  65. data/vendor/bundle/gems/highline-1.6.18/test/tc_menu.rb +439 -0
  66. data/vendor/bundle/gems/highline-1.6.18/test/tc_string_extension.rb +20 -0
  67. data/vendor/bundle/gems/highline-1.6.18/test/tc_string_highline.rb +38 -0
  68. data/vendor/bundle/gems/highline-1.6.18/test/tc_style.rb +567 -0
  69. data/vendor/bundle/gems/highline-1.6.18/test/ts_all.rb +16 -0
  70. data/vendor/bundle/gems/mime-types-1.23/Contributing.rdoc +68 -0
  71. data/vendor/bundle/gems/mime-types-1.23/Gemfile +21 -0
  72. data/vendor/bundle/gems/mime-types-1.23/History.rdoc +215 -0
  73. data/vendor/bundle/gems/mime-types-1.23/Licence.rdoc +37 -0
  74. data/vendor/bundle/gems/mime-types-1.23/Manifest.txt +40 -0
  75. data/vendor/bundle/gems/mime-types-1.23/README.rdoc +63 -0
  76. data/vendor/bundle/gems/mime-types-1.23/Rakefile +206 -0
  77. data/vendor/bundle/gems/mime-types-1.23/docs/COPYING.txt +339 -0
  78. data/vendor/bundle/gems/mime-types-1.23/docs/artistic.txt +127 -0
  79. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/application +1002 -0
  80. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/application.mac +3 -0
  81. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/application.nonstandard +131 -0
  82. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/application.obsolete +41 -0
  83. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/audio +138 -0
  84. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/audio.nonstandard +11 -0
  85. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/audio.obsolete +1 -0
  86. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/image +46 -0
  87. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/image.nonstandard +20 -0
  88. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/image.obsolete +5 -0
  89. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/message +18 -0
  90. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/message.obsolete +2 -0
  91. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/model +15 -0
  92. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/multipart +14 -0
  93. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/multipart.nonstandard +1 -0
  94. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/multipart.obsolete +7 -0
  95. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/other.nonstandard +8 -0
  96. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/text +61 -0
  97. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/text.nonstandard +7 -0
  98. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/text.obsolete +8 -0
  99. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/text.vms +1 -0
  100. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/video +73 -0
  101. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/video.nonstandard +16 -0
  102. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types/video.obsolete +3 -0
  103. data/vendor/bundle/gems/mime-types-1.23/lib/mime/types.rb +881 -0
  104. data/vendor/bundle/gems/mime-types-1.23/lib/mime-types.rb +3 -0
  105. data/vendor/bundle/gems/mime-types-1.23/test/test_mime_type.rb +319 -0
  106. data/vendor/bundle/gems/mime-types-1.23/test/test_mime_types.rb +119 -0
  107. data/vendor/bundle/gems/minitest-4.7.4/History.txt +796 -0
  108. data/vendor/bundle/gems/minitest-4.7.4/Manifest.txt +20 -0
  109. data/vendor/bundle/gems/minitest-4.7.4/README.txt +457 -0
  110. data/vendor/bundle/gems/minitest-4.7.4/Rakefile +94 -0
  111. data/vendor/bundle/gems/minitest-4.7.4/design_rationale.rb +52 -0
  112. data/vendor/bundle/gems/minitest-4.7.4/lib/hoe/minitest.rb +22 -0
  113. data/vendor/bundle/gems/minitest-4.7.4/lib/minitest/autorun.rb +12 -0
  114. data/vendor/bundle/gems/minitest-4.7.4/lib/minitest/benchmark.rb +416 -0
  115. data/vendor/bundle/gems/minitest-4.7.4/lib/minitest/hell.rb +13 -0
  116. data/vendor/bundle/gems/minitest-4.7.4/lib/minitest/mock.rb +193 -0
  117. data/vendor/bundle/gems/minitest-4.7.4/lib/minitest/parallel_each.rb +73 -0
  118. data/vendor/bundle/gems/minitest-4.7.4/lib/minitest/pride.rb +112 -0
  119. data/vendor/bundle/gems/minitest-4.7.4/lib/minitest/spec.rb +545 -0
  120. data/vendor/bundle/gems/minitest-4.7.4/lib/minitest/unit.rb +1415 -0
  121. data/vendor/bundle/gems/minitest-4.7.4/test/minitest/metametameta.rb +67 -0
  122. data/vendor/bundle/gems/minitest-4.7.4/test/minitest/test_minitest_benchmark.rb +128 -0
  123. data/vendor/bundle/gems/minitest-4.7.4/test/minitest/test_minitest_mock.rb +403 -0
  124. data/vendor/bundle/gems/minitest-4.7.4/test/minitest/test_minitest_spec.rb +804 -0
  125. data/vendor/bundle/gems/minitest-4.7.4/test/minitest/test_minitest_unit.rb +1860 -0
  126. data/vendor/bundle/gems/multi_json-1.7.3/CHANGELOG.md +147 -0
  127. data/vendor/bundle/gems/multi_json-1.7.3/CONTRIBUTING.md +46 -0
  128. data/vendor/bundle/gems/multi_json-1.7.3/Gemfile +31 -0
  129. data/vendor/bundle/gems/multi_json-1.7.3/LICENSE.md +20 -0
  130. data/vendor/bundle/gems/multi_json-1.7.3/README.md +109 -0
  131. data/vendor/bundle/gems/multi_json-1.7.3/Rakefile +12 -0
  132. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json/adapter.rb +43 -0
  133. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json/adapters/gson.rb +19 -0
  134. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json/adapters/jr_jackson.rb +19 -0
  135. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json/adapters/json_common.rb +35 -0
  136. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json/adapters/json_gem.rb +15 -0
  137. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json/adapters/json_pure.rb +15 -0
  138. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json/adapters/nsjsonserialization.rb +34 -0
  139. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json/adapters/oj.rb +28 -0
  140. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json/adapters/ok_json.rb +22 -0
  141. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json/adapters/yajl.rb +19 -0
  142. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json/convertible_hash_keys.rb +43 -0
  143. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json/options.rb +39 -0
  144. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json/vendor/okjson.rb +600 -0
  145. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json/version.rb +3 -0
  146. data/vendor/bundle/gems/multi_json-1.7.3/lib/multi_json.rb +154 -0
  147. data/vendor/bundle/gems/multi_json-1.7.3/multi_json.gemspec +22 -0
  148. data/vendor/bundle/gems/multi_json-1.7.3/spec/adapter_shared_example.rb +235 -0
  149. data/vendor/bundle/gems/multi_json-1.7.3/spec/has_options.rb +74 -0
  150. data/vendor/bundle/gems/multi_json-1.7.3/spec/helper.rb +32 -0
  151. data/vendor/bundle/gems/multi_json-1.7.3/spec/json_common_shared_example.rb +30 -0
  152. data/vendor/bundle/gems/multi_json-1.7.3/spec/multi_json_spec.rb +224 -0
  153. data/vendor/bundle/gems/rdiscount-2.0.7.3/BUILDING +142 -0
  154. data/vendor/bundle/gems/rdiscount-2.0.7.3/COPYING +52 -0
  155. data/vendor/bundle/gems/rdiscount-2.0.7.3/README.markdown +72 -0
  156. data/vendor/bundle/gems/rdiscount-2.0.7.3/Rakefile +218 -0
  157. data/vendor/bundle/gems/rdiscount-2.0.7.3/bin/rdiscount +13 -0
  158. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/Csio.c +61 -0
  159. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/Csio.o +0 -0
  160. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/Makefile +237 -0
  161. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/VERSION +1 -0
  162. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/amalloc.c +111 -0
  163. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/amalloc.h +29 -0
  164. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/amalloc.o +0 -0
  165. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/basename.c +43 -0
  166. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/basename.o +0 -0
  167. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/config.h +25 -0
  168. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/css.c +85 -0
  169. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/css.o +0 -0
  170. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/cstring.h +77 -0
  171. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/docheader.c +49 -0
  172. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/docheader.o +0 -0
  173. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/dumptree.c +152 -0
  174. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/dumptree.o +0 -0
  175. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/emmatch.c +188 -0
  176. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/emmatch.o +0 -0
  177. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/extconf.rb +37 -0
  178. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/flags.c +84 -0
  179. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/flags.o +0 -0
  180. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/generate.c +1717 -0
  181. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/generate.o +0 -0
  182. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/html5.c +24 -0
  183. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/html5.o +0 -0
  184. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/markdown.c +1227 -0
  185. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/markdown.h +181 -0
  186. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/markdown.o +0 -0
  187. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/mkdio.c +354 -0
  188. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/mkdio.h +108 -0
  189. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/mkdio.o +0 -0
  190. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/mkmf.log +191 -0
  191. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/rdiscount.bundle +0 -0
  192. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/rdiscount.c +147 -0
  193. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/rdiscount.o +0 -0
  194. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/resource.c +157 -0
  195. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/resource.o +0 -0
  196. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/ruby-config.h +10 -0
  197. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/setup.c +47 -0
  198. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/setup.o +0 -0
  199. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/siteconf20130510-69347-e72tzr.rb +6 -0
  200. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/tags.c +123 -0
  201. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/tags.h +19 -0
  202. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/tags.o +0 -0
  203. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/toc.c +103 -0
  204. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/toc.o +0 -0
  205. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/version.c +22 -0
  206. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/version.o +0 -0
  207. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/xml.c +82 -0
  208. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/xml.o +0 -0
  209. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/xmlpage.c +48 -0
  210. data/vendor/bundle/gems/rdiscount-2.0.7.3/ext/xmlpage.o +0 -0
  211. data/vendor/bundle/gems/rdiscount-2.0.7.3/lib/markdown.rb +1 -0
  212. data/vendor/bundle/gems/rdiscount-2.0.7.3/lib/rdiscount.bundle +0 -0
  213. data/vendor/bundle/gems/rdiscount-2.0.7.3/lib/rdiscount.rb +100 -0
  214. data/vendor/bundle/gems/rdiscount-2.0.7.3/man/markdown.7 +1020 -0
  215. data/vendor/bundle/gems/rdiscount-2.0.7.3/man/rdiscount.1 +22 -0
  216. data/vendor/bundle/gems/rdiscount-2.0.7.3/man/rdiscount.1.ronn +24 -0
  217. data/vendor/bundle/gems/rdiscount-2.0.7.3/rdiscount.gemspec +65 -0
  218. data/vendor/bundle/gems/rdiscount-2.0.7.3/test/benchmark.rb +56 -0
  219. data/vendor/bundle/gems/rdiscount-2.0.7.3/test/benchmark.txt +306 -0
  220. data/vendor/bundle/gems/rdiscount-2.0.7.3/test/markdown_test.rb +158 -0
  221. data/vendor/bundle/gems/rdiscount-2.0.7.3/test/rdiscount_test.rb +132 -0
  222. data/vendor/bundle/gems/shoulda-3.5.0/Appraisals +15 -0
  223. data/vendor/bundle/gems/shoulda-3.5.0/CONTRIBUTING.md +38 -0
  224. data/vendor/bundle/gems/shoulda-3.5.0/Gemfile +3 -0
  225. data/vendor/bundle/gems/shoulda-3.5.0/MIT-LICENSE +22 -0
  226. data/vendor/bundle/gems/shoulda-3.5.0/README.md +103 -0
  227. data/vendor/bundle/gems/shoulda-3.5.0/Rakefile +17 -0
  228. data/vendor/bundle/gems/shoulda-3.5.0/features/rails_integration.feature +87 -0
  229. data/vendor/bundle/gems/shoulda-3.5.0/features/step_definitions/rails_steps.rb +77 -0
  230. data/vendor/bundle/gems/shoulda-3.5.0/features/support/env.rb +14 -0
  231. data/vendor/bundle/gems/shoulda-3.5.0/gemfiles/3.0.gemfile +7 -0
  232. data/vendor/bundle/gems/shoulda-3.5.0/gemfiles/3.0.gemfile.lock +127 -0
  233. data/vendor/bundle/gems/shoulda-3.5.0/gemfiles/3.1.gemfile +9 -0
  234. data/vendor/bundle/gems/shoulda-3.5.0/gemfiles/3.1.gemfile.lock +148 -0
  235. data/vendor/bundle/gems/shoulda-3.5.0/gemfiles/3.2.gemfile +9 -0
  236. data/vendor/bundle/gems/shoulda-3.5.0/gemfiles/3.2.gemfile.lock +146 -0
  237. data/vendor/bundle/gems/shoulda-3.5.0/lib/shoulda/version.rb +3 -0
  238. data/vendor/bundle/gems/shoulda-3.5.0/lib/shoulda.rb +3 -0
  239. data/vendor/bundle/gems/shoulda-3.5.0/shoulda.gemspec +30 -0
  240. data/vendor/bundle/gems/shoulda-matchers-2.1.0/Appraisals +17 -0
  241. data/vendor/bundle/gems/shoulda-matchers-2.1.0/CONTRIBUTING.md +41 -0
  242. data/vendor/bundle/gems/shoulda-matchers-2.1.0/Gemfile +15 -0
  243. data/vendor/bundle/gems/shoulda-matchers-2.1.0/Gemfile.lock +148 -0
  244. data/vendor/bundle/gems/shoulda-matchers-2.1.0/MIT-LICENSE +22 -0
  245. data/vendor/bundle/gems/shoulda-matchers-2.1.0/NEWS.md +181 -0
  246. data/vendor/bundle/gems/shoulda-matchers-2.1.0/README.md +93 -0
  247. data/vendor/bundle/gems/shoulda-matchers-2.1.0/Rakefile +28 -0
  248. data/vendor/bundle/gems/shoulda-matchers-2.1.0/features/rails_integration.feature +114 -0
  249. data/vendor/bundle/gems/shoulda-matchers-2.1.0/features/step_definitions/rails_steps.rb +130 -0
  250. data/vendor/bundle/gems/shoulda-matchers-2.1.0/features/support/env.rb +5 -0
  251. data/vendor/bundle/gems/shoulda-matchers-2.1.0/gemfiles/3.0.gemfile +14 -0
  252. data/vendor/bundle/gems/shoulda-matchers-2.1.0/gemfiles/3.0.gemfile.lock +139 -0
  253. data/vendor/bundle/gems/shoulda-matchers-2.1.0/gemfiles/3.1.gemfile +16 -0
  254. data/vendor/bundle/gems/shoulda-matchers-2.1.0/gemfiles/3.1.gemfile.lock +160 -0
  255. data/vendor/bundle/gems/shoulda-matchers-2.1.0/gemfiles/3.2.gemfile +16 -0
  256. data/vendor/bundle/gems/shoulda-matchers-2.1.0/gemfiles/3.2.gemfile.lock +158 -0
  257. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/action_controller/filter_param_matcher.rb +46 -0
  258. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/action_controller/redirect_to_matcher.rb +65 -0
  259. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/action_controller/render_template_matcher.rb +61 -0
  260. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/action_controller/render_with_layout_matcher.rb +94 -0
  261. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/action_controller/respond_with_matcher.rb +83 -0
  262. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/action_controller/route_matcher.rb +96 -0
  263. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/action_controller/set_session_matcher.rb +105 -0
  264. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/action_controller/set_the_flash_matcher.rb +147 -0
  265. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/action_controller.rb +35 -0
  266. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/allow_mass_assignment_of_matcher.rb +113 -0
  267. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/allow_value_matcher.rb +174 -0
  268. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/disallow_value_matcher.rb +42 -0
  269. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/ensure_exclusion_of_matcher.rb +94 -0
  270. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/ensure_inclusion_of_matcher.rb +156 -0
  271. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/ensure_length_of_matcher.rb +176 -0
  272. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/errors.rb +7 -0
  273. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/exception_message_finder.rb +58 -0
  274. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/helpers.rb +45 -0
  275. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/odd_even_number_matcher.rb +47 -0
  276. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/only_integer_matcher.rb +37 -0
  277. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/validate_acceptance_of_matcher.rb +41 -0
  278. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/validate_confirmation_of_matcher.rb +65 -0
  279. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/validate_numericality_of_matcher.rb +115 -0
  280. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/validate_presence_of_matcher.rb +64 -0
  281. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/validate_uniqueness_of_matcher.rb +221 -0
  282. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/validation_matcher.rb +89 -0
  283. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model/validation_message_finder.rb +70 -0
  284. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_model.rb +50 -0
  285. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_record/accept_nested_attributes_for_matcher.rb +140 -0
  286. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_record/association_matcher.rb +368 -0
  287. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_record/have_db_column_matcher.rb +195 -0
  288. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_record/have_db_index_matcher.rb +111 -0
  289. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_record/have_readonly_attribute_matcher.rb +55 -0
  290. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_record/serialize_matcher.rb +112 -0
  291. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/active_record.rb +25 -0
  292. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/assertion_error.rb +16 -0
  293. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/integrations/rspec.rb +20 -0
  294. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/integrations/test_unit.rb +42 -0
  295. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers/version.rb +5 -0
  296. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda/matchers.rb +8 -0
  297. data/vendor/bundle/gems/shoulda-matchers-2.1.0/lib/shoulda-matchers.rb +1 -0
  298. data/vendor/bundle/gems/shoulda-matchers-2.1.0/shoulda-matchers.gemspec +33 -0
  299. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/active_model/validate_uniqueness_of_matcher_spec.rb +195 -0
  300. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/action_controller/filter_param_matcher_spec.rb +22 -0
  301. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/action_controller/redirect_to_matcher_spec.rb +42 -0
  302. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/action_controller/render_template_matcher_spec.rb +78 -0
  303. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/action_controller/render_with_layout_matcher_spec.rb +58 -0
  304. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/action_controller/respond_with_matcher_spec.rb +31 -0
  305. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/action_controller/route_matcher_spec.rb +65 -0
  306. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/action_controller/set_session_matcher_spec.rb +51 -0
  307. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/action_controller/set_the_flash_matcher_spec.rb +153 -0
  308. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/allow_mass_assignment_of_matcher_spec.rb +111 -0
  309. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/allow_value_matcher_spec.rb +146 -0
  310. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/disallow_value_matcher_spec.rb +43 -0
  311. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/ensure_exclusion_of_matcher_spec.rb +95 -0
  312. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/ensure_inclusion_of_matcher_spec.rb +194 -0
  313. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/ensure_length_of_matcher_spec.rb +159 -0
  314. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/exception_message_finder_spec.rb +112 -0
  315. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/helpers_spec.rb +158 -0
  316. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/odd_even_number_matcher_spec.rb +93 -0
  317. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/only_integer_matcher_spec.rb +52 -0
  318. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/validate_acceptance_of_matcher_spec.rb +41 -0
  319. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/validate_confirmation_of_matcher_spec.rb +47 -0
  320. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/validate_numericality_of_matcher_spec.rb +133 -0
  321. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/validate_presence_of_matcher_spec.rb +143 -0
  322. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/validate_uniqueness_of_matcher_spec.rb +212 -0
  323. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_model/validation_message_finder_spec.rb +119 -0
  324. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_record/accept_nested_attributes_for_matcher_spec.rb +106 -0
  325. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_record/association_matcher_spec.rb +606 -0
  326. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_record/have_db_column_matcher_spec.rb +111 -0
  327. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_record/have_db_index_matcher_spec.rb +78 -0
  328. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_record/have_readonly_attributes_matcher_spec.rb +41 -0
  329. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/shoulda/matchers/active_record/serialize_matcher_spec.rb +86 -0
  330. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/spec_helper.rb +28 -0
  331. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/support/active_model_versions.rb +13 -0
  332. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/support/activemodel_helpers.rb +19 -0
  333. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/support/class_builder.rb +42 -0
  334. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/support/controller_builder.rb +80 -0
  335. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/support/i18n_faker.rb +10 -0
  336. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/support/mailer_builder.rb +10 -0
  337. data/vendor/bundle/gems/shoulda-matchers-2.1.0/spec/support/model_builder.rb +77 -0
  338. data/vendor/bundle/gems/tilt-1.4.1/CHANGELOG.md +44 -0
  339. data/vendor/bundle/gems/tilt-1.4.1/COPYING +18 -0
  340. data/vendor/bundle/gems/tilt-1.4.1/Gemfile +32 -0
  341. data/vendor/bundle/gems/tilt-1.4.1/HACKING +16 -0
  342. data/vendor/bundle/gems/tilt-1.4.1/README.md +232 -0
  343. data/vendor/bundle/gems/tilt-1.4.1/Rakefile +104 -0
  344. data/vendor/bundle/gems/tilt-1.4.1/TEMPLATES.md +516 -0
  345. data/vendor/bundle/gems/tilt-1.4.1/bin/tilt +112 -0
  346. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/asciidoc.rb +34 -0
  347. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/builder.rb +40 -0
  348. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/coffee.rb +54 -0
  349. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/css.rb +80 -0
  350. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/csv.rb +71 -0
  351. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/erb.rb +110 -0
  352. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/etanni.rb +27 -0
  353. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/haml.rb +64 -0
  354. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/liquid.rb +45 -0
  355. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/markaby.rb +52 -0
  356. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/markdown.rb +214 -0
  357. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/nokogiri.rb +43 -0
  358. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/plain.rb +20 -0
  359. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/radius.rb +55 -0
  360. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/rdoc.rb +47 -0
  361. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/string.rb +21 -0
  362. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/template.rb +292 -0
  363. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/textile.rb +30 -0
  364. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/wiki.rb +58 -0
  365. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt/yajl.rb +94 -0
  366. data/vendor/bundle/gems/tilt-1.4.1/lib/tilt.rb +204 -0
  367. data/vendor/bundle/gems/tilt-1.4.1/test/contest.rb +68 -0
  368. data/vendor/bundle/gems/tilt-1.4.1/test/markaby/locals.mab +1 -0
  369. data/vendor/bundle/gems/tilt-1.4.1/test/markaby/markaby.mab +1 -0
  370. data/vendor/bundle/gems/tilt-1.4.1/test/markaby/markaby_other_static.mab +1 -0
  371. data/vendor/bundle/gems/tilt-1.4.1/test/markaby/render_twice.mab +1 -0
  372. data/vendor/bundle/gems/tilt-1.4.1/test/markaby/scope.mab +1 -0
  373. data/vendor/bundle/gems/tilt-1.4.1/test/markaby/yielding.mab +2 -0
  374. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_asciidoctor_test.rb +44 -0
  375. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_blueclothtemplate_test.rb +45 -0
  376. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_buildertemplate_test.rb +59 -0
  377. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_cache_test.rb +32 -0
  378. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_coffeescripttemplate_test.rb +114 -0
  379. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_compilesite_test.rb +51 -0
  380. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_creoletemplate_test.rb +28 -0
  381. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_csv_test.rb +69 -0
  382. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_erbtemplate_test.rb +239 -0
  383. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_erubistemplate_test.rb +151 -0
  384. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_etannitemplate_test.rb +173 -0
  385. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_fallback_test.rb +122 -0
  386. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_hamltemplate_test.rb +144 -0
  387. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_kramdown_test.rb +42 -0
  388. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_lesstemplate_test.less +1 -0
  389. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_lesstemplate_test.rb +42 -0
  390. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_liquidtemplate_test.rb +78 -0
  391. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_markaby_test.rb +88 -0
  392. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_markdown_test.rb +172 -0
  393. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_marukutemplate_test.rb +48 -0
  394. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_nokogiritemplate_test.rb +87 -0
  395. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_radiustemplate_test.rb +75 -0
  396. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_rdiscounttemplate_test.rb +55 -0
  397. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_rdoctemplate_test.rb +31 -0
  398. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_redcarpettemplate_test.rb +71 -0
  399. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_redclothtemplate_test.rb +36 -0
  400. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_sasstemplate_test.rb +41 -0
  401. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_stringtemplate_test.rb +170 -0
  402. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_template_test.rb +323 -0
  403. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_test.rb +65 -0
  404. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_wikiclothtemplate_test.rb +32 -0
  405. data/vendor/bundle/gems/tilt-1.4.1/test/tilt_yajltemplate_test.rb +101 -0
  406. data/vendor/bundle/gems/tilt-1.4.1/tilt.gemspec +120 -0
  407. data/vendor/bundle/gems/yard-0.8.6.1/LEGAL +66 -0
  408. data/vendor/bundle/gems/yard-0.8.6.1/LICENSE +22 -0
  409. data/vendor/bundle/gems/yard-0.8.6.1/README.md +601 -0
  410. data/vendor/bundle/gems/yard-0.8.6.1/Rakefile +61 -0
  411. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/builtins_vs_eval.rb +23 -0
  412. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/concat_vs_join.rb +12 -0
  413. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/erb_vs_erubis.rb +53 -0
  414. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/format_args.rb +46 -0
  415. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/generation.rb +37 -0
  416. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/marshal_vs_dbm.rb +63 -0
  417. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/parsing.rb +46 -0
  418. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/pathname_vs_string.rb +50 -0
  419. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/rdoc_vs_yardoc.rb +10 -0
  420. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/registry_store_types.rb +48 -0
  421. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/ri_vs_yri.rb +18 -0
  422. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/ripper_parser.rb +12 -0
  423. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/splat_vs_flatten.rb +12 -0
  424. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/template_erb.rb +22 -0
  425. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/template_format.rb +6 -0
  426. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/template_profile.rb +17 -0
  427. data/vendor/bundle/gems/yard-0.8.6.1/benchmarks/yri_cache.rb +19 -0
  428. data/vendor/bundle/gems/yard-0.8.6.1/bin/yard +12 -0
  429. data/vendor/bundle/gems/yard-0.8.6.1/bin/yardoc +12 -0
  430. data/vendor/bundle/gems/yard-0.8.6.1/bin/yri +12 -0
  431. data/vendor/bundle/gems/yard-0.8.6.1/docs/CodeObjects.md +115 -0
  432. data/vendor/bundle/gems/yard-0.8.6.1/docs/GettingStarted.md +592 -0
  433. data/vendor/bundle/gems/yard-0.8.6.1/docs/Handlers.md +152 -0
  434. data/vendor/bundle/gems/yard-0.8.6.1/docs/Overview.md +61 -0
  435. data/vendor/bundle/gems/yard-0.8.6.1/docs/Parser.md +191 -0
  436. data/vendor/bundle/gems/yard-0.8.6.1/docs/Tags.md +282 -0
  437. data/vendor/bundle/gems/yard-0.8.6.1/docs/TagsArch.md +123 -0
  438. data/vendor/bundle/gems/yard-0.8.6.1/docs/Templates.md +496 -0
  439. data/vendor/bundle/gems/yard-0.8.6.1/docs/WhatsNew.md +1244 -0
  440. data/vendor/bundle/gems/yard-0.8.6.1/docs/images/code-objects-class-diagram.png +0 -0
  441. data/vendor/bundle/gems/yard-0.8.6.1/docs/images/handlers-class-diagram.png +0 -0
  442. data/vendor/bundle/gems/yard-0.8.6.1/docs/images/overview-class-diagram.png +0 -0
  443. data/vendor/bundle/gems/yard-0.8.6.1/docs/images/parser-class-diagram.png +0 -0
  444. data/vendor/bundle/gems/yard-0.8.6.1/docs/images/tags-class-diagram.png +0 -0
  445. data/vendor/bundle/gems/yard-0.8.6.1/docs/templates/default/fulldoc/html/full_list_tag.erb +7 -0
  446. data/vendor/bundle/gems/yard-0.8.6.1/docs/templates/default/fulldoc/html/setup.rb +6 -0
  447. data/vendor/bundle/gems/yard-0.8.6.1/docs/templates/default/layout/html/setup.rb +8 -0
  448. data/vendor/bundle/gems/yard-0.8.6.1/docs/templates/default/layout/html/tag_list.erb +11 -0
  449. data/vendor/bundle/gems/yard-0.8.6.1/docs/templates/default/yard_tags/html/list.erb +18 -0
  450. data/vendor/bundle/gems/yard-0.8.6.1/docs/templates/default/yard_tags/html/setup.rb +27 -0
  451. data/vendor/bundle/gems/yard-0.8.6.1/docs/templates/plugin.rb +65 -0
  452. data/vendor/bundle/gems/yard-0.8.6.1/lib/rubygems_plugin.rb +4 -0
  453. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/autoload.rb +290 -0
  454. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/command.rb +84 -0
  455. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/command_parser.rb +92 -0
  456. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/config.rb +136 -0
  457. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/diff.rb +270 -0
  458. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/display.rb +68 -0
  459. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/gems.rb +83 -0
  460. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/graph.rb +125 -0
  461. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/help.rb +18 -0
  462. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/i18n.rb +69 -0
  463. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/list.rb +22 -0
  464. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/markup_types.rb +33 -0
  465. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/server.rb +253 -0
  466. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/stats.rb +213 -0
  467. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/yardoc.rb +731 -0
  468. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/yardopts_command.rb +109 -0
  469. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/cli/yri.rb +214 -0
  470. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/code_objects/base.rb +585 -0
  471. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/code_objects/class_object.rb +143 -0
  472. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/code_objects/class_variable_object.rb +8 -0
  473. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/code_objects/constant_object.rb +13 -0
  474. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/code_objects/extended_method_object.rb +23 -0
  475. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/code_objects/extra_file_object.rb +128 -0
  476. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/code_objects/macro_object.rb +172 -0
  477. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/code_objects/method_object.rb +191 -0
  478. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/code_objects/module_object.rb +18 -0
  479. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/code_objects/namespace_object.rb +200 -0
  480. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/code_objects/proxy.rb +258 -0
  481. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/code_objects/root_object.rb +17 -0
  482. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/config.rb +269 -0
  483. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/core_ext/array.rb +15 -0
  484. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/core_ext/file.rb +65 -0
  485. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/core_ext/hash.rb +15 -0
  486. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/core_ext/insertion.rb +60 -0
  487. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/core_ext/module.rb +19 -0
  488. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/core_ext/string.rb +67 -0
  489. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/core_ext/symbol_hash.rb +73 -0
  490. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/docstring.rb +364 -0
  491. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/docstring_parser.rb +321 -0
  492. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/globals.rb +18 -0
  493. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/base.rb +597 -0
  494. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/c/alias_handler.rb +15 -0
  495. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/c/attribute_handler.rb +13 -0
  496. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/c/base.rb +110 -0
  497. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/c/class_handler.rb +26 -0
  498. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/c/constant_handler.rb +12 -0
  499. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/c/handler_methods.rb +166 -0
  500. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/c/init_handler.rb +18 -0
  501. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/c/method_handler.rb +35 -0
  502. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/c/mixin_handler.rb +13 -0
  503. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/c/module_handler.rb +16 -0
  504. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/c/override_comment_handler.rb +30 -0
  505. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/c/path_handler.rb +10 -0
  506. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/c/struct_handler.rb +12 -0
  507. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/c/symbol_handler.rb +7 -0
  508. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/processor.rb +201 -0
  509. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/alias_handler.rb +41 -0
  510. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/attribute_handler.rb +82 -0
  511. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/base.rb +164 -0
  512. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/class_condition_handler.rb +86 -0
  513. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/class_handler.rb +121 -0
  514. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/class_variable_handler.rb +16 -0
  515. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/comment_handler.rb +9 -0
  516. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/constant_handler.rb +45 -0
  517. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/dsl_handler.rb +14 -0
  518. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/dsl_handler_methods.rb +77 -0
  519. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/exception_handler.rb +26 -0
  520. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/extend_handler.rb +21 -0
  521. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/alias_handler.rb +34 -0
  522. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/attribute_handler.rb +60 -0
  523. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/base.rb +250 -0
  524. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -0
  525. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/class_handler.rb +111 -0
  526. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +14 -0
  527. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/comment_handler.rb +9 -0
  528. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/constant_handler.rb +28 -0
  529. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/dsl_handler.rb +16 -0
  530. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/exception_handler.rb +12 -0
  531. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/extend_handler.rb +20 -0
  532. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/method_handler.rb +85 -0
  533. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -0
  534. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/module_function_handler.rb +18 -0
  535. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/module_handler.rb +11 -0
  536. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +21 -0
  537. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/visibility_handler.rb +16 -0
  538. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/legacy/yield_handler.rb +28 -0
  539. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/method_condition_handler.rb +8 -0
  540. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/method_handler.rb +92 -0
  541. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/mixin_handler.rb +36 -0
  542. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/module_function_handler.rb +26 -0
  543. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/module_handler.rb +11 -0
  544. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/private_constant_handler.rb +36 -0
  545. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/struct_handler_methods.rb +141 -0
  546. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/visibility_handler.rb +24 -0
  547. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/handlers/ruby/yield_handler.rb +30 -0
  548. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/i18n/locale.rb +74 -0
  549. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/i18n/message.rb +56 -0
  550. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/i18n/messages.rb +55 -0
  551. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/i18n/pot_generator.rb +280 -0
  552. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/i18n/text.rb +173 -0
  553. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/logging.rb +190 -0
  554. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/options.rb +216 -0
  555. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/parser/base.rb +56 -0
  556. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/parser/c/c_parser.rb +225 -0
  557. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/parser/c/comment_parser.rb +131 -0
  558. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/parser/c/statement.rb +63 -0
  559. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/parser/ruby/ast_node.rb +496 -0
  560. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/parser/ruby/legacy/ruby_lex.rb +1377 -0
  561. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/parser/ruby/legacy/ruby_parser.rb +31 -0
  562. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/parser/ruby/legacy/statement.rb +65 -0
  563. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/parser/ruby/legacy/statement_list.rb +384 -0
  564. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/parser/ruby/legacy/token_list.rb +71 -0
  565. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/parser/ruby/ruby_parser.rb +625 -0
  566. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/parser/source_parser.rb +517 -0
  567. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/rake/yardoc_task.rb +74 -0
  568. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/registry.rb +438 -0
  569. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/registry_store.rb +319 -0
  570. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/rubygems/backports/LICENSE.txt +57 -0
  571. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/rubygems/backports/MIT.txt +20 -0
  572. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/rubygems/backports/gem.rb +9 -0
  573. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/rubygems/backports/source_index.rb +370 -0
  574. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/rubygems/backports.rb +8 -0
  575. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/rubygems/doc_manager.rb +88 -0
  576. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/rubygems/specification.rb +41 -0
  577. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/serializers/base.rb +80 -0
  578. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/serializers/file_system_serializer.rb +90 -0
  579. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/serializers/process_serializer.rb +24 -0
  580. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/serializers/stdout_serializer.rb +32 -0
  581. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/serializers/yardoc_serializer.rb +124 -0
  582. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/adapter.rb +100 -0
  583. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/commands/base.rb +192 -0
  584. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/commands/display_file_command.rb +24 -0
  585. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/commands/display_object_command.rb +58 -0
  586. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/commands/frames_command.rb +15 -0
  587. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/commands/library_command.rb +148 -0
  588. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/commands/library_index_command.rb +24 -0
  589. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/commands/list_command.rb +24 -0
  590. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/commands/search_command.rb +78 -0
  591. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/commands/static_file_command.rb +57 -0
  592. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/doc_server_helper.rb +76 -0
  593. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/doc_server_serializer.rb +33 -0
  594. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/library_version.rb +227 -0
  595. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/rack_adapter.rb +88 -0
  596. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/router.rb +176 -0
  597. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/static_caching.rb +45 -0
  598. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/default/fulldoc/html/css/custom.css +78 -0
  599. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/default/fulldoc/html/images/processing.gif +0 -0
  600. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +12 -0
  601. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/default/layout/html/breadcrumb.erb +46 -0
  602. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/default/layout/html/script_setup.erb +8 -0
  603. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/default/layout/html/setup.rb +7 -0
  604. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -0
  605. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/default/method_details/html/setup.rb +4 -0
  606. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/doc_server/library_list/html/contents.erb +13 -0
  607. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/doc_server/library_list/html/headers.erb +26 -0
  608. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +12 -0
  609. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/doc_server/library_list/html/setup.rb +3 -0
  610. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -0
  611. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/doc_server/processing/html/processing.erb +51 -0
  612. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/doc_server/processing/html/setup.rb +3 -0
  613. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/doc_server/search/html/search.erb +18 -0
  614. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/templates/doc_server/search/html/setup.rb +8 -0
  615. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server/webrick_adapter.rb +43 -0
  616. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/server.rb +11 -0
  617. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/tags/default_factory.rb +176 -0
  618. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/tags/default_tag.rb +12 -0
  619. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/tags/directives.rb +595 -0
  620. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/tags/library.rb +630 -0
  621. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/tags/option_tag.rb +12 -0
  622. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/tags/overload_tag.rb +65 -0
  623. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/tags/ref_tag.rb +7 -0
  624. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/tags/ref_tag_list.rb +27 -0
  625. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/tags/tag.rb +57 -0
  626. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/tags/tag_format_error.rb +6 -0
  627. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/engine.rb +185 -0
  628. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/erb_cache.rb +22 -0
  629. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/helpers/base_helper.rb +212 -0
  630. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/helpers/filter_helper.rb +26 -0
  631. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/helpers/html_helper.rb +599 -0
  632. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +59 -0
  633. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/helpers/markup/rdoc_markdown.rb +22 -0
  634. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/helpers/markup/rdoc_markup.rb +106 -0
  635. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/helpers/markup_helper.rb +169 -0
  636. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/helpers/method_helper.rb +74 -0
  637. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/helpers/module_helper.rb +19 -0
  638. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/helpers/text_helper.rb +95 -0
  639. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/helpers/uml_helper.rb +46 -0
  640. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/section.rb +106 -0
  641. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/template.rb +407 -0
  642. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/templates/template_options.rb +88 -0
  643. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/verifier.rb +148 -0
  644. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard/version.rb +3 -0
  645. data/vendor/bundle/gems/yard-0.8.6.1/lib/yard.rb +71 -0
  646. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/command_parser_spec.rb +43 -0
  647. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/command_spec.rb +36 -0
  648. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/config_spec.rb +92 -0
  649. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/diff_spec.rb +260 -0
  650. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/display_spec.rb +30 -0
  651. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/gems_spec.rb +81 -0
  652. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/graph_spec.rb +17 -0
  653. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/help_spec.rb +22 -0
  654. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/i18n_spec.rb +111 -0
  655. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/list_spec.rb +8 -0
  656. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/markup_types_spec.rb +22 -0
  657. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/server_spec.rb +327 -0
  658. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/stats_spec.rb +90 -0
  659. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/yardoc_spec.rb +777 -0
  660. data/vendor/bundle/gems/yard-0.8.6.1/spec/cli/yri_spec.rb +99 -0
  661. data/vendor/bundle/gems/yard-0.8.6.1/spec/code_objects/base_spec.rb +438 -0
  662. data/vendor/bundle/gems/yard-0.8.6.1/spec/code_objects/class_object_spec.rb +225 -0
  663. data/vendor/bundle/gems/yard-0.8.6.1/spec/code_objects/code_object_list_spec.rb +33 -0
  664. data/vendor/bundle/gems/yard-0.8.6.1/spec/code_objects/constants_spec.rb +82 -0
  665. data/vendor/bundle/gems/yard-0.8.6.1/spec/code_objects/extra_file_object_spec.rb +147 -0
  666. data/vendor/bundle/gems/yard-0.8.6.1/spec/code_objects/macro_object_spec.rb +148 -0
  667. data/vendor/bundle/gems/yard-0.8.6.1/spec/code_objects/method_object_spec.rb +175 -0
  668. data/vendor/bundle/gems/yard-0.8.6.1/spec/code_objects/module_object_spec.rb +141 -0
  669. data/vendor/bundle/gems/yard-0.8.6.1/spec/code_objects/namespace_object_spec.rb +170 -0
  670. data/vendor/bundle/gems/yard-0.8.6.1/spec/code_objects/proxy_spec.rb +140 -0
  671. data/vendor/bundle/gems/yard-0.8.6.1/spec/code_objects/spec_helper.rb +3 -0
  672. data/vendor/bundle/gems/yard-0.8.6.1/spec/config_spec.rb +176 -0
  673. data/vendor/bundle/gems/yard-0.8.6.1/spec/core_ext/array_spec.rb +14 -0
  674. data/vendor/bundle/gems/yard-0.8.6.1/spec/core_ext/file_spec.rb +68 -0
  675. data/vendor/bundle/gems/yard-0.8.6.1/spec/core_ext/hash_spec.rb +14 -0
  676. data/vendor/bundle/gems/yard-0.8.6.1/spec/core_ext/insertion_spec.rb +37 -0
  677. data/vendor/bundle/gems/yard-0.8.6.1/spec/core_ext/module_spec.rb +15 -0
  678. data/vendor/bundle/gems/yard-0.8.6.1/spec/core_ext/string_spec.rb +42 -0
  679. data/vendor/bundle/gems/yard-0.8.6.1/spec/core_ext/symbol_hash_spec.rb +86 -0
  680. data/vendor/bundle/gems/yard-0.8.6.1/spec/docstring_parser_spec.rb +228 -0
  681. data/vendor/bundle/gems/yard-0.8.6.1/spec/docstring_spec.rb +325 -0
  682. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/alias_handler_spec.rb +80 -0
  683. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/attribute_handler_spec.rb +94 -0
  684. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/base_spec.rb +206 -0
  685. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/c/alias_handler_spec.rb +33 -0
  686. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/c/attribute_handler_spec.rb +40 -0
  687. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/c/class_handler_spec.rb +63 -0
  688. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/c/constant_handler_spec.rb +68 -0
  689. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/c/init_handler_spec.rb +47 -0
  690. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/c/method_handler_spec.rb +229 -0
  691. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/c/mixin_handler_spec.rb +27 -0
  692. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/c/module_handler_spec.rb +38 -0
  693. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/c/override_comment_handler_spec.rb +46 -0
  694. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/c/path_handler_spec.rb +35 -0
  695. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/c/spec_helper.rb +13 -0
  696. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/c/struct_handler_spec.rb +15 -0
  697. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/class_condition_handler_spec.rb +67 -0
  698. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/class_handler_spec.rb +246 -0
  699. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/class_variable_handler_spec.rb +11 -0
  700. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/constant_handler_spec.rb +64 -0
  701. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/dsl_handler_spec.rb +197 -0
  702. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/alias_handler_001.rb.txt +44 -0
  703. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/attribute_handler_001.rb.txt +32 -0
  704. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/class_condition_handler_001.rb.txt +69 -0
  705. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/class_handler_001.rb.txt +120 -0
  706. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/class_variable_handler_001.rb.txt +10 -0
  707. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/constant_handler_001.rb.txt +25 -0
  708. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/dsl_handler_001.rb.txt +125 -0
  709. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/exception_handler_001.rb.txt +59 -0
  710. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/extend_handler_001.rb.txt +16 -0
  711. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/method_condition_handler_001.rb.txt +10 -0
  712. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/method_handler_001.rb.txt +126 -0
  713. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/mixin_handler_001.rb.txt +37 -0
  714. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/module_handler_001.rb.txt +29 -0
  715. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/private_constant_handler_001.rb.txt +8 -0
  716. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/process_handler_001.rb.txt +11 -0
  717. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/visibility_handler_001.rb.txt +32 -0
  718. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/examples/yield_handler_001.rb.txt +54 -0
  719. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/exception_handler_spec.rb +48 -0
  720. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/extend_handler_spec.rb +23 -0
  721. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/legacy_base_spec.rb +128 -0
  722. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/method_condition_handler_spec.rb +14 -0
  723. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/method_handler_spec.rb +184 -0
  724. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/mixin_handler_spec.rb +55 -0
  725. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/module_function_handler_spec.rb +105 -0
  726. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/module_handler_spec.rb +34 -0
  727. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/private_constant_handler_spec.rb +24 -0
  728. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/processor_spec.rb +34 -0
  729. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/ruby/base_spec.rb +94 -0
  730. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/ruby/legacy/base_spec.rb +82 -0
  731. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/spec_helper.rb +33 -0
  732. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/visibility_handler_spec.rb +39 -0
  733. data/vendor/bundle/gems/yard-0.8.6.1/spec/handlers/yield_handler_spec.rb +51 -0
  734. data/vendor/bundle/gems/yard-0.8.6.1/spec/i18n/locale_spec.rb +68 -0
  735. data/vendor/bundle/gems/yard-0.8.6.1/spec/i18n/message_spec.rb +52 -0
  736. data/vendor/bundle/gems/yard-0.8.6.1/spec/i18n/messages_spec.rb +67 -0
  737. data/vendor/bundle/gems/yard-0.8.6.1/spec/i18n/pot_generator_spec.rb +262 -0
  738. data/vendor/bundle/gems/yard-0.8.6.1/spec/i18n/text_spec.rb +180 -0
  739. data/vendor/bundle/gems/yard-0.8.6.1/spec/logging_spec.rb +35 -0
  740. data/vendor/bundle/gems/yard-0.8.6.1/spec/options_spec.rb +171 -0
  741. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/base_spec.rb +24 -0
  742. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/c_parser_spec.rb +166 -0
  743. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/examples/array.c.txt +3887 -0
  744. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/examples/example1.rb.txt +8 -0
  745. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/examples/extrafile.c.txt +8 -0
  746. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/examples/multifile.c.txt +6 -0
  747. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/examples/override.c.txt +424 -0
  748. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/examples/parse_in_order_001.rb.txt +2 -0
  749. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/examples/parse_in_order_002.rb.txt +2 -0
  750. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/examples/tag_handler_001.rb.txt +8 -0
  751. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/ruby/ast_node_spec.rb +33 -0
  752. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/ruby/legacy/statement_list_spec.rb +299 -0
  753. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/ruby/legacy/token_list_spec.rb +77 -0
  754. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/ruby/ruby_parser_spec.rb +334 -0
  755. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/source_parser_spec.rb +717 -0
  756. data/vendor/bundle/gems/yard-0.8.6.1/spec/parser/tag_parsing_spec.rb +18 -0
  757. data/vendor/bundle/gems/yard-0.8.6.1/spec/rake/yardoc_task_spec.rb +101 -0
  758. data/vendor/bundle/gems/yard-0.8.6.1/spec/registry_spec.rb +393 -0
  759. data/vendor/bundle/gems/yard-0.8.6.1/spec/registry_store_spec.rb +315 -0
  760. data/vendor/bundle/gems/yard-0.8.6.1/spec/rubygems/doc_manager_spec.rb +112 -0
  761. data/vendor/bundle/gems/yard-0.8.6.1/spec/serializers/data/serialized_yardoc/checksums +1 -0
  762. data/vendor/bundle/gems/yard-0.8.6.1/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
  763. data/vendor/bundle/gems/yard-0.8.6.1/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
  764. data/vendor/bundle/gems/yard-0.8.6.1/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
  765. data/vendor/bundle/gems/yard-0.8.6.1/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
  766. data/vendor/bundle/gems/yard-0.8.6.1/spec/serializers/data/serialized_yardoc/proxy_types +2 -0
  767. data/vendor/bundle/gems/yard-0.8.6.1/spec/serializers/file_system_serializer_spec.rb +124 -0
  768. data/vendor/bundle/gems/yard-0.8.6.1/spec/serializers/spec_helper.rb +2 -0
  769. data/vendor/bundle/gems/yard-0.8.6.1/spec/serializers/yardoc_serializer_spec.rb +46 -0
  770. data/vendor/bundle/gems/yard-0.8.6.1/spec/server/adapter_spec.rb +38 -0
  771. data/vendor/bundle/gems/yard-0.8.6.1/spec/server/commands/base_spec.rb +87 -0
  772. data/vendor/bundle/gems/yard-0.8.6.1/spec/server/commands/library_command_spec.rb +39 -0
  773. data/vendor/bundle/gems/yard-0.8.6.1/spec/server/commands/static_file_command_spec.rb +84 -0
  774. data/vendor/bundle/gems/yard-0.8.6.1/spec/server/doc_server_helper_spec.rb +53 -0
  775. data/vendor/bundle/gems/yard-0.8.6.1/spec/server/doc_server_serializer_spec.rb +45 -0
  776. data/vendor/bundle/gems/yard-0.8.6.1/spec/server/rack_adapter_spec.rb +20 -0
  777. data/vendor/bundle/gems/yard-0.8.6.1/spec/server/router_spec.rb +122 -0
  778. data/vendor/bundle/gems/yard-0.8.6.1/spec/server/spec_helper.rb +17 -0
  779. data/vendor/bundle/gems/yard-0.8.6.1/spec/server/static_caching_spec.rb +39 -0
  780. data/vendor/bundle/gems/yard-0.8.6.1/spec/server/webrick_servlet_spec.rb +20 -0
  781. data/vendor/bundle/gems/yard-0.8.6.1/spec/server_spec.rb +10 -0
  782. data/vendor/bundle/gems/yard-0.8.6.1/spec/spec_helper.rb +128 -0
  783. data/vendor/bundle/gems/yard-0.8.6.1/spec/tags/default_factory_spec.rb +152 -0
  784. data/vendor/bundle/gems/yard-0.8.6.1/spec/tags/default_tag_spec.rb +11 -0
  785. data/vendor/bundle/gems/yard-0.8.6.1/spec/tags/directives_spec.rb +436 -0
  786. data/vendor/bundle/gems/yard-0.8.6.1/spec/tags/library_spec.rb +34 -0
  787. data/vendor/bundle/gems/yard-0.8.6.1/spec/tags/overload_tag_spec.rb +53 -0
  788. data/vendor/bundle/gems/yard-0.8.6.1/spec/tags/ref_tag_list_spec.rb +53 -0
  789. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/class_spec.rb +44 -0
  790. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/constant_spec.rb +40 -0
  791. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/engine_spec.rb +121 -0
  792. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/class001.html +280 -0
  793. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/class001.txt +36 -0
  794. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/class002.html +35 -0
  795. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/constant001.txt +25 -0
  796. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/constant002.txt +7 -0
  797. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/constant003.txt +11 -0
  798. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/method001.html +130 -0
  799. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/method001.txt +35 -0
  800. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/method002.html +86 -0
  801. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/method002.txt +20 -0
  802. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/method003.html +159 -0
  803. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/method003.txt +45 -0
  804. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/method004.html +44 -0
  805. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/method004.txt +10 -0
  806. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/method005.html +99 -0
  807. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/method005.txt +33 -0
  808. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/module001.dot +33 -0
  809. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/module001.html +791 -0
  810. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/module001.txt +33 -0
  811. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/module002.html +318 -0
  812. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/module003.html +185 -0
  813. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/module004.html +387 -0
  814. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/examples/tag001.txt +82 -0
  815. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/helpers/base_helper_spec.rb +175 -0
  816. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/helpers/html_helper_spec.rb +612 -0
  817. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +48 -0
  818. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/helpers/markup/rdoc_markup_spec.rb +84 -0
  819. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/helpers/markup_helper_spec.rb +135 -0
  820. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/helpers/method_helper_spec.rb +82 -0
  821. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/helpers/shared_signature_examples.rb +123 -0
  822. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/helpers/text_helper_spec.rb +44 -0
  823. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/method_spec.rb +102 -0
  824. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/module_spec.rb +181 -0
  825. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/onefile_spec.rb +64 -0
  826. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/section_spec.rb +146 -0
  827. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/spec_helper.rb +73 -0
  828. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/tag_spec.rb +51 -0
  829. data/vendor/bundle/gems/yard-0.8.6.1/spec/templates/template_spec.rb +409 -0
  830. data/vendor/bundle/gems/yard-0.8.6.1/spec/verifier_spec.rb +106 -0
  831. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/class/dot/setup.rb +6 -0
  832. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/class/dot/superklass.erb +3 -0
  833. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/class/html/constructor_details.erb +8 -0
  834. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/class/html/setup.rb +1 -0
  835. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/class/html/subclasses.erb +4 -0
  836. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/class/setup.rb +36 -0
  837. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/class/text/setup.rb +11 -0
  838. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/class/text/subclasses.erb +5 -0
  839. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/constant/text/header.erb +11 -0
  840. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/constant/text/setup.rb +3 -0
  841. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/html/abstract.erb +4 -0
  842. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/html/deprecated.erb +1 -0
  843. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/html/index.erb +5 -0
  844. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/html/note.erb +6 -0
  845. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/html/private.erb +4 -0
  846. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/html/returns_void.erb +1 -0
  847. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/html/text.erb +1 -0
  848. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/html/todo.erb +6 -0
  849. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/setup.rb +49 -0
  850. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/text/abstract.erb +2 -0
  851. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/text/deprecated.erb +2 -0
  852. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/text/index.erb +2 -0
  853. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/text/note.erb +4 -0
  854. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/text/private.erb +2 -0
  855. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/text/returns_void.erb +1 -0
  856. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/text/text.erb +1 -0
  857. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/docstring/text/todo.erb +4 -0
  858. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/fulldoc/html/css/common.css +1 -0
  859. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/fulldoc/html/css/full_list.css +57 -0
  860. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/fulldoc/html/css/style.css +338 -0
  861. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/fulldoc/html/frames.erb +28 -0
  862. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/fulldoc/html/full_list.erb +39 -0
  863. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/fulldoc/html/full_list_class.erb +2 -0
  864. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/fulldoc/html/full_list_file.erb +5 -0
  865. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/fulldoc/html/full_list_method.erb +8 -0
  866. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/fulldoc/html/js/app.js +214 -0
  867. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/fulldoc/html/js/full_list.js +178 -0
  868. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/fulldoc/html/js/jquery.js +4 -0
  869. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/fulldoc/html/setup.rb +199 -0
  870. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/layout/dot/header.erb +6 -0
  871. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/layout/dot/setup.rb +14 -0
  872. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/layout/html/breadcrumb.erb +13 -0
  873. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/layout/html/files.erb +11 -0
  874. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/layout/html/footer.erb +5 -0
  875. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/layout/html/headers.erb +14 -0
  876. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/layout/html/index.erb +2 -0
  877. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/layout/html/layout.erb +20 -0
  878. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/layout/html/listing.erb +4 -0
  879. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/layout/html/objects.erb +32 -0
  880. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/layout/html/script_setup.erb +5 -0
  881. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/layout/html/search.erb +8 -0
  882. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/layout/html/setup.rb +71 -0
  883. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/method/html/header.erb +16 -0
  884. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/method/setup.rb +3 -0
  885. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/method/text/header.erb +1 -0
  886. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/method_details/html/header.erb +3 -0
  887. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/method_details/html/method_signature.erb +25 -0
  888. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/method_details/html/source.erb +10 -0
  889. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/method_details/setup.rb +10 -0
  890. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/method_details/text/header.erb +10 -0
  891. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/method_details/text/method_signature.erb +12 -0
  892. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/method_details/text/setup.rb +10 -0
  893. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/dot/child.erb +1 -0
  894. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/dot/dependencies.erb +3 -0
  895. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/dot/header.erb +6 -0
  896. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/dot/info.erb +14 -0
  897. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/dot/setup.rb +14 -0
  898. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/attribute_details.erb +10 -0
  899. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/attribute_summary.erb +8 -0
  900. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/box_info.erb +37 -0
  901. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/children.erb +8 -0
  902. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/constant_summary.erb +13 -0
  903. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/defines.erb +3 -0
  904. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/header.erb +5 -0
  905. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/inherited_attributes.erb +14 -0
  906. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/inherited_constants.erb +8 -0
  907. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/inherited_methods.erb +19 -0
  908. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/item_summary.erb +40 -0
  909. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/method_details_list.erb +9 -0
  910. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/method_summary.erb +14 -0
  911. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/methodmissing.erb +12 -0
  912. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/html/pre_docstring.erb +1 -0
  913. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/setup.rb +164 -0
  914. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/text/children.erb +10 -0
  915. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/text/class_meths_list.erb +8 -0
  916. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/text/extends.erb +8 -0
  917. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/text/header.erb +7 -0
  918. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/text/includes.erb +8 -0
  919. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/text/instance_meths_list.erb +8 -0
  920. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/module/text/setup.rb +12 -0
  921. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/onefile/html/files.erb +5 -0
  922. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/onefile/html/headers.erb +6 -0
  923. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/onefile/html/layout.erb +17 -0
  924. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/onefile/html/readme.erb +3 -0
  925. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/onefile/html/setup.rb +61 -0
  926. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/root/dot/child.erb +3 -0
  927. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/root/dot/setup.rb +5 -0
  928. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/root/html/setup.rb +1 -0
  929. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/tags/html/example.erb +11 -0
  930. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/tags/html/index.erb +3 -0
  931. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/tags/html/option.erb +24 -0
  932. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/tags/html/overload.erb +14 -0
  933. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/tags/html/see.erb +8 -0
  934. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/tags/html/tag.erb +20 -0
  935. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/tags/setup.rb +55 -0
  936. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/tags/text/example.erb +12 -0
  937. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/tags/text/index.erb +1 -0
  938. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/tags/text/option.erb +20 -0
  939. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/tags/text/overload.erb +19 -0
  940. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/tags/text/see.erb +11 -0
  941. data/vendor/bundle/gems/yard-0.8.6.1/templates/default/tags/text/tag.erb +13 -0
  942. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/class/html/setup.rb +1 -0
  943. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/docstring/html/setup.rb +1 -0
  944. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/fulldoc/html/css/style.css +108 -0
  945. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/fulldoc/html/js/app.js +33 -0
  946. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/fulldoc/html/setup.rb +73 -0
  947. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/layout/html/layout.erb +81 -0
  948. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/layout/html/setup.rb +28 -0
  949. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/method/html/header.erb +18 -0
  950. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/method/html/setup.rb +21 -0
  951. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/module/html/header.erb +7 -0
  952. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/module/html/method_list.erb +5 -0
  953. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/module/html/setup.rb +26 -0
  954. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/onefile/html/files.erb +4 -0
  955. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/onefile/html/setup.rb +5 -0
  956. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/onefile/html/toc.erb +3 -0
  957. data/vendor/bundle/gems/yard-0.8.6.1/templates/guide/tags/html/setup.rb +8 -0
  958. data/vendor/bundle/gems/yard-0.8.6.1/yard.gemspec +25 -0
  959. data/vendor/bundle/specifications/highline-1.6.18.gemspec +21 -0
  960. data/vendor/bundle/specifications/mime-types-1.23.gemspec +67 -0
  961. data/vendor/bundle/specifications/minitest-4.7.4.gemspec +36 -0
  962. data/vendor/bundle/specifications/multi_json-1.7.3.gemspec +30 -0
  963. data/vendor/bundle/specifications/rdiscount-2.0.7.3.gemspec +21 -0
  964. data/vendor/bundle/specifications/shoulda-3.5.0.gemspec +50 -0
  965. data/vendor/bundle/specifications/shoulda-matchers-2.1.0.gemspec +57 -0
  966. data/vendor/bundle/specifications/tilt-1.4.1.gemspec +98 -0
  967. data/vendor/bundle/specifications/yard-0.8.6.1.gemspec +20 -0
  968. metadata +964 -2
@@ -0,0 +1,1717 @@
1
+ /* markdown: a C implementation of John Gruber's Markdown markup language.
2
+ *
3
+ * Copyright (C) 2007 David L Parsons.
4
+ * The redistribution terms are provided in the COPYRIGHT file that must
5
+ * be distributed with this source code.
6
+ */
7
+ #include <stdio.h>
8
+ #include <string.h>
9
+ #include <stdarg.h>
10
+ #include <stdlib.h>
11
+ #include <time.h>
12
+ #include <ctype.h>
13
+
14
+ #include "config.h"
15
+
16
+ #include "cstring.h"
17
+ #include "markdown.h"
18
+ #include "amalloc.h"
19
+
20
+ typedef int (*stfu)(const void*,const void*);
21
+ typedef void (*spanhandler)(MMIOT*,int);
22
+
23
+ /* forward declarations */
24
+ static void text(MMIOT *f);
25
+ static Paragraph *display(Paragraph*, MMIOT*);
26
+
27
+ /* externals from markdown.c */
28
+ int __mkd_footsort(Footnote *, Footnote *);
29
+
30
+ /*
31
+ * push text into the generator input buffer
32
+ */
33
+ static void
34
+ push(char *bfr, int size, MMIOT *f)
35
+ {
36
+ while ( size-- > 0 )
37
+ EXPAND(f->in) = *bfr++;
38
+ }
39
+
40
+
41
+ /* look <i> characters ahead of the cursor.
42
+ */
43
+ static int
44
+ peek(MMIOT *f, int i)
45
+ {
46
+
47
+ i += (f->isp-1);
48
+
49
+ return (i >= 0) && (i < S(f->in)) ? T(f->in)[i] : EOF;
50
+ }
51
+
52
+
53
+ /* pull a byte from the input buffer
54
+ */
55
+ static int
56
+ pull(MMIOT *f)
57
+ {
58
+ return ( f->isp < S(f->in) ) ? T(f->in)[f->isp++] : EOF;
59
+ }
60
+
61
+
62
+ /* return a pointer to the current position in the input buffer.
63
+ */
64
+ static char*
65
+ cursor(MMIOT *f)
66
+ {
67
+ return T(f->in) + f->isp;
68
+ }
69
+
70
+
71
+ static int
72
+ isthisspace(MMIOT *f, int i)
73
+ {
74
+ int c = peek(f, i);
75
+
76
+ return isspace(c) || (c == EOF);
77
+ }
78
+
79
+
80
+ static int
81
+ isthisalnum(MMIOT *f, int i)
82
+ {
83
+ int c = peek(f, i);
84
+
85
+ return (c != EOF) && isalnum(c);
86
+ }
87
+
88
+
89
+ static int
90
+ isthisnonword(MMIOT *f, int i)
91
+ {
92
+ return isthisspace(f, i) || ispunct(peek(f,i));
93
+ }
94
+
95
+
96
+ /* return/set the current cursor position
97
+ */
98
+ #define mmiotseek(f,x) (f->isp = x)
99
+ #define mmiottell(f) (f->isp)
100
+
101
+
102
+ /* move n characters forward ( or -n characters backward) in the input buffer.
103
+ */
104
+ static void
105
+ shift(MMIOT *f, int i)
106
+ {
107
+ if (f->isp + i >= 0 )
108
+ f->isp += i;
109
+ }
110
+
111
+
112
+ /* Qchar()
113
+ */
114
+ static void
115
+ Qchar(int c, MMIOT *f)
116
+ {
117
+ block *cur;
118
+
119
+ if ( S(f->Q) == 0 ) {
120
+ cur = &EXPAND(f->Q);
121
+ memset(cur, 0, sizeof *cur);
122
+ cur->b_type = bTEXT;
123
+ }
124
+ else
125
+ cur = &T(f->Q)[S(f->Q)-1];
126
+
127
+ EXPAND(cur->b_text) = c;
128
+
129
+ }
130
+
131
+
132
+ /* Qstring()
133
+ */
134
+ static void
135
+ Qstring(char *s, MMIOT *f)
136
+ {
137
+ while (*s)
138
+ Qchar(*s++, f);
139
+ }
140
+
141
+
142
+ /* Qwrite()
143
+ */
144
+ static void
145
+ Qwrite(char *s, int size, MMIOT *f)
146
+ {
147
+ while (size-- > 0)
148
+ Qchar(*s++, f);
149
+ }
150
+
151
+
152
+ /* Qprintf()
153
+ */
154
+ static void
155
+ Qprintf(MMIOT *f, char *fmt, ...)
156
+ {
157
+ char bfr[80];
158
+ va_list ptr;
159
+
160
+ va_start(ptr,fmt);
161
+ vsnprintf(bfr, sizeof bfr, fmt, ptr);
162
+ va_end(ptr);
163
+ Qstring(bfr, f);
164
+ }
165
+
166
+
167
+ /* Qem()
168
+ */
169
+ static void
170
+ Qem(MMIOT *f, char c, int count)
171
+ {
172
+ block *p = &EXPAND(f->Q);
173
+
174
+ memset(p, 0, sizeof *p);
175
+ p->b_type = (c == '*') ? bSTAR : bUNDER;
176
+ p->b_char = c;
177
+ p->b_count = count;
178
+
179
+ memset(&EXPAND(f->Q), 0, sizeof(block));
180
+ }
181
+
182
+
183
+ /* generate html from a markup fragment
184
+ */
185
+ void
186
+ ___mkd_reparse(char *bfr, int size, int flags, MMIOT *f)
187
+ {
188
+ MMIOT sub;
189
+
190
+ ___mkd_initmmiot(&sub, f->footnotes);
191
+
192
+ sub.flags = f->flags | flags;
193
+ sub.cb = f->cb;
194
+ sub.ref_prefix = f->ref_prefix;
195
+
196
+ push(bfr, size, &sub);
197
+ EXPAND(sub.in) = 0;
198
+ S(sub.in)--;
199
+
200
+ text(&sub);
201
+ ___mkd_emblock(&sub);
202
+
203
+ Qwrite(T(sub.out), S(sub.out), f);
204
+
205
+ ___mkd_freemmiot(&sub, f->footnotes);
206
+ }
207
+
208
+
209
+ /*
210
+ * write out a url, escaping problematic characters
211
+ */
212
+ static void
213
+ puturl(char *s, int size, MMIOT *f, int display)
214
+ {
215
+ unsigned char c;
216
+
217
+ while ( size-- > 0 ) {
218
+ c = *s++;
219
+
220
+ if ( c == '\\' && size-- > 0 ) {
221
+ c = *s++;
222
+
223
+ if ( !( ispunct(c) || isspace(c) ) )
224
+ Qchar('\\', f);
225
+ }
226
+
227
+ if ( c == '&' )
228
+ Qstring("&amp;", f);
229
+ else if ( c == '<' )
230
+ Qstring("&lt;", f);
231
+ else if ( c == '"' )
232
+ Qstring("%22", f);
233
+ else if ( isalnum(c) || ispunct(c) || (display && isspace(c)) )
234
+ Qchar(c, f);
235
+ else if ( c == 003 ) /* untokenize ^C */
236
+ Qstring(" ", f);
237
+ else
238
+ Qprintf(f, "%%%02X", c);
239
+ }
240
+ }
241
+
242
+
243
+ /* advance forward until the next character is not whitespace
244
+ */
245
+ static int
246
+ eatspace(MMIOT *f)
247
+ {
248
+ int c;
249
+
250
+ for ( ; ((c=peek(f, 1)) != EOF) && isspace(c); pull(f) )
251
+ ;
252
+ return c;
253
+ }
254
+
255
+
256
+ /* (match (a (nested (parenthetical (string.)))))
257
+ */
258
+ static int
259
+ parenthetical(int in, int out, MMIOT *f)
260
+ {
261
+ int size, indent, c;
262
+
263
+ for ( indent=1,size=0; indent; size++ ) {
264
+ if ( (c = pull(f)) == EOF )
265
+ return EOF;
266
+ else if ( (c == '\\') && (peek(f,1) == out || peek(f,1) == in) ) {
267
+ ++size;
268
+ pull(f);
269
+ }
270
+ else if ( c == in )
271
+ ++indent;
272
+ else if ( c == out )
273
+ --indent;
274
+ }
275
+ return size ? (size-1) : 0;
276
+ }
277
+
278
+
279
+ /* extract a []-delimited label from the input stream.
280
+ */
281
+ static int
282
+ linkylabel(MMIOT *f, Cstring *res)
283
+ {
284
+ char *ptr = cursor(f);
285
+ int size;
286
+
287
+ if ( (size = parenthetical('[',']',f)) != EOF ) {
288
+ T(*res) = ptr;
289
+ S(*res) = size;
290
+ return 1;
291
+ }
292
+ return 0;
293
+ }
294
+
295
+
296
+ /* see if the quote-prefixed linky segment is actually a title.
297
+ */
298
+ static int
299
+ linkytitle(MMIOT *f, char quote, Footnote *ref)
300
+ {
301
+ int whence = mmiottell(f);
302
+ char *title = cursor(f);
303
+ char *e;
304
+ register int c;
305
+
306
+ while ( (c = pull(f)) != EOF ) {
307
+ e = cursor(f);
308
+ if ( c == quote ) {
309
+ if ( (c = eatspace(f)) == ')' ) {
310
+ T(ref->title) = 1+title;
311
+ S(ref->title) = (e-title)-2;
312
+ return 1;
313
+ }
314
+ }
315
+ }
316
+ mmiotseek(f, whence);
317
+ return 0;
318
+ }
319
+
320
+
321
+ /* extract a =HHHxWWW size from the input stream
322
+ */
323
+ static int
324
+ linkysize(MMIOT *f, Footnote *ref)
325
+ {
326
+ int height=0, width=0;
327
+ int whence = mmiottell(f);
328
+ int c;
329
+
330
+ if ( isspace(peek(f,0)) ) {
331
+ pull(f); /* eat '=' */
332
+
333
+ for ( c = pull(f); isdigit(c); c = pull(f))
334
+ width = (width * 10) + (c - '0');
335
+
336
+ if ( c == 'x' ) {
337
+ for ( c = pull(f); isdigit(c); c = pull(f))
338
+ height = (height*10) + (c - '0');
339
+
340
+ if ( isspace(c) )
341
+ c = eatspace(f);
342
+
343
+ if ( (c == ')') || ((c == '\'' || c == '"') && linkytitle(f, c, ref)) ) {
344
+ ref->height = height;
345
+ ref->width = width;
346
+ return 1;
347
+ }
348
+ }
349
+ }
350
+ mmiotseek(f, whence);
351
+ return 0;
352
+ }
353
+
354
+
355
+ /* extract a <...>-encased url from the input stream.
356
+ * (markdown 1.0.2b8 compatibility; older versions
357
+ * of markdown treated the < and > as syntactic
358
+ * sugar that didn't have to be there. 1.0.2b8
359
+ * requires a closing >, and then falls into the
360
+ * title or closing )
361
+ */
362
+ static int
363
+ linkybroket(MMIOT *f, int image, Footnote *p)
364
+ {
365
+ int c;
366
+ int good = 0;
367
+
368
+ T(p->link) = cursor(f);
369
+ for ( S(p->link)=0; (c = pull(f)) != '>'; ++S(p->link) ) {
370
+ /* pull in all input until a '>' is found, or die trying.
371
+ */
372
+ if ( c == EOF )
373
+ return 0;
374
+ else if ( (c == '\\') && ispunct(peek(f,2)) ) {
375
+ ++S(p->link);
376
+ pull(f);
377
+ }
378
+ }
379
+
380
+ c = eatspace(f);
381
+
382
+ /* next nonspace needs to be a title, a size, or )
383
+ */
384
+ if ( ( c == '\'' || c == '"' ) && linkytitle(f,c,p) )
385
+ good=1;
386
+ else if ( image && (c == '=') && linkysize(f,p) )
387
+ good=1;
388
+ else
389
+ good=( c == ')' );
390
+
391
+ if ( good ) {
392
+ if ( peek(f, 1) == ')' )
393
+ pull(f);
394
+
395
+ ___mkd_tidy(&p->link);
396
+ }
397
+
398
+ return good;
399
+ } /* linkybroket */
400
+
401
+
402
+ /* extract a (-prefixed url from the input stream.
403
+ * the label is either of the format `<link>`, where I
404
+ * extract until I find a >, or it is of the format
405
+ * `text`, where I extract until I reach a ')', a quote,
406
+ * or (if image) a '='
407
+ */
408
+ static int
409
+ linkyurl(MMIOT *f, int image, Footnote *p)
410
+ {
411
+ int c;
412
+ int mayneedtotrim=0;
413
+
414
+ if ( (c = eatspace(f)) == EOF )
415
+ return 0;
416
+
417
+ if ( c == '<' ) {
418
+ pull(f);
419
+ if ( !(f->flags & MKD_1_COMPAT) )
420
+ return linkybroket(f,image,p);
421
+ mayneedtotrim=1;
422
+ }
423
+
424
+ T(p->link) = cursor(f);
425
+ for ( S(p->link)=0; (c = peek(f,1)) != ')'; ++S(p->link) ) {
426
+ if ( c == EOF )
427
+ return 0;
428
+ else if ( (c == '"' || c == '\'') && linkytitle(f, c, p) )
429
+ break;
430
+ else if ( image && (c == '=') && linkysize(f, p) )
431
+ break;
432
+ else if ( (c == '\\') && ispunct(peek(f,2)) ) {
433
+ ++S(p->link);
434
+ pull(f);
435
+ }
436
+ pull(f);
437
+ }
438
+ if ( peek(f, 1) == ')' )
439
+ pull(f);
440
+
441
+ ___mkd_tidy(&p->link);
442
+
443
+ if ( mayneedtotrim && (T(p->link)[S(p->link)-1] == '>') )
444
+ --S(p->link);
445
+
446
+ return 1;
447
+ }
448
+
449
+
450
+
451
+ /* prefixes for <automatic links>
452
+ */
453
+ static struct _protocol {
454
+ char *name;
455
+ int nlen;
456
+ } protocol[] = {
457
+ #define _aprotocol(x) { x, (sizeof x)-1 }
458
+ _aprotocol( "https:" ),
459
+ _aprotocol( "http:" ),
460
+ _aprotocol( "news:" ),
461
+ _aprotocol( "ftp:" ),
462
+ #undef _aprotocol
463
+ };
464
+ #define NRPROTOCOLS (sizeof protocol / sizeof protocol[0])
465
+
466
+
467
+ static int
468
+ isautoprefix(char *text, int size)
469
+ {
470
+ int i;
471
+ struct _protocol *p;
472
+
473
+ for (i=0, p=protocol; i < NRPROTOCOLS; i++, p++)
474
+ if ( (size >= p->nlen) && strncasecmp(text, p->name, p->nlen) == 0 )
475
+ return 1;
476
+ return 0;
477
+ }
478
+
479
+
480
+ /*
481
+ * all the tag types that linkylinky can produce are
482
+ * defined by this structure.
483
+ */
484
+ typedef struct linkytype {
485
+ char *pat;
486
+ int szpat;
487
+ char *link_pfx; /* tag prefix and link pointer (eg: "<a href="\"" */
488
+ char *link_sfx; /* link suffix (eg: "\"" */
489
+ int WxH; /* this tag allows width x height arguments */
490
+ char *text_pfx; /* text prefix (eg: ">" */
491
+ char *text_sfx; /* text suffix (eg: "</a>" */
492
+ int flags; /* reparse flags */
493
+ int kind; /* tag is url or something else? */
494
+ #define IS_URL 0x01
495
+ } linkytype;
496
+
497
+ static linkytype imaget = { 0, 0, "<img src=\"", "\"",
498
+ 1, " alt=\"", "\" />", MKD_NOIMAGE|MKD_TAGTEXT, IS_URL };
499
+ static linkytype linkt = { 0, 0, "<a href=\"", "\"",
500
+ 0, ">", "</a>", MKD_NOLINKS, IS_URL };
501
+
502
+ /*
503
+ * pseudo-protocols for [][];
504
+ *
505
+ * id: generates <a id="link">tag</a>
506
+ * class: generates <span class="link">tag</span>
507
+ * raw: just dump the link without any processing
508
+ */
509
+ static linkytype specials[] = {
510
+ { "id:", 3, "<span id=\"", "\"", 0, ">", "</span>", 0, 0 },
511
+ { "raw:", 4, 0, 0, 0, 0, 0, MKD_NOHTML, 0 },
512
+ { "lang:", 5, "<span lang=\"", "\"", 0, ">", "</span>", 0, 0 },
513
+ { "abbr:", 5, "<abbr title=\"", "\"", 0, ">", "</abbr>", 0, 0 },
514
+ { "class:", 6, "<span class=\"", "\"", 0, ">", "</span>", 0, 0 },
515
+ } ;
516
+
517
+ #define NR(x) (sizeof x / sizeof x[0])
518
+
519
+ /* see if t contains one of our pseudo-protocols.
520
+ */
521
+ static linkytype *
522
+ pseudo(Cstring t)
523
+ {
524
+ int i;
525
+ linkytype *r;
526
+
527
+ for ( i=0, r=specials; i < NR(specials); i++,r++ ) {
528
+ if ( (S(t) > r->szpat) && (strncasecmp(T(t), r->pat, r->szpat) == 0) )
529
+ return r;
530
+ }
531
+ return 0;
532
+ }
533
+
534
+
535
+ /* print out the start of an `img' or `a' tag, applying callbacks as needed.
536
+ */
537
+ static void
538
+ printlinkyref(MMIOT *f, linkytype *tag, char *link, int size)
539
+ {
540
+ char *edit;
541
+
542
+ if ( f->flags & IS_LABEL )
543
+ return;
544
+
545
+ Qstring(tag->link_pfx, f);
546
+
547
+ if ( tag->kind & IS_URL ) {
548
+ if ( f->cb && f->cb->e_url && (edit = (*f->cb->e_url)(link, size, f->cb->e_data)) ) {
549
+ puturl(edit, strlen(edit), f, 0);
550
+ if ( f->cb->e_free ) (*f->cb->e_free)(edit, f->cb->e_data);
551
+ }
552
+ else
553
+ puturl(link + tag->szpat, size - tag->szpat, f, 0);
554
+ }
555
+ else
556
+ ___mkd_reparse(link + tag->szpat, size - tag->szpat, MKD_TAGTEXT, f);
557
+
558
+ Qstring(tag->link_sfx, f);
559
+
560
+ if ( f->cb && f->cb->e_flags && (edit = (*f->cb->e_flags)(link, size, f->cb->e_data)) ) {
561
+ Qchar(' ', f);
562
+ Qstring(edit, f);
563
+ if ( f->cb->e_free ) (*f->cb->e_free)(edit, f->cb->e_data);
564
+ }
565
+ } /* printlinkyref */
566
+
567
+
568
+ /* helper function for php markdown extra footnotes; allow the user to
569
+ * define a prefix tag instead of just `fn`
570
+ */
571
+ static char *
572
+ p_or_nothing(p)
573
+ MMIOT *p;
574
+ {
575
+ return p->ref_prefix ? p->ref_prefix : "fn";
576
+ }
577
+
578
+
579
+ /* php markdown extra/daring fireball style print footnotes
580
+ */
581
+ static int
582
+ extra_linky(MMIOT *f, Cstring text, Footnote *ref)
583
+ {
584
+ if ( ref->flags & REFERENCED )
585
+ return 0;
586
+
587
+ if ( f->flags & IS_LABEL )
588
+ ___mkd_reparse(T(text), S(text), linkt.flags, f);
589
+ else {
590
+ ref->flags |= REFERENCED;
591
+ ref->refnumber = ++ f->reference;
592
+ Qprintf(f, "<sup id=\"%sref:%d\"><a href=\"#%s:%d\" rel=\"footnote\">%d</a></sup>",
593
+ p_or_nothing(f), ref->refnumber,
594
+ p_or_nothing(f), ref->refnumber, ref->refnumber);
595
+ }
596
+ return 1;
597
+ } /* extra_linky */
598
+
599
+
600
+ /* print out a linky (or fail if it's Not Allowed)
601
+ */
602
+ static int
603
+ linkyformat(MMIOT *f, Cstring text, int image, Footnote *ref)
604
+ {
605
+ linkytype *tag;
606
+
607
+ if ( image || (ref == 0) )
608
+ tag = &imaget;
609
+ else if ( tag = pseudo(ref->link) ) {
610
+ if ( f->flags & (MKD_NO_EXT|MKD_SAFELINK) )
611
+ return 0;
612
+ }
613
+ else if ( (f->flags & MKD_SAFELINK) && T(ref->link)
614
+ && (T(ref->link)[0] != '/')
615
+ && !isautoprefix(T(ref->link), S(ref->link)) )
616
+ /* if MKD_SAFELINK, only accept links that are local or
617
+ * a well-known protocol
618
+ */
619
+ return 0;
620
+ else
621
+ tag = &linkt;
622
+
623
+ if ( f->flags & tag->flags )
624
+ return 0;
625
+
626
+ if ( f->flags & IS_LABEL )
627
+ ___mkd_reparse(T(text), S(text), tag->flags, f);
628
+ else if ( tag->link_pfx ) {
629
+ printlinkyref(f, tag, T(ref->link), S(ref->link));
630
+
631
+ if ( tag->WxH ) {
632
+ if ( ref->height ) Qprintf(f," height=\"%d\"", ref->height);
633
+ if ( ref->width ) Qprintf(f, " width=\"%d\"", ref->width);
634
+ }
635
+
636
+ if ( S(ref->title) ) {
637
+ Qstring(" title=\"", f);
638
+ ___mkd_reparse(T(ref->title), S(ref->title), MKD_TAGTEXT, f);
639
+ Qchar('"', f);
640
+ }
641
+
642
+ Qstring(tag->text_pfx, f);
643
+ ___mkd_reparse(T(text), S(text), tag->flags, f);
644
+ Qstring(tag->text_sfx, f);
645
+ }
646
+ else
647
+ Qwrite(T(ref->link) + tag->szpat, S(ref->link) - tag->szpat, f);
648
+
649
+ return 1;
650
+ } /* linkyformat */
651
+
652
+
653
+ /*
654
+ * process embedded links and images
655
+ */
656
+ static int
657
+ linkylinky(int image, MMIOT *f)
658
+ {
659
+ int start = mmiottell(f);
660
+ Cstring name;
661
+ Footnote key, *ref;
662
+
663
+ int status = 0;
664
+ int extra_footnote = 0;
665
+
666
+ CREATE(name);
667
+ memset(&key, 0, sizeof key);
668
+
669
+ if ( linkylabel(f, &name) ) {
670
+ if ( peek(f,1) == '(' ) {
671
+ pull(f);
672
+ if ( linkyurl(f, image, &key) )
673
+ status = linkyformat(f, name, image, &key);
674
+ }
675
+ else {
676
+ int goodlink, implicit_mark = mmiottell(f);
677
+
678
+ if ( isspace(peek(f,1)) )
679
+ pull(f);
680
+
681
+ if ( peek(f,1) == '[' ) {
682
+ pull(f); /* consume leading '[' */
683
+ goodlink = linkylabel(f, &key.tag);
684
+ }
685
+ else {
686
+ /* new markdown implicit name syntax doesn't
687
+ * require a second []
688
+ */
689
+ mmiotseek(f, implicit_mark);
690
+ goodlink = !(f->flags & MKD_1_COMPAT);
691
+
692
+ if ( (f->flags & MKD_EXTRA_FOOTNOTE) && (!image) && S(name) && T(name)[0] == '^' )
693
+ extra_footnote = 1;
694
+ }
695
+
696
+ if ( goodlink ) {
697
+ if ( !S(key.tag) ) {
698
+ DELETE(key.tag);
699
+ T(key.tag) = T(name);
700
+ S(key.tag) = S(name);
701
+ }
702
+
703
+ if ( ref = bsearch(&key, T(*f->footnotes), S(*f->footnotes),
704
+ sizeof key, (stfu)__mkd_footsort) ) {
705
+ if ( extra_footnote )
706
+ status = extra_linky(f,name,ref);
707
+ else
708
+ status = linkyformat(f, name, image, ref);
709
+ }
710
+ else if ( f->flags & IS_LABEL )
711
+ status = linkyformat(f, name, image, 0);
712
+ }
713
+ }
714
+ }
715
+
716
+ DELETE(name);
717
+ ___mkd_freefootnote(&key);
718
+
719
+ if ( status == 0 )
720
+ mmiotseek(f, start);
721
+
722
+ return status;
723
+ }
724
+
725
+
726
+ /* write a character to output, doing text escapes ( & -> &amp;,
727
+ * > -> &gt; < -> &lt; )
728
+ */
729
+ static void
730
+ cputc(int c, MMIOT *f)
731
+ {
732
+ switch (c) {
733
+ case '&': Qstring("&amp;", f); break;
734
+ case '>': Qstring("&gt;", f); break;
735
+ case '<': Qstring("&lt;", f); break;
736
+ default : Qchar(c, f); break;
737
+ }
738
+ }
739
+
740
+
741
+ /*
742
+ * convert an email address to a string of nonsense
743
+ */
744
+ static void
745
+ mangle(char *s, int len, MMIOT *f)
746
+ {
747
+ while ( len-- > 0 ) {
748
+ Qstring("&#", f);
749
+ Qprintf(f, COINTOSS() ? "x%02x;" : "%02d;", *((unsigned char*)(s++)) );
750
+ }
751
+ }
752
+
753
+
754
+ /* nrticks() -- count up a row of tick marks
755
+ */
756
+ static int
757
+ nrticks(int offset, int tickchar, MMIOT *f)
758
+ {
759
+ int tick = 0;
760
+
761
+ while ( peek(f, offset+tick) == tickchar ) tick++;
762
+
763
+ return tick;
764
+ } /* nrticks */
765
+
766
+
767
+ /* matchticks() -- match a certain # of ticks, and if that fails
768
+ * match the largest subset of those ticks.
769
+ *
770
+ * if a subset was matched, return the # of ticks
771
+ * that were matched.
772
+ */
773
+ static int
774
+ matchticks(MMIOT *f, int tickchar, int ticks, int *endticks)
775
+ {
776
+ int size, count, c;
777
+ int subsize=0, subtick=0;
778
+
779
+ *endticks = ticks;
780
+ for (size = 0; (c=peek(f,size+ticks)) != EOF; size ++) {
781
+ if ( (c == tickchar) && ( count = nrticks(size+ticks,tickchar,f)) ) {
782
+ if ( count == ticks )
783
+ return size;
784
+ else if ( count ) {
785
+ if ( (count > subtick) && (count < ticks) ) {
786
+ subsize = size;
787
+ subtick = count;
788
+ }
789
+ size += count;
790
+ }
791
+ }
792
+ }
793
+ if ( subsize ) {
794
+ *endticks = subtick;
795
+ return subsize;
796
+ }
797
+ return 0;
798
+ } /* matchticks */
799
+
800
+
801
+ /* code() -- write a string out as code. The only characters that have
802
+ * special meaning in a code block are * `<' and `&' , which
803
+ * are /always/ expanded to &lt; and &amp;
804
+ */
805
+ static void
806
+ code(MMIOT *f, char *s, int length)
807
+ {
808
+ int i,c;
809
+
810
+ for ( i=0; i < length; i++ )
811
+ if ( (c = s[i]) == 003) /* ^C: expand back to 2 spaces */
812
+ Qstring(" ", f);
813
+ else
814
+ cputc(c, f);
815
+ } /* code */
816
+
817
+
818
+ /* delspan() -- write out a chunk of text, blocking with <del>...</del>
819
+ */
820
+ static void
821
+ delspan(MMIOT *f, int size)
822
+ {
823
+ Qstring("<del>", f);
824
+ ___mkd_reparse(cursor(f)-1, size, 0, f);
825
+ Qstring("</del>", f);
826
+ }
827
+
828
+
829
+ /* codespan() -- write out a chunk of text as code, trimming one
830
+ * space off the front and/or back as appropriate.
831
+ */
832
+ static void
833
+ codespan(MMIOT *f, int size)
834
+ {
835
+ int i=0;
836
+
837
+ if ( size > 1 && peek(f, size-1) == ' ' ) --size;
838
+ if ( peek(f,i) == ' ' ) ++i, --size;
839
+
840
+ Qstring("<code>", f);
841
+ code(f, cursor(f)+(i-1), size);
842
+ Qstring("</code>", f);
843
+ } /* codespan */
844
+
845
+
846
+ /* before letting a tag through, validate against
847
+ * MKD_NOLINKS and MKD_NOIMAGE
848
+ */
849
+ static int
850
+ forbidden_tag(MMIOT *f)
851
+ {
852
+ int c = toupper(peek(f, 1));
853
+
854
+ if ( f->flags & MKD_NOHTML )
855
+ return 1;
856
+
857
+ if ( c == 'A' && (f->flags & MKD_NOLINKS) && !isthisalnum(f,2) )
858
+ return 1;
859
+ if ( c == 'I' && (f->flags & MKD_NOIMAGE)
860
+ && strncasecmp(cursor(f)+1, "MG", 2) == 0
861
+ && !isthisalnum(f,4) )
862
+ return 1;
863
+ return 0;
864
+ }
865
+
866
+
867
+ /* Check a string to see if it looks like a mail address
868
+ * "looks like a mail address" means alphanumeric + some
869
+ * specials, then a `@`, then alphanumeric + some specials,
870
+ * but with a `.`
871
+ */
872
+ static int
873
+ maybe_address(char *p, int size)
874
+ {
875
+ int ok = 0;
876
+
877
+ for ( ;size && (isalnum(*p) || strchr("._-+*", *p)); ++p, --size)
878
+ ;
879
+
880
+ if ( ! (size && *p == '@') )
881
+ return 0;
882
+
883
+ --size, ++p;
884
+
885
+ if ( size && *p == '.' ) return 0;
886
+
887
+ for ( ;size && (isalnum(*p) || strchr("._-+", *p)); ++p, --size )
888
+ if ( *p == '.' && size > 1 ) ok = 1;
889
+
890
+ return size ? 0 : ok;
891
+ }
892
+
893
+
894
+ /* The size-length token at cursor(f) is either a mailto:, an
895
+ * implicit mailto:, one of the approved url protocols, or just
896
+ * plain old text. If it's a mailto: or an approved protocol,
897
+ * linkify it, otherwise say "no"
898
+ */
899
+ static int
900
+ process_possible_link(MMIOT *f, int size)
901
+ {
902
+ int address= 0;
903
+ int mailto = 0;
904
+ char *text = cursor(f);
905
+
906
+ if ( f->flags & MKD_NOLINKS ) return 0;
907
+
908
+ if ( (size > 7) && strncasecmp(text, "mailto:", 7) == 0 ) {
909
+ /* if it says it's a mailto, it's a mailto -- who am
910
+ * I to second-guess the user?
911
+ */
912
+ address = 1;
913
+ mailto = 7; /* 7 is the length of "mailto:"; we need this */
914
+ }
915
+ else
916
+ address = maybe_address(text, size);
917
+
918
+ if ( address ) {
919
+ Qstring("<a href=\"", f);
920
+ if ( !mailto ) {
921
+ /* supply a mailto: protocol if one wasn't attached */
922
+ mangle("mailto:", 7, f);
923
+ }
924
+ mangle(text, size, f);
925
+ Qstring("\">", f);
926
+ mangle(text+mailto, size-mailto, f);
927
+ Qstring("</a>", f);
928
+ return 1;
929
+ }
930
+ else if ( isautoprefix(text, size) ) {
931
+ printlinkyref(f, &linkt, text, size);
932
+ Qchar('>', f);
933
+ puturl(text,size,f, 1);
934
+ Qstring("</a>", f);
935
+ return 1;
936
+ }
937
+ return 0;
938
+ } /* process_possible_link */
939
+
940
+
941
+ /* a < may be just a regular character, the start of an embedded html
942
+ * tag, or the start of an <automatic link>. If it's an automatic
943
+ * link, we also need to know if it's an email address because if it
944
+ * is we need to mangle it in our futile attempt to cut down on the
945
+ * spaminess of the rendered page.
946
+ */
947
+ static int
948
+ maybe_tag_or_link(MMIOT *f)
949
+ {
950
+ int c, size;
951
+ int maybetag = 1;
952
+
953
+ if ( f->flags & MKD_TAGTEXT )
954
+ return 0;
955
+
956
+ for ( size=0; (c = peek(f, size+1)) != '>'; size++) {
957
+ if ( c == EOF )
958
+ return 0;
959
+ else if ( c == '\\' ) {
960
+ maybetag=0;
961
+ if ( peek(f, size+2) != EOF )
962
+ size++;
963
+ }
964
+ else if ( isspace(c) )
965
+ break;
966
+ else if ( ! (c == '/' || isalnum(c) ) )
967
+ maybetag=0;
968
+ }
969
+
970
+ if ( size ) {
971
+ if ( maybetag || (size >= 3 && strncmp(cursor(f), "!--", 3) == 0) ) {
972
+
973
+ /* It is not a html tag unless we find the closing '>' in
974
+ * the same block.
975
+ */
976
+ while ( (c = peek(f, size+1)) != '>' )
977
+ if ( c == EOF )
978
+ return 0;
979
+ else
980
+ size++;
981
+
982
+ if ( forbidden_tag(f) )
983
+ return 0;
984
+
985
+ Qchar('<', f);
986
+ while ( ((c = peek(f, 1)) != EOF) && (c != '>') )
987
+ Qchar(pull(f), f);
988
+ return 1;
989
+ }
990
+ else if ( !isspace(c) && process_possible_link(f, size) ) {
991
+ shift(f, size+1);
992
+ return 1;
993
+ }
994
+ }
995
+
996
+ return 0;
997
+ }
998
+
999
+
1000
+ /* autolinking means that all inline html is <a href'ified>. A
1001
+ * autolink url is alphanumerics, slashes, periods, underscores,
1002
+ * the at sign, colon, and the % character.
1003
+ */
1004
+ static int
1005
+ maybe_autolink(MMIOT *f)
1006
+ {
1007
+ register int c;
1008
+ int size;
1009
+
1010
+ /* greedily scan forward for the end of a legitimate link.
1011
+ */
1012
+ for ( size=0; (c=peek(f, size+1)) != EOF; size++ )
1013
+ if ( c == '\\' ) {
1014
+ if ( peek(f, size+2) != EOF )
1015
+ ++size;
1016
+ }
1017
+ else if ( isspace(c) || strchr("'\"()[]{}<>`", c) )
1018
+ break;
1019
+
1020
+ if ( (size > 1) && process_possible_link(f, size) ) {
1021
+ shift(f, size);
1022
+ return 1;
1023
+ }
1024
+ return 0;
1025
+ }
1026
+
1027
+
1028
+ /* smartyquote code that's common for single and double quotes
1029
+ */
1030
+ static int
1031
+ smartyquote(int *flags, char typeofquote, MMIOT *f)
1032
+ {
1033
+ int bit = (typeofquote == 's') ? 0x01 : 0x02;
1034
+
1035
+ if ( bit & (*flags) ) {
1036
+ if ( isthisnonword(f,1) ) {
1037
+ Qprintf(f, "&r%cquo;", typeofquote);
1038
+ (*flags) &= ~bit;
1039
+ return 1;
1040
+ }
1041
+ }
1042
+ else if ( isthisnonword(f,-1) && peek(f,1) != EOF ) {
1043
+ Qprintf(f, "&l%cquo;", typeofquote);
1044
+ (*flags) |= bit;
1045
+ return 1;
1046
+ }
1047
+ return 0;
1048
+ }
1049
+
1050
+
1051
+ static int
1052
+ islike(MMIOT *f, char *s)
1053
+ {
1054
+ int len;
1055
+ int i;
1056
+
1057
+ if ( s[0] == '<' ) {
1058
+ if ( !isthisnonword(f, -1) )
1059
+ return 0;
1060
+ ++s;
1061
+ }
1062
+
1063
+ if ( !(len = strlen(s)) )
1064
+ return 0;
1065
+
1066
+ if ( s[len-1] == '>' ) {
1067
+ if ( !isthisnonword(f,len-1) )
1068
+ return 0;
1069
+ len--;
1070
+ }
1071
+
1072
+ for (i=1; i < len; i++)
1073
+ if (tolower(peek(f,i)) != s[i])
1074
+ return 0;
1075
+ return 1;
1076
+ }
1077
+
1078
+
1079
+ static struct smarties {
1080
+ char c0;
1081
+ char *pat;
1082
+ char *entity;
1083
+ int shift;
1084
+ } smarties[] = {
1085
+ { '\'', "'s>", "rsquo", 0 },
1086
+ { '\'', "'t>", "rsquo", 0 },
1087
+ { '\'', "'re>", "rsquo", 0 },
1088
+ { '\'', "'ll>", "rsquo", 0 },
1089
+ { '\'', "'ve>", "rsquo", 0 },
1090
+ { '\'', "'m>", "rsquo", 0 },
1091
+ { '\'', "'d>", "rsquo", 0 },
1092
+ { '-', "--", "mdash", 1 },
1093
+ { '-', "<->", "ndash", 0 },
1094
+ { '.', "...", "hellip", 2 },
1095
+ { '.', ". . .", "hellip", 4 },
1096
+ { '(', "(c)", "copy", 2 },
1097
+ { '(', "(r)", "reg", 2 },
1098
+ { '(', "(tm)", "trade", 3 },
1099
+ { '3', "<3/4>", "frac34", 2 },
1100
+ { '3', "<3/4ths>", "frac34", 2 },
1101
+ { '1', "<1/2>", "frac12", 2 },
1102
+ { '1', "<1/4>", "frac14", 2 },
1103
+ { '1', "<1/4th>", "frac14", 2 },
1104
+ { '&', "&#0;", 0, 3 },
1105
+ } ;
1106
+ #define NRSMART ( sizeof smarties / sizeof smarties[0] )
1107
+
1108
+
1109
+ /* Smarty-pants-style chrome for quotes, -, ellipses, and (r)(c)(tm)
1110
+ */
1111
+ static int
1112
+ smartypants(int c, int *flags, MMIOT *f)
1113
+ {
1114
+ int i;
1115
+
1116
+ if ( f->flags & (MKD_NOPANTS|MKD_TAGTEXT|IS_LABEL) )
1117
+ return 0;
1118
+
1119
+ for ( i=0; i < NRSMART; i++)
1120
+ if ( (c == smarties[i].c0) && islike(f, smarties[i].pat) ) {
1121
+ if ( smarties[i].entity )
1122
+ Qprintf(f, "&%s;", smarties[i].entity);
1123
+ shift(f, smarties[i].shift);
1124
+ return 1;
1125
+ }
1126
+
1127
+ switch (c) {
1128
+ case '<' : return 0;
1129
+ case '\'': if ( smartyquote(flags, 's', f) ) return 1;
1130
+ break;
1131
+
1132
+ case '"': if ( smartyquote(flags, 'd', f) ) return 1;
1133
+ break;
1134
+
1135
+ case '`': if ( peek(f, 1) == '`' ) {
1136
+ int j = 2;
1137
+
1138
+ while ( (c=peek(f,j)) != EOF ) {
1139
+ if ( c == '\\' )
1140
+ j += 2;
1141
+ else if ( c == '`' )
1142
+ break;
1143
+ else if ( c == '\'' && peek(f, j+1) == '\'' ) {
1144
+ Qstring("&ldquo;", f);
1145
+ ___mkd_reparse(cursor(f)+1, j-2, 0, f);
1146
+ Qstring("&rdquo;", f);
1147
+ shift(f,j+1);
1148
+ return 1;
1149
+ }
1150
+ else ++j;
1151
+ }
1152
+
1153
+ }
1154
+ break;
1155
+ }
1156
+ return 0;
1157
+ } /* smartypants */
1158
+
1159
+
1160
+ /* process a body of text encased in some sort of tick marks. If it
1161
+ * works, generate the output and return 1, otherwise just return 0 and
1162
+ * let the caller figure it out.
1163
+ */
1164
+ static int
1165
+ tickhandler(MMIOT *f, int tickchar, int minticks, spanhandler spanner)
1166
+ {
1167
+ int endticks, size;
1168
+ int tick = nrticks(0, tickchar, f);
1169
+
1170
+ if ( (tick >= minticks) && (size = matchticks(f,tickchar,tick,&endticks)) ) {
1171
+ if ( endticks < tick ) {
1172
+ size += (tick - endticks);
1173
+ tick = endticks;
1174
+ }
1175
+
1176
+ shift(f, tick);
1177
+ (*spanner)(f,size);
1178
+ shift(f, size+tick-1);
1179
+ return 1;
1180
+ }
1181
+ return 0;
1182
+ }
1183
+
1184
+ #define tag_text(f) (f->flags & MKD_TAGTEXT)
1185
+
1186
+
1187
+ static void
1188
+ text(MMIOT *f)
1189
+ {
1190
+ int c, j;
1191
+ int rep;
1192
+ int smartyflags = 0;
1193
+
1194
+ while (1) {
1195
+ if ( (f->flags & MKD_AUTOLINK) && isalpha(peek(f,1)) && !tag_text(f) )
1196
+ maybe_autolink(f);
1197
+
1198
+ c = pull(f);
1199
+
1200
+ if (c == EOF)
1201
+ break;
1202
+
1203
+ if ( smartypants(c, &smartyflags, f) )
1204
+ continue;
1205
+ switch (c) {
1206
+ case 0: break;
1207
+
1208
+ case 3: Qstring(tag_text(f) ? " " : "<br/>", f);
1209
+ break;
1210
+
1211
+ case '>': if ( tag_text(f) )
1212
+ Qstring("&gt;", f);
1213
+ else
1214
+ Qchar(c, f);
1215
+ break;
1216
+
1217
+ case '"': if ( tag_text(f) )
1218
+ Qstring("&quot;", f);
1219
+ else
1220
+ Qchar(c, f);
1221
+ break;
1222
+
1223
+ case '!': if ( peek(f,1) == '[' ) {
1224
+ pull(f);
1225
+ if ( tag_text(f) || !linkylinky(1, f) )
1226
+ Qstring("![", f);
1227
+ }
1228
+ else
1229
+ Qchar(c, f);
1230
+ break;
1231
+ case '[': if ( tag_text(f) || !linkylinky(0, f) )
1232
+ Qchar(c, f);
1233
+ break;
1234
+ /* A^B -> A<sup>B</sup> */
1235
+ case '^': if ( (f->flags & (MKD_NOSUPERSCRIPT|MKD_STRICT|MKD_TAGTEXT))
1236
+ || (isthisnonword(f,-1) && peek(f,-1) != ')')
1237
+ || isthisspace(f,1) )
1238
+ Qchar(c,f);
1239
+ else {
1240
+ char *sup = cursor(f);
1241
+ int len = 0;
1242
+
1243
+ if ( peek(f,1) == '(' ) {
1244
+ int here = mmiottell(f);
1245
+ pull(f);
1246
+
1247
+ if ( (len = parenthetical('(',')',f)) <= 0 ) {
1248
+ mmiotseek(f,here);
1249
+ Qchar(c, f);
1250
+ break;
1251
+ }
1252
+ sup++;
1253
+ }
1254
+ else {
1255
+ while ( isthisalnum(f,1+len) )
1256
+ ++len;
1257
+ if ( !len ) {
1258
+ Qchar(c,f);
1259
+ break;
1260
+ }
1261
+ shift(f,len);
1262
+ }
1263
+ Qstring("<sup>",f);
1264
+ ___mkd_reparse(sup, len, 0, f);
1265
+ Qstring("</sup>", f);
1266
+ }
1267
+ break;
1268
+ case '_':
1269
+ /* Underscores don't count if they're in the middle of a word */
1270
+ if ( !(f->flags & (MKD_NORELAXED|MKD_STRICT))
1271
+ && isthisalnum(f,-1)
1272
+ && isthisalnum(f,1) ) {
1273
+ Qchar(c, f);
1274
+ break;
1275
+ }
1276
+ case '*':
1277
+ /* Underscores & stars don't count if they're out in the middle
1278
+ * of whitespace */
1279
+ if ( isthisspace(f,-1) && isthisspace(f,1) ) {
1280
+ Qchar(c, f);
1281
+ break;
1282
+ }
1283
+ /* else fall into the regular old emphasis case */
1284
+ if ( tag_text(f) )
1285
+ Qchar(c, f);
1286
+ else {
1287
+ for (rep = 1; peek(f,1) == c; pull(f) )
1288
+ ++rep;
1289
+ Qem(f,c,rep);
1290
+ }
1291
+ break;
1292
+
1293
+ case '~': if ( (f->flags & (MKD_NOSTRIKETHROUGH|MKD_TAGTEXT|MKD_STRICT)) || !tickhandler(f,c,2,delspan) )
1294
+ Qchar(c, f);
1295
+ break;
1296
+
1297
+ case '`': if ( tag_text(f) || !tickhandler(f,c,1,codespan) )
1298
+ Qchar(c, f);
1299
+ break;
1300
+
1301
+ case '\\': switch ( c = pull(f) ) {
1302
+ case '&': Qstring("&amp;", f);
1303
+ break;
1304
+ case '<': Qstring("&lt;", f);
1305
+ break;
1306
+ case '^': if ( f->flags & (MKD_STRICT|MKD_NOSUPERSCRIPT) ) {
1307
+ Qchar('\\', f);
1308
+ shift(f,-1);
1309
+ break;
1310
+ }
1311
+ Qchar(c, f);
1312
+ break;
1313
+
1314
+ case '>': case '#': case '.': case '-':
1315
+ case '+': case '{': case '}': case ']':
1316
+ case '!': case '[': case '*': case '_':
1317
+ case '\\':case '(': case ')':
1318
+ case '`': Qchar(c, f);
1319
+ break;
1320
+ default:
1321
+ Qchar('\\', f);
1322
+ if ( c != EOF )
1323
+ shift(f,-1);
1324
+ break;
1325
+ }
1326
+ break;
1327
+
1328
+ case '<': if ( !maybe_tag_or_link(f) )
1329
+ Qstring("&lt;", f);
1330
+ break;
1331
+
1332
+ case '&': j = (peek(f,1) == '#' ) ? 2 : 1;
1333
+ while ( isthisalnum(f,j) )
1334
+ ++j;
1335
+
1336
+ if ( peek(f,j) != ';' )
1337
+ Qstring("&amp;", f);
1338
+ else
1339
+ Qchar(c, f);
1340
+ break;
1341
+
1342
+ default: Qchar(c, f);
1343
+ break;
1344
+ }
1345
+ }
1346
+ /* truncate the input string after we've finished processing it */
1347
+ S(f->in) = f->isp = 0;
1348
+ } /* text */
1349
+
1350
+
1351
+ /* print a header block
1352
+ */
1353
+ static void
1354
+ printheader(Paragraph *pp, MMIOT *f)
1355
+ {
1356
+ if ( f->flags & MKD_TOC ) {
1357
+ Qstring("<a name=\"", f);
1358
+ mkd_string_to_anchor(T(pp->text->text),
1359
+ S(pp->text->text),
1360
+ (mkd_sta_function_t)Qchar, f, 1);
1361
+ Qstring("\"></a>\n", f);
1362
+ }
1363
+ Qprintf(f, "<h%d>", pp->hnumber);
1364
+ push(T(pp->text->text), S(pp->text->text), f);
1365
+ text(f);
1366
+ Qprintf(f, "</h%d>", pp->hnumber);
1367
+ }
1368
+
1369
+
1370
+ enum e_alignments { a_NONE, a_CENTER, a_LEFT, a_RIGHT };
1371
+
1372
+ static char* alignments[] = { "", " align=\"center\"", " align=\"left\"",
1373
+ " align=\"right\"" };
1374
+
1375
+ typedef STRING(int) Istring;
1376
+
1377
+ static int
1378
+ splat(Line *p, char *block, Istring align, int force, MMIOT *f)
1379
+ {
1380
+ int first,
1381
+ idx = 0,
1382
+ colno = 0;
1383
+
1384
+ Qstring("<tr>\n", f);
1385
+ while ( idx < S(p->text) ) {
1386
+ first = idx;
1387
+ if ( force && (colno >= S(align)-1) )
1388
+ idx = S(p->text);
1389
+ else
1390
+ while ( (idx < S(p->text)) && (T(p->text)[idx] != '|') )
1391
+ ++idx;
1392
+
1393
+ Qprintf(f, "<%s%s>",
1394
+ block,
1395
+ alignments[ (colno < S(align)) ? T(align)[colno] : a_NONE ]);
1396
+ ___mkd_reparse(T(p->text)+first, idx-first, 0, f);
1397
+ Qprintf(f, "</%s>\n", block);
1398
+ idx++;
1399
+ colno++;
1400
+ }
1401
+ if ( force )
1402
+ while (colno < S(align) ) {
1403
+ Qprintf(f, "<%s></%s>\n", block, block);
1404
+ ++colno;
1405
+ }
1406
+ Qstring("</tr>\n", f);
1407
+ return colno;
1408
+ }
1409
+
1410
+
1411
+ static int
1412
+ printtable(Paragraph *pp, MMIOT *f)
1413
+ {
1414
+ /* header, dashes, then lines of content */
1415
+
1416
+ Line *hdr, *dash, *body;
1417
+ Istring align;
1418
+ int start;
1419
+ int hcols;
1420
+ char *p;
1421
+
1422
+ if ( !(pp->text && pp->text->next) )
1423
+ return 0;
1424
+
1425
+ hdr = pp->text;
1426
+ dash= hdr->next;
1427
+ body= dash->next;
1428
+
1429
+ /* first figure out cell alignments */
1430
+
1431
+ CREATE(align);
1432
+
1433
+ for (p=T(dash->text), start=0; start < S(dash->text); ) {
1434
+ char first, last;
1435
+ int end;
1436
+
1437
+ last=first=0;
1438
+ for (end=start ; (end < S(dash->text)) && p[end] != '|'; ++ end ) {
1439
+ if ( !isspace(p[end]) ) {
1440
+ if ( !first) first = p[end];
1441
+ last = p[end];
1442
+ }
1443
+ }
1444
+ EXPAND(align) = ( first == ':' ) ? (( last == ':') ? a_CENTER : a_LEFT)
1445
+ : (( last == ':') ? a_RIGHT : a_NONE );
1446
+ start = 1+end;
1447
+ }
1448
+
1449
+ Qstring("<table>\n", f);
1450
+ Qstring("<thead>\n", f);
1451
+ hcols = splat(hdr, "th", align, 0, f);
1452
+ Qstring("</thead>\n", f);
1453
+
1454
+ if ( hcols < S(align) )
1455
+ S(align) = hcols;
1456
+ else
1457
+ while ( hcols > S(align) )
1458
+ EXPAND(align) = a_NONE;
1459
+
1460
+ Qstring("<tbody>\n", f);
1461
+ for ( ; body; body = body->next)
1462
+ splat(body, "td", align, 1, f);
1463
+ Qstring("</tbody>\n", f);
1464
+ Qstring("</table>\n", f);
1465
+
1466
+ DELETE(align);
1467
+ return 1;
1468
+ }
1469
+
1470
+
1471
+ static int
1472
+ printblock(Paragraph *pp, MMIOT *f)
1473
+ {
1474
+ Line *t = pp->text;
1475
+ static char *Begin[] = { "", "<p>", "<p style=\"text-align:center;\">" };
1476
+ static char *End[] = { "", "</p>","</p>" };
1477
+
1478
+ while (t) {
1479
+ if ( S(t->text) ) {
1480
+ if ( t->next && S(t->text) > 2
1481
+ && T(t->text)[S(t->text)-2] == ' '
1482
+ && T(t->text)[S(t->text)-1] == ' ' ) {
1483
+ push(T(t->text), S(t->text)-2, f);
1484
+ push("\003\n", 2, f);
1485
+ }
1486
+ else {
1487
+ ___mkd_tidy(&t->text);
1488
+ push(T(t->text), S(t->text), f);
1489
+ if ( t->next )
1490
+ push("\n", 1, f);
1491
+ }
1492
+ }
1493
+ t = t->next;
1494
+ }
1495
+ Qstring(Begin[pp->align], f);
1496
+ text(f);
1497
+ Qstring(End[pp->align], f);
1498
+ return 1;
1499
+ }
1500
+
1501
+
1502
+ static void
1503
+ printcode(Line *t, MMIOT *f)
1504
+ {
1505
+ int blanks;
1506
+
1507
+ Qstring("<pre><code>", f);
1508
+ for ( blanks = 0; t ; t = t->next ) {
1509
+ if ( S(t->text) > t->dle ) {
1510
+ while ( blanks ) {
1511
+ Qchar('\n', f);
1512
+ --blanks;
1513
+ }
1514
+ code(f, T(t->text), S(t->text));
1515
+ Qchar('\n', f);
1516
+ }
1517
+ else blanks++;
1518
+ }
1519
+ Qstring("</code></pre>", f);
1520
+ }
1521
+
1522
+
1523
+ static void
1524
+ printhtml(Line *t, MMIOT *f)
1525
+ {
1526
+ int blanks;
1527
+
1528
+ for ( blanks=0; t ; t = t->next )
1529
+ if ( S(t->text) ) {
1530
+ for ( ; blanks; --blanks )
1531
+ Qchar('\n', f);
1532
+
1533
+ Qwrite(T(t->text), S(t->text), f);
1534
+ Qchar('\n', f);
1535
+ }
1536
+ else
1537
+ blanks++;
1538
+ }
1539
+
1540
+
1541
+ static void
1542
+ htmlify(Paragraph *p, char *block, char *arguments, MMIOT *f)
1543
+ {
1544
+ ___mkd_emblock(f);
1545
+ if ( block )
1546
+ Qprintf(f, arguments ? "<%s %s>" : "<%s>", block, arguments);
1547
+ ___mkd_emblock(f);
1548
+
1549
+ while (( p = display(p, f) )) {
1550
+ ___mkd_emblock(f);
1551
+ Qstring("\n\n", f);
1552
+ }
1553
+
1554
+ if ( block )
1555
+ Qprintf(f, "</%s>", block);
1556
+ ___mkd_emblock(f);
1557
+ }
1558
+
1559
+
1560
+ static void
1561
+ definitionlist(Paragraph *p, MMIOT *f)
1562
+ {
1563
+ Line *tag;
1564
+
1565
+ if ( p ) {
1566
+ Qstring("<dl>\n", f);
1567
+
1568
+ for ( ; p ; p = p->next) {
1569
+ for ( tag = p->text; tag; tag = tag->next ) {
1570
+ Qstring("<dt>", f);
1571
+ ___mkd_reparse(T(tag->text), S(tag->text), 0, f);
1572
+ Qstring("</dt>\n", f);
1573
+ }
1574
+
1575
+ htmlify(p->down, "dd", p->ident, f);
1576
+ Qchar('\n', f);
1577
+ }
1578
+
1579
+ Qstring("</dl>", f);
1580
+ }
1581
+ }
1582
+
1583
+
1584
+ static void
1585
+ listdisplay(int typ, Paragraph *p, MMIOT* f)
1586
+ {
1587
+ if ( p ) {
1588
+ Qprintf(f, "<%cl", (typ==UL)?'u':'o');
1589
+ if ( typ == AL )
1590
+ Qprintf(f, " type=\"a\"");
1591
+ Qprintf(f, ">\n");
1592
+
1593
+ for ( ; p ; p = p->next ) {
1594
+ htmlify(p->down, "li", p->ident, f);
1595
+ Qchar('\n', f);
1596
+ }
1597
+
1598
+ Qprintf(f, "</%cl>\n", (typ==UL)?'u':'o');
1599
+ }
1600
+ }
1601
+
1602
+
1603
+ /* dump out a Paragraph in the desired manner
1604
+ */
1605
+ static Paragraph*
1606
+ display(Paragraph *p, MMIOT *f)
1607
+ {
1608
+ if ( !p ) return 0;
1609
+
1610
+ switch ( p->typ ) {
1611
+ case STYLE:
1612
+ case WHITESPACE:
1613
+ break;
1614
+
1615
+ case HTML:
1616
+ printhtml(p->text, f);
1617
+ break;
1618
+
1619
+ case CODE:
1620
+ printcode(p->text, f);
1621
+ break;
1622
+
1623
+ case QUOTE:
1624
+ htmlify(p->down, p->ident ? "div" : "blockquote", p->ident, f);
1625
+ break;
1626
+
1627
+ case UL:
1628
+ case OL:
1629
+ case AL:
1630
+ listdisplay(p->typ, p->down, f);
1631
+ break;
1632
+
1633
+ case DL:
1634
+ definitionlist(p->down, f);
1635
+ break;
1636
+
1637
+ case HR:
1638
+ Qstring("<hr />", f);
1639
+ break;
1640
+
1641
+ case HDR:
1642
+ printheader(p, f);
1643
+ break;
1644
+
1645
+ case TABLE:
1646
+ printtable(p, f);
1647
+ break;
1648
+
1649
+ case SOURCE:
1650
+ htmlify(p->down, 0, 0, f);
1651
+ break;
1652
+
1653
+ default:
1654
+ printblock(p, f);
1655
+ break;
1656
+ }
1657
+ return p->next;
1658
+ }
1659
+
1660
+
1661
+ /* dump out a list of footnotes
1662
+ */
1663
+ static void
1664
+ mkd_extra_footnotes(MMIOT *m)
1665
+ {
1666
+ int j, i;
1667
+ Footnote *t;
1668
+
1669
+ if ( m->reference == 0 )
1670
+ return;
1671
+
1672
+ Csprintf(&m->out, "\n<div class=\"footnotes\">\n<hr/>\n<ol>\n");
1673
+
1674
+ for ( i=1; i <= m->reference; i++ ) {
1675
+ for ( j=0; j < S(*m->footnotes); j++ ) {
1676
+ t = &T(*m->footnotes)[j];
1677
+ if ( (t->refnumber == i) && (t->flags & REFERENCED) ) {
1678
+ Csprintf(&m->out, "<li id=\"%s:%d\">\n<p>",
1679
+ p_or_nothing(m), t->refnumber);
1680
+ Csreparse(&m->out, T(t->title), S(t->title), 0);
1681
+ Csprintf(&m->out, "<a href=\"#%sref:%d\" rev=\"footnote\">&#8617;</a>",
1682
+ p_or_nothing(m), t->refnumber);
1683
+ Csprintf(&m->out, "</p></li>\n");
1684
+ }
1685
+ }
1686
+ }
1687
+ Csprintf(&m->out, "</ol>\n</div>\n");
1688
+ }
1689
+
1690
+
1691
+ /* return a pointer to the compiled markdown
1692
+ * document.
1693
+ */
1694
+ int
1695
+ mkd_document(Document *p, char **res)
1696
+ {
1697
+ int size;
1698
+
1699
+ if ( p && p->compiled ) {
1700
+ if ( ! p->html ) {
1701
+ htmlify(p->code, 0, 0, p->ctx);
1702
+ if ( p->ctx->flags & MKD_EXTRA_FOOTNOTE )
1703
+ mkd_extra_footnotes(p->ctx);
1704
+ p->html = 1;
1705
+ }
1706
+
1707
+ size = S(p->ctx->out);
1708
+
1709
+ if ( (size == 0) || T(p->ctx->out)[size-1] )
1710
+ EXPAND(p->ctx->out) = 0;
1711
+
1712
+ *res = T(p->ctx->out);
1713
+ return size;
1714
+ }
1715
+ return EOF;
1716
+ }
1717
+