docgenerator 0.1.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. data/examples/docgenerator_example.rb +76 -160
  2. data/examples/docgenerator_example_footnote.rb +98 -0
  3. data/examples/docgenerator_example_list.rb +62 -0
  4. data/examples/docgenerator_example_restrictions.rb +59 -0
  5. data/examples/docgenerator_example_tabular.rb +68 -0
  6. data/examples/docgenerator_example_tripfalls.rb +57 -0
  7. data/examples/wiki2docgenerator_example.rb +270 -0
  8. data/lib/docgenerator.rb +159 -0
  9. data/{docgenerator_attribute.rb → lib/docgenerator_attribute.rb} +32 -7
  10. data/{docgenerator_characters.rb → lib/docgenerator_characters.rb} +15 -0
  11. data/{docgenerator_css.rb → lib/docgenerator_css.rb} +6 -1
  12. data/{docgenerator_document.rb → lib/docgenerator_document.rb} +92 -93
  13. data/{docgenerator_element.rb → lib/docgenerator_element.rb} +125 -51
  14. data/{docgenerator_elements.rb → lib/docgenerator_elements.rb} +40 -56
  15. data/{docgenerator_environments.rb → lib/docgenerator_environments.rb} +16 -10
  16. data/{docgenerator_footnote.rb → lib/docgenerator_footnote.rb} +44 -22
  17. data/{docgenerator_lists.rb → lib/docgenerator_lists.rb} +44 -39
  18. data/{docgenerator_sections.rb → lib/docgenerator_sections.rb} +2 -2
  19. data/{docgenerator_tabular.rb → lib/docgenerator_tabular.rb} +71 -39
  20. data/{packages → lib/packages}/docgenerator_attachfile.rb +0 -0
  21. data/{packages → lib/packages}/docgenerator_caption.rb +0 -0
  22. data/{packages → lib/packages}/docgenerator_hyperref.rb +0 -0
  23. data/{packages → lib/packages}/docgenerator_listings.rb +1 -2
  24. data/{packages → lib/packages}/docgenerator_pdfpages.rb +0 -0
  25. data/{packages → lib/packages}/docgenerator_scrlettr2.rb +2 -2
  26. data/{packages → lib/packages}/docgenerator_scrpage2.rb +0 -0
  27. data/{packages → lib/packages}/docgenerator_url.rb +0 -0
  28. data/lib/templates/docgenerator_template.rb +176 -0
  29. data/lib/templates/docgenerator_template.yaml +105 -0
  30. data/lib/wiki2doc/wiki2docgenerator.rb +1161 -0
  31. data/self_docgenerator.rb +161 -0
  32. data/unittest/expected/test_beamer_note.html +1 -0
  33. data/unittest/expected/test_beamer_note.latex +1 -0
  34. data/unittest/expected/test_beamer_note.text +1 -0
  35. data/unittest/expected/test_beamer_note.wiki +1 -0
  36. data/unittest/expected/test_block.html +1 -0
  37. data/unittest/expected/test_block.latex +1 -0
  38. data/unittest/expected/test_block.text +1 -0
  39. data/unittest/expected/test_block.wiki +2 -0
  40. data/unittest/expected/test_css.css +1 -0
  41. data/unittest/expected/test_css2.css +1 -0
  42. data/unittest/expected/test_description.html +1 -0
  43. data/unittest/expected/test_description.latex +3 -0
  44. data/unittest/expected/test_description.text +3 -0
  45. data/unittest/expected/test_description.wiki +3 -0
  46. data/unittest/expected/test_document_article.latex +23 -0
  47. data/unittest/expected/test_document_html.html +14 -0
  48. data/unittest/expected/test_document_replacement_article.latex +23 -0
  49. data/unittest/expected/test_document_replacement_html.html +14 -0
  50. data/unittest/expected/test_document_replacement_text.text +5 -0
  51. data/unittest/expected/test_document_replacement_wiki.wiki +5 -0
  52. data/unittest/expected/test_document_text.text +5 -0
  53. data/unittest/expected/test_document_wiki.wiki +5 -0
  54. data/unittest/expected/test_enumerate.html +1 -0
  55. data/unittest/expected/test_enumerate.latex +3 -0
  56. data/unittest/expected/test_enumerate.text +1 -0
  57. data/unittest/expected/test_enumerate.wiki +2 -0
  58. data/unittest/expected/test_footnote.html +5 -0
  59. data/unittest/expected/test_footnote.latex +11 -0
  60. data/unittest/expected/test_footnote.text +13 -0
  61. data/unittest/expected/test_footnote.wiki +11 -0
  62. data/unittest/expected/test_footnote_group.html +8 -0
  63. data/unittest/expected/test_footnote_group.latex +17 -0
  64. data/unittest/expected/test_footnote_group.wiki +17 -0
  65. data/unittest/expected/test_href.html +2 -0
  66. data/unittest/expected/test_href.latex +8 -0
  67. data/unittest/expected/test_href.text +4 -0
  68. data/unittest/expected/test_html_css.html +1 -0
  69. data/unittest/expected/test_itemize.html +1 -0
  70. data/unittest/expected/test_itemize.latex +3 -0
  71. data/unittest/expected/test_itemize.text +1 -0
  72. data/unittest/expected/test_itemize.wiki +2 -0
  73. data/unittest/expected/test_section.html +8 -0
  74. data/unittest/expected/test_section.latex +20 -0
  75. data/unittest/expected/test_section.text +24 -0
  76. data/unittest/expected/test_section.wiki +20 -0
  77. data/unittest/expected/test_tabular.html +10 -0
  78. data/unittest/expected/test_tabular.latex +10 -0
  79. data/unittest/expected/test_tabular.wiki +31 -0
  80. data/unittest/expected/test_tabular_doc.latex +22 -0
  81. data/unittest/expected/test_wiki.html +6 -0
  82. data/unittest/expected/test_wiki.latex +12 -0
  83. data/unittest/expected/test_wiki.text +14 -0
  84. data/unittest/expected/test_wiki.wiki +12 -0
  85. data/unittest/expected/test_wiki_amazon.html +10 -0
  86. data/unittest/expected/test_wiki_description.html +7 -0
  87. data/unittest/expected/test_wiki_description.latex +11 -0
  88. data/unittest/expected/test_wiki_description.text +6 -0
  89. data/unittest/expected/test_wiki_description.wiki +6 -0
  90. data/unittest/expected/test_wiki_footnote.html +8 -0
  91. data/unittest/expected/test_wiki_footnote.latex +15 -0
  92. data/unittest/expected/test_wiki_footnote.text +12 -0
  93. data/unittest/expected/test_wiki_footnote.wiki +12 -0
  94. data/unittest/expected/test_wiki_footnote_groupid.html +21 -0
  95. data/unittest/expected/test_wiki_html_code.html +7 -0
  96. data/unittest/expected/test_wiki_html_code.latex +10 -0
  97. data/unittest/expected/test_wiki_html_code.text +6 -0
  98. data/unittest/expected/test_wiki_html_code.wiki +6 -0
  99. data/unittest/expected/test_wiki_inline.html +6 -0
  100. data/unittest/expected/test_wiki_inline.latex +12 -0
  101. data/unittest/expected/test_wiki_inline.text +8 -0
  102. data/unittest/expected/test_wiki_inline.wiki +8 -0
  103. data/unittest/expected/test_wiki_label.html +6 -0
  104. data/unittest/expected/test_wiki_link.html +8 -0
  105. data/unittest/expected/test_wiki_link.latex +14 -0
  106. data/unittest/expected/test_wiki_link.log +3 -0
  107. data/unittest/expected/test_wiki_link.wiki +6 -0
  108. data/unittest/expected/test_wiki_list_ol.html +24 -0
  109. data/unittest/expected/test_wiki_list_ol.latex +30 -0
  110. data/unittest/expected/test_wiki_list_ol.text +10 -0
  111. data/unittest/expected/test_wiki_list_ol.wiki +12 -0
  112. data/unittest/expected/test_wiki_list_ol_after_ul.html +16 -0
  113. data/unittest/expected/test_wiki_list_ol_after_ul.latex +24 -0
  114. data/unittest/expected/test_wiki_list_ol_after_ul.text +8 -0
  115. data/unittest/expected/test_wiki_list_ol_after_ul.wiki +10 -0
  116. data/unittest/expected/test_wiki_list_ol_ul.html +24 -0
  117. data/unittest/expected/test_wiki_list_ol_ul.latex +30 -0
  118. data/unittest/expected/test_wiki_list_ol_ul.text +10 -0
  119. data/unittest/expected/test_wiki_list_ol_ul.wiki +12 -0
  120. data/unittest/expected/test_wiki_list_ul.html +24 -0
  121. data/unittest/expected/test_wiki_list_ul.latex +30 -0
  122. data/unittest/expected/test_wiki_list_ul.text +10 -0
  123. data/unittest/expected/test_wiki_list_ul.wiki +12 -0
  124. data/unittest/expected/test_wiki_list_ul_too_much.html +39 -0
  125. data/unittest/expected/test_wiki_list_ul_too_much.latex +51 -0
  126. data/unittest/expected/test_wiki_list_ul_too_much.text +11 -0
  127. data/unittest/expected/test_wiki_list_ul_too_much.wiki +15 -0
  128. data/unittest/expected/test_wiki_picture.html +55 -0
  129. data/unittest/expected/test_wiki_picture.latex +76 -0
  130. data/unittest/expected/test_wiki_picture_thumb.html +5 -0
  131. data/unittest/expected/test_wiki_tab1.html +30 -0
  132. data/unittest/expected/test_wiki_tab1.latex +30 -0
  133. data/unittest/expected/test_wiki_tab1.wiki +29 -0
  134. data/unittest/expected/test_wiki_textformatting.html +7 -0
  135. data/unittest/expected/test_wiki_textformatting.latex +16 -0
  136. data/unittest/expected/test_wiki_textformatting.text +11 -0
  137. data/unittest/expected/test_wiki_textformatting.wiki +9 -0
  138. data/unittest/expected/test_wiki_toc.html +9 -0
  139. data/unittest/expected/test_wiki_toc.latex +18 -0
  140. data/unittest/expected/test_wiki_toc.text +21 -0
  141. data/unittest/expected/test_wiki_toc.wiki +18 -0
  142. data/unittest/expected/test_wiki_ul_multiple_line.html +18 -0
  143. data/unittest/expected/test_wiki_ul_multiple_line.latex +19 -0
  144. data/unittest/expected/test_wiki_ul_multiple_line.text +6 -0
  145. data/unittest/expected/test_wiki_ul_multiple_line.wiki +7 -0
  146. data/unittest/test_docgenerator.rb +85 -0
  147. data/unittest/unittest_docgenerator.rb +454 -0
  148. data/unittest/unittest_wiki2doc.rb +451 -0
  149. metadata +155 -31
  150. data/docgenerator.rb +0 -137
  151. data/docgenerator_template.rb +0 -103
  152. data/packages/docgenerator_beamer.rb +0 -250
