docgenerator 1.2.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. data/build_test_and_doc.rb +505 -0
  2. data/examples/creole_example.rb +82 -0
  3. data/examples/creole_example_footnote.rb +67 -0
  4. data/examples/creole_example_placeholder.rb +77 -0
  5. data/examples/creole_example_rail.rb +154 -0
  6. data/examples/creole_example_rubycode.rb +144 -0
  7. data/examples/creole_example_struktex.rb +169 -0
  8. data/examples/docgenerator_example.rb +1 -1
  9. data/examples/docgenerator_example_footnote.rb +1 -0
  10. data/examples/docgenerator_example_list.rb +3 -0
  11. data/examples/docgenerator_example_restrictions.rb +1 -1
  12. data/examples/docgenerator_example_tabular.rb +1 -1
  13. data/examples/docgenerator_example_tripfalls.rb +2 -2
  14. data/examples/results/readme +2 -1
  15. data/examples/wiki2docgenerator_example.rb +61 -32
  16. data/lib/creole/creole2doc.rb +57 -58
  17. data/lib/creole/creole_characters.rb +56 -0
  18. data/lib/creole/creole_inclusion_and_plugins.rb +59 -284
  19. data/lib/creole/creole_inclusions.rb +142 -0
  20. data/lib/creole/creole_placeholder.rb +57 -23
  21. data/lib/creole/creole_plugins.rb +198 -0
  22. data/lib/creole/creole_tabular.rb +16 -8
  23. data/lib/creole/plugins/rail.rb +182 -0
  24. data/lib/creole/plugins/rubycode4creole.rb +136 -0
  25. data/lib/creole/plugins/struktex.rb +59 -0
  26. data/lib/creole/plugins/todonotes.rb +70 -0
  27. data/lib/docgenerator.rb +161 -71
  28. data/lib/docgenerator/attribute.rb +189 -156
  29. data/lib/docgenerator/characters.rb +824 -267
  30. data/lib/docgenerator/compatibility_v1.rb +249 -0
  31. data/lib/docgenerator/css.rb +53 -32
  32. data/lib/docgenerator/document.rb +119 -56
  33. data/lib/docgenerator/element.rb +304 -351
  34. data/lib/docgenerator/element_meta.rb +303 -0
  35. data/lib/docgenerator/elements.rb +1112 -481
  36. data/lib/docgenerator/environments.rb +153 -62
  37. data/lib/docgenerator/footnote.rb +30 -9
  38. data/lib/docgenerator/lists.rb +71 -47
  39. data/lib/docgenerator/packages/attachfile.rb +136 -0
  40. data/lib/{packages/docgenerator_caption.rb → docgenerator/packages/caption.rb} +28 -19
  41. data/lib/docgenerator/packages/hyperref.rb +194 -0
  42. data/lib/docgenerator/packages/listings.rb +179 -0
  43. data/lib/docgenerator/packages/pdfpages.rb +43 -0
  44. data/lib/docgenerator/packages/rubycode4doc.rb +227 -0
  45. data/lib/{packages/docgenerator_scrlettr2.rb → docgenerator/packages/scrlettr2.rb} +25 -16
  46. data/lib/docgenerator/packages/scrpage2.rb +410 -0
  47. data/lib/docgenerator/packages/struktex.rb +447 -0
  48. data/lib/docgenerator/packages/todonotes.rb +85 -0
  49. data/lib/{packages/docgenerator_url.rb → docgenerator/packages/url.rb} +7 -6
  50. data/lib/docgenerator/sections.rb +257 -83
  51. data/lib/docgenerator/standard.rb +19 -11
  52. data/lib/docgenerator/tabular.rb +234 -118
  53. data/lib/{templates → docgenerator/templates}/docgenerator_template.rb +52 -44
  54. data/lib/{templates → docgenerator/templates}/docgenerator_template.yaml +0 -0
  55. data/lib/{templates → docgenerator/templates}/docgenerator_template_css.rb +22 -16
  56. data/lib/wiki2doc/plugins/rubycode4wiki.rb +53 -0
  57. data/lib/wiki2doc/plugins/struktex.rb +12 -0
  58. data/lib/wiki2doc/wiki2docgenerator.rb +39 -38
  59. data/lib/wiki2doc/wikimedia_document.rb +24 -0
  60. data/manpage_elements.rb +10411 -0
  61. data/readme.rd +34 -24
  62. data/unittest/creole_testtext.creole +11 -0
  63. data/unittest/expected/test_document_usepackage_undefined.log +2 -2
  64. data/unittest/expected/test_runtex.stdout +0 -1
  65. data/unittest/expected/test_runtex_2.stdout +0 -1
  66. data/unittest/expected/toc_css.css +3 -2
  67. data/unittest/expected_creole/test_creole_characters_all.creole +28 -0
  68. data/unittest/expected_creole/test_creole_characters_all.html +15 -15
  69. data/unittest/expected_creole/test_creole_characters_all.latex +15 -15
  70. data/unittest/expected_creole/test_creole_footnotes_groupid.html +15 -0
  71. data/unittest/expected_creole/test_creole_links_file.html +2 -2
  72. data/unittest/expected_creole/test_creole_links_file.latex +2 -2
  73. data/unittest/expected_creole/test_creole_links_file.text +2 -2
  74. data/unittest/expected_creole/test_creole_picture_link.html +1 -1
  75. data/unittest/expected_creole_rail/test_rail_creole_object.tex +33 -0
  76. data/unittest/expected_creole_rail/test_rail_creole_placeholder.tex +40 -0
  77. data/unittest/expected_rubycode4doc/creole_complete.html +26 -0
  78. data/unittest/expected_rubycode4doc/creole_complete.tex +40 -0
  79. data/unittest/expected_rubycode4doc/creole_in_tab.html +4 -0
  80. data/unittest/expected_rubycode4doc/creole_in_tab.tex +6 -0
  81. data/unittest/expected_rubycode4doc/creole_inline_ruby.html +7 -0
  82. data/unittest/expected_rubycode4doc/creole_output.html +2 -0
  83. data/unittest/expected_rubycode4doc/creole_output.tex +4 -0
  84. data/unittest/expected_rubycode4doc/creole_rubycode.html +1 -0
  85. data/unittest/expected_rubycode4doc/creole_rubycode.tex +3 -0
  86. data/unittest/expected_rubycode4doc/creole_rubycode_evaluated.html +1 -0
  87. data/unittest/expected_rubycode4doc/creole_rubycode_evaluated.tex +3 -0
  88. data/unittest/expected_rubycode4doc/creole_rubycode_evaluated_listings.html +3 -0
  89. data/unittest/expected_rubycode4doc/creole_rubycode_evaluated_listings.tex +5 -0
  90. data/unittest/expected_rubycode4doc/wiki_1.html +8 -0
  91. data/unittest/expected_rubycode4doc/wiki_2.html +8 -0
  92. data/unittest/expected_rubycode4doc/wiki_3.html +9 -0
  93. data/unittest/expected_rubycode4doc/wiki_immediate_1.html +5 -0
  94. data/unittest/expected_rubycode4doc/wiki_immediate_2.html +5 -0
  95. data/unittest/expected_rubycode4doc/wiki_immediate_3.html +8 -0
  96. data/unittest/expected_rubycode4doc/wiki_immediate_full.html +21 -0
  97. data/unittest/expected_struktex/test_struktex_krug.creole +15 -0
  98. data/unittest/expected_struktex/test_struktex_krug.tex +19 -0
  99. data/unittest/expected_struktex/test_struktex_krug.wiki +15 -0
  100. data/unittest/expected_struktex/test_struktex_statement.creole +7 -0
  101. data/unittest/expected_struktex/test_struktex_statement.tex +9 -0
  102. data/unittest/expected_struktex/test_struktex_statement.wiki +7 -0
  103. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki.html +0 -0
  104. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki.latex +0 -0
  105. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki.text +0 -0
  106. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki.wiki +0 -0
  107. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_description.html +1 -1
  108. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_description.latex +1 -1
  109. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_description.text +1 -1
  110. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_description.wiki +1 -1
  111. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_footnote.html +0 -0
  112. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_footnote.latex +0 -0
  113. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_footnote.text +0 -0
  114. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_footnote.wiki +0 -0
  115. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_footnote_2.html +0 -0
  116. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_footnote_groupid.html +0 -0
  117. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_html_code.html +0 -0
  118. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_html_code.latex +0 -0
  119. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_html_code.text +0 -0
  120. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_html_code.wiki +0 -0
  121. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_inline.html +0 -0
  122. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_inline.latex +0 -0
  123. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_inline.text +0 -0
  124. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_inline.wiki +0 -0
  125. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_label.html +0 -0
  126. data/unittest/expected_wikimedia/test_wiki_link.html +8 -0
  127. data/unittest/expected_wikimedia/test_wiki_link.latex +17 -0
  128. data/unittest/expected_wikimedia/test_wiki_link.wiki +11 -0
  129. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol.html +0 -0
  130. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol.latex +0 -0
  131. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol.text +0 -0
  132. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol.wiki +0 -0
  133. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_after_ul.html +0 -0
  134. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_after_ul.latex +0 -0
  135. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_after_ul.text +0 -0
  136. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_after_ul.wiki +0 -0
  137. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_ul.html +0 -0
  138. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_ul.latex +0 -0
  139. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_ul.text +0 -0
  140. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ol_ul.wiki +0 -0
  141. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul.html +0 -0
  142. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul.latex +0 -0
  143. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul.text +0 -0
  144. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul.wiki +0 -0
  145. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul_too_much.html +0 -0
  146. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul_too_much.latex +0 -0
  147. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul_too_much.text +0 -0
  148. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_list_ul_too_much.wiki +0 -0
  149. data/unittest/expected_wikimedia/test_wiki_picture.html +55 -0
  150. data/unittest/expected_wikimedia/test_wiki_picture.latex +76 -0
  151. data/unittest/expected_wikimedia/test_wiki_picture_thumb.html +5 -0
  152. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_tab1.html +0 -0
  153. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_tab1.latex +0 -0
  154. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_tab1.wiki +0 -0
  155. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_textformatting.html +0 -0
  156. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_textformatting.latex +0 -0
  157. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_textformatting.text +0 -0
  158. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_textformatting.wiki +0 -0
  159. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_toc.html +0 -0
  160. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_toc.latex +0 -0
  161. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_toc.text +0 -0
  162. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_toc.wiki +0 -0
  163. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_ul_multiple_line.html +0 -0
  164. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_ul_multiple_line.latex +0 -0
  165. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_ul_multiple_line.text +0 -0
  166. data/unittest/{expected_wiki → expected_wikimedia}/test_wiki_ul_multiple_line.wiki +0 -0
  167. data/unittest/{unittest_creole2doc.rb → unittest_creole.rb} +385 -476
  168. data/unittest/unittest_creole_placeholders.rb +272 -0
  169. data/unittest/unittest_creole_plugin_rail.rb +147 -0
  170. data/unittest/unittest_docgenerator.rb +206 -332
  171. data/unittest/unittest_docgenerator_characters.rb +650 -0
  172. data/unittest/unittest_docgenerator_runtex.rb +48 -20
  173. data/unittest/unittest_packages_struktex.rb +187 -0
  174. data/unittest/unittest_rubycode4doc.rb +275 -0
  175. data/unittest/unittest_wikimedia.rb +479 -0
  176. metadata +245 -172
  177. data/examples/results_expected/docgenerator_example.html +0 -39
  178. data/examples/results_expected/docgenerator_example.pdf +0 -0
  179. data/examples/results_expected/docgenerator_example.tex +0 -56
  180. data/examples/results_expected/docgenerator_example_footnote.html +0 -40
  181. data/examples/results_expected/docgenerator_example_footnote.pdf +0 -0
  182. data/examples/results_expected/docgenerator_example_footnote.tex +0 -50
  183. data/examples/results_expected/docgenerator_example_list.html +0 -18
  184. data/examples/results_expected/docgenerator_example_list.pdf +0 -0
  185. data/examples/results_expected/docgenerator_example_list.tex +0 -46
  186. data/examples/results_expected/docgenerator_example_restrictions.html +0 -22
  187. data/examples/results_expected/docgenerator_example_restrictions.pdf +0 -0
  188. data/examples/results_expected/docgenerator_example_restrictions.tex +0 -31
  189. data/examples/results_expected/docgenerator_example_tabular.html +0 -37
  190. data/examples/results_expected/docgenerator_example_tabular.pdf +0 -0
  191. data/examples/results_expected/docgenerator_example_tabular.tex +0 -41
  192. data/examples/results_expected/docgenerator_example_tripfalls.html +0 -27
  193. data/examples/results_expected/docgenerator_example_tripfalls.pdf +0 -0
  194. data/examples/results_expected/docgenerator_example_tripfalls.tex +0 -31
  195. data/lib/packages/docgenerator_attachfile.rb +0 -71
  196. data/lib/packages/docgenerator_hyperref.rb +0 -109
  197. data/lib/packages/docgenerator_listings.rb +0 -103
  198. data/lib/packages/docgenerator_pdfpages.rb +0 -24
  199. data/lib/packages/docgenerator_scrpage2.rb +0 -172
  200. data/self_docgenerator.rb +0 -163
  201. data/unittest/expected_wiki/test_wiki_link.html +0 -8
  202. data/unittest/expected_wiki/test_wiki_link.latex +0 -17
  203. data/unittest/expected_wiki/test_wiki_link.wiki +0 -11
  204. data/unittest/expected_wiki/test_wiki_picture.html +0 -55
  205. data/unittest/expected_wiki/test_wiki_picture.latex +0 -76
  206. data/unittest/expected_wiki/test_wiki_picture_thumb.html +0 -5
  207. data/unittest/test_rakefile_docgenerator.rb +0 -43
  208. data/unittest/unittest_versions.rb +0 -44
  209. data/unittest/unittest_wiki2doc.rb +0 -464
