docgenerator 1.0.4 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/creole/creole2doc.rb +777 -0
- data/lib/creole/creole_inclusion_and_plugins.rb +236 -0
- data/lib/creole/creole_placeholder.rb +74 -0
- data/lib/creole/creole_tabular.rb +170 -0
- data/lib/docgenerator.rb +15 -6
- data/lib/docgenerator_attribute.rb +2 -2
- data/lib/docgenerator_characters.rb +20 -4
- data/lib/docgenerator_document.rb +132 -42
- data/lib/docgenerator_element.rb +531 -524
- data/lib/docgenerator_elements.rb +408 -399
- data/lib/docgenerator_environments.rb +28 -2
- data/lib/docgenerator_footnote.rb +72 -79
- data/lib/docgenerator_sections.rb +1 -1
- data/lib/docgenerator_tabular.rb +8 -3
- data/lib/packages/docgenerator_beamer.rb +253 -0
- data/lib/packages/docgenerator_scrlettr2.rb +53 -9
- data/lib/templates/docgenerator_template_css.rb +4 -0
- data/lib/wiki2doc/wiki2docgenerator.rb +1087 -970
- data/lib/yaml2presentation/yaml2presentation.rb +1091 -0
- data/self_docgenerator.rb +8 -6
- data/unittest/Red_Flower.jpg +0 -0
- data/unittest/creole1.0test.txt +128 -0
- data/unittest/expected/beamer_01_doc.html +1 -1
- data/unittest/expected/beamer_02_doc.html +1 -1
- data/unittest/expected/beamer_doc_html_overview_with_detailpic_and_text_doc.html +34 -0
- data/unittest/expected/beamer_doc_html_overview_with_detailpic_doc.html +34 -0
- data/unittest/expected/beamer_doc_key_doc.html +1 -1
- data/unittest/expected/beamer_doc_note_doc.html +1 -1
- data/unittest/expected/beamer_doc_pic_bottom_doc.html +1 -1
- data/unittest/expected/beamer_doc_pic_doc.html +1 -1
- data/unittest/expected/beamer_doc_pic_left_doc.html +1 -1
- data/unittest/expected/beamer_doc_pic_right_doc.html +1 -1
- data/unittest/expected/beamer_doc_pic_top_doc.html +1 -1
- data/unittest/expected/test_footnote.html +2 -2
- data/unittest/expected/test_footnote.latex +1 -1
- data/unittest/expected/test_footnote_group.html +3 -3
- data/unittest/expected/test_footnote_group.latex +2 -2
- data/unittest/expected_creole/test_creole.html +3 -0
- data/unittest/expected_creole/test_creole_characters_all.html +10 -0
- data/unittest/expected_creole/test_creole_characters_all.latex +20 -0
- data/unittest/expected_creole/test_creole_characters_special.html +10 -0
- data/unittest/expected_creole/test_creole_characters_special.latex +18 -0
- data/unittest/expected_creole/test_creole_countdown.html +3 -0
- data/unittest/expected_creole/test_creole_countdown.latex +4 -0
- data/unittest/expected_creole/test_creole_creole1.0test.html +182 -0
- data/unittest/expected_creole/test_creole_creole1.0test.latex +253 -0
- data/unittest/expected_creole/test_creole_creole1.0test.text +160 -0
- data/unittest/expected_creole/test_creole_footnotes.html +9 -0
- data/unittest/expected_creole/test_creole_footnotes.latex +14 -0
- data/unittest/expected_creole/test_creole_footnotes_label.html +9 -0
- data/unittest/expected_creole/test_creole_headings.html +17 -0
- data/unittest/expected_creole/test_creole_headings.latex +19 -0
- data/unittest/expected_creole/test_creole_headings.text +48 -0
- data/unittest/expected_creole/test_creole_headings.wiki +37 -0
- data/unittest/expected_creole/test_creole_hr.html +7 -0
- data/unittest/expected_creole/test_creole_hr.latex +9 -0
- data/unittest/expected_creole/test_creole_hr.text +4 -0
- data/unittest/expected_creole/test_creole_inline.html +3 -0
- data/unittest/expected_creole/test_creole_inline.latex +4 -0
- data/unittest/expected_creole/test_creole_inline.text +2 -0
- data/unittest/expected_creole/test_creole_inline_ruby.html +12 -0
- data/unittest/expected_creole/test_creole_inline_ruby.latex +20 -0
- data/unittest/expected_creole/test_creole_inline_ruby_raw.html +6 -0
- data/unittest/expected_creole/test_creole_inline_ruby_raw.latex +8 -0
- data/unittest/expected_creole/test_creole_input.normsource +23 -0
- data/unittest/expected_creole/test_creole_label.html +12 -0
- data/unittest/expected_creole/test_creole_label.latex +15 -0
- data/unittest/expected_creole/test_creole_line_break.html +6 -0
- data/unittest/expected_creole/test_creole_line_break.latex +8 -0
- data/unittest/expected_creole/test_creole_links_explicit_internal.html +6 -0
- data/unittest/expected_creole/test_creole_links_explicit_internal.text +4 -0
- data/unittest/expected_creole/test_creole_links_explicit_with_em.html +3 -0
- data/unittest/expected_creole/test_creole_links_explicit_with_em.latex +4 -0
- data/unittest/expected_creole/test_creole_links_explicit_with_em.text +2 -0
- data/unittest/expected_creole/test_creole_links_external.html +6 -0
- data/unittest/expected_creole/test_creole_links_external.latex +8 -0
- data/unittest/expected_creole/test_creole_links_external.text +4 -0
- data/unittest/expected_creole/test_creole_links_external_implicit.html +9 -0
- data/unittest/expected_creole/test_creole_links_external_implicit.latex +12 -0
- data/unittest/expected_creole/test_creole_links_external_implicit.text +6 -0
- data/unittest/expected_creole/test_creole_links_file.html +6 -0
- data/unittest/expected_creole/test_creole_links_file.latex +8 -0
- data/unittest/expected_creole/test_creole_links_file.text +4 -0
- data/unittest/expected_creole/test_creole_list_ol.html +12 -0
- data/unittest/expected_creole/test_creole_list_ol.latex +22 -0
- data/unittest/expected_creole/test_creole_list_ol_after_ul.html +12 -0
- data/unittest/expected_creole/test_creole_list_ol_after_ul.latex +20 -0
- data/unittest/expected_creole/test_creole_list_ol_after_ul.text +6 -0
- data/unittest/expected_creole/test_creole_list_ol_ul.html +15 -0
- data/unittest/expected_creole/test_creole_list_ol_ul.latex +26 -0
- data/unittest/expected_creole/test_creole_list_ul.html +22 -0
- data/unittest/expected_creole/test_creole_list_ul.latex +40 -0
- data/unittest/expected_creole/test_creole_list_ul.normsource +83 -0
- data/unittest/expected_creole/test_creole_list_ul_too_much.html +24 -0
- data/unittest/expected_creole/test_creole_list_ul_too_much.latex +44 -0
- data/unittest/expected_creole/test_creole_newline.html +9 -0
- data/unittest/expected_creole/test_creole_newline.latex +11 -0
- data/unittest/expected_creole/test_creole_newline.text +7 -0
- data/unittest/expected_creole/test_creole_paragraphs.html +6 -0
- data/unittest/expected_creole/test_creole_paragraphs.latex +8 -0
- data/unittest/expected_creole/test_creole_paragraphs.normsource +27 -0
- data/unittest/expected_creole/test_creole_paragraphs.text +4 -0
- data/unittest/expected_creole/test_creole_paragraphs.wiki +4 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap.html +5 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap.latex +6 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap.text +4 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap.wiki +4 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap0.html +9 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap0.latex +11 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap0.text +7 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap0.wiki +7 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap60.html +5 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap60.latex +6 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap60.text +4 -0
- data/unittest/expected_creole/test_creole_paragraphs_wrap60.wiki +4 -0
- data/unittest/expected_creole/test_creole_picture_link.html +6 -0
- data/unittest/expected_creole/test_creole_pictures.html +10 -0
- data/unittest/expected_creole/test_creole_pictures.latex +13 -0
- data/unittest/expected_creole/test_creole_pictures_css.html +3 -0
- data/unittest/expected_creole/test_creole_pictures_css.latex +4 -0
- data/unittest/expected_creole/test_creole_pictures_imgclass.html +6 -0
- data/unittest/expected_creole/test_creole_pictures_imgclass.latex +8 -0
- data/unittest/expected_creole/test_creole_placeholders_html.html +7 -0
- data/unittest/expected_creole/test_creole_placeholders_html.latex +8 -0
- data/unittest/expected_creole/test_creole_placeholders_html.text +4 -0
- data/unittest/expected_creole/test_creole_placeholders_latex.html +6 -0
- data/unittest/expected_creole/test_creole_placeholders_latex.latex +9 -0
- data/unittest/expected_creole/test_creole_placeholders_latex.text +4 -0
- data/unittest/expected_creole/test_creole_tabular.html +20 -0
- data/unittest/expected_creole/test_creole_tabular.latex +22 -0
- data/unittest/expected_creole/test_creole_tabular_creole.html +18 -0
- data/unittest/expected_creole/test_creole_tabular_creole.latex +19 -0
- data/unittest/expected_creole/test_creole_tabular_css.html +20 -0
- data/unittest/expected_creole/test_creole_tabular_css.latex +22 -0
- data/unittest/expected_creole/test_creole_toc.html +11 -0
- data/unittest/expected_creole/test_creole_toc.latex +22 -0
- data/unittest/expected_creole/test_creole_toc.text +4 -0
- data/unittest/expected_creole/test_creole_toc_text.html +5 -0
- data/unittest/expected_creole/test_creole_toc_text.latex +5 -0
- data/unittest/expected_creole/test_creole_ul_multiple_line.html +7 -0
- data/unittest/expected_creole/test_creole_ul_multiple_line.latex +14 -0
- data/unittest/expected_creole/test_creole_ul_with_blank.html +11 -0
- data/unittest/expected_creole/test_creole_ul_with_blank.latex +20 -0
- data/unittest/expected_creole/test_creole_ul_with_bold.creole +0 -0
- data/unittest/expected_creole/test_creole_ul_with_bold.html +11 -0
- data/unittest/expected_creole/test_creole_ul_with_bold.latex +18 -0
- data/unittest/expected_creole/test_creole_ul_with_bold.text +7 -0
- data/unittest/expected_creole/test_creole_verbatim.html +25 -0
- data/unittest/expected_creole/test_creole_verbatim.latex +33 -0
- data/unittest/expected_creole/test_creole_verbatim.text +17 -0
- data/unittest/expected_creole/test_creole_verbatim_inline.html +6 -0
- data/unittest/expected_creole/test_creole_verbatim_inline.latex +8 -0
- data/unittest/expected_creole/test_creole_verbatim_inline_at_start.html +6 -0
- data/unittest/expected_creole/test_creole_verbatim_inline_at_start.latex +8 -0
- data/unittest/expected_privat/test_creole_test_document.html +6 -0
- data/unittest/{expected → expected_wiki}/test_wiki.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki.text +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki.wiki +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_amazon.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_description.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_description.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_description.text +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_description.wiki +0 -0
- data/unittest/expected_wiki/test_wiki_footnote.html +8 -0
- data/unittest/expected_wiki/test_wiki_footnote.latex +17 -0
- data/unittest/{expected → expected_wiki}/test_wiki_footnote.text +2 -4
- data/unittest/expected_wiki/test_wiki_footnote.wiki +10 -0
- data/unittest/expected_wiki/test_wiki_footnote_2.html +8 -0
- data/unittest/expected_wiki/test_wiki_footnote_groupid.html +21 -0
- data/unittest/{expected → expected_wiki}/test_wiki_html_code.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_html_code.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_html_code.text +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_html_code.wiki +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_inline.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_inline.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_inline.text +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_inline.wiki +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_label.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_link.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_link.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_link.log +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_link.wiki +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ol.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ol.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ol.text +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ol.wiki +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ol_after_ul.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ol_after_ul.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ol_after_ul.text +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ol_after_ul.wiki +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ol_ul.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ol_ul.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ol_ul.text +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ol_ul.wiki +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ul.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ul.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ul.text +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ul.wiki +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ul_too_much.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ul_too_much.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ul_too_much.text +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_list_ul_too_much.wiki +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_picture.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_picture.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_picture_thumb.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_tab1.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_tab1.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_tab1.wiki +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_textformatting.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_textformatting.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_textformatting.text +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_textformatting.wiki +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_toc.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_toc.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_toc.text +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_toc.wiki +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_ul_multiple_line.html +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_ul_multiple_line.latex +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_ul_multiple_line.text +0 -0
- data/unittest/{expected → expected_wiki}/test_wiki_ul_multiple_line.wiki +0 -0
- data/unittest/test_docgenerator.rb +1 -2
- data/unittest/unittest_creole2doc.rb +1024 -0
- data/unittest/unittest_docgenerator.rb +17 -8
- data/unittest/unittest_wiki2doc.rb +92 -88
- data/unittest/unittest_yaml2pres.rb +336 -0
- metadata +202 -70
- data/unittest/expected/test_wiki_footnote.html +0 -8
- data/unittest/expected/test_wiki_footnote.latex +0 -15
- data/unittest/expected/test_wiki_footnote.wiki +0 -12
- data/unittest/expected/test_wiki_footnote_groupid.html +0 -21
@@ -0,0 +1,236 @@
|
|
1
|
+
#
|
2
|
+
#Creole inclusions and plugins
|
3
|
+
#
|
4
|
+
#
|
5
|
+
#This classes are defined to implement transclusions (http://en.wikipedia.org/wiki/Transclusion)
|
6
|
+
#
|
7
|
+
#- http://www.wikicreole.org/wiki/Inclusion
|
8
|
+
#- http://www.wikicreole.org/wiki/Plugin
|
9
|
+
#
|
10
|
+
#By default, Pictures are expected.
|
11
|
+
#
|
12
|
+
#You can extend Wikis with additional inclusions:
|
13
|
+
#
|
14
|
+
# wiki = Creole.new()
|
15
|
+
# wiki.inclusion['xxx'] = Creole_inclusion_xxx
|
16
|
+
#
|
17
|
+
|
18
|
+
|
19
|
+
#
|
20
|
+
#Dummy class for all inclusions and plugins.
|
21
|
+
#Used to check the correct definition.
|
22
|
+
#
|
23
|
+
#- Inclusions are used later with {{xx}}
|
24
|
+
#- Plugins are used later with <<xx>>
|
25
|
+
#
|
26
|
+
#Derived classes (Inclusions):
|
27
|
+
#- Creole_inclusion_img
|
28
|
+
#- Creole_inclusion_footnote_group
|
29
|
+
#- Creole_inclusion_footnote
|
30
|
+
#Derived classes (Plugins):
|
31
|
+
#- Creole_default_plugin
|
32
|
+
#- Creole_plugin_ruby
|
33
|
+
#- Creole_plugin_ruby_raw
|
34
|
+
#More subclasses may be possible.
|
35
|
+
class Creole_inclusion_and_plugin
|
36
|
+
def initialize( inclusionname, description, options, wiki )
|
37
|
+
@inclusionname = inclusionname
|
38
|
+
@description = description
|
39
|
+
@options = options
|
40
|
+
@wiki = wiki
|
41
|
+
|
42
|
+
raise "Inclusion received no wiki but #{wiki.inspect}" unless wiki.is_a?(Creole)
|
43
|
+
|
44
|
+
end
|
45
|
+
#Reader for the wiki.
|
46
|
+
attr_reader :wiki
|
47
|
+
end #Creole_inclusion
|
48
|
+
|
49
|
+
#
|
50
|
+
#Default Plugin.
|
51
|
+
class Creole_default_plugin < Creole_inclusion_and_plugin
|
52
|
+
Creole::Plugins.default = self
|
53
|
+
def initialize( pluginname, description, options, wiki )
|
54
|
+
super
|
55
|
+
@wiki.log.warn("Use Default plugin - nothing special done.") if @wiki.log.warn?
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
#Include images.
|
61
|
+
#http://www.wikicreole.org/wiki/Images
|
62
|
+
#
|
63
|
+
#There are yet more features than in standard.
|
64
|
+
#
|
65
|
+
#This is also the default for inclusions.
|
66
|
+
class Creole_inclusion_img < Creole_inclusion_and_plugin
|
67
|
+
Creole::Inclusions.default = self
|
68
|
+
|
69
|
+
#Define an image.
|
70
|
+
#The existence of the picture is checked.
|
71
|
+
def initialize( picname, alt_text, options, wiki )
|
72
|
+
super
|
73
|
+
@img = element(:img,{ :src => @inclusionname })
|
74
|
+
@img[:alt] << alt_text if alt_text
|
75
|
+
#Check existence of Picture. Only possible if the related wiki is available.
|
76
|
+
wiki.check_link_existence( @inclusionname, wiki.log )
|
77
|
+
|
78
|
+
css = CSS.new( :log => wiki.log )
|
79
|
+
|
80
|
+
options.each{|option|
|
81
|
+
case option
|
82
|
+
when /^(img)?css\s*=\s*(.*)/
|
83
|
+
$2.split(/\s*;\s*/).each{|css_assignment|
|
84
|
+
css_assignment =~ /(.+?)\s*:\s*(.+)/
|
85
|
+
css[$1] = $2
|
86
|
+
}
|
87
|
+
when /^(img)?class\s*=\s*(.*)/
|
88
|
+
@img[:class] << $2
|
89
|
+
else
|
90
|
+
wiki.log.warn("Img: Undefined option #{option}") if wiki.log.warn?
|
91
|
+
end #case option
|
92
|
+
} if options
|
93
|
+
@img.attr[:style] << css
|
94
|
+
|
95
|
+
end
|
96
|
+
def to_doc(target, options = {})
|
97
|
+
@img.to_doc(target, options)
|
98
|
+
end
|
99
|
+
end #Creole_inclusion_img
|
100
|
+
|
101
|
+
#
|
102
|
+
#Collection of footnotes.
|
103
|
+
#
|
104
|
+
class Creole_footnote_group < Creole_inclusion_and_plugin
|
105
|
+
#
|
106
|
+
Creole::Plugins['footnotes'] = self
|
107
|
+
#~ Creole::Inclusions['footnotes'] = self
|
108
|
+
|
109
|
+
def initialize( inclusionname, description, options, wiki )
|
110
|
+
super
|
111
|
+
description = Footnotegroup::DEFAULTGROUPID unless description
|
112
|
+
@footnotesgroup = wiki.footnotegroups[description]
|
113
|
+
wiki.log.error("Footnotesgroup #{description.inspect} not found") if ! @footnotesgroup and wiki.log.error?
|
114
|
+
end
|
115
|
+
def to_doc(target, options = {})
|
116
|
+
@footnotesgroup.to_doc(target, options)
|
117
|
+
end
|
118
|
+
end #Creole_inclusion_footnote_group
|
119
|
+
|
120
|
+
#
|
121
|
+
#One footnote
|
122
|
+
#
|
123
|
+
#Bug: If you create more documents, you get a common footnote counting.
|
124
|
+
#Has to be repaired one day.
|
125
|
+
class Creole_footnote < Creole_inclusion_and_plugin
|
126
|
+
Creole::Plugins['footnote'] = self
|
127
|
+
#~ Creole::Inclusions['footnote'] = self
|
128
|
+
def initialize( inclusionname, description, options, wiki )
|
129
|
+
super
|
130
|
+
|
131
|
+
@groupid = Footnotegroup::DEFAULTGROUPID
|
132
|
+
label = nil
|
133
|
+
|
134
|
+
options.each{|option|
|
135
|
+
case option
|
136
|
+
when /label\s*=\s*(.*)/
|
137
|
+
label = $1
|
138
|
+
when /groupid\s*=\s*(.*)/
|
139
|
+
@groupid = $1
|
140
|
+
else
|
141
|
+
@wiki.log.warn("Footnote with unknown option #{option.inspect} not found") if @wiki.log.warn?
|
142
|
+
end
|
143
|
+
}
|
144
|
+
|
145
|
+
if ! wiki.footnotegroups[@groupid]
|
146
|
+
wiki.footnotegroups[@groupid] = Footnotegroup.new(@groupid)
|
147
|
+
end
|
148
|
+
|
149
|
+
group = wiki.footnotegroups[@groupid]
|
150
|
+
|
151
|
+
@footnote = element(:footnote,{
|
152
|
+
:group => group,
|
153
|
+
:label => label,
|
154
|
+
}, description )
|
155
|
+
|
156
|
+
|
157
|
+
end
|
158
|
+
def to_doc(target, options ={})
|
159
|
+
@footnote.to_doc(target, options)
|
160
|
+
end
|
161
|
+
end #Creole_inclusion_footnote
|
162
|
+
|
163
|
+
#
|
164
|
+
#Eval the given ruby-code and put it as "raw text".
|
165
|
+
#
|
166
|
+
#
|
167
|
+
#This is defined as a plugin.
|
168
|
+
class Creole_plugin_ruby_raw < Creole_inclusion_and_plugin
|
169
|
+
#~ Creole::Inclusions['ruby'] = self
|
170
|
+
Creole::Plugins['ruby_raw'] = self
|
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
|
+
@code = description
|
178
|
+
begin
|
179
|
+
@result = eval(@code)
|
180
|
+
rescue => bang
|
181
|
+
wiki.log.error("Plugin ruby_raw: <#{@code}> results in #{bang.class}/#{bang}") if wiki.log.error?
|
182
|
+
end
|
183
|
+
end #initioliaze
|
184
|
+
def to_doc(target, options ={})
|
185
|
+
@result.to_s
|
186
|
+
end
|
187
|
+
def inspect()
|
188
|
+
"#<Creole_plugin_ruby_raw:#{@code}>"
|
189
|
+
end
|
190
|
+
end #Creole_plugin_ruby
|
191
|
+
|
192
|
+
#
|
193
|
+
#Eval the given ruby-code and add it as a interpreted code.
|
194
|
+
#
|
195
|
+
#This is defined as a plugin.
|
196
|
+
#
|
197
|
+
#Ideas for further development: eval later, at doc generation.
|
198
|
+
class Creole_plugin_ruby < Creole_inclusion_and_plugin
|
199
|
+
#~ Creole::Inclusions['ruby'] = self
|
200
|
+
Creole::Plugins['ruby'] = self
|
201
|
+
def initialize( inclusionname, description, options, wiki )
|
202
|
+
#The ruby-code may contain | - so we have to ad it again
|
203
|
+
description << "|#{options.join('|')}" unless options.empty?
|
204
|
+
options = nil
|
205
|
+
super
|
206
|
+
|
207
|
+
@code = description
|
208
|
+
begin
|
209
|
+
@result = eval(@code)
|
210
|
+
rescue => bang
|
211
|
+
wiki.log.error("Plugin ruby: <#{@code}> results in #{bang.class}/#{bang}") if wiki.log.error?
|
212
|
+
end
|
213
|
+
end #initioliaze
|
214
|
+
def to_doc(target, options = {})
|
215
|
+
@wiki.normsource2elements(
|
216
|
+
@wiki.parse(@result.to_s ), options
|
217
|
+
).to_doc(target, options )
|
218
|
+
end
|
219
|
+
def inspect()
|
220
|
+
"#<Creole_plugin_ruby:#{@code}>"
|
221
|
+
end
|
222
|
+
end #Creole_plugin_ruby
|
223
|
+
|
224
|
+
#~ if $0 == __FILE__
|
225
|
+
#~ require 'quicktest'
|
226
|
+
#~ end
|
227
|
+
|
228
|
+
|
229
|
+
__END__
|
230
|
+
Fixme for image:
|
231
|
+
pack it for a figure-environment (HTML: div/span + float)
|
232
|
+
{{test.jpg|description|beforetitle=vorher]]
|
233
|
+
{{test.jpg|description|aftertitle=nachher}}
|
234
|
+
{{test.jpg|description|figureclass=imgclass}}
|
235
|
+
description = caption
|
236
|
+
|
@@ -0,0 +1,74 @@
|
|
1
|
+
#
|
2
|
+
#Placeholder are defined in Creole-Syntax via <<< >>>
|
3
|
+
#
|
4
|
+
#Placeholders collect the content between <<< and >>>.
|
5
|
+
#
|
6
|
+
#Derived classes are:
|
7
|
+
#- Creole_dummy_placeholder
|
8
|
+
#- Creole_html
|
9
|
+
#- Creole_latex
|
10
|
+
#- Creole_tabular
|
11
|
+
#- Creole_creoletab
|
12
|
+
class Creole_placeholder
|
13
|
+
|
14
|
+
def initialize( wiki )
|
15
|
+
@wiki = wiki
|
16
|
+
@log = @wiki.log
|
17
|
+
end
|
18
|
+
def << (content)
|
19
|
+
@source = [] unless @source
|
20
|
+
@source << content
|
21
|
+
end
|
22
|
+
#
|
23
|
+
#possibility to analyse the content.
|
24
|
+
def close()
|
25
|
+
end
|
26
|
+
def to_doc( target, options = {})
|
27
|
+
@source.to_doc( target, options )
|
28
|
+
end
|
29
|
+
end #Creole_placeholder
|
30
|
+
|
31
|
+
#Just a dummy for wrong definitions.
|
32
|
+
#
|
33
|
+
#This class is used by Creole a default placeholder.
|
34
|
+
class Creole_dummy_placeholder < Creole_placeholder
|
35
|
+
Creole::Placeholders.default = self
|
36
|
+
end #Creole_dummy_placeholder
|
37
|
+
|
38
|
+
#
|
39
|
+
#Placeholder for pure HTML-output.
|
40
|
+
#This content is ignored in LaTeX, Wiki... documents.
|
41
|
+
class Creole_html < Creole_placeholder
|
42
|
+
Creole::Placeholders['html'] = self
|
43
|
+
#Return content only for html
|
44
|
+
def to_doc( target, options = {})
|
45
|
+
target == :html ? @source.to_doc( target, options ) : ''
|
46
|
+
end
|
47
|
+
end #Creole_html
|
48
|
+
|
49
|
+
#
|
50
|
+
#Placeholder for pure LaTeX-output.
|
51
|
+
#This content is ignored in HTML, Wiki... documents.
|
52
|
+
#
|
53
|
+
#Idea for option: Parse the content by the wiki.
|
54
|
+
#
|
55
|
+
#Pro:
|
56
|
+
#-allows the usage of <<ruby|...
|
57
|
+
#Cons:
|
58
|
+
#-unexpected conversions?
|
59
|
+
class Creole_latex < Creole_placeholder
|
60
|
+
Creole::Placeholders['latex'] = self
|
61
|
+
#Return content only for latex
|
62
|
+
def to_doc( target, options = {})
|
63
|
+
target == :latex ? @source.to_doc( target, options ) : ''
|
64
|
+
end
|
65
|
+
end #Creole_latex
|
66
|
+
|
67
|
+
|
68
|
+
__END__
|
69
|
+
To be done:
|
70
|
+
class Creole_rail
|
71
|
+
class Creole_struktogramm
|
72
|
+
rubycode (see plugin Creole_plugin_ruby )
|
73
|
+
|
74
|
+
Steuerparameter mit | nach plugin-name?
|
@@ -0,0 +1,170 @@
|
|
1
|
+
require 'creole2doc' if __FILE__ == $0
|
2
|
+
|
3
|
+
<<fixme
|
4
|
+
taboptions:
|
5
|
+
- border=: HTML
|
6
|
+
- .* = (.*): Used for CSS
|
7
|
+
newline-options
|
8
|
+
- toprule
|
9
|
+
- midrule
|
10
|
+
- hline
|
11
|
+
- .* = (.*): Used for CSS
|
12
|
+
lineoptions:
|
13
|
+
- colspan =
|
14
|
+
- pos
|
15
|
+
- .* = (.*): Used for CSS
|
16
|
+
fixme
|
17
|
+
|
18
|
+
|
19
|
+
#
|
20
|
+
#Extend the class by a little structure
|
21
|
+
class Creole_placeholder
|
22
|
+
Cell = Struct.new('Cell', :content, :type )
|
23
|
+
end #Creole_placeholder
|
24
|
+
|
25
|
+
#
|
26
|
+
#"Original" creole tab.
|
27
|
+
#
|
28
|
+
#Defined as a collector, so we can collect the content first and
|
29
|
+
#build the tabular later.
|
30
|
+
#
|
31
|
+
#Details see http://www.wikicreole.org/wiki/Tables
|
32
|
+
class Creole_creoletab < Creole_placeholder
|
33
|
+
Creole::Placeholders['creole_tabular'] = self #original creole-tab definition
|
34
|
+
#Finish the tabular.
|
35
|
+
#Each cell is added left justified.
|
36
|
+
def close(options)
|
37
|
+
#~ @log.error("Standard creole tabulars not supported yet" )
|
38
|
+
|
39
|
+
step = 0 #start
|
40
|
+
head = []
|
41
|
+
content = []
|
42
|
+
@source.each{|line|
|
43
|
+
content << []
|
44
|
+
#delete trailing empty cells
|
45
|
+
line.chomp.gsub(/\|\s*$/,'').split(/\|/)[1..-1].each{|cell|
|
46
|
+
case cell
|
47
|
+
when /^=/
|
48
|
+
content.last << Cell.new(@wiki.inline($~.post_match.strip, options),:th)
|
49
|
+
else
|
50
|
+
content.last << Cell.new(@wiki.inline(cell.strip, options), :td)
|
51
|
+
end
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
max_size = 0
|
56
|
+
content.each{|line|
|
57
|
+
max_size = [max_size, line.size].max
|
58
|
+
}
|
59
|
+
|
60
|
+
@tab = element(:tabular, {#:style => tab_css,
|
61
|
+
:columns => max_size,
|
62
|
+
:columndescription => 'l' * max_size,
|
63
|
+
}).cR
|
64
|
+
content.each{|line|
|
65
|
+
@tab << row = element(:row).cr
|
66
|
+
line.each{|cell|
|
67
|
+
#fixme cell to wiki/creole
|
68
|
+
row << element(cell.type,{}, cell.content).cr
|
69
|
+
}
|
70
|
+
}
|
71
|
+
end
|
72
|
+
def to_doc( target, options = {})
|
73
|
+
self.close(options) unless @tab
|
74
|
+
@tab.to_doc( target, options )
|
75
|
+
end
|
76
|
+
end #Creole_tab
|
77
|
+
|
78
|
+
#
|
79
|
+
#Create tabulars analog to Wikimedia.
|
80
|
+
class Creole_tabular < Creole_placeholder
|
81
|
+
Creole::Placeholders['tabular'] = self
|
82
|
+
#Build the tabular.
|
83
|
+
def close()
|
84
|
+
#~ fixme:
|
85
|
+
#~ *CSS-format
|
86
|
+
#~ *generelle def
|
87
|
+
|
88
|
+
step = 0 #start
|
89
|
+
head = []
|
90
|
+
content = [[]]
|
91
|
+
options = {}
|
92
|
+
tab_css = CSS.new( :log => @log )
|
93
|
+
@source.each{|cell|
|
94
|
+
case cell
|
95
|
+
when /^\|!/ #generell cell definition
|
96
|
+
case $~.post_match().strip
|
97
|
+
when /columns\s*=\s*(.*)/
|
98
|
+
options[:columns] = $1.to_i
|
99
|
+
when /columndescription\s*=\s*(.*)/
|
100
|
+
options[:columndescription] = $1
|
101
|
+
when /css\s*=\s*(.*)\s*:\s*(.*)/
|
102
|
+
tab_css[$1] = $2
|
103
|
+
when '' #
|
104
|
+
else
|
105
|
+
@log.warn("#{self}: Unknown tabular option #{$1}") if @log.warn?
|
106
|
+
end
|
107
|
+
when /^\|-(.*)/ #new line
|
108
|
+
content << []
|
109
|
+
when /^\|=/ #header cell
|
110
|
+
content.last << Cell.new(@wiki.inline($~.post_match.strip, options), :th)
|
111
|
+
when /^\|/ #content of a cell
|
112
|
+
content.last << Cell.new(@wiki.inline($~.post_match.strip, options), :td)
|
113
|
+
else #error!
|
114
|
+
raise 'cell/log-warning'
|
115
|
+
end
|
116
|
+
}
|
117
|
+
|
118
|
+
max_size = 0
|
119
|
+
content.each{|line|
|
120
|
+
max_size = [max_size, line.size].max
|
121
|
+
}
|
122
|
+
|
123
|
+
if options[:columns] and options[:columns] < max_size
|
124
|
+
@log.warn("Creole-tabular: Defined size #{options[:columns]} < no of columns (#{max_size})") if @log.warn?
|
125
|
+
end
|
126
|
+
|
127
|
+
@tab = element(:tabular, { :style => tab_css,
|
128
|
+
|
129
|
+
}.merge(options) ).cR
|
130
|
+
content.each{|line|
|
131
|
+
@tab << row = element(:row).cr
|
132
|
+
line.each{|cell|
|
133
|
+
#fixme cell to wiki/creole
|
134
|
+
row << element(cell.type,{}, cell.content).cr
|
135
|
+
}
|
136
|
+
}
|
137
|
+
end
|
138
|
+
def to_doc( target, options = {})
|
139
|
+
@tab.to_doc( target, options )
|
140
|
+
end
|
141
|
+
|
142
|
+
end
|
143
|
+
|
144
|
+
__END__
|
145
|
+
|
146
|
+
class Creole_tabular_cvs
|
147
|
+
include Creole_placeholder
|
148
|
+
>>>tab
|
149
|
+
|! Tabdefinition crl
|
150
|
+
|! implizit columns
|
151
|
+
|= -> th
|
152
|
+
yy;yy;yy;
|
153
|
+
yy;yy;yy;
|
154
|
+
yy;yy;yy;
|
155
|
+
<<<
|
156
|
+
|
157
|
+
|
158
|
+
Die Syntax:
|
159
|
+
*{| beginnt eine Tabelle. Hier k�nnen zus�tzliche Formatierungseigenschaften kommen.
|
160
|
+
**Zumindest columns==__ sollte gesetzt sein
|
161
|
+
*! beginnt eine neue Zelle einer Titelzeile
|
162
|
+
*| beginnt eine neue Zelle
|
163
|
+
*|format| z.B. rowspan...
|
164
|
+
*|format|| Zwei || beenden die Parameter der Zelle.
|
165
|
+
Dann sinnvoll, wenn im Text selbst ein | vorkommt
|
166
|
+
(z.B. ein Macro verwendet wird)
|
167
|
+
*|- trennt zwei Zeilen der Tabelle
|
168
|
+
**hline: Zus�tzlicher Trennstrich �ber der Zeile
|
169
|
+
**toprule, midrule, bottomrule: Zus�tzlicher Trennstrich �ber der Zeile (erfordert booktabs.sty)
|
170
|
+
*|} beendet eine Tabelle
|
data/lib/docgenerator.rb
CHANGED
@@ -3,8 +3,17 @@
|
|
3
3
|
#Plain text and a Wiki-version exist also, but they are not well maintained.
|
4
4
|
#
|
5
5
|
#
|
6
|
+
#==Wiki
|
7
|
+
#Docgenerator is also the base for two Wiki-analyser.
|
8
|
+
#Both parse a wiki-source and build a docgenerator tree.
|
9
|
+
#In combination, you get a wiki to html and wiki to LaTeX converter.
|
10
|
+
#
|
11
|
+
#Details see
|
12
|
+
#- Creole (Creole-syntax)
|
13
|
+
#- Wikitext (Wikimedia-syntax, no longer supported.)
|
14
|
+
#
|
6
15
|
#==Elements
|
7
|
-
#A document is structured by
|
16
|
+
#A document is structured by Element.
|
8
17
|
#Each element contains attributes/parameters and content.
|
9
18
|
#(Think of HTML-attributes and TeX-Parameters and the content of HTML-Tags and TeX-Environments.).
|
10
19
|
#
|
@@ -17,7 +26,7 @@
|
|
17
26
|
#Some elements (in fact, most of them) are generated dynamic,
|
18
27
|
#so they will not occur in this generated documentation).
|
19
28
|
#
|
20
|
-
|
29
|
+
#=== Examples
|
21
30
|
#A document with a paragraph:
|
22
31
|
# doc = Document.new
|
23
32
|
# doc.body << element(:p,{}, 'Content')
|
@@ -34,6 +43,7 @@
|
|
34
43
|
#
|
35
44
|
#See the unit tests and the examples-folder of the docgenerator distribution for more examples.
|
36
45
|
#
|
46
|
+
#
|
37
47
|
#== Known problems
|
38
48
|
#This program is developed under Windows.
|
39
49
|
#I expect encoding problems on other systems
|
@@ -60,12 +70,11 @@ require 'yaml' #needed by docgenerator_template.rb
|
|
60
70
|
#How to handle the End-Tag for br/hr...
|
61
71
|
#- false: set <br /> (XHTML)
|
62
72
|
#- nil: set <br> (HTML)
|
73
|
+
#
|
63
74
|
#Problem:
|
64
75
|
#HTML may have no endtags, XHTML requires it.
|
65
|
-
|
66
|
-
|
67
|
-
#~ Aber woher weiss element in welches Dokument es geh�rt?
|
68
|
-
#~ Gleiche Problem bei to_s, bzw. Document.target
|
76
|
+
#This constant defines it global.
|
77
|
+
#Fixme: Flag it in the HTML-template what you need.
|
69
78
|
ENDTAG = false if ! defined?( ENDTAG )
|
70
79
|
|
71
80
|
|
@@ -39,7 +39,7 @@ class Attribute
|
|
39
39
|
when :wiki
|
40
40
|
attributeclass.class_eval('def wiki?(); true; end')
|
41
41
|
else
|
42
|
-
|
42
|
+
DOCGENERATOR_LOGGER.error("Attribute: Unknown setting <#{setting.inspect}>") if DOCGENERATOR_LOGGER.error?
|
43
43
|
end
|
44
44
|
}
|
45
45
|
if values
|
@@ -74,7 +74,7 @@ class Attribute
|
|
74
74
|
#Sometimes the content of an attribute is needed directly.
|
75
75
|
def content(); @attr_content; end
|
76
76
|
#Check if content was added
|
77
|
-
def filled?(); return @attr_content.size > 0; end
|
77
|
+
def filled?(); return @attr_content.compact.size > 0; end
|
78
78
|
#Attribut is used for HTML.
|
79
79
|
def html?(); false; end
|
80
80
|
#Attribut is used for Text.
|
@@ -41,6 +41,11 @@ Element.create( [:percent, :'%'], {},false,
|
|
41
41
|
:latex => '\%'
|
42
42
|
} )
|
43
43
|
|
44
|
+
Element.create( [:dollar, :'$'], {},false,
|
45
|
+
{ :html => '$',
|
46
|
+
:latex => '\$'
|
47
|
+
} )
|
48
|
+
|
44
49
|
Element.create( [:'^'], {},false,
|
45
50
|
{ :html => '^',
|
46
51
|
:latex => '\hat{}'
|
@@ -78,21 +83,25 @@ Element.create( [:radic], {},false,
|
|
78
83
|
|
79
84
|
Element.create( [:rarr, :rightarrow, :'->'], {},false,
|
80
85
|
{ :html => '→',
|
81
|
-
:latex => '\ensuremath{\rightarrow}'
|
86
|
+
:latex => '\ensuremath{\rightarrow}',
|
87
|
+
:text => '->',
|
82
88
|
} )
|
83
89
|
|
84
90
|
Element.create( [:rArr, :Rightarrow, :'=>'], {},false,
|
85
91
|
{ :html => '⇒',
|
86
|
-
:latex => '\ensuremath{\Rightarrow}'
|
92
|
+
:latex => '\ensuremath{\Rightarrow}',
|
93
|
+
:text => '=>',
|
87
94
|
} )
|
88
95
|
Element.create( [:larr, :leftarrow, :'<-'], {},false,
|
89
96
|
{ :html => '←',
|
90
|
-
:latex => '\ensuremath{\leftarrow}'
|
97
|
+
:latex => '\ensuremath{\leftarrow}',
|
98
|
+
:text => '<-',
|
91
99
|
} )
|
92
100
|
|
93
101
|
Element.create( [:lArr, :Leftarrow, :'<='], {},false,
|
94
102
|
{ :html => '⇐',
|
95
|
-
:latex => '\ensuremath{\Lefttarrow}'
|
103
|
+
:latex => '\ensuremath{\Lefttarrow}',
|
104
|
+
:text => '<=',
|
96
105
|
} )
|
97
106
|
|
98
107
|
Element.create( [:uArr, :Uparrow ], {},false,
|
@@ -164,8 +173,15 @@ Element.create( [:empty], {},false,
|
|
164
173
|
Element.create( [:'_', :underscore], {},false,
|
165
174
|
{ :html => '_',
|
166
175
|
:latex => '\_',
|
176
|
+
:wiki => '_',
|
177
|
+
:text => '_',
|
167
178
|
} )
|
168
179
|
|
180
|
+
Element.create( [:'...', :ldots], {},false,
|
181
|
+
{ :html => '…',
|
182
|
+
:latex => '\ldots ',
|
183
|
+
} )
|
184
|
+
|
169
185
|
Element.create( [:bullet], {},false,
|
170
186
|
{ :html => '•',
|
171
187
|
:latex => '\ensuremath{\bullet}'
|