kitabu 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (454) hide show
  1. data/README.markdown +60 -0
  2. data/Rakefile +37 -0
  3. data/VERSION +1 -0
  4. data/bin/kitabu +8 -0
  5. data/kitabu.gemspec +497 -0
  6. data/lib/kitabu.rb +50 -0
  7. data/lib/kitabu/base.rb +271 -0
  8. data/lib/kitabu/blackcloth.rb +179 -0
  9. data/lib/kitabu/command.rb +94 -0
  10. data/lib/kitabu/redcloth.rb +964 -0
  11. data/lib/kitabu/syntax.rb +126 -0
  12. data/lib/kitabu/tasks.rb +113 -0
  13. data/lib/kitabu/templates.rb +54 -0
  14. data/lib/kitabu/toc.rb +51 -0
  15. data/lib/kitabu/vendor/colorize/colorize.rb +81 -0
  16. data/lib/kitabu/vendor/ruby1.8/plist/plist.rb +22 -0
  17. data/lib/kitabu/vendor/ruby1.8/plist/plist/generator.rb +224 -0
  18. data/lib/kitabu/vendor/ruby1.8/plist/plist/parser.rb +224 -0
  19. data/lib/kitabu/vendor/ruby1.8/textpow/textpow.rb +10 -0
  20. data/lib/kitabu/vendor/ruby1.8/textpow/textpow/debug_processor.rb +36 -0
  21. data/lib/kitabu/vendor/ruby1.8/textpow/textpow/score_manager.rb +65 -0
  22. data/lib/kitabu/vendor/ruby1.8/textpow/textpow/syntax.rb +284 -0
  23. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/active4d.render +140 -0
  24. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/all_hallows_eve.render +104 -0
  25. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/amy.render +179 -0
  26. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/blackboard.render +119 -0
  27. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/brilliance_black.render +560 -0
  28. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/brilliance_dull.render +569 -0
  29. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/cobalt.render +170 -0
  30. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/dawn.render +134 -0
  31. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/eiffel.render +140 -0
  32. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/espresso_libre.render +131 -0
  33. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/active4d.css +114 -0
  34. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/all_hallows_eve.css +72 -0
  35. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/amy.css +147 -0
  36. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/blackboard.css +88 -0
  37. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/brilliance_black.css +605 -0
  38. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/brilliance_dull.css +599 -0
  39. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/cobalt.css +149 -0
  40. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/dawn.css +121 -0
  41. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/eiffel.css +121 -0
  42. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/espresso_libre.css +109 -0
  43. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/idle.css +62 -0
  44. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/iplastic.css +80 -0
  45. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/lazy.css +73 -0
  46. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/mac_classic.css +123 -0
  47. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/magicwb_amiga.css +104 -0
  48. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/pastels_on_dark.css +188 -0
  49. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/slush_poppies.css +85 -0
  50. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/spacecadet.css +51 -0
  51. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/sunburst.css +180 -0
  52. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/twilight.css +137 -0
  53. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/files/css/zenburnesque.css +91 -0
  54. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/idle.render +101 -0
  55. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/iplastic.render +107 -0
  56. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/lazy.render +104 -0
  57. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/mac_classic.render +143 -0
  58. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/magicwb_amiga.render +125 -0
  59. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/pastels_on_dark.render +212 -0
  60. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/slush_poppies.render +131 -0
  61. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/spacecadet.render +89 -0
  62. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/sunburst.render +194 -0
  63. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/twilight.render +161 -0
  64. data/lib/kitabu/vendor/ruby1.8/uv/render/xhtml/zenburnesque.render +134 -0
  65. data/lib/kitabu/vendor/ruby1.8/uv/syntax/actionscript.syntax +97 -0
  66. data/lib/kitabu/vendor/ruby1.8/uv/syntax/active4d.syntax +276 -0
  67. data/lib/kitabu/vendor/ruby1.8/uv/syntax/active4d_html.syntax +311 -0
  68. data/lib/kitabu/vendor/ruby1.8/uv/syntax/active4d_ini.syntax +50 -0
  69. data/lib/kitabu/vendor/ruby1.8/uv/syntax/active4d_library.syntax +21 -0
  70. data/lib/kitabu/vendor/ruby1.8/uv/syntax/ada.syntax +33 -0
  71. data/lib/kitabu/vendor/ruby1.8/uv/syntax/antlr.syntax +151 -0
  72. data/lib/kitabu/vendor/ruby1.8/uv/syntax/apache.syntax +191 -0
  73. data/lib/kitabu/vendor/ruby1.8/uv/syntax/applescript.syntax +384 -0
  74. data/lib/kitabu/vendor/ruby1.8/uv/syntax/asp.syntax +70 -0
  75. data/lib/kitabu/vendor/ruby1.8/uv/syntax/asp_vb.net.syntax +129 -0
  76. data/lib/kitabu/vendor/ruby1.8/uv/syntax/bibtex.syntax +151 -0
  77. data/lib/kitabu/vendor/ruby1.8/uv/syntax/blog_html.syntax +41 -0
  78. data/lib/kitabu/vendor/ruby1.8/uv/syntax/blog_markdown.syntax +42 -0
  79. data/lib/kitabu/vendor/ruby1.8/uv/syntax/blog_text.syntax +27 -0
  80. data/lib/kitabu/vendor/ruby1.8/uv/syntax/blog_textile.syntax +27 -0
  81. data/lib/kitabu/vendor/ruby1.8/uv/syntax/buggy/nemerle.syntax +74 -0
  82. data/lib/kitabu/vendor/ruby1.8/uv/syntax/build.syntax +53 -0
  83. data/lib/kitabu/vendor/ruby1.8/uv/syntax/bulletin_board.syntax +287 -0
  84. data/lib/kitabu/vendor/ruby1.8/uv/syntax/c++.syntax +109 -0
  85. data/lib/kitabu/vendor/ruby1.8/uv/syntax/c.syntax +326 -0
  86. data/lib/kitabu/vendor/ruby1.8/uv/syntax/cake.syntax +55 -0
  87. data/lib/kitabu/vendor/ruby1.8/uv/syntax/camlp4.syntax +36 -0
  88. data/lib/kitabu/vendor/ruby1.8/uv/syntax/cm.syntax +32 -0
  89. data/lib/kitabu/vendor/ruby1.8/uv/syntax/coldfusion.syntax +119 -0
  90. data/lib/kitabu/vendor/ruby1.8/uv/syntax/context_free.syntax +176 -0
  91. data/lib/kitabu/vendor/ruby1.8/uv/syntax/cs.syntax +59 -0
  92. data/lib/kitabu/vendor/ruby1.8/uv/syntax/css.syntax +195 -0
  93. data/lib/kitabu/vendor/ruby1.8/uv/syntax/css_experimental.syntax +1925 -0
  94. data/lib/kitabu/vendor/ruby1.8/uv/syntax/csv.syntax +68 -0
  95. data/lib/kitabu/vendor/ruby1.8/uv/syntax/d.syntax +142 -0
  96. data/lib/kitabu/vendor/ruby1.8/uv/syntax/diff.syntax +81 -0
  97. data/lib/kitabu/vendor/ruby1.8/uv/syntax/dokuwiki.syntax +204 -0
  98. data/lib/kitabu/vendor/ruby1.8/uv/syntax/dot.syntax +47 -0
  99. data/lib/kitabu/vendor/ruby1.8/uv/syntax/doxygen.syntax +43 -0
  100. data/lib/kitabu/vendor/ruby1.8/uv/syntax/dylan.syntax +62 -0
  101. data/lib/kitabu/vendor/ruby1.8/uv/syntax/eiffel.syntax +78 -0
  102. data/lib/kitabu/vendor/ruby1.8/uv/syntax/erlang.syntax +922 -0
  103. data/lib/kitabu/vendor/ruby1.8/uv/syntax/f-script.syntax +80 -0
  104. data/lib/kitabu/vendor/ruby1.8/uv/syntax/fortran.syntax +141 -0
  105. data/lib/kitabu/vendor/ruby1.8/uv/syntax/fxscript.syntax +142 -0
  106. data/lib/kitabu/vendor/ruby1.8/uv/syntax/greasemonkey.syntax +34 -0
  107. data/lib/kitabu/vendor/ruby1.8/uv/syntax/gri.syntax +83 -0
  108. data/lib/kitabu/vendor/ruby1.8/uv/syntax/groovy.syntax +191 -0
  109. data/lib/kitabu/vendor/ruby1.8/uv/syntax/gtd.syntax +22 -0
  110. data/lib/kitabu/vendor/ruby1.8/uv/syntax/gtdalt.syntax +143 -0
  111. data/lib/kitabu/vendor/ruby1.8/uv/syntax/haml.syntax +88 -0
  112. data/lib/kitabu/vendor/ruby1.8/uv/syntax/haskell.syntax +88 -0
  113. data/lib/kitabu/vendor/ruby1.8/uv/syntax/html-asp.syntax +27 -0
  114. data/lib/kitabu/vendor/ruby1.8/uv/syntax/html.syntax +362 -0
  115. data/lib/kitabu/vendor/ruby1.8/uv/syntax/html_django.syntax +36 -0
  116. data/lib/kitabu/vendor/ruby1.8/uv/syntax/html_for_asp.net.syntax +424 -0
  117. data/lib/kitabu/vendor/ruby1.8/uv/syntax/html_mason.syntax +119 -0
  118. data/lib/kitabu/vendor/ruby1.8/uv/syntax/html_rails.syntax +40 -0
  119. data/lib/kitabu/vendor/ruby1.8/uv/syntax/html_tcl.syntax +26 -0
  120. data/lib/kitabu/vendor/ruby1.8/uv/syntax/icalendar.syntax +32 -0
  121. data/lib/kitabu/vendor/ruby1.8/uv/syntax/inform.syntax +48 -0
  122. data/lib/kitabu/vendor/ruby1.8/uv/syntax/ini.syntax +55 -0
  123. data/lib/kitabu/vendor/ruby1.8/uv/syntax/installer_distribution_script.syntax +77 -0
  124. data/lib/kitabu/vendor/ruby1.8/uv/syntax/io.syntax +81 -0
  125. data/lib/kitabu/vendor/ruby1.8/uv/syntax/java.syntax +211 -0
  126. data/lib/kitabu/vendor/ruby1.8/uv/syntax/javaproperties.syntax +20 -0
  127. data/lib/kitabu/vendor/ruby1.8/uv/syntax/javascript.syntax +256 -0
  128. data/lib/kitabu/vendor/ruby1.8/uv/syntax/javascript_+_prototype.syntax +72 -0
  129. data/lib/kitabu/vendor/ruby1.8/uv/syntax/javascript_+_prototype_bracketed.syntax +140 -0
  130. data/lib/kitabu/vendor/ruby1.8/uv/syntax/jquery_javascript.syntax +114 -0
  131. data/lib/kitabu/vendor/ruby1.8/uv/syntax/json.syntax +136 -0
  132. data/lib/kitabu/vendor/ruby1.8/uv/syntax/languagedefinition.syntax +708 -0
  133. data/lib/kitabu/vendor/ruby1.8/uv/syntax/latex.syntax +566 -0
  134. data/lib/kitabu/vendor/ruby1.8/uv/syntax/latex_beamer.syntax +41 -0
  135. data/lib/kitabu/vendor/ruby1.8/uv/syntax/latex_log.syntax +50 -0
  136. data/lib/kitabu/vendor/ruby1.8/uv/syntax/latex_memoir.syntax +64 -0
  137. data/lib/kitabu/vendor/ruby1.8/uv/syntax/lexflex.syntax +219 -0
  138. data/lib/kitabu/vendor/ruby1.8/uv/syntax/lighttpd.syntax +54 -0
  139. data/lib/kitabu/vendor/ruby1.8/uv/syntax/lilypond.syntax +492 -0
  140. data/lib/kitabu/vendor/ruby1.8/uv/syntax/lisp.syntax +61 -0
  141. data/lib/kitabu/vendor/ruby1.8/uv/syntax/literate_haskell.syntax +24 -0
  142. data/lib/kitabu/vendor/ruby1.8/uv/syntax/logo.syntax +29 -0
  143. data/lib/kitabu/vendor/ruby1.8/uv/syntax/logtalk.syntax +152 -0
  144. data/lib/kitabu/vendor/ruby1.8/uv/syntax/lua.syntax +86 -0
  145. data/lib/kitabu/vendor/ruby1.8/uv/syntax/m.syntax +142 -0
  146. data/lib/kitabu/vendor/ruby1.8/uv/syntax/macports_portfile.syntax +163 -0
  147. data/lib/kitabu/vendor/ruby1.8/uv/syntax/mail.syntax +118 -0
  148. data/lib/kitabu/vendor/ruby1.8/uv/syntax/makefile.syntax +36 -0
  149. data/lib/kitabu/vendor/ruby1.8/uv/syntax/man.syntax +17 -0
  150. data/lib/kitabu/vendor/ruby1.8/uv/syntax/markdown.syntax +543 -0
  151. data/lib/kitabu/vendor/ruby1.8/uv/syntax/mediawiki.syntax +567 -0
  152. data/lib/kitabu/vendor/ruby1.8/uv/syntax/mel.syntax +92 -0
  153. data/lib/kitabu/vendor/ruby1.8/uv/syntax/mips.syntax +66 -0
  154. data/lib/kitabu/vendor/ruby1.8/uv/syntax/mod_perl.syntax +50 -0
  155. data/lib/kitabu/vendor/ruby1.8/uv/syntax/modula-3.syntax +47 -0
  156. data/lib/kitabu/vendor/ruby1.8/uv/syntax/moinmoin.syntax +189 -0
  157. data/lib/kitabu/vendor/ruby1.8/uv/syntax/mootools.syntax +572 -0
  158. data/lib/kitabu/vendor/ruby1.8/uv/syntax/movable_type.syntax +162 -0
  159. data/lib/kitabu/vendor/ruby1.8/uv/syntax/multimarkdown.syntax +39 -0
  160. data/lib/kitabu/vendor/ruby1.8/uv/syntax/objective-c++.syntax +18 -0
  161. data/lib/kitabu/vendor/ruby1.8/uv/syntax/objective-c.syntax +233 -0
  162. data/lib/kitabu/vendor/ruby1.8/uv/syntax/ocaml.syntax +764 -0
  163. data/lib/kitabu/vendor/ruby1.8/uv/syntax/ocamllex.syntax +167 -0
  164. data/lib/kitabu/vendor/ruby1.8/uv/syntax/ocamlyacc.syntax +184 -0
  165. data/lib/kitabu/vendor/ruby1.8/uv/syntax/old/YAML.yaml +160 -0
  166. data/lib/kitabu/vendor/ruby1.8/uv/syntax/old/txt2tags.yaml +139 -0
  167. data/lib/kitabu/vendor/ruby1.8/uv/syntax/opengl.syntax +14 -0
  168. data/lib/kitabu/vendor/ruby1.8/uv/syntax/pascal.syntax +77 -0
  169. data/lib/kitabu/vendor/ruby1.8/uv/syntax/perl.syntax +1115 -0
  170. data/lib/kitabu/vendor/ruby1.8/uv/syntax/php.syntax +1253 -0
  171. data/lib/kitabu/vendor/ruby1.8/uv/syntax/plain_text.syntax +32 -0
  172. data/lib/kitabu/vendor/ruby1.8/uv/syntax/pmwiki.syntax +113 -0
  173. data/lib/kitabu/vendor/ruby1.8/uv/syntax/postscript.syntax +114 -0
  174. data/lib/kitabu/vendor/ruby1.8/uv/syntax/processing.syntax +106 -0
  175. data/lib/kitabu/vendor/ruby1.8/uv/syntax/prolog.syntax +40 -0
  176. data/lib/kitabu/vendor/ruby1.8/uv/syntax/property_list.syntax +635 -0
  177. data/lib/kitabu/vendor/ruby1.8/uv/syntax/python.syntax +868 -0
  178. data/lib/kitabu/vendor/ruby1.8/uv/syntax/python_django.syntax +21 -0
  179. data/lib/kitabu/vendor/ruby1.8/uv/syntax/qmake_project.syntax +114 -0
  180. data/lib/kitabu/vendor/ruby1.8/uv/syntax/qt_c++.syntax +26 -0
  181. data/lib/kitabu/vendor/ruby1.8/uv/syntax/quake3_config.syntax +32 -0
  182. data/lib/kitabu/vendor/ruby1.8/uv/syntax/r.syntax +81 -0
  183. data/lib/kitabu/vendor/ruby1.8/uv/syntax/r_console.syntax +16 -0
  184. data/lib/kitabu/vendor/ruby1.8/uv/syntax/ragel.syntax +201 -0
  185. data/lib/kitabu/vendor/ruby1.8/uv/syntax/rd_r_documentation.syntax +91 -0
  186. data/lib/kitabu/vendor/ruby1.8/uv/syntax/regexp.syntax +50 -0
  187. data/lib/kitabu/vendor/ruby1.8/uv/syntax/regular_expressions_oniguruma.syntax +107 -0
  188. data/lib/kitabu/vendor/ruby1.8/uv/syntax/regular_expressions_python.syntax +109 -0
  189. data/lib/kitabu/vendor/ruby1.8/uv/syntax/release_notes.syntax +46 -0
  190. data/lib/kitabu/vendor/ruby1.8/uv/syntax/remind.syntax +253 -0
  191. data/lib/kitabu/vendor/ruby1.8/uv/syntax/restructuredtext.syntax +250 -0
  192. data/lib/kitabu/vendor/ruby1.8/uv/syntax/rez.syntax +80 -0
  193. data/lib/kitabu/vendor/ruby1.8/uv/syntax/ruby.syntax +1035 -0
  194. data/lib/kitabu/vendor/ruby1.8/uv/syntax/ruby_experimental.syntax +145 -0
  195. data/lib/kitabu/vendor/ruby1.8/uv/syntax/ruby_on_rails.syntax +88 -0
  196. data/lib/kitabu/vendor/ruby1.8/uv/syntax/s5.syntax +69 -0
  197. data/lib/kitabu/vendor/ruby1.8/uv/syntax/scheme.syntax +347 -0
  198. data/lib/kitabu/vendor/ruby1.8/uv/syntax/scilab.syntax +41 -0
  199. data/lib/kitabu/vendor/ruby1.8/uv/syntax/setext.syntax +147 -0
  200. data/lib/kitabu/vendor/ruby1.8/uv/syntax/shell-unix-generic.syntax +384 -0
  201. data/lib/kitabu/vendor/ruby1.8/uv/syntax/slate.syntax +149 -0
  202. data/lib/kitabu/vendor/ruby1.8/uv/syntax/smarty.syntax +63 -0
  203. data/lib/kitabu/vendor/ruby1.8/uv/syntax/sql.syntax +237 -0
  204. data/lib/kitabu/vendor/ruby1.8/uv/syntax/sql_rails.syntax +18 -0
  205. data/lib/kitabu/vendor/ruby1.8/uv/syntax/ssh-config.syntax +33 -0
  206. data/lib/kitabu/vendor/ruby1.8/uv/syntax/standard_ml.syntax +121 -0
  207. data/lib/kitabu/vendor/ruby1.8/uv/syntax/strings_file.syntax +39 -0
  208. data/lib/kitabu/vendor/ruby1.8/uv/syntax/subversion_commit_message.syntax +36 -0
  209. data/lib/kitabu/vendor/ruby1.8/uv/syntax/sweave.syntax +84 -0
  210. data/lib/kitabu/vendor/ruby1.8/uv/syntax/swig.syntax +57 -0
  211. data/lib/kitabu/vendor/ruby1.8/uv/syntax/tcl.syntax +152 -0
  212. data/lib/kitabu/vendor/ruby1.8/uv/syntax/template_toolkit.syntax +121 -0
  213. data/lib/kitabu/vendor/ruby1.8/uv/syntax/tex.syntax +86 -0
  214. data/lib/kitabu/vendor/ruby1.8/uv/syntax/tex_math.syntax +49 -0
  215. data/lib/kitabu/vendor/ruby1.8/uv/syntax/textile.syntax +215 -0
  216. data/lib/kitabu/vendor/ruby1.8/uv/syntax/tsv.syntax +50 -0
  217. data/lib/kitabu/vendor/ruby1.8/uv/syntax/twiki.syntax +241 -0
  218. data/lib/kitabu/vendor/ruby1.8/uv/syntax/txt2tags.syntax +79 -0
  219. data/lib/kitabu/vendor/ruby1.8/uv/syntax/vectorscript.syntax +57 -0
  220. data/lib/kitabu/vendor/ruby1.8/uv/syntax/xhtml_1.0.syntax +4027 -0
  221. data/lib/kitabu/vendor/ruby1.8/uv/syntax/xml.syntax +180 -0
  222. data/lib/kitabu/vendor/ruby1.8/uv/syntax/xml_strict.syntax +92 -0
  223. data/lib/kitabu/vendor/ruby1.8/uv/syntax/xsl.syntax +60 -0
  224. data/lib/kitabu/vendor/ruby1.8/uv/syntax/yaml.syntax +160 -0
  225. data/lib/kitabu/vendor/ruby1.8/uv/syntax/yui_javascript.syntax +176 -0
  226. data/lib/kitabu/vendor/ruby1.8/uv/uv.rb +88 -0
  227. data/lib/kitabu/vendor/ruby1.8/uv/uv/render_processor.rb +131 -0
  228. data/lib/kitabu/vendor/ruby1.8/uv/uv/utility.rb +67 -0
  229. data/lib/kitabu/vendor/ruby1.9/plist/plist.rb +23 -0
  230. data/lib/kitabu/vendor/ruby1.9/plist/plist/generator.rb +228 -0
  231. data/lib/kitabu/vendor/ruby1.9/plist/plist/parser.rb +225 -0
  232. data/lib/kitabu/vendor/ruby1.9/textpow/textpow.rb +10 -0
  233. data/lib/kitabu/vendor/ruby1.9/textpow/textpow/debug_processor.rb +37 -0
  234. data/lib/kitabu/vendor/ruby1.9/textpow/textpow/score_manager.rb +66 -0
  235. data/lib/kitabu/vendor/ruby1.9/textpow/textpow/syntax.rb +286 -0
  236. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/active4d.render +140 -0
  237. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/all_hallows_eve.render +104 -0
  238. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/amy.render +179 -0
  239. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/blackboard.render +119 -0
  240. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/brilliance_black.render +560 -0
  241. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/brilliance_dull.render +569 -0
  242. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/cobalt.render +170 -0
  243. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/dawn.render +134 -0
  244. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/eiffel.render +140 -0
  245. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/espresso_libre.render +131 -0
  246. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/active4d.css +114 -0
  247. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/all_hallows_eve.css +72 -0
  248. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/amy.css +147 -0
  249. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/blackboard.css +88 -0
  250. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/brilliance_black.css +605 -0
  251. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/brilliance_dull.css +599 -0
  252. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/cobalt.css +149 -0
  253. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/dawn.css +121 -0
  254. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/eiffel.css +121 -0
  255. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/espresso_libre.css +109 -0
  256. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/idle.css +62 -0
  257. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/iplastic.css +80 -0
  258. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/lazy.css +73 -0
  259. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/mac_classic.css +123 -0
  260. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/magicwb_amiga.css +104 -0
  261. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/pastels_on_dark.css +188 -0
  262. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/slush_poppies.css +85 -0
  263. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/spacecadet.css +51 -0
  264. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/sunburst.css +180 -0
  265. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/twilight.css +137 -0
  266. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/files/css/zenburnesque.css +91 -0
  267. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/idle.render +101 -0
  268. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/iplastic.render +107 -0
  269. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/lazy.render +104 -0
  270. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/mac_classic.render +143 -0
  271. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/magicwb_amiga.render +125 -0
  272. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/pastels_on_dark.render +212 -0
  273. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/slush_poppies.render +131 -0
  274. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/spacecadet.render +89 -0
  275. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/sunburst.render +194 -0
  276. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/twilight.render +161 -0
  277. data/lib/kitabu/vendor/ruby1.9/uv/render/xhtml/zenburnesque.render +134 -0
  278. data/lib/kitabu/vendor/ruby1.9/uv/syntax/actionscript.syntax +97 -0
  279. data/lib/kitabu/vendor/ruby1.9/uv/syntax/active4d.syntax +276 -0
  280. data/lib/kitabu/vendor/ruby1.9/uv/syntax/active4d_html.syntax +311 -0
  281. data/lib/kitabu/vendor/ruby1.9/uv/syntax/active4d_ini.syntax +50 -0
  282. data/lib/kitabu/vendor/ruby1.9/uv/syntax/active4d_library.syntax +21 -0
  283. data/lib/kitabu/vendor/ruby1.9/uv/syntax/ada.syntax +33 -0
  284. data/lib/kitabu/vendor/ruby1.9/uv/syntax/antlr.syntax +151 -0
  285. data/lib/kitabu/vendor/ruby1.9/uv/syntax/apache.syntax +191 -0
  286. data/lib/kitabu/vendor/ruby1.9/uv/syntax/applescript.syntax +384 -0
  287. data/lib/kitabu/vendor/ruby1.9/uv/syntax/asp.syntax +70 -0
  288. data/lib/kitabu/vendor/ruby1.9/uv/syntax/asp_vb.net.syntax +129 -0
  289. data/lib/kitabu/vendor/ruby1.9/uv/syntax/bibtex.syntax +151 -0
  290. data/lib/kitabu/vendor/ruby1.9/uv/syntax/blog_html.syntax +41 -0
  291. data/lib/kitabu/vendor/ruby1.9/uv/syntax/blog_markdown.syntax +42 -0
  292. data/lib/kitabu/vendor/ruby1.9/uv/syntax/blog_text.syntax +27 -0
  293. data/lib/kitabu/vendor/ruby1.9/uv/syntax/blog_textile.syntax +27 -0
  294. data/lib/kitabu/vendor/ruby1.9/uv/syntax/build.syntax +53 -0
  295. data/lib/kitabu/vendor/ruby1.9/uv/syntax/bulletin_board.syntax +287 -0
  296. data/lib/kitabu/vendor/ruby1.9/uv/syntax/cake.syntax +55 -0
  297. data/lib/kitabu/vendor/ruby1.9/uv/syntax/camlp4.syntax +36 -0
  298. data/lib/kitabu/vendor/ruby1.9/uv/syntax/cm.syntax +32 -0
  299. data/lib/kitabu/vendor/ruby1.9/uv/syntax/coldfusion.syntax +119 -0
  300. data/lib/kitabu/vendor/ruby1.9/uv/syntax/context_free.syntax +176 -0
  301. data/lib/kitabu/vendor/ruby1.9/uv/syntax/cs.syntax +59 -0
  302. data/lib/kitabu/vendor/ruby1.9/uv/syntax/css.syntax +195 -0
  303. data/lib/kitabu/vendor/ruby1.9/uv/syntax/css_experimental.syntax +1925 -0
  304. data/lib/kitabu/vendor/ruby1.9/uv/syntax/csv.syntax +68 -0
  305. data/lib/kitabu/vendor/ruby1.9/uv/syntax/d.syntax +142 -0
  306. data/lib/kitabu/vendor/ruby1.9/uv/syntax/diff.syntax +81 -0
  307. data/lib/kitabu/vendor/ruby1.9/uv/syntax/dokuwiki.syntax +204 -0
  308. data/lib/kitabu/vendor/ruby1.9/uv/syntax/dot.syntax +47 -0
  309. data/lib/kitabu/vendor/ruby1.9/uv/syntax/doxygen.syntax +43 -0
  310. data/lib/kitabu/vendor/ruby1.9/uv/syntax/dylan.syntax +62 -0
  311. data/lib/kitabu/vendor/ruby1.9/uv/syntax/eiffel.syntax +78 -0
  312. data/lib/kitabu/vendor/ruby1.9/uv/syntax/erlang.syntax +922 -0
  313. data/lib/kitabu/vendor/ruby1.9/uv/syntax/f-script.syntax +80 -0
  314. data/lib/kitabu/vendor/ruby1.9/uv/syntax/fortran.syntax +141 -0
  315. data/lib/kitabu/vendor/ruby1.9/uv/syntax/fxscript.syntax +142 -0
  316. data/lib/kitabu/vendor/ruby1.9/uv/syntax/greasemonkey.syntax +34 -0
  317. data/lib/kitabu/vendor/ruby1.9/uv/syntax/gri.syntax +83 -0
  318. data/lib/kitabu/vendor/ruby1.9/uv/syntax/groovy.syntax +191 -0
  319. data/lib/kitabu/vendor/ruby1.9/uv/syntax/gtd.syntax +22 -0
  320. data/lib/kitabu/vendor/ruby1.9/uv/syntax/gtdalt.syntax +143 -0
  321. data/lib/kitabu/vendor/ruby1.9/uv/syntax/haml.syntax +88 -0
  322. data/lib/kitabu/vendor/ruby1.9/uv/syntax/haskell.syntax +88 -0
  323. data/lib/kitabu/vendor/ruby1.9/uv/syntax/html-asp.syntax +27 -0
  324. data/lib/kitabu/vendor/ruby1.9/uv/syntax/html.syntax +362 -0
  325. data/lib/kitabu/vendor/ruby1.9/uv/syntax/html_django.syntax +36 -0
  326. data/lib/kitabu/vendor/ruby1.9/uv/syntax/html_for_asp.net.syntax +424 -0
  327. data/lib/kitabu/vendor/ruby1.9/uv/syntax/html_mason.syntax +119 -0
  328. data/lib/kitabu/vendor/ruby1.9/uv/syntax/html_rails.syntax +40 -0
  329. data/lib/kitabu/vendor/ruby1.9/uv/syntax/html_tcl.syntax +26 -0
  330. data/lib/kitabu/vendor/ruby1.9/uv/syntax/icalendar.syntax +32 -0
  331. data/lib/kitabu/vendor/ruby1.9/uv/syntax/inform.syntax +48 -0
  332. data/lib/kitabu/vendor/ruby1.9/uv/syntax/ini.syntax +55 -0
  333. data/lib/kitabu/vendor/ruby1.9/uv/syntax/installer_distribution_script.syntax +77 -0
  334. data/lib/kitabu/vendor/ruby1.9/uv/syntax/io.syntax +81 -0
  335. data/lib/kitabu/vendor/ruby1.9/uv/syntax/java.syntax +211 -0
  336. data/lib/kitabu/vendor/ruby1.9/uv/syntax/javaproperties.syntax +20 -0
  337. data/lib/kitabu/vendor/ruby1.9/uv/syntax/javascript.syntax +256 -0
  338. data/lib/kitabu/vendor/ruby1.9/uv/syntax/javascript_+_prototype.syntax +72 -0
  339. data/lib/kitabu/vendor/ruby1.9/uv/syntax/javascript_+_prototype_bracketed.syntax +140 -0
  340. data/lib/kitabu/vendor/ruby1.9/uv/syntax/jquery_javascript.syntax +114 -0
  341. data/lib/kitabu/vendor/ruby1.9/uv/syntax/json.syntax +136 -0
  342. data/lib/kitabu/vendor/ruby1.9/uv/syntax/languagedefinition.syntax +708 -0
  343. data/lib/kitabu/vendor/ruby1.9/uv/syntax/latex.syntax +566 -0
  344. data/lib/kitabu/vendor/ruby1.9/uv/syntax/latex_beamer.syntax +41 -0
  345. data/lib/kitabu/vendor/ruby1.9/uv/syntax/latex_log.syntax +50 -0
  346. data/lib/kitabu/vendor/ruby1.9/uv/syntax/latex_memoir.syntax +64 -0
  347. data/lib/kitabu/vendor/ruby1.9/uv/syntax/lexflex.syntax +219 -0
  348. data/lib/kitabu/vendor/ruby1.9/uv/syntax/lighttpd.syntax +54 -0
  349. data/lib/kitabu/vendor/ruby1.9/uv/syntax/lilypond.syntax +492 -0
  350. data/lib/kitabu/vendor/ruby1.9/uv/syntax/lisp.syntax +61 -0
  351. data/lib/kitabu/vendor/ruby1.9/uv/syntax/literate_haskell.syntax +24 -0
  352. data/lib/kitabu/vendor/ruby1.9/uv/syntax/logo.syntax +29 -0
  353. data/lib/kitabu/vendor/ruby1.9/uv/syntax/logtalk.syntax +152 -0
  354. data/lib/kitabu/vendor/ruby1.9/uv/syntax/lua.syntax +86 -0
  355. data/lib/kitabu/vendor/ruby1.9/uv/syntax/m.syntax +142 -0
  356. data/lib/kitabu/vendor/ruby1.9/uv/syntax/macports_portfile.syntax +163 -0
  357. data/lib/kitabu/vendor/ruby1.9/uv/syntax/makefile.syntax +36 -0
  358. data/lib/kitabu/vendor/ruby1.9/uv/syntax/man.syntax +17 -0
  359. data/lib/kitabu/vendor/ruby1.9/uv/syntax/mediawiki.syntax +567 -0
  360. data/lib/kitabu/vendor/ruby1.9/uv/syntax/mips.syntax +66 -0
  361. data/lib/kitabu/vendor/ruby1.9/uv/syntax/mod_perl.syntax +50 -0
  362. data/lib/kitabu/vendor/ruby1.9/uv/syntax/modula-3.syntax +47 -0
  363. data/lib/kitabu/vendor/ruby1.9/uv/syntax/moinmoin.syntax +189 -0
  364. data/lib/kitabu/vendor/ruby1.9/uv/syntax/mootools.syntax +572 -0
  365. data/lib/kitabu/vendor/ruby1.9/uv/syntax/movable_type.syntax +162 -0
  366. data/lib/kitabu/vendor/ruby1.9/uv/syntax/multimarkdown.syntax +39 -0
  367. data/lib/kitabu/vendor/ruby1.9/uv/syntax/objective-c++.syntax +18 -0
  368. data/lib/kitabu/vendor/ruby1.9/uv/syntax/objective-c.syntax +233 -0
  369. data/lib/kitabu/vendor/ruby1.9/uv/syntax/ocaml.syntax +764 -0
  370. data/lib/kitabu/vendor/ruby1.9/uv/syntax/ocamllex.syntax +167 -0
  371. data/lib/kitabu/vendor/ruby1.9/uv/syntax/ocamlyacc.syntax +184 -0
  372. data/lib/kitabu/vendor/ruby1.9/uv/syntax/opengl.syntax +14 -0
  373. data/lib/kitabu/vendor/ruby1.9/uv/syntax/pascal.syntax +77 -0
  374. data/lib/kitabu/vendor/ruby1.9/uv/syntax/perl.syntax +1115 -0
  375. data/lib/kitabu/vendor/ruby1.9/uv/syntax/plain_text.syntax +32 -0
  376. data/lib/kitabu/vendor/ruby1.9/uv/syntax/postscript.syntax +114 -0
  377. data/lib/kitabu/vendor/ruby1.9/uv/syntax/processing.syntax +106 -0
  378. data/lib/kitabu/vendor/ruby1.9/uv/syntax/prolog.syntax +40 -0
  379. data/lib/kitabu/vendor/ruby1.9/uv/syntax/property_list.syntax +635 -0
  380. data/lib/kitabu/vendor/ruby1.9/uv/syntax/python.syntax +868 -0
  381. data/lib/kitabu/vendor/ruby1.9/uv/syntax/python_django.syntax +21 -0
  382. data/lib/kitabu/vendor/ruby1.9/uv/syntax/qmake_project.syntax +114 -0
  383. data/lib/kitabu/vendor/ruby1.9/uv/syntax/qt_c++.syntax +26 -0
  384. data/lib/kitabu/vendor/ruby1.9/uv/syntax/quake3_config.syntax +32 -0
  385. data/lib/kitabu/vendor/ruby1.9/uv/syntax/r.syntax +81 -0
  386. data/lib/kitabu/vendor/ruby1.9/uv/syntax/r_console.syntax +16 -0
  387. data/lib/kitabu/vendor/ruby1.9/uv/syntax/ragel.syntax +201 -0
  388. data/lib/kitabu/vendor/ruby1.9/uv/syntax/rd_r_documentation.syntax +91 -0
  389. data/lib/kitabu/vendor/ruby1.9/uv/syntax/regexp.syntax +50 -0
  390. data/lib/kitabu/vendor/ruby1.9/uv/syntax/release_notes.syntax +46 -0
  391. data/lib/kitabu/vendor/ruby1.9/uv/syntax/remind.syntax +253 -0
  392. data/lib/kitabu/vendor/ruby1.9/uv/syntax/restructuredtext.syntax +250 -0
  393. data/lib/kitabu/vendor/ruby1.9/uv/syntax/rez.syntax +80 -0
  394. data/lib/kitabu/vendor/ruby1.9/uv/syntax/ruby.syntax +1035 -0
  395. data/lib/kitabu/vendor/ruby1.9/uv/syntax/ruby_experimental.syntax +145 -0
  396. data/lib/kitabu/vendor/ruby1.9/uv/syntax/ruby_on_rails.syntax +88 -0
  397. data/lib/kitabu/vendor/ruby1.9/uv/syntax/s5.syntax +69 -0
  398. data/lib/kitabu/vendor/ruby1.9/uv/syntax/scheme.syntax +347 -0
  399. data/lib/kitabu/vendor/ruby1.9/uv/syntax/scilab.syntax +41 -0
  400. data/lib/kitabu/vendor/ruby1.9/uv/syntax/setext.syntax +147 -0
  401. data/lib/kitabu/vendor/ruby1.9/uv/syntax/shell-unix-generic.syntax +384 -0
  402. data/lib/kitabu/vendor/ruby1.9/uv/syntax/slate.syntax +149 -0
  403. data/lib/kitabu/vendor/ruby1.9/uv/syntax/sql.syntax +237 -0
  404. data/lib/kitabu/vendor/ruby1.9/uv/syntax/sql_rails.syntax +18 -0
  405. data/lib/kitabu/vendor/ruby1.9/uv/syntax/ssh-config.syntax +33 -0
  406. data/lib/kitabu/vendor/ruby1.9/uv/syntax/standard_ml.syntax +121 -0
  407. data/lib/kitabu/vendor/ruby1.9/uv/syntax/strings_file.syntax +39 -0
  408. data/lib/kitabu/vendor/ruby1.9/uv/syntax/subversion_commit_message.syntax +36 -0
  409. data/lib/kitabu/vendor/ruby1.9/uv/syntax/sweave.syntax +84 -0
  410. data/lib/kitabu/vendor/ruby1.9/uv/syntax/swig.syntax +57 -0
  411. data/lib/kitabu/vendor/ruby1.9/uv/syntax/tcl.syntax +152 -0
  412. data/lib/kitabu/vendor/ruby1.9/uv/syntax/template_toolkit.syntax +121 -0
  413. data/lib/kitabu/vendor/ruby1.9/uv/syntax/tex.syntax +86 -0
  414. data/lib/kitabu/vendor/ruby1.9/uv/syntax/tex_math.syntax +49 -0
  415. data/lib/kitabu/vendor/ruby1.9/uv/syntax/textile.syntax +215 -0
  416. data/lib/kitabu/vendor/ruby1.9/uv/syntax/tsv.syntax +50 -0
  417. data/lib/kitabu/vendor/ruby1.9/uv/syntax/twiki.syntax +241 -0
  418. data/lib/kitabu/vendor/ruby1.9/uv/syntax/txt2tags.syntax +79 -0
  419. data/lib/kitabu/vendor/ruby1.9/uv/syntax/vectorscript.syntax +57 -0
  420. data/lib/kitabu/vendor/ruby1.9/uv/syntax/xhtml_1.0.syntax +4027 -0
  421. data/lib/kitabu/vendor/ruby1.9/uv/syntax/xml.syntax +180 -0
  422. data/lib/kitabu/vendor/ruby1.9/uv/syntax/xml_strict.syntax +92 -0
  423. data/lib/kitabu/vendor/ruby1.9/uv/syntax/xsl.syntax +60 -0
  424. data/lib/kitabu/vendor/ruby1.9/uv/syntax/yaml.syntax +160 -0
  425. data/lib/kitabu/vendor/ruby1.9/uv/syntax/yui_javascript.syntax +176 -0
  426. data/lib/kitabu/vendor/ruby1.9/uv/uv.rb +89 -0
  427. data/lib/kitabu/vendor/ruby1.9/uv/uv/render_processor.rb +132 -0
  428. data/lib/kitabu/vendor/ruby1.9/uv/uv/utility.rb +68 -0
  429. data/spec/exit_matcher.rb +45 -0
  430. data/spec/fixtures/rails-guides/code/sample.rb +7 -0
  431. data/spec/kitabu/base_spec.rb +159 -0
  432. data/spec/kitabu/blackcloth_spec.rb +36 -0
  433. data/spec/kitabu/bug_fix_spec.rb +25 -0
  434. data/spec/kitabu/command_spec.rb +82 -0
  435. data/spec/kitabu/syntax_spec.rb +90 -0
  436. data/spec/kitabu/toc_spec.rb +79 -0
  437. data/spec/spec_helper.rb +30 -0
  438. data/templates/Rakefile +3 -0
  439. data/templates/config.yml +9 -0
  440. data/templates/layouts/boom/layout.css +469 -0
  441. data/templates/layouts/boom/layout.html +37 -0
  442. data/templates/syntax.css +1065 -0
  443. data/templates/themes/active4d.css +114 -0
  444. data/templates/themes/blackboard.css +88 -0
  445. data/templates/themes/dawn.css +121 -0
  446. data/templates/themes/eiffel.css +121 -0
  447. data/templates/themes/idle.css +62 -0
  448. data/templates/themes/iplastic.css +80 -0
  449. data/templates/themes/lazy.css +73 -0
  450. data/templates/themes/mac_classic.css +123 -0
  451. data/templates/themes/slush_poppies.css +85 -0
  452. data/templates/themes/sunburst.css +180 -0
  453. data/templates/user.css +1 -0
  454. metadata +518 -0