@@ -1,3 +1,6 @@
1
+ module Docgenerator
2
+ module Creole
3
+
1
4
  =begin rdoc
2
5
  Placeholder are defined in Creole-Syntax via <<< >>>
3
6
 
@@ -7,18 +10,33 @@ Placeholders get a name and optional parameters:
7
10
  Placeholders collect the content between <<< and >>>.
8
11
 
9
12
  Derived classes are:
10
- - Creole_dummy_placeholder
11
- - Creole_html
12
- - Creole_latex
13
- - Creole_tabular
14
- - Creole_creoletab
13
+ - Creole::Placeholders::Dummy
14
+ - Creole::Placeholders::Html
15
+ - Creole::Placeholders::Latex
16
+ - Creole::Creole_tabular
17
+ - Creole::Creole_tab
15
18
  =end
16
- class Creole_placeholder
17
- include Docgenerator #get VERSION
19
+ class Placeholder
20
+ =begin rdoc
21
+ Define meta-methods for Creole_inclusion_and_plugin
22
+ =end
23
+ class << self
24
+ =begin rdoc
25
+ Define class as a placeholder.
26
+ You may use the class as:
27
+ {{key}}
28
+ =end
29
+ def set_placeholder_key(key)
30
+ Placeholders::Collection[key] = self
31
+ end
32
+ end
33
+
34
+ #Error is thrown, if the parameters don't fit the need of the placeholder
35
+ class ParameterError < ArgumentError; end;
18
36
  =begin rdoc
