docgenerator-creole 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (221) hide show
  1. checksums.yaml +7 -0
  2. data/examples/creole_example.rb +76 -0
  3. data/examples/creole_example_footnote.rb +66 -0
  4. data/examples/creole_example_new_plugin.rb +51 -0
  5. data/examples/creole_example_placeholder.rb +77 -0
  6. data/examples/creole_example_rail.rb +155 -0
  7. data/examples/creole_example_rubycode.rb +144 -0
  8. data/examples/creole_example_struktex.rb +170 -0
  9. data/examples/creole_example_tabular.rb +96 -0
  10. data/examples/creole_example_tikz.rb +47 -0
  11. data/lib/docgenerator-creole.rb +5 -0
  12. data/lib/docgenerator/creole.rb +15 -0
  13. data/lib/docgenerator/creole/base.rb +170 -0
  14. data/lib/docgenerator/creole/characters.rb +131 -0
  15. data/lib/docgenerator/creole/creole.rb +708 -0
  16. data/lib/docgenerator/creole/document.rb +91 -0
  17. data/lib/docgenerator/creole/inclusion_and_plugins.rb +91 -0
  18. data/lib/docgenerator/creole/inclusions.rb +148 -0
  19. data/lib/docgenerator/creole/placeholder.rb +242 -0
  20. data/lib/docgenerator/creole/plugins.rb +230 -0
  21. data/lib/docgenerator/creole/plugins/index.rb +61 -0
  22. data/lib/docgenerator/creole/plugins/rail.rb +179 -0
  23. data/lib/docgenerator/creole/plugins/rubycode4creole.rb +136 -0
  24. data/lib/docgenerator/creole/plugins/struktex.rb +60 -0
  25. data/lib/docgenerator/creole/plugins/tikz.rb +93 -0
  26. data/lib/docgenerator/creole/plugins/todonotes.rb +77 -0
  27. data/lib/docgenerator/creole/tabular.rb +405 -0
  28. data/readme.rdoc +44 -0
  29. data/unittest/Red_Flower.jpg +0 -0
  30. data/unittest/expected_creole/test_creole.html +3 -0
  31. data/unittest/expected_creole/test_creole_characters_all.creole +28 -0
  32. data/unittest/expected_creole/test_creole_characters_all.html +18 -0
  33. data/unittest/expected_creole/test_creole_characters_all.latex +36 -0
  34. data/unittest/expected_creole/test_creole_characters_special.html +10 -0
  35. data/unittest/expected_creole/test_creole_characters_special.latex +18 -0
  36. data/unittest/expected_creole/test_creole_comment.context +11 -0
  37. data/unittest/expected_creole/test_creole_comment.creole +12 -0
  38. data/unittest/expected_creole/test_creole_comment.html +9 -0
  39. data/unittest/expected_creole/test_creole_comment.latex +11 -0
  40. data/unittest/expected_creole/test_creole_countdown.html +3 -0
  41. data/unittest/expected_creole/test_creole_countdown.latex +4 -0
  42. data/unittest/expected_creole/test_creole_creole1.0test.html +182 -0
  43. data/unittest/expected_creole/test_creole_creole1.0test.latex +253 -0
  44. data/unittest/expected_creole/test_creole_creole1.0test.text +160 -0
  45. data/unittest/expected_creole/test_creole_footnotes.html +9 -0
  46. data/unittest/expected_creole/test_creole_footnotes.latex +14 -0
  47. data/unittest/expected_creole/test_creole_footnotes_groupid.html +15 -0
  48. data/unittest/expected_creole/test_creole_footnotes_label.html +9 -0
  49. data/unittest/expected_creole/test_creole_headings.html +17 -0
  50. data/unittest/expected_creole/test_creole_headings.latex +19 -0
  51. data/unittest/expected_creole/test_creole_headings.text +48 -0
  52. data/unittest/expected_creole/test_creole_headings.wiki +37 -0
  53. data/unittest/expected_creole/test_creole_hr.html +7 -0
  54. data/unittest/expected_creole/test_creole_hr.latex +9 -0
  55. data/unittest/expected_creole/test_creole_hr.text +4 -0
  56. data/unittest/expected_creole/test_creole_ignore.html +3 -0
  57. data/unittest/expected_creole/test_creole_ignore.latex +4 -0
  58. data/unittest/expected_creole/test_creole_ignore.text +2 -0
  59. data/unittest/expected_creole/test_creole_inline.html +3 -0
  60. data/unittest/expected_creole/test_creole_inline.latex +4 -0
  61. data/unittest/expected_creole/test_creole_inline.text +2 -0
  62. data/unittest/expected_creole/test_creole_inline_apostroph.html +7 -0
  63. data/unittest/expected_creole/test_creole_inline_apostroph.latex +9 -0
  64. data/unittest/expected_creole/test_creole_inline_apostroph.text +5 -0
  65. data/unittest/expected_creole/test_creole_inline_ruby.html +12 -0
  66. data/unittest/expected_creole/test_creole_inline_ruby.latex +20 -0
  67. data/unittest/expected_creole/test_creole_inline_ruby_raw.html +6 -0
  68. data/unittest/expected_creole/test_creole_inline_ruby_raw.latex +8 -0
  69. data/unittest/expected_creole/test_creole_input.normsource +22 -0
  70. data/unittest/expected_creole/test_creole_input.normsource_1.8 +23 -0
  71. data/unittest/expected_creole/test_creole_input_file_simple.html +15 -0
  72. data/unittest/expected_creole/test_creole_input_file_simple_readlines.html +15 -0
  73. data/unittest/expected_creole/test_creole_label.html +12 -0
  74. data/unittest/expected_creole/test_creole_label.latex +15 -0
  75. data/unittest/expected_creole/test_creole_line_break.html +6 -0
  76. data/unittest/expected_creole/test_creole_line_break.latex +8 -0
  77. data/unittest/expected_creole/test_creole_links_explicit_internal.html +6 -0
  78. data/unittest/expected_creole/test_creole_links_explicit_internal.text +4 -0
  79. data/unittest/expected_creole/test_creole_links_explicit_with_em.html +3 -0
  80. data/unittest/expected_creole/test_creole_links_explicit_with_em.latex +4 -0
  81. data/unittest/expected_creole/test_creole_links_explicit_with_em.text +2 -0
  82. data/unittest/expected_creole/test_creole_links_external.html +6 -0
  83. data/unittest/expected_creole/test_creole_links_external.latex +8 -0
  84. data/unittest/expected_creole/test_creole_links_external.text +4 -0
  85. data/unittest/expected_creole/test_creole_links_external_implicit.html +9 -0
  86. data/unittest/expected_creole/test_creole_links_external_implicit.latex +12 -0
  87. data/unittest/expected_creole/test_creole_links_external_implicit.text +6 -0
  88. data/unittest/expected_creole/test_creole_links_file.html +6 -0
  89. data/unittest/expected_creole/test_creole_links_file.latex +8 -0
  90. data/unittest/expected_creole/test_creole_links_file.text +4 -0
  91. data/unittest/expected_creole/test_creole_links_implicit_end.creole +4 -0
  92. data/unittest/expected_creole/test_creole_links_implicit_end.html +3 -0
  93. data/unittest/expected_creole/test_creole_links_implicit_end.latex +4 -0
  94. data/unittest/expected_creole/test_creole_list_ol.html +12 -0
  95. data/unittest/expected_creole/test_creole_list_ol.latex +22 -0
  96. data/unittest/expected_creole/test_creole_list_ol_after_ul.html +12 -0
  97. data/unittest/expected_creole/test_creole_list_ol_after_ul.latex +20 -0
  98. data/unittest/expected_creole/test_creole_list_ol_after_ul.text +6 -0
  99. data/unittest/expected_creole/test_creole_list_ol_ul.html +15 -0
  100. data/unittest/expected_creole/test_creole_list_ol_ul.latex +26 -0
  101. data/unittest/expected_creole/test_creole_list_ul.html +22 -0
  102. data/unittest/expected_creole/test_creole_list_ul.latex +40 -0
  103. data/unittest/expected_creole/test_creole_list_ul.normsource +85 -0
  104. data/unittest/expected_creole/test_creole_list_ul.normsource_1.8 +83 -0
  105. data/unittest/expected_creole/test_creole_list_ul_too_much.html +24 -0
  106. data/unittest/expected_creole/test_creole_list_ul_too_much.latex +44 -0
  107. data/unittest/expected_creole/test_creole_list_ulul_without_ul.html +6 -0
  108. data/unittest/expected_creole/test_creole_list_ulul_without_ul.latex +12 -0
  109. data/unittest/expected_creole/test_creole_mix_titles_list.html +10 -0
  110. data/unittest/expected_creole/test_creole_mix_titles_list.latex +18 -0
  111. data/unittest/expected_creole/test_creole_mix_titles_list.text +12 -0
  112. data/unittest/expected_creole/test_creole_newline.html +9 -0
  113. data/unittest/expected_creole/test_creole_newline.latex +11 -0
  114. data/unittest/expected_creole/test_creole_newline.text +7 -0
  115. data/unittest/expected_creole/test_creole_paragraphs.html +6 -0
  116. data/unittest/expected_creole/test_creole_paragraphs.latex +8 -0
  117. data/unittest/expected_creole/test_creole_paragraphs.normsource +26 -0
  118. data/unittest/expected_creole/test_creole_paragraphs.normsource_1.8 +27 -0
  119. data/unittest/expected_creole/test_creole_paragraphs.text +4 -0
  120. data/unittest/expected_creole/test_creole_paragraphs.wiki +4 -0
  121. data/unittest/expected_creole/test_creole_paragraphs_wrap.html +5 -0
  122. data/unittest/expected_creole/test_creole_paragraphs_wrap.latex +6 -0
  123. data/unittest/expected_creole/test_creole_paragraphs_wrap.text +4 -0
  124. data/unittest/expected_creole/test_creole_paragraphs_wrap.wiki +4 -0
  125. data/unittest/expected_creole/test_creole_paragraphs_wrap0.html +9 -0
  126. data/unittest/expected_creole/test_creole_paragraphs_wrap0.latex +11 -0
  127. data/unittest/expected_creole/test_creole_paragraphs_wrap0.text +7 -0
  128. data/unittest/expected_creole/test_creole_paragraphs_wrap0.wiki +7 -0
  129. data/unittest/expected_creole/test_creole_paragraphs_wrap60.html +5 -0
  130. data/unittest/expected_creole/test_creole_paragraphs_wrap60.latex +6 -0
  131. data/unittest/expected_creole/test_creole_paragraphs_wrap60.text +4 -0
  132. data/unittest/expected_creole/test_creole_paragraphs_wrap60.wiki +4 -0
  133. data/unittest/expected_creole/test_creole_paragraphs_wrap_with_linebreaks.html +5 -0
  134. data/unittest/expected_creole/test_creole_paragraphs_wrap_with_linebreaks.latex +6 -0
  135. data/unittest/expected_creole/test_creole_paragraphs_wrap_with_linebreaks.text +4 -0
  136. data/unittest/expected_creole/test_creole_paragraphs_wrap_with_linebreaks.wiki +4 -0
  137. data/unittest/expected_creole/test_creole_picture_link.html +6 -0
  138. data/unittest/expected_creole/test_creole_pictures.html +10 -0
  139. data/unittest/expected_creole/test_creole_pictures.latex +13 -0
  140. data/unittest/expected_creole/test_creole_pictures_css.html +6 -0
  141. data/unittest/expected_creole/test_creole_pictures_css.latex +8 -0
  142. data/unittest/expected_creole/test_creole_pictures_imgclass.html +6 -0
  143. data/unittest/expected_creole/test_creole_pictures_imgclass.latex +8 -0
  144. data/unittest/expected_creole/test_creole_pictures_longdesc.html +3 -0
  145. data/unittest/expected_creole/test_creole_pictures_width.html +3 -0
  146. data/unittest/expected_creole/test_creole_pictures_width.latex +4 -0
  147. data/unittest/expected_creole/test_creole_placeholders_html.html +7 -0
  148. data/unittest/expected_creole/test_creole_placeholders_html.latex +8 -0
  149. data/unittest/expected_creole/test_creole_placeholders_html.text +4 -0
  150. data/unittest/expected_creole/test_creole_placeholders_latex.html +6 -0
  151. data/unittest/expected_creole/test_creole_placeholders_latex.latex +9 -0
  152. data/unittest/expected_creole/test_creole_placeholders_latex.text +4 -0
  153. data/unittest/expected_creole/test_creole_short_html.html +3 -0
  154. data/unittest/expected_creole/test_creole_short_html.latex +4 -0
  155. data/unittest/expected_creole/test_creole_short_html.text +2 -0
  156. data/unittest/expected_creole/test_creole_shy.creole +6 -0
  157. data/unittest/expected_creole/test_creole_shy.html +6 -0
  158. data/unittest/expected_creole/test_creole_shy.latex +8 -0
  159. data/unittest/expected_creole/test_creole_shy.text +4 -0
  160. data/unittest/expected_creole/test_creole_tabular.creole +22 -0
  161. data/unittest/expected_creole/test_creole_tabular.html +20 -0
  162. data/unittest/expected_creole/test_creole_tabular.latex +22 -0
  163. data/unittest/expected_creole/test_creole_tabular_creole.creole +21 -0
  164. data/unittest/expected_creole/test_creole_tabular_creole.html +20 -0
  165. data/unittest/expected_creole/test_creole_tabular_creole.latex +21 -0
  166. data/unittest/expected_creole/test_creole_tabular_css.creole +24 -0
  167. data/unittest/expected_creole/test_creole_tabular_css.html +20 -0
  168. data/unittest/expected_creole/test_creole_tabular_css.latex +22 -0
  169. data/unittest/expected_creole/test_creole_tabular_multicols.creole +16 -0
  170. data/unittest/expected_creole/test_creole_tabular_multicols.html +14 -0
  171. data/unittest/expected_creole/test_creole_tabular_multicols.latex +16 -0
  172. data/unittest/expected_creole/test_creole_tabular_row_parameters.latex +22 -0
  173. data/unittest/expected_creole/test_creole_tabular_with_cell_option.creole +21 -0
  174. data/unittest/expected_creole/test_creole_tabular_with_cell_option.html +20 -0
  175. data/unittest/expected_creole/test_creole_toc.html +13 -0
  176. data/unittest/expected_creole/test_creole_toc.latex +22 -0
  177. data/unittest/expected_creole/test_creole_toc.text +4 -0
  178. data/unittest/expected_creole/test_creole_toc_level.html +7 -0
  179. data/unittest/expected_creole/test_creole_toc_level.latex +10 -0
  180. data/unittest/expected_creole/test_creole_toc_level.text +3 -0
  181. data/unittest/expected_creole/test_creole_toc_level_text.html +8 -0
  182. data/unittest/expected_creole/test_creole_toc_level_text.latex +9 -0
  183. data/unittest/expected_creole/test_creole_toc_text.html +5 -0
  184. data/unittest/expected_creole/test_creole_toc_text.latex +5 -0
  185. data/unittest/expected_creole/test_creole_ul_multiple_line.html +7 -0
  186. data/unittest/expected_creole/test_creole_ul_multiple_line.latex +14 -0
  187. data/unittest/expected_creole/test_creole_ul_with_blank.html +11 -0
  188. data/unittest/expected_creole/test_creole_ul_with_blank.latex +20 -0
  189. data/unittest/expected_creole/test_creole_ul_with_bold.creole +0 -0
  190. data/unittest/expected_creole/test_creole_ul_with_bold.html +11 -0
  191. data/unittest/expected_creole/test_creole_ul_with_bold.latex +18 -0
  192. data/unittest/expected_creole/test_creole_ul_with_bold.text +7 -0
  193. data/unittest/expected_creole/test_creole_verbatim.html +25 -0
  194. data/unittest/expected_creole/test_creole_verbatim.latex +33 -0
  195. data/unittest/expected_creole/test_creole_verbatim.text +17 -0
  196. data/unittest/expected_creole/test_creole_verbatim_inline.html +6 -0
  197. data/unittest/expected_creole/test_creole_verbatim_inline.latex +8 -0
  198. data/unittest/expected_creole/test_creole_verbatim_inline_at_start.html +6 -0
  199. data/unittest/expected_creole/test_creole_verbatim_inline_at_start.latex +8 -0
  200. data/unittest/expected_creole_rail/test_rail_creole_object.tex +33 -0
  201. data/unittest/expected_creole_rail/test_rail_creole_placeholder.tex +40 -0
  202. data/unittest/expected_rubycode4doc/creole_complete.html +26 -0
  203. data/unittest/expected_rubycode4doc/creole_complete.tex +40 -0
  204. data/unittest/expected_rubycode4doc/creole_in_tab.html +4 -0
  205. data/unittest/expected_rubycode4doc/creole_in_tab.tex +6 -0
  206. data/unittest/expected_rubycode4doc/creole_inline_ruby.html +7 -0
  207. data/unittest/expected_rubycode4doc/creole_output.html +2 -0
  208. data/unittest/expected_rubycode4doc/creole_output.tex +4 -0
  209. data/unittest/expected_rubycode4doc/creole_rubycode.html +1 -0
  210. data/unittest/expected_rubycode4doc/creole_rubycode.tex +3 -0
  211. data/unittest/expected_rubycode4doc/creole_rubycode_evaluated.html +1 -0
  212. data/unittest/expected_rubycode4doc/creole_rubycode_evaluated.tex +3 -0
  213. data/unittest/expected_rubycode4doc/creole_rubycode_evaluated_listings.html +3 -0
  214. data/unittest/expected_rubycode4doc/creole_rubycode_evaluated_listings.tex +5 -0
  215. data/unittest/unittest_creole.rb +1379 -0
  216. data/unittest/unittest_creole_placeholders.rb +161 -0
  217. data/unittest/unittest_creole_plugin_rail.rb +148 -0
  218. data/unittest/unittest_creole_plugin_rubycode4doc.rb +123 -0
  219. data/unittest/unittest_creole_plugin_struktex.rb +26 -0
  220. data/unittest/unittest_creole_tabular.rb +212 -0
  221. metadata +529 -0