data/lib/kitabu.rb ADDED
@@ -0,0 +1,50 @@
1
+ # encoding: utf-8
2
+ require "rubygems"
3
+ require "yaml"
4
+ require "erb"
5
+ require "ostruct"
6
+ require "rexml/streamlistener"
7
+ require "rexml/document"
8
+ require "activesupport"
9
+
10
+ $:.unshift File.dirname(__FILE__)
11
+
12
+ require "kitabu/base"
13
+ require "kitabu/toc"
14
+ require "kitabu/syntax"
15
+ require "kitabu/templates"
16
+
17
+ vendor = File.dirname(__FILE__) + "/kitabu/vendor/"
18
+
19
+ dir = RUBY_VERSION =~ /^1.9/ ? "ruby1.9" : "ruby1.8"
20
+
21
+ $:.unshift File.join(vendor, dir, "plist")
22
+ $:.unshift File.join(vendor, dir, "textpow")
23
+ $:.unshift File.join(vendor, dir, "uv")
24
+ $:.unshift File.join(vendor, "colorize")
25
+
26
+ begin
27
+ require "nokogiri"
28
+ rescue LoadError
29
+ nil
30
+ end
31
+
32
+ begin
33
+ require "hpricot"
34
+ rescue LoadError
35
+ nil
36
+ end unless defined?(Nokogiri)
37
+
38
+ require "colorize"
39
+
40
+ begin
41
+ require "plist"
42
+ require "textpow"
43
+ require "uv"
44
+ rescue LoadError => e
45
+ NO_SYNTAX_HIGHLIGHT = true
46
+ end
47
+
48
+ module Kitabu
49
+ VERSION = "0.4.5"
50
+ end
@@ -0,0 +1,271 @@
1
+ # encoding: utf-8
2
+ module Kitabu
3
+ module Base
4
+ DEFAULT_LAYOUT = "boom"
5
+ DEFAULT_THEME = "eiffel"
6
+ DEFAULT_SYNTAX = "plain_text"
7
+ DEFAULT_MARKDOWN_PROCESSOR = "rdiscount"
8
+ GEM_ROOT = File.expand_path(File.dirname(__FILE__) + "/../../")
9
+
10
+ extend self
11
+
12
+ def root_path
13
+ defined?(KITABU_ROOT) ? KITABU_ROOT : ENV["KITABU_ROOT"]
14
+ end
15
+
16
+ def html_path
17
+ root_path + "/output/#{app_name}.html"
18
+ end
19
+
20
+ def pdf_path
21
+ root_path + "/output/#{app_name}.pdf"
22
+ end
23
+
24
+ def template_path
25
+ root_path + "/templates/layout.html"
26
+ end
27
+
28
+ def config_path
29
+ root_path + "/config.yml"
30
+ end
31
+
32
+ def text_dir
33
+ root_path + "/text"
34
+ end
35
+
36
+ # Load the configuration file
37
+ def config
38
+ @config = YAML::load_file(config_path)
39
+ end
40
+
41
+ # Check if nokogiri is available
42
+ def nokogiri?
43
+ defined?(Nokogiri)
44
+ end
45
+
46
+ # Check if hpricot is available
47
+ def hpricot?
48
+ defined?(Hpricot)
49
+ end
50
+
51
+ # Parse erb template propagating the configuration file
52
+ # and adding more variables
53
+ def parse_layout(contents)
54
+ template = File.new(template_path).read
55
+ contents, toc = self.table_of_contents(contents)
56
+ cfg = config.merge(:contents => contents, :toc => toc)
57
+ env = OpenStruct.new(cfg)
58
+
59
+ ERB.new(template).result env.instance_eval{ binding }
60
+ end
61
+
62
+ def table_of_contents(contents)
63
+ return [contents, nil] unless nokogiri? || hpricot?
64
+
65
+ if nokogiri?
66
+ doc = Nokogiri::HTML.parse(contents)
67
+ else
68
+ doc = Hpricot(contents)
69
+ end
70
+
71
+ counter = {}
72
+
73
+ doc.search("h2, h3, h4, h5, h6").each do |node|
74
+ title = node.inner_text
75
+ permalink = Kitabu::Base.to_permalink(title)
76
+
77
+ # initialize and increment counter
78
+ counter[permalink] ||= 0
79
+ counter[permalink] += 1
80
+
81
+ # set a incremented permalink if more than one occurrence
82
+ # is found
83
+ permalink = "#{permalink}-#{counter[permalink]}" if counter[permalink] > 1
84
+ node.set_attribute("id", permalink)
85
+ end
86
+
87
+ if nokogiri?
88
+ contents = doc.to_xhtml
89
+ else
90
+ contents = doc.to_html
91
+ end
92
+
93
+ io = StringIO.new(contents)
94
+ toc = Toc.new
95
+ REXML::Document.parse_stream(io, toc) rescue nil
96
+
97
+ # Nokogiri wraps any content in a valid HTML structure;
98
+ # so we should use only the body content. Additionally,
99
+ # Nokogiri also converts XHTML to HTML. #nokogirisuckhard
100
+ if nokogiri?
101
+ doc.to_xhtml.match(/<body>(.*?)<\/body>/xm)
102
+ contents = $1
103
+ end
104
+
105
+ [contents, toc.to_s]
106
+ end
107
+
108
+ def generate_pdf
109
+ IO.popen("prince %s -o %s" % [html_path, pdf_path]).close
110
+ end
111
+
112
+ def generate_html
113
+ # parsed file holder
114
+ contents = ""
115
+
116
+ # skip some patterns
117
+ entries = Dir.entries(text_dir).sort.reject do |entry|
118
+ %w(. .. .svn .git).include?(entry) || (File.file?(entry) && entry !~ /\.(markdown|textile)$/)
119
+ end
120
+
121
+ $stdout << "\nNo markup files found!\n" if entries.empty?
122
+
123
+ # first, get all chapters; then, get all parsed markdown
124
+ # files from this chapter and group them into a <div class="chapter"> tag
125
+ entries.each do |entry|
126
+ # gets all parsed markdown files to wrap in a
127
+ # chapter element
128
+ chapter = ""
129
+
130
+ # entry can be a file outside chapter folder
131
+ file = "#{text_dir}/#{entry}"
132
+
133
+ if File.file?(file)
134
+ markup_files = [file]
135
+ else
136
+ # merge all markdown and textile files into a single list
137
+ markup_files = Dir["#{text_dir}/#{entry}/**/*.markdown"] +
138
+ Dir["#{text_dir}/#{entry}/**/*.textile"]
139
+ end
140
+
141
+ # no files, so skip it!
142
+ next if markup_files.empty?
143
+
144
+ markup_files.sort.each do |markup_file|
145
+ # get the file contents
146
+ markup_contents = File.read(markup_file)
147
+
148
+ # instantiate a markup object
149
+ begin
150
+ if markup_file =~ /\.textile$/
151
+ markup = BlackCloth.new(markup_contents)
152
+ markup.no_span_caps = true
153
+ else
154
+ markup = markdown_processor_class.new(markup_contents)
155
+ end
156
+ rescue Exception => e
157
+ $stdout << "\nSkipping #{markup_file} (#{e.message})"
158
+ next
159
+ end
160
+
161
+ # convert the markup into html
162
+ parsed_contents = markup.to_html
163
+
164
+ # process syntax highlight
165
+ parsed_contents = Kitabu::Syntax.process(parsed_contents, markup)
166
+
167
+ # add final content to the chapter buffer
168
+ chapter << (parsed_contents + "\n\n")
169
+ end
170
+
171
+ # wrap chapter in div, so i can be styled accordingly
172
+ contents << %[<div class="chapter">%s</div>] % chapter
173
+ end
174
+
175
+ # create output directory if is missing
176
+ FileUtils.mkdir(File.dirname(html_path)) unless File.exists?(File.dirname(html_path))
177
+
178
+ # save html file
179
+ File.open(html_path, "w+") do |f|
180
+ f << Kitabu::Base.parse_layout(contents)
181
+ end
182
+ end
183
+
184
+ def app_name
185
+ ENV["KITABU_NAME"] || "kitabu"
186
+ end
187
+
188
+ # Check if the specified theme is available
189
+ def theme?(theme_name)
190
+ themes.include?(theme_name)
191
+ end
192
+
193
+ # Check if the specified syntax is available
194
+ def syntax?(syntax_name)
195
+ syntaxes.include?(syntax_name)
196
+ end
197
+
198
+ # Check if the specified layout is available
199
+ def layout?(layout_name)
200
+ layouts.include?(layout_name)
201
+ end
202
+
203
+ # Wrap the default theme constant in a method
204
+ def default_theme
205
+ DEFAULT_THEME
206
+ end
207
+
208
+ # Wrap the default syntax constant in a method
209
+ def default_syntax
210
+ DEFAULT_SYNTAX
211
+ end
212
+
213
+ # Wrap the default layout constant in a method
214
+ def default_layout
215
+ DEFAULT_LAYOUT
216
+ end
217
+
218
+ # Wrap the default Markdown constant in a method
219
+ def default_markdown_processor
220
+ DEFAULT_MARKDOWN_PROCESSOR
221
+ end
222
+
223
+ # Return the current Markdown class
224
+ def markdown_processor
225
+ config["markdown"] || default_markdown_processor
226
+ end
227
+
228
+ # Select Markdown processor based on string
229
+ def markdown_processor_class
230
+ case markdown_processor
231
+ when "maruku" then Maruku
232
+ when "bluecloth" then BlueCloth
233
+ when "peg_markdown" then PEGMarkdown
234
+ else RDiscount
235
+ end
236
+ end
237
+
238
+ # Return a list will all available syntaxes
239
+ def syntaxes
240
+ Uv.syntaxes
241
+ end
242
+
243
+ # Return a list with all available layouts
244
+ def layouts
245
+ @layouts ||= begin
246
+ dir = File.join(GEM_ROOT, "templates/layouts")
247
+ Dir.entries(dir).reject{|p| p =~ /^\.+$/ }.sort
248
+ end
249
+ end
250
+
251
+ # Return a list with all available themes
252
+ def themes
253
+ @themes ||= begin
254
+ filter = File.join(GEM_ROOT, "templates/themes/*.css")
255
+ Dir[filter].collect{|path| File.basename(path).gsub(/\.css$/, '') }.sort
256
+ end
257
+ end
258
+
259
+ # Normalize string by replacing accented characters
260
+ # for its equivalent.
261
+ def to_permalink(str)
262
+ str = ActiveSupport::Multibyte::Chars.new(str)
263
+ str = str.normalize(:kd).gsub(/[^\x00-\x7F]/,'').to_s
264
+ str.gsub!(/[^-\w\d]+/xim, "-")
265
+ str.gsub!(/-+/xm, "-")
266
+ str.gsub!(/^-?(.*?)-?$/, '\1')
267
+ str.downcase!
268
+ str
269
+ end
270
+ end
271
+ end
@@ -0,0 +1,179 @@
1
+ # encoding: utf-8
2
+ class BlackCloth < RedCloth
3
+ @@syntax_blocks = []
4
+
5
+ FN_RE = /
6
+ (\s+)? # getting spaces
7
+ %\{ # opening
8
+ (.*?) # footnote
9
+ \}# # closing
10
+ /xm
11
+
12
+ # Usage: Writing some text with a footnote %{this is a footnote}
13
+ def inline_textile_fn(text)
14
+ text.gsub!( FN_RE ) do |m|
15
+ %(<span class="footnote">#{$2}</span>)
16
+ end
17
+
18
+ text
19
+ end
20
+
21
+ FN_URL_LINK = /
22
+ <
23
+ ((?:https?|ftp):\/\/.*?)
24
+ >
25
+ /x
26
+
27
+ # Usage: <http://google.com>
28
+ def inline_textile_url_link(text)
29
+ text.gsub!( FN_URL_LINK ) do |m|
30
+ %(<a href="#{$1}">#{$1}</a>)
31
+ end
32
+ end
33
+
34
+ # Usage:
35
+ # file. app/models/users.rb
36
+ #
37
+ # Remember to set `base_url` in your Kitabu configuration file
38
+ def textile_file(tag, attrs, cite, content)
39
+ base_url = Kitabu::Base.config["base_url"]
40
+
41
+ if base_url
42
+ url = File.join(base_url, content)
43
+ else
44
+ url = content
45
+ $stdout << "\nYou're using `file. #{content}` but didn't set base_url in your configuration file.\n"
46
+ end
47
+
48
+ %(<p class="file"><span><strong>Download</strong> <a href="#{url}">#{content}</a></span></p>)
49
+ end
50
+
51
+ # Usage:
52
+ # syntax(ruby). Some code
53
+ #
54
+ # getting from line 100 to 200 of file.rb
55
+ # syntax(ruby 100,200). file.rb
56
+ #
57
+ # getting block 'sample' from file.rb
58
+ # syntax(ruby#sample). file.rb
59
+ #
60
+ # to create a block:
61
+ # #begin: sample
62
+ # some code
63
+ # #end: sample
64
+ def textile_syntax(tag, attrs, cite, content)
65
+ # get syntax
66
+ m, syntax = *attrs.match(/class="(.*?)([# ].*?)?"/)
67
+ syntax = 'plain_text' if tag == "pre"
68
+
69
+ # set source
70
+ source_file = content
71
+
72
+ # get block name
73
+ m, block_name = *attrs.match(/id="(.*?)"/ms)
74
+
75
+ # get line interval
76
+ m, from_line, to_line = *attrs.match(/class=".*? ([0-9]+),([0-9]+)"/)
77
+
78
+ content = Kitabu::Syntax.content_for({
79
+ :code => content,
80
+ :syntax => syntax,
81
+ :source_file => source_file,
82
+ :block_name => block_name,
83
+ :from_line => from_line,
84
+ :to_line => to_line
85
+ })
86
+
87
+ @@syntax_blocks << [syntax, content]
88
+ position = @@syntax_blocks.size - 1
89
+ %(@syntax:#{position})
90
+ end
91
+
92
+ def syntax_blocks
93
+ @@syntax_blocks
94
+ end
95
+
96
+ # Usage: pre. Some code
97
+ def textile_pre(*args)
98
+ # Should I add the default theme as a class?
99
+ send(:textile_syntax, *args)
100
+ end
101
+
102
+ # Usage: note. Some text
103
+ def textile_note(tag, attrs, cite, content)
104
+ %(<p class="note">#{content}</p>)
105
+ end
106
+
107
+ # Usage: figure(This is the caption). some_image.jpg
108
+ def textile_figure(tag, attrs, cite, content)
109
+ m, title = *attrs.match(/class="(.*?)"/)
110
+
111
+ width, height = image_size(content)
112
+
113
+ %(<p class="figure"><img style="width: #{width}px; height: #{height}px" src="../images/#{content}" alt="#{title}" /><br/><span class="caption">#{title}</span></p>)
114
+ end
115
+
116
+ def image_size(img)
117
+ IO.popen("file #{Kitabu::Base.root_path}/images/#{img}") do |io|
118
+ m, width, height = *io.read.match(/([0-9]+) x ([0-9]+)/)
119
+ return [width.to_i, height.to_i]
120
+ end
121
+ end
122
+
123
+ # overriding inline method
124
+ def inline( text )
125
+ @rules += [:inline_textile_fn, :inline_textile_url_link]
126
+ super
127
+ end
128
+
129
+ # overriding to_html method
130
+ def to_html( *rules )
131
+ rules = DEFAULT_RULES if rules.empty?
132
+ # make our working copy
133
+ text = self.dup
134
+
135
+ @urlrefs = {}
136
+ @shelf = []
137
+ textile_rules = [:refs_textile, :block_textile_table, :block_textile_lists,
138
+ :block_textile_prefix, :inline_textile_image, :inline_textile_link,
139
+ :inline_textile_code, :inline_textile_span, :glyphs_textile]
140
+ markdown_rules = [:refs_markdown, :block_markdown_setext, :block_markdown_atx, :block_markdown_rule,
141
+ :block_markdown_bq, :block_markdown_lists,
142
+ :inline_markdown_reflink, :inline_markdown_link]
143
+ @rules = rules.collect do |rule|
144
+ case rule
145
+ when :markdown
146
+ markdown_rules
147
+ when :textile
148
+ textile_rules
149
+ else
150
+ rule
151
+ end
152
+ end.flatten
153
+
154
+ # standard clean up
155
+ incoming_entities text
156
+ clean_white_space text
157
+
158
+ # start processor
159
+ @pre_list = []
160
+ rip_offtags text
161
+ no_textile text
162
+ hard_break text
163
+ unless @lite_mode
164
+ refs text
165
+ blocks text
166
+ end
167
+ inline text
168
+ smooth_offtags text
169
+
170
+ retrieve text
171
+
172
+ text.gsub!( /<\/?notextile>/, '' )
173
+ text.gsub!( /x%x%/sm, '&#38;' )
174
+ clean_html text if filter_html
175
+ text.strip!
176
+ text
177
+
178
+ end
179
+ end