19
37
  Each placeholder get the wiki where it belongs to.
20
38
 
21
- Parameters are optional.
39
+ Parameters is an optional string.
22
40
 
23
41
  Definition inside the wiki:
24
42
  <<<name|parameters
@@ -26,9 +44,8 @@ Definition inside the wiki:
26
44
  >>>
27
45
  Placeholders collect the content between <<< and >>>.
28
46
  =end
29
- def initialize( wiki, parameters = nil )
47
+ def initialize( wiki, parameters = nil)
30
48
  @wiki = wiki
31
- #
32
49
  @parameters = parameters
33
50
  @log = @wiki.log
34
51
  end
@@ -47,16 +64,30 @@ Placeholders collect the content between <<< and >>>.
47
64
  def to_doc( target, options = {})
48
65
  @source.to_doc( target, options )
49
66
  end
50
- end #Creole_placeholder
67
+ end #Placeholder
68
+
69
+
70
+ =begin rdoc
71
+ Collection of Placeholder-children
51
72
 
73
+ Placeholders are used via <<<...>>>.
74
+ =end
75
+ module Placeholders
52
76
  =begin rdoc
53
77
  Just a dummy for wrong definitions.
54
78
 
55
79
  This class is used by Creole a default placeholder.
56
80
  =end
57
- class Creole_dummy_placeholder < Creole_placeholder
58
- Creole::Placeholders.default = self
59
- end #Creole_dummy_placeholder
81
+ class Dummy < Placeholder
82
+ end #Placeholder::Dummy
83
+
84
+ #List of defined Placeholders.
85
+ Collection = Hash.new( Dummy )
86
+ #Get a Placeholder.
87
+ def self.[](key)
88
+ Collection[key]
89
+ end
90
+
60
91
 