@@ -0,0 +1,230 @@
1
+ =begin rdoc
2
+ Creole plugins
3
+
4
+ This classes define plugins for creole.
5
+
6
+ Plugins are used later with <<xx>>
7
+ more at http://www.wikicreole.org/wiki/Plugin
8
+
9
+ You can extend Wikis with additional Plugin:
10
+
11
+ wiki = Creole.new()
12
+ wiki.plugin['xxx'] = Creole_plugin_xxx
13
+ =end
14
+
15
+ #
16
+
17
+ module Docgenerator
18
+ module Creole
19
+
20
+ =begin rdoc
21
+ Creole plugins
22
+
23
+ This classes define plugins for creole.
24
+
25
+ Plugins are used later with <<xx>>
26
+ more at http://www.wikicreole.org/wiki/Plugin
27
+
28
+ You can extend Wikis with additional Plugin:
29
+
30
+ wiki = Creole.new()
31
+ wiki.plugin['xxx'] = Creole_plugin_xxx
32
+ =end
33
+ module Plugins
34
+
35
+ =begin rdoc
36
+ Default Plugin for Creole.
37
+ <<xx>>
38
+ =end
39
+ class Creole_default_plugin < Creole_inclusion_and_plugin
40
+ def initialize( pluginname, description, options, wiki )
41
+ super
42
+ @wiki.log.warn("Use Default plugin instead requested #{pluginname}- nothing special done.") if @wiki.log.warn?
43
+ end
44
+ end
45
+
46
+ #Collection of Plugins
47
+ Collection = Hash.new(Creole_default_plugin)
48
+
49
+
50
+ =begin rdoc
51
+ Collection of footnotes.
52
+
53
+ Makes sense for HTML-output.
54
+
55
+ For LaTeX the support of bigfoot/manyfoot... may be an idea.
56
+ =end
57
+ class Creole_footnote_group < Creole_inclusion_and_plugin
58
+ #
59
+
60
+ Collection['footnotes'] = self
61
+
62
+ def initialize( inclusionname, description, options, wiki )
63
+ super
64
+ description = Footnotegroup::DEFAULTGROUPID unless description
65
+ @footnotesgroup = wiki.footnotegroups[description]
66
+ wiki.log.error("Footnotesgroup #{description.inspect} not found") if ! @footnotesgroup and wiki.log.error?
67
+ end
68
+ =begin rdoc
69
+ Call Docgenerator::Footnotegroup#to_doc
70
+ =end
71
+ def to_doc(target, options = {})
72
+ #remove options for Docgenerator::Footnotegroup
73
+ l_options = options.dup
74
+ l_options.delete(:plugins)
75
+ l_options.delete(:inclusions)
76
+ @footnotesgroup.to_doc(target, l_options)
77
+ end
78
+ end #Creole_inclusion_footnote_group
79
+
80
+ =begin rdoc
81
+ One footnote
82
+
83
+ Usage:
84
+ <<footnote|text>>
85
+ <<footnote|text|label=l1>>
86
+ <<footnote|text|groupid=g1>>
87
+
88
+ Bug: If you create more documents, you get a common footnote counting.
89
+
90
+ Solution:
91
+ * LaTeX: no problem, LaTeX has it's own output mechanism.
92
+ * HTML: Use grouping.
93
+ =end
94
+ class Creole_footnote < Creole_inclusion_and_plugin
95
+ Collection['footnote'] = self
96
+
97
+ def initialize( inclusionname, description, options, wiki )
98
+ super
99
+
100
+ @groupid = Footnotegroup::DEFAULTGROUPID
101
+ label = nil
102
+
103
+ options.each{|option|
104
+ case option
105
+ when /label\s*=\s*(.*)/
106
+ label = $1
107
+ when /groupid\s*=\s*(.*)/
108
+ @groupid = $1
109
+ else
110
+ @wiki.log.warn("Footnote with unknown option #{option.inspect} not found") if @wiki.log.warn?
111
+ end
112
+ }
113
+
114
+ if ! wiki.footnotegroups[@groupid]
115
+ wiki.footnotegroups[@groupid] = Footnotegroup.new(@groupid)
116
+ end
117
+
118
+ group = wiki.footnotegroups[@groupid]
119
+
120
+ @footnote = element(:footnote,{
121
+ :group => group,
122
+ :label => label,
123
+ }, description )
124
+
125
+
126
+ end
127
+ def to_doc(target, options ={})
128
+ @footnote.to_doc(target, options)
129
+ end
130
+ end #Creole_inclusion_footnote
131
+
132
+ =begin rdoc
133
+ Some short latex
134
+
135
+ Usage:
136
+ <<latex|code>>
137
+
138
+ Note:
139
+ There is also a placeholder for larger latex:
140
+ <<<latex
141
+ content
142
+ >>>
143
+ =end
144
+ class Creole_short_latex < Creole_inclusion_and_plugin
145
+ #We don't use it as inclusion. Closing } from latex may be confusing as in:
146
+ # {{latex|\texttt{kursuiv}}}
147
+ set_plugin_key 'latex'
148
+
149
+ def initialize( inclusionname, description, options, wiki )
150
+ super
151
+ options.each{|option|
152
+ #~ case option
153
+ #~ else
154
+ @wiki.log.warn("latex with unknown option #{option.inspect} not found") if @wiki.log.warn?
155
+ #~ end
156
+ }
157
+ @source = description
158
+
159
+ end
160
+ #Return content only for latex
161
+ def to_doc( target, options = {})
162
+ target == :latex ? @source.to_doc( target, options ) : ''
163
+ end
164
+ end #Creole_short_latex
165
+
166
+
167
+ =begin rdoc
168
+ Eval the given ruby-code and put it as "raw text".
169
+
170
+
171
+ This is defined as a plugin.
172
+ =end
173
+ class Creole_plugin_ruby_raw < Creole_inclusion_and_plugin
174
+ set_plugin_key 'ruby_raw'
175
+
176
+ def initialize( inclusionname, description, options, wiki )
177
+ #The ruby-code may contain | - so we have to ad it again
178
+ description << "|#{options.join('|')}" unless options.empty?
179
+ options = nil
180
+ super
181
+ @code = description
182
+ begin
183
+ @result = eval(@code)
184
+ rescue => bang
185
+ wiki.log.error("Plugin ruby_raw: <#{@code}> results in #{bang.class}/#{bang}") if wiki.log.error?
186
+ end
187
+ end #initialize
188
+ def to_doc(target, options ={})
189
+ @result.to_s
190
+ end
191
+ def inspect()
192
+ "#<Creole_plugin_ruby_raw:#{@code}>"
193
+ end
194
+ end #Creole_plugin_ruby
195
+
196
+ =begin rdoc
197
+ Eval the given ruby-code and add it as a interpreted code.
198
+
199
+ This is defined as a plugin.
200
+
201
+ Ideas for further development: eval later, at doc generation.
202
+ =end
203
+ class Creole_plugin_ruby < Creole_inclusion_and_plugin
204
+ set_plugin_key 'ruby'
205
+
206
+ def initialize( inclusionname, description, options, wiki )
207
+ #The ruby-code may contain | - so we have to ad it again
208
+ description << "|#{options.join('|')}" unless options.empty?
209
+ options = nil
210
+ super
211
+
212
+ @code = description
213
+ begin
214
+ @result = eval(@code)
215
+ rescue => bang
216
+ wiki.log.error("Plugin ruby: <#{@code}> results in #{bang.class}/#{bang}") if wiki.log.error?
217
+ end
218
+ end #initialize
219
+ def to_doc(target, options = {})
220
+ @wiki.normsource2elements(
221
+ @wiki.parse(@result.to_s ), options
222
+ ).to_doc(target, options )
223
+ end
224
+ def inspect()
225
+ "#<Creole_plugin_ruby:#{@code}>"
226
+ end
227
+ end #Creole_plugin_ruby
228
+ end #module Plugins
229
+ end #module Creole
230
+ end #module Docgenerator
@@ -0,0 +1,61 @@
1
+ require 'docgenerator/index.rb'
2
+
3
+ module Docgenerator
4
+ module Creole
5
+
6
+ =begin rdoc
7
+ Classes to provide support index.
8
+ =end
9
+ module Index
10
+ #Required header to support index with makeindex.
11
+ HEAD_MAKEINDEX = "\\usepackage{makeidx}\\makeindex\n"
12
+ =begin rdoc
13
+ Classes to provide printindex.
14
+ =end
15
+ class Creole_printindex < Creole_inclusion_and_plugin
16
+ set_plugin_key('printindex') #use <<printindex>>
17
+ def to_doc(target, options = {})
18
+ element(:printindex, options).to_doc(target, options)
19
+ end
20
+ end
21
+ =begin rdoc
22
+ Define a plugin for the indexnotes-package.
23
+ =end
24
+ class Creole_index < Creole_inclusion_and_plugin
25
+
26
+ set_plugin_key('index') #use <<index|..>>
27
+
28
+ #define default options for indexnotes. may be redefined for children of this class.
29
+ def default_options; {}; end
30
+
31
+ =begin rdoc
32
+ Usage:
33
+ <<index|what to do|color=red>>
34
+ =end
35
+ def initialize( inclusionname, value, options, wiki )
36
+ #~ @inclusionname = inclusionname #fix 'index'
37
+ @value = value
38
+ @options = default_options.dup
39
+ #~ options.each{|opt|
40
+ #~ case opt
41
+ #~ when /color\s*=\s*/
42
+ #~ @options[:color] = $~.post_match
43
+ #~ when /inline/
44
+ #~ @options[:inline] = true
45
+ #~ else
46
+ #~ wiki.log.warn("index #{@description} with undefined option #{opt}")
47
+ #~ end
48
+ #~ }
49
+ @wiki = wiki
50
+
51
+ raise "Inclusion received no wiki but #{wiki.inspect}" unless wiki.is_a?(Creole)
52
+ end
53
+
54
+ def to_doc(target, options = {})
55
+ element(:index, @options, @value).to_doc(target, options)
56
+ end
57
+ end #Creole_index
58
+
59
+ end #module index
60
+ end #module Creole
61
+ end #module Docgenerator
@@ -0,0 +1,179 @@
1
+ #encoding: utf-8
2
+ =begin rdoc
3
+ Support for the rail package.
4
+
5
+ This is support for LaTeX-style rail.
6
+ Don't be confused with ruby on rails - there is no intersection of the two packages.
7
+ =end
8
+
9
+ module Docgenerator
10
+ module Creole
11
+ =begin rdoc
12
+ Support for the rail package.
13
+
14
+ This is support for LaTeX-style rail.
15
+
16
+ * http://www.ctan.org/tex-archive/support/rail/
17
+ =end
18
+ module Rail
19
+
20
+ #
21
+ #A Wrapper for the Creole-placeholder for Rail-diagramms.
22
+ #
23
+ class Diagramm4Creole < Placeholder
24
+ set_placeholder_key 'rail'
25
+
26
+ def initialize( wiki, name = 'Raildiagramm')
27
+ super
28
+ @name = name
29
+ raise ParameterError, "Missing id for rail-diagramm" unless @name
30
+ raise ParameterError, "Id for rail-diagramm contains no-letter" unless @name =~ /\A\w+\Z/
31
+ end
32
+
33
+ #fixme
34
+ #Check if the rail-diagramm is available as a picture.
35
+ #~ @filename = "#{@key}.png"
36
+ #~ if ! File.exist?( @filename )
37
+ #~ @filename = nil
38
+ #~ end
39
+
40
+ =begin rdoc
41
+ Return content only for LaTeX
42
+ =end
43
+ def to_doc( target, options = {})
44
+ #fixme: Einmalig beim initialisieren
45
+ #fixme: Varianten erledigen
46
+ #fixme: Bild falls verfügbar
47
+ #fixme: nur TeX (oder Bild)
48
+ #fixme logs
49
+ #~ case options[:elementtype]
50
+ #~ when nil #ignore diagramm
51
+ #~ when :minipage
52
+ #~ return to_element_minipage()
53
+ #~ when :figure
54
+ #~ return to_element_figure()
55
+ #~ when :figure_img
56
+ #~ return to_element_figure_img()
57
+ #~ when :latexonly
58
+ #~ return element(:latexonly,{}, self.to_latex_rail ).cr
59
+ #~ else
60
+ #~ option[:log].error("Raildiagramm#to_element: Undefined type #{@@elementtype}") if option[:log].error?
61
+ #~ end
62
+
63
+ #fixme Bild?
64
+ Rail_diagramm.new( @name, @source ).to_doc( target, options )
65
+ end
66
+ #Check for picture and return a :img-macro (Only html)
67
+ def to_img()
68
+ return element( :img, { :src => @filename }) if @filename
69
+ end
70
+ #~ def to_element_figure()
71
+ #~ figure = element(:figure).cr
72
+ #~ figure << self.to_s
73
+ #~ figure << element(:caption,{}, "Rail-Diagramm #{@key}" ).Cr
74
+ #~ return figure
75
+ #~ end
76
+ #~ def to_element_figure_img()
77
+ #~ if @filename
78
+ #~ figure = element(:figure, { :style => CSS.new(
79
+ #~ :text_align => 'center',
80
+ #~ :float => 'right'
81
+ #~ )}).cr
82
+ #~ figure << self.to_img
83
+ #~ figure << element(:br).cr
84
+ #~ figure << element(:caption,{}, "Rail-Diagramm #{@key}" ).Cr
85
+ #~ else
86
+ #~ figure = nil
87
+ #~ end
88
+ #~ return figure
89
+ #~ end
90
+ #~ #Requires caption.sty
91
+ #~ # doc.head << element(:usepackage,{}, 'caption')
92
+ #~ def to_element_minipage()
93
+ #~ figure = element(:minipage, {:width => '\textwidth'} ).CR
94
+ #~ figure << element(:centering)
95
+ #~ figure << self.to_s
96
+ #~ figure << element(:captionof,{ :float_type => 'figure' }, "Rail-Diagramm #{@key}" ).Cr
97
+ #~ return figure
98
+ #~ end
99
+ end #Rail_diagramm4Creole
100
+
101
+ #
102
+ #A Rail-diagramm
103
+ #
104
+ class Rail_diagramm
105
+
106
+ #Can be used in document header to load rail.sty
107
+ TEX_PACKAGE_RAIL = element(:usepackage,{ }, 'rail').cr
108
+ #Some command to be added in document header.
109
+ #Allows the usage of some characters as terminals.
110
+ RAIL_ALIAS = <<'RAIL_ALIAS'
111
+ \railalias{lbrace}{\{}
112
+ \railalias{rbrace}{\}}
113
+ \railalias{dollar}{\$}
114
+ \railalias{underscore}{\_}
115
+ \railalias{percent}{\%}
116
+ \railalias{at}{@}
117
+ \railalias{atat}{@@}
118
+ % \railalias{backslash}{\char"5C}
119
+ \railalias{backslash}{\ensuremath{\backslash}}
120
+ \railalias{lt}{\ensuremath{<}}
121
+ \railalias{le}{\ensuremath{<=}}
122
+ \railalias{gt}{\ensuremath{>}}
123
+ \railalias{ge}{\ensuremath{>=}}
124
+ \railalias{caret}{\ensuremath{\hat{}}}
125
+ \railalias{tildeeq}{\ensuremath{\sim=}}
126
+ \railalias{quote}{'}
127
+ \railalias{dquote}{"}%german: \dq
128
+ \railterm{quote,dquote}
129
+ \railterm{lbrace,rbrace,dollar,percent,backslash,underscore,at,atat}
130
+ \railterm{lt,le,gt,ge,caret,tildeeq}
131
+ RAIL_ALIAS
132
+ #~ \railalias{ampersand}{\&} -> umgesetht nachh << head>>
133
+
134
+ #Create new Rail diagramm.
135
+ #Parameter:
136
+ #-key
137
+ #-rail-definition
138
+ def initialize( key, code = '' )
139
+ @key = key
140
+ @code = code
141
+ end
142
+ #Implement << for Wikicollector
143
+ def << (code)
144
+ @code << code
145
+ end
146
+ =begin
147
+ Return LaTeX-environment rail
148
+ Requires rail.sty and rail.exe to generate the figure.
149
+
150
+
151
+ =end
152
+ def to_latex(options = {})
153
+ @code = @code.join if @code.respond_to?(:join) #if Array is given
154
+ return <<-RAIL
155
+ %
156
+ % Define a rail-diagramm #{@key}
157
+ %
158
+ \\begin{rail}
159
+ #{@key} :
160
+ #{@code.chomp}
161
+ ;
162
+ \\end{rail}
163
+ RAIL
164
+ end #to_latex
165
+ def to_doc( target, options = {})
166
+ case target
167
+ when :latex
168
+ self.to_latex( options )
169
+ else
170
+ o = set_option_defaults(options)
171
+ #~ o[:log].debug("enter to_doc(#{target}) for #{self.inspect}, options: #{options.keys.inspect}") if o[:log].debug?
172
+ o[:log].error("Rail-diagramm not supported for #{target}") if o[:log].error?
173
+ ''
174
+ end #case target
175
+ end #to_doc
176
+ end
177
+ end #module Rail
178
+ end #module Creole
179
+ end #module Docgenerator