@@ -0,0 +1,68 @@
1
+ #
2
+ #Create a test-document with docgenerator.rb.
3
+ #
4
+
5
+ #~ require 'rubygems'
6
+ $: << ".." #for local tests with uninstalled gem
7
+ require 'docgenerator'
8
+
9
+ #
10
+ # Create a document
11
+ #
12
+ doc = Document.new(
13
+ :title => 'Testdocument with tabulars'
14
+ )
15
+
16
+ #~ doc.head << element( :usepackage, { }, 'longtable' )
17
+ #~ doc.head << element( :usepackage, { :option => [] }, 'longtable' )
18
+
19
+ #
20
+ # Set some settings
21
+ #
22
+ #~ doc.title ='Titel'
23
+ #~ doc.author = 'Authorname'
24
+ #~ doc.date = 'Datum'
25
+ #~ doc.keywords = 'Test, DocGenerator.rb'
26
+ #~ doc.description = 'Testdokument f�r DocGenerator.rb'
27
+
28
+ #
29
+ doc.body << element(:maketitle) #Only LaTeX
30
+ doc.body[:lang] << 'de' #language flag for HTML
31
+
32
+ doc.body << element(:h1, {}, 'Tabellen').cr
33
+
34
+ def mk_tabular( columns, lines )
35
+
36
+ tab = element(:tabular, {
37
+ :columns => columns.size, #for HTML
38
+ :columndescription => 'c' * columns.size #for LaTeX
39
+ } ).CR
40
+
41
+ tab << row = element( :row, {:add_vspace=>'1ex'} ).cr
42
+ row << element(:multicolumn, {
43
+ :columns => columns.size,
44
+ :pos => 'c', #LaTeX
45
+ }, 'Titel' )
46
+ row.hline #Only LaTeX
47
+
48
+ lines.each{|line|
49
+ tab << row = element( :row ).cr
50
+ columns.each{|column|
51
+ row << element(:column, {}, "#{line}#{column}" )
52
+ }
53
+ }
54
+ return tab
55
+ end
56
+
57
+ doc.body << mk_tabular( Array('A'..'D'), Array(1..5) )
58
+ doc.body << mk_tabular( Array('A'..'F'), Array(1..5) )
59
+
60
+
61
+ # ###############################
62
+ # �Save the files
63
+ # ###############
64
+
65
+ #~ Element.log = true #Write Errors to stdout
66
+ doc.save( __FILE__.sub(/\.rb/, ".html"), true )
67
+ doc.runtex = true
68
+ doc.save( __FILE__.sub(/\.rb/, ".tex"), true )
@@ -0,0 +1,57 @@
1
+ #
2
+ #Create a test-document with docgenerator.rb.
3
+ #
4
+
5
+ #~ require 'rubygems'
6
+ $: << ".." #for local tests with uninstalled gem
7
+ require 'docgenerator'
8
+
9
+ #
10
+ # Create a document
11
+ #
12
+ doc = Document.new(
13
+ :title => 'Testdocument with tripfalls'
14
+ )
15
+
16
+ #~ doc.head << element( :usepackage, { }, 'longtable' )
17
+ #~ doc.head << element( :usepackage, { :option => [] }, 'longtable' )
18
+
19
+ #
20
+ # Set some settings
21
+ #
22
+ #~ doc.title ='Titel'
23
+ #~ doc.author = 'Authorname'
24
+ #~ doc.date = 'Datum'
25
+ #~ doc.keywords = 'Test, DocGenerator.rb'
26
+ #~ doc.description = 'Testdokument f�r DocGenerator.rb'
27
+
28
+ #
29
+ doc.body << element(:maketitle) #Only LaTeX
30
+ doc.body[:lang] << 'de' #language flag for HTML
31
+
32
+ doc.body << element(:h1, {}, 'Generell Tripfalls').cr
33
+ puts '!And now an error: Content added to makro without content'
34
+ doc.body << element( :br, {}, 'Text in br' ).cr
35
+
36
+
37
+ doc.body << element(:h1, {}, 'Tripfalls with HTML').cr
38
+ doc.body << element(:h2, {}, 'Paragraph forgotten?').cr
39
+ doc.body << <<txt
40
+ When you use CSS, you define a layout for
41
+ txt
42
+
43
+ doc.body << element(:h1, {}, 'Tripfalls with LaTeX').cr
44
+ doc.body << element(:h2, {}, 'Tabulars').cr
45
+
46
+
47
+
48
+
49
+
50
+ # ###############################
51
+ # �Save the files
52
+ # ###############
53
+
54
+ #~ Element.log = true #Write Errors to stdout
55
+ doc.save( __FILE__.sub(/\.rb/, ".html"), true )
56
+ doc.runtex = true
57
+ doc.save( __FILE__.sub(/\.rb/, ".tex"), true )
@@ -0,0 +1,270 @@
1
+ require 'C:/usr/Script/MyScripts' if File.exist?('C:/usr/Script/MyScripts.rb')
2
+ #~ require 'docgenerator'
3
+ require 'wiki2docgenerator' if ! defined? Wikitext
4
+ #~ require '20070622_wiki2docgenerator' if ! defined? Wikitext
5
+
6
+ #~ Element.log(true)
7
+ #~ Element.trace==true
8
+
9
+ wiki = Wikitext.new( :parsetext => true )
10
+ wiki << DATA#.readlines.to_s
11
+ #~ wiki << %q|
12
+ #~ |
13
+
14
+ doc = Document.new()
15
+ doc.title = 'wiki2docgenerator_example.rb: Test for wiki2docgenerator'
16
+ #For TeX you can use element(:tableofcontent),
17
+ #in HTML you can use element( :toc, :h3) in combination with sitegenerator
18
+ doc.body << wiki.toc( #include the toc
19
+ :listtype => :ul,
20
+ :level => 2,
21
+ :startlevel => 1,
22
+ :addlinks => false
23
+ )
24
+ doc.body << wiki
25
+ doc.body << wiki.footnotes #include the footnotes
26
+ doc.save('test_wiki2docgenerator.html', true)
27
+ doc.save('test_wiki2docgenerator.wiki', true)
28
+ doc.save('test_wiki2docgenerator.txt', true)
29
+ doc.save('test_wiki2docgenerator.tex', true)
30
+
31
+ __END__
32
+ ==Wiki2docgenerator.rb==
33
+ The class Wiki2docgenerator allows to analyse a text in Wiki-format and
34
+ transform it to a "docgenerator"-object.
35
+
36
+ This object can be saved as HTML or TeX (or Wiki again - in preparation).
37
+
38
+ The wiki-syntax is defined at:
39
+ *http://de.wikipedia.org/wiki/WikiSyntax
40
+ *http://de.wikipedia.org/wiki/Hilfe:Textgestaltung
41
+
42
+ Not the complete Syntax is used or supported.
43
+ Please check the following example coding for the features.
44
+
45
+ Example-Programm:
46
+ doc == Document.new()
47
+ doc.title == 'Test'
48
+ doc.body << wiki.toc #include the table of content
49
+ doc.body << wiki.to_element
50
+ doc.body << wiki.footnotes #include the footnotes
51
+ doc.save('test.html', true)
52
+ doc.save('test.wiki', true)
53
+ doc.save('test.txt', true)
54
+ doc.save('test.tex', true)
55
+
56
+ ==Titel 1==
57
+ ===Titel 2===
58
+ #~ =====Titel 4 ohne 3=====
59
+ ====Titel 3====
60
+ =====Titel 4=====
61
+ =====[label]Titel 4 mit label=====
62
+
63
+ text text.
64
+ Mehr text im gleichen Absatz.
65
+
66
+ text in neuem Absatz
67
+
68
+
69
+ ==Listen==
70
+ ===Normale Punkt-Liste===
71
+ * liste *
72
+ * liste *
73
+ ** liste **
74
+ ** liste **
75
+ *** liste ***
76
+ **** liste ****
77
+ *** liste ***
78
+ * liste *
79
+
80
+ ===Nummerierte Liste===
81
+ # liste 1
82
+ # liste 2
83
+ ## liste 2-1
84
+ # liste 3
85
+
86
+ ===Gemischte Liste===
87
+ # Liste num
88
+ #* liste num-*
89
+ ## liste num-num
90
+
91
+ ===Punkte- und Nummerierte Liste nacheinander===
92
+ *list *
93
+ #list 1
94
+
95
+ ===Wilde Mischung Punkte- und Nummerierte Liste nacheinander===
96
+ *list (*)
97
+ **list (**)
98
+ #*list (#*) Hier Wechsel auf erster Ebene
99
+
100
+ ===Definitionsliste ===
101
+ ;Definitionsliste
102
+ :Liste von Definitionen
103
+ :Liste von Definitionen
104
+ ;Begriff
105
+ :Definition des Begriffs
106
+
107
+ ===Mehrzeilige Listen===
108
+ * vorher
109
+ * text
110
+ mehr text zum item
111
+ * nachher und vorher
112
+ * text
113
+ mehr text zum item
114
+
115
+ neuer Absatz im Item funktioniert auch.
116
+ * nachher
117
+
118
+ ===Einr�ckungen===
119
+ Nicht realisiert, macht implizit Definitionsliste (fixme)
120
+ : Text macht implizit Definitionsliste (fixme)
121
+ :: Noch tiefer
122
+
123
+ ===Fu�noten===
124
+ Einf�gen mit {{footnote|Fu�notentext}}
125
+ {{footnote|Fu�notentext}}
126
+
127
+ Ausgegeben werden die Fu�noten mit
128
+ {{footnotes}}
129
+ {{footnotes|groupid}}
130
+
131
+ Die groupid-Variante erm�glicht verschiedene Fu�notenk�rper.
132
+ (Nur bei HTML-Ausgabe, die Fu�notendefinition erlaubt noch keine Gruppen)
133
+
134
+ Und jetzt die Fu�noten:
135
+ {{footnotes}}
136
+ #~ Im verarbeitenden Ruby-Programm k�nnen die Fu�noten extra eingef�gt werden.
137
+ #~ doc.body << wiki.footnotes #include the footnotes
138
+
139
+
140
+ ===Allgemeine Formatierungen===
141
+ Eine
142
+ ----
143
+ Linie
144
+
145
+ ==Inline-Formatierungen==
146
+ ===Textformatierungen===
147
+ Inline-Tags ''kursiv'', '''fett''', ''''kursiv und fett''''
148
+
149
+ ''kursiv'',
150
+ '''fett''',
151
+ ''''kursiv und fett''''
152
+
153
+ === Verbatim ===
154
+ Text vor Verbatim
155
+ pretext
156
+ pretext sss
157
+ Jetzt kein Verbatim mehr
158
+
159
+ ==Bilder==
160
+ Details siehe http://de.wikipedia.org/wiki/Hilfe:Bilder
161
+
162
+ Bilder lassen sich mit [ [Bild:Dateiname|Beschreibung]] in Artikel einf�gen.
163
+ Das Bild wird dann in Originalgr��e links im Artikel angezeigt.
164
+
165
+ Parameter sind optional mit [ [Bild:Dateiname|parameter|Beschreibung]] anzugeben.
166
+ Es sind beliebig viele, mit | getrennte Parameter m�glich.
167
+
168
+ Unterst�tzt sind:
169
+ *left, right: Ausgabe als Float
170
+ *123px: width wird gesetzt
171
+ *thumb: noch keine Auswertung
172
+ #~ Mit der Option �framed�, z. B. [[Bild:Dateiname|framed|Beschreibung]] wird das Bild mit einem Rahmen umgeben.
173
+ *par==val: Der CSS-Parameter ''par'' wird mit dem Wert ''val'' versorgt. (Kein Wiki-Standard, sondern eine Spezialit�t von wiki2docgenerator)
174
+
175
+ Besonderheiten:
176
+ *Die Beschreibung wird in einen ''alt''-Tag verwendet.
177
+
178
+ ==Tabellen==
179
+ Die Syntax:
180
+ *{| beginnt eine Tabelle. Hier k�nnen zus�tzliche Formatierungseigenschaften kommen.
181
+ **Zumindest columns==__ sollte gesetzt sein
182
+ *! beginnt eine neue Zelle einer Titelzeile
183
+ *| beginnt eine neue Zelle
184
+ *|| trennt zwei Zellen (nicht unterst�tzt)
185
+ *|format| z.B. rowspan...
186
+ *|format|| Zwei || beenden die Parameter der Zelle.
187
+ Dann sinnvoll, wenn im Text selbst ein | vorkommt
188
+ (z.B. ein Macro verwendet wird)
189
+
190
+ *|- trennt zwei Zeilen der Tabelle
191
+ **hline: Zus�tzlicher Trennstrich �ber der Zeile
192
+ **toprule, midrule, bottomrule: Zus�tzlicher Trennstrich �ber der Zeile (erfordert booktabs.sty)
193
+ *|} beendet eine Tabelle
194
+
195
+ Beispiel 1:
196
+ {|columns=2
197
+ |Zelle 1
198
+ |Zelle 2
199
+ |-
200
+ |Zelle 3
201
+ |Zelle 4
202
+ |-
203
+ |Zelle 5
204
+ |Zelle 6
205
+ |}
206
+
207
+ Beispiel 2:
208
+ {| border=1|columns=6
209
+ |Zelle 1
210
+ |colspan=5|text-align=center| Zelle 2 �ber zwei Spalten
211
+ |-
212
+ |Zelle 3
213
+ |Zelle 4
214
+ |Zelle 5
215
+ |Zelle 6
216
+ |Zelle 7
217
+ |Zelle 8
218
+ |}
219
+
220
+
221
+ #~ Beispiel 3 mit Titelzeile:
222
+ #~ {| border=1
223
+ #~ !A
224
+ #~ !B
225
+ #~ !C
226
+ #~ |-
227
+ #~ |Zelle 1
228
+ #~ | colspan="2" align="center" | Zelle 2
229
+ #~ |-
230
+ #~ |Zelle 3
231
+ #~ |Zelle 4
232
+ #~ |Zelle 5
233
+ #~ |}
234
+
235
+ ----
236
+
237
+ ==Makros==
238
+ Makros sind eingeleitet mit {{.
239
+ nach dem Makronamen sind Parameter mit | getrennt.
240
+
241
+ ===Link ins ODP===
242
+ *{{dmoz|World/Deutsch}}
243
+ *{{dmoz|World/Deutsch|Deutschsprachige Inhalte}}
244
+
245
+ ===Neue Zeile===
246
+ {{newline|clear}}
247
+ vorher
248
+ {{newline|clear}}
249
+ nachher
250
+
251
+ Das Makro newline erfordert den Parameter ''clear''.
252
+ Kann insbesonders genutzt werden um nach floatenden Bildern
253
+ die Folgezeile unter den float zu setzen.
254
+
255
+ ==Auspr�nge==
256
+ Mit
257
+ >>>key{}
258
+ ...
259
+ <<<
260
+ wird eine externe Aufbereitung gerufen.
261
+ key wird von WikiCollector genutzt um den Aufbereiter (Klasse) zu rufen.
262
+ Der Aufbereiter muss die Methoden << und to_element unterst�tzen.
263
+
264
+ html ist bereits definiert und erlaubt die Verwednung von Original-Htlm
265
+
266
+ Beispiel:
267
+ >>>html{}
268
+ <strong>Fett</strong>
269
+ <<<
270
+ Ende Beispiel
@@ -0,0 +1,159 @@
1
+ #Generic methods to create documents.
2
+ #The target format is generic, supported are LaTeX and HTML.
3
+ #Plain text and a Wiki-version exist also, but they are not well maintained.
4
+ #
5
+ #==Elements
6
+ #A document is structured by elements.
7
+ #Each element contains attributes/parameters and content.
8
+ #(Think of HTML-attributes and TeX-Parameters and the content of HTML-Tags and TeX-Environments.).
9
+ #
10
+ #Each element corresponds to a HTML-Tag or a LaTeX-Makro/Environment.
11
+ #There is a "translation" between HTML and LaTeX elements.
12
+ #
13
+ #Elements are defined by Element.get (or the method element() ),
14
+ #new element types can be defined with Element.create() ).
15
+ #
16
+ #Some elements (in fact, most of them) are generated dynamic,
17
+ #so they will not occur in this generated documentation).
18
+ #
19
+ #== Examples
20
+ #See the unit tests and the examples-folder of the docgenerator distribution.
21
+ #
22
+
23
+ #Version information.
24
+ begin
25
+ if Gem.loaded_specs['docgenerator']
26
+ DOCGENERATOR_VERSION = Gem.loaded_specs['docgenerator'].version
27
+ else
28
+ DOCGENERATOR_VERSION = "#{File.expand_path('docgenerator')} (no Gem)"
29
+ end
30
+ rescue NameError #No gems?
31
+ DOCGENERATOR_VERSION = "#{File.expand_path('docgenerator')} (no Gem)"
32
+ end
33
+ require 'log4r'
34
+
35
+ #How to handle the End-Tag for br/hr...
36
+ #- false: set <br /> (XHTML)
37
+ #- nil: set <br> (HTML)
38
+ #Problem:
39
+ #HTML may have no endtags, XHTML requires it.
40
+ #~ Die Konstante ENDTAG macht es einstellbar.
41
+ #~ Zu machen: Flag im Dokument ob HTML oder XHTML.
42
+ #~ Aber woher weiss element in welches Dokument es geh�rt?
43
+ #~ Gleiche Problem bei to_s, bzw. Document.target
44
+ ENDTAG = false if ! defined?( ENDTAG )
45
+
46
+
47
+
48
+ #The docgenetor own log-formatter.
49
+ #
50
+ #Reason:
51
+ #docgenerator throws logging information.
52
+ #The trace would inform, where the problems come from (a docgenerator-tool)
53
+ #but normally the problems are document problems,
54
+ #so we need the first step outside the docgenerator-path
55
+ class LogFormatter < Log4r::BasicFormatter
56
+ #Use another format for the logger.
57
+ #
58
+ #Based on BasicFormatter.
59
+ #When used with trace on, return the location from docgenerator and the first non-docgenerator position.
60
+ def format(event)
61
+ buff = sprintf(@@basicformat, Log4r::MaxLevelLength, Log4r::LNAMES[event.level],
62
+ event.name)
63
+ mytrace = []
64
+ #~ buff += (event.tracer.nil? ? "" : "(#{event.tracer[0]})") + ": "
65
+ if event.tracer.nil?
66
+ else
67
+ event.tracer.each{|trace|
68
+ if trace !~ /lib\/docgenerator/
69
+ mytrace << trace
70
+ break
71
+ end
72
+ }
73
+ mytrace << event.tracer[0]
74
+ end
75
+ buff += ": "
76
+ buff += format_object(event.data)
77
+ #~ buff += (event.tracer.nil? ? "" : " (#{event.tracer.join('/')})")
78
+ buff += (event.tracer.nil? ? "" : " (#{mytrace.join('|')})")
79
+ buff += "\n"
80
+ buff
81
+ end
82
+ end
83
+
84
+
85
+ #Default Logger
86
+ DOCGENERATOR_LOGGER = Log4r::Logger.new( 'docgenerator')
87
+ DOCGENERATOR_LOGGER.level = Log4r::FATAL
88
+ DOCGENERATOR_LOGGER.outputters = Log4r::StdoutOutputter.new('log_stdout',
89
+ :formatter => LogFormatter
90
+ )
91
+
92
+
93
+ #
94
+ #A 'global' parameter setting
95
+ #
96
+ #For usage of
97
+ # o = Docgenerator_logger.set_option_defaults(options)
98
+ # o[:log].debug("Enter ...") if o[:log].debug?
99
+ module Docgenerator_logger
100
+ #Each to_doc, to_html, to_latex, to_wiki, to_text has an option-parameter.
101
+ #This option-hash should contain at least a :log-value.
102
+ #This method completes the option hash with a default logger if no logger is given.
103
+ def self.set_option_defaults(options)
104
+ return {
105
+ :log => DOCGENERATOR_LOGGER
106
+ #Added from Document:
107
+ # :document useable for documentation
108
+ # :filename useable for documentation
109
+ # :template only Document-internal
110
+ # :replacements only Document-internal
111
+ #to think about:
112
+ #- parent - actually used in list to detect */# for wiki-items.
113
+ }.update(options)
114
+ end
115
+ end
116
+ require 'docgenerator_element'
117
+
118
+ #Returns an element of a type "name".
119
+ #Attributes and content are optional parameter.
120
+ #
121
+ def element( name, attr = {}, content = nil )
122
+ element = Element.get( name )
123
+ if element
124
+ element = element.new(attr, content ) if element
125
+ else
126
+ element = Element.create( name, {}, true ).new(attr, content )
127
+ puts "Usage of undefined element #{name}"
128
+ end
129
+ return element
130
+ end
131
+
132
+ require 'templates/docgenerator_template'
133
+ require 'docgenerator_css'
134
+ require 'docgenerator_attribute'
135
+ require 'docgenerator_document'
136
+
137
+ require 'docgenerator_elements'
138
+ require 'docgenerator_environments'
139
+ require 'docgenerator_lists' #define environment
140
+ require 'docgenerator_sections'
141
+ require 'docgenerator_tabular'
142
+ require 'docgenerator_footnote'
143
+ require 'docgenerator_characters' #special characters (spaces, euro-sign...)
144
+
145
+ __END__
146
+ class Test
147
+ def required?(); true; end
148
+ end
149
+ test = Test.new()
150
+ puts test.required?
151
+ Test.class_eval('def required?(); false; end')
152
+ puts test.required?
153
+
154
+ testclass2 = Class.new( Test )
155
+ test2 = testclass2.new()
156
+ puts test2.required?
157
+ testclass2.class_eval('def required?(); true; end')
158
+ puts test2.required?
159
+ puts test.required?