61
92
  =begin rdoc
62
93
  Placeholder for pure HTML-output.
@@ -71,8 +102,8 @@ Note:
71
102
  There is also a plugin for short html:
72
103
  {{html|code}}
73
104
  =end
74
- class Creole_html < Creole_placeholder
75
- Creole::Placeholders['html'] = self
105
+ class Creole_html < Placeholder
106
+ set_placeholder_key 'html'
76
107
  #Return content only for html
77
108
  def to_doc( target, options = {})
78
109
  target == :html ? @source.to_doc( target, options ) : ''
@@ -90,8 +121,8 @@ Pro:
90
121
  Cons:
91
122
  -unexpected conversions?
92
123
  =end
93
- class Creole_latex < Creole_placeholder
94
- Creole::Placeholders['latex'] = self
124
+ class Creole_latex < Placeholder
125
+ set_placeholder_key 'latex'
95
126
  #Return content only for latex
96
127
  def to_doc( target, options = {})
97
128
  target == :latex ? @source.to_doc( target, options ) : ''
@@ -101,8 +132,8 @@ end #Creole_latex
101
132
  #
102
133
  #Collect
103
134
  #
104
- class Creole_comment < Creole_placeholder
105
- Creole::Placeholders['comment'] = self
135
+ class Creole_comment < Placeholder
136
+ set_placeholder_key 'comment'
106
137
  #Return content as a comment
107
138
  def to_doc( target, options = {})
108
139
  case target
@@ -124,13 +155,16 @@ class Creole_comment < Creole_placeholder
124
155
  def to_creole(options = {})
125
156
  return "<<<comment\n#{@source.join}>>>"
126
157
  end
127
- end #Creole_html
158
+ end #Creole_comment
159
+
160
+ end #module Placeholders
161
+
162
+ end #module Creole
163
+ end #module Docgenerator
128
164
 
129
165
 
130
166
  __END__
131
167
  To be done:
132
- class Creole_rail
133
- class Creole_struktogramm
134
168
  rubycode (see plugin Creole_plugin_ruby )
135
169
 
136
170
  Steuerparameter mit | nach plugin-name?
@@ -0,0 +1,198 @@
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
+
133
+ =begin rdoc
134
+ Eval the given ruby-code and put it as "raw text".
135
+
136
+
137
+ This is defined as a plugin.
138
+ =end
139
+ class Creole_plugin_ruby_raw < Creole_inclusion_and_plugin
140
+ set_plugin_key 'ruby_raw'
141
+
142
+ def initialize( inclusionname, description, options, wiki )
143
+ #The ruby-code may contain | - so we have to ad it again
144
+ description << "|#{options.join('|')}" unless options.empty?
145
+ options = nil
146
+ super
147
+ @code = description
148
+ begin
149
+ @result = eval(@code)
150
+ rescue => bang
151
+ wiki.log.error("Plugin ruby_raw: <#{@code}> results in #{bang.class}/#{bang}") if wiki.log.error?
152
+ end
153
+ end #initioliaze
154
+ def to_doc(target, options ={})
155
+ @result.to_s
156
+ end
157
+ def inspect()
158
+ "#<Creole_plugin_ruby_raw:#{@code}>"
159
+ end
160
+ end #Creole_plugin_ruby
161
+
162
+ =begin rdoc
163
+ Eval the given ruby-code and add it as a interpreted code.
164
+
165
+ This is defined as a plugin.
166
+
167
+ Ideas for further development: eval later, at doc generation.
168
+ =end
169
+ class Creole_plugin_ruby < Creole_inclusion_and_plugin
170
+ set_plugin_key 'ruby'
171
+
172
+ def initialize( inclusionname, description, options, wiki )
173
+ #The ruby-code may contain | - so we have to ad it again
174
+ description << "|#{options.join('|')}" unless options.empty?
175
+ options = nil
176
+ super
177
+
178
+ @code = description
179
+ begin
180
+ @result = eval(@code)
181
+ rescue => bang
182
+ wiki.log.error("Plugin ruby: <#{@code}> results in #{bang.class}/#{bang}") if wiki.log.error?
183
+ end
184
+ end #initioliaze
185
+ def to_doc(target, options = {})
186
+ @wiki.normsource2elements(
187
+ @wiki.parse(@result.to_s ), options
188
+ ).to_doc(target, options )
189
+ end
190
+ def inspect()
191
+ "#<Creole_plugin_ruby:#{@code}>"
192
+ end
193
+ end #Creole_plugin_ruby
194
+
195
+
196
+ end #module Plugins
197
+ end #module Creole
198
+ end #module Docgenerator
@@ -16,6 +16,8 @@ lineoptions:
16
16
  fixme
17
17
 
18
18
 
19
+ module Docgenerator
20
+ module Creole
19
21
 
20
22
  =begin
21
23
  "Original" creole tab.
@@ -33,8 +35,8 @@ Usage:
33
35
  |also |align\\ it. |
34
36
 
35
37
  =end
36
- class Creole_creoletab < Creole_placeholder
37
- Creole::Placeholders['creole_tabular'] = self #original creole-tab definition
38
+ class Creole_tab < Placeholder
39
+ set_placeholder_key 'creole_tabular' #original creole-tab definition
38
40
 
39
41
  #Extend the class by a little structure
40
42
  Cell = Struct.new('Cell', :content, :type )
@@ -91,6 +93,8 @@ Usage:
91
93
  <<<tabular
92
94
  |!columns=3
93
95
  |!columndescription=ccc
96
+ |!border=1px
97
+ |!css= color: red
94
98
  |=1
95
99
  |=2
96
100
  |=3
@@ -113,8 +117,8 @@ You can add additional settings to cells:
113
117
  |||class=empty
114
118
  >>>
115
119
  =end
116
- class Creole_tabular < Creole_placeholder
117
- Creole::Placeholders['tabular'] = self
120
+ class Creole_tabular < Placeholder
121
+ set_placeholder_key 'tabular'
118
122
 
119
123
  #Extend the class by a little structure
120
124
  class Cell
@@ -182,6 +186,8 @@ Supported additional settings:
182
186
  case $~.post_match().strip
183
187
  when /columns\s*=\s*(.*)/
184
188
  options[:columns] = $1.to_i
189
+ when /border\s*=\s*(.*)/
190
+ options[:border] = $1
185
191
  when /columndescription\s*=\s*(.*)/
186
192
  options[:columndescription] = $1
187
193
  when /css\s*=\s*(.*)\s*:\s*(.*)/
@@ -225,12 +231,13 @@ Supported additional settings:
225
231
  def to_doc( target, options = {})
226
232
  @tab.to_doc( target, options )
227
233
  end
228
-
229
234
  end
235
+ end #module Creole
236
+ end #module Docgenerator
230
237
 
231
238
 
232
239
  if $0 == __FILE__
233
- creole = Creole.new(
240
+ creole = Docgenerator::Creole::Creole.new(
234
241
  :name => 'tabular_creole',
235
242
  :content => <<'creole'
236
243
  <<<tabular
@@ -238,15 +245,16 @@ if $0 == __FILE__
238
245
  >>>
239
246
  creole
240
247
  )
241
- puts creole.to_html
248
+ p creole.to_html #testcode
242
249
  end
243
250
  __END__
244
251
 
245
252
  class Creole_tabular_cvs
246
- include Creole_placeholder
253
+ include Placeholder
247
254
  >>>tab
248
255
  |! Tabdefinition crl
249
256
  |! implizit columns
257
+ |! border=1px
250
258
  |= -> th
251
259
  yy;yy;yy;
252
260
  yy;yy;yy;
@@ -0,0 +1,182 @@
1
+ =begin rdoc
2
+ Support for the rail package.
3
+
4
+ This is support for LaTeX-style rail.
5
+ Don't be confused with ruby on rails - there is no intersection of the two packages.
6
+ =end
7
+
8
+ require 'creole/creole2doc'
9
+
10
+ module Docgenerator
11
+ module Creole
12
+ =begin rdoc
13
+ Support for the rail package.
14
+
15
+ This is support for LaTeX-style rail.
16
+
17
+ * http://www.ctan.org/tex-archive/support/rail/
18
+ =end
19
+ module Rail
20
+
21
+ #
22
+ #A Wrapper for the Creole-placeholder for Rail-diagramms.
23
+ #
24
+ class Diagramm4Creole < Placeholder
25
+ set_placeholder_key 'rail'
26
+
27
+ def initialize( wiki, name = 'Raildiagramm')
28
+ super
29
+ @name = name
30
+ raise ParameterError, "Missing id for rail-diagramm" unless @name
31
+ raise ParameterError, "Id for rail-diagramm contains no-letter" unless @name =~ /\A\w+\Z/
32
+ end
33
+
34
+ #fixme
35
+ #Check if the rail-diagramm is available as a picture.
36
+ #~ @filename = "#{@key}.png"
37
+ #~ if ! File.exist?( @filename )
38
+ #~ @filename = nil
39
+ #~ end
40
+
41
+
42
+ =begin rdoc
43
+ Return content only for LaTeX
44
+ =end
45
+ def to_doc( target, options = {})
46
+ #fixme: Einmalig beim initialisieren
47
+ #fixme: Varianten erledigen
48
+ #fixme: Bild falls verf�gbar
49
+ #fixme: nur TeX (oder Bild)
50
+ #fixme logs
51
+ #~ case options[:elementtype]
52
+ #~ when nil #ignore diagramm
53
+ #~ when :minipage
54
+ #~ return to_element_minipage()
55
+ #~ when :figure
56
+ #~ return to_element_figure()
57
+ #~ when :figure_img
58
+ #~ return to_element_figure_img()
59
+ #~ when :latexonly
60
+ #~ return element(:latexonly,{}, self.to_latex_rail ).cr
61
+ #~ else
62
+ #~ option[:log].error("Raildiagramm#to_element: Undefined type #{@@elementtype}") if option[:log].error?
63
+ #~ end
64
+
65
+ #fixme Bild?
66
+ Rail_diagramm.new( @name, @source ).to_doc( target, options )
67
+ end
68
+ #Check for picture and return a :img-macro (Only html)
69
+ def to_img()
70
+ return element( :img, { :src => @filename }) if @filename
71
+ end
72
+ #~ def to_element_figure()
73
+ #~ figure = element(:figure).cr
74
+ #~ figure << self.to_s
75
+ #~ figure << element(:caption,{}, "Rail-Diagramm #{@key}" ).Cr
76
+ #~ return figure
77
+ #~ end
78
+ #~ def to_element_figure_img()
79
+ #~ if @filename
80
+ #~ figure = element(:figure, { :style => CSS.new(
81
+ #~ :text_align => 'center',
82
+ #~ :float => 'right'
83
+ #~ )}).cr
84
+ #~ figure << self.to_img
85
+ #~ figure << element(:br).cr
86
+ #~ figure << element(:caption,{}, "Rail-Diagramm #{@key}" ).Cr
87
+ #~ else
88
+ #~ figure = nil
89
+ #~ end
90
+ #~ return figure
91
+ #~ end
92
+ #~ #Requires caption.sty
93
+ #~ # doc.head << element(:usepackage,{}, 'caption')
94
+ #~ def to_element_minipage()
95
+ #~ figure = element(:minipage, {:width => '\textwidth'} ).CR
96
+ #~ figure << element(:centering)
97
+ #~ figure << self.to_s
98
+ #~ figure << element(:captionof,{ :float_type => 'figure' }, "Rail-Diagramm #{@key}" ).Cr
99
+ #~ return figure
100
+ #~ end
101
+ end #Rail_diagramm4Creole
102
+
103
+ #
104
+ #A Rail-diagramm
105
+ #
106
+ class Rail_diagramm
107
+
108
+ #Can be used in document header to load rail.sty
109
+ TEX_PACKAGE_RAIL = element(:usepackage,{ }, 'rail').cr
110
+ #Some command to be added in document header.
111
+ #Allows the usage of some characters as terminals.
112
+ RAIL_ALIAS = <<'RAIL_ALIAS'
113
+ \railalias{lbrace}{\{}
114
+ \railalias{rbrace}{\}}
115
+ \railalias{dollar}{\$}
116
+ \railalias{underscore}{\_}
117
+ \railalias{percent}{\%}
118
+ \railalias{at}{@}
119
+ \railalias{atat}{@@}
120
+ % \railalias{backslash}{\char"5C}
121
+ \railalias{backslash}{\ensuremath{\backslash}}
122
+ \railalias{lt}{\ensuremath{<}}
123
+ \railalias{le}{\ensuremath{<=}}
124
+ \railalias{gt}{\ensuremath{>}}
125
+ \railalias{ge}{\ensuremath{>=}}
126
+ \railalias{caret}{\ensuremath{\hat{}}}
127
+ \railalias{tildeeq}{\ensuremath{\sim=}}
128
+ \railalias{quote}{'}
129
+ \railalias{dquote}{"}%german: \dq
130
+ \railterm{quote,dquote}
131
+ \railterm{lbrace,rbrace,dollar,percent,backslash,underscore,at,atat}
132
+ \railterm{lt,le,gt,ge,caret,tildeeq}
133
+ RAIL_ALIAS
134
+ #~ \railalias{ampersand}{\&} -> umgesetht nachh << head>>
135
+
136
+ #Create new Rail diagramm.
137
+ #Parameter:
138
+ #-key
139
+ #-rail-definition
140
+ def initialize( key, code = '' )
141
+ @key = key
142
+ @code = code
143
+ end
144
+ #Implement << for Wikicollector
145
+ def << (code)
146
+ @code << code
147
+ end
148
+ =begin
149
+ Return LaTeX-environment rail
150
+ Requires rail.sty and rail.exe to generate the figure.
151
+
152
+
153
+ =end
154
+ def to_latex(options = {})
155
+ @code = @code.join if @code.respond_to?(:join) #if Array is given
156
+ return <<-RAIL
157
+ %
158
+ % Define a rail-diagramm #{@key}
159
+ %
160
+ \\begin{rail}
161
+ #{@key} :
162
+ #{@code.chomp}
163
+ ;
164
+ \\end{rail}
165
+ RAIL
166
+ end #to_latex
167
+ def to_doc( target, options = {})
168
+ case target
169
+ when :latex
170
+ self.to_latex( options )
171
+ else
172
+ o = set_option_defaults(options)
173
+ #~ o[:log].debug("enter to_doc(#{target}) for #{self.inspect}, options: #{options.keys.inspect}") if o[:log].debug?
174
+ o[:log].error("Rail-diagramm not supported for #{target}") if o[:log].error?
175
+ ''
176
+ end #case target
177
+ end #to_doc
178
+ end
179
+
180
+ end #module Rail
181
+ end #module Creole
182
+ end #module Docgenerator