docgenerator 1.0.4 → 1.1.1

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 (231) hide show
  1. data/lib/creole/creole2doc.rb +777 -0
  2. data/lib/creole/creole_inclusion_and_plugins.rb +236 -0
  3. data/lib/creole/creole_placeholder.rb +74 -0
  4. data/lib/creole/creole_tabular.rb +170 -0
  5. data/lib/docgenerator.rb +15 -6
  6. data/lib/docgenerator_attribute.rb +2 -2
  7. data/lib/docgenerator_characters.rb +20 -4
  8. data/lib/docgenerator_document.rb +132 -42
  9. data/lib/docgenerator_element.rb +531 -524
  10. data/lib/docgenerator_elements.rb +408 -399
  11. data/lib/docgenerator_environments.rb +28 -2
  12. data/lib/docgenerator_footnote.rb +72 -79
  13. data/lib/docgenerator_sections.rb +1 -1
  14. data/lib/docgenerator_tabular.rb +8 -3
  15. data/lib/packages/docgenerator_beamer.rb +253 -0
  16. data/lib/packages/docgenerator_scrlettr2.rb +53 -9
  17. data/lib/templates/docgenerator_template_css.rb +4 -0
  18. data/lib/wiki2doc/wiki2docgenerator.rb +1087 -970
  19. data/lib/yaml2presentation/yaml2presentation.rb +1091 -0
  20. data/self_docgenerator.rb +8 -6
  21. data/unittest/Red_Flower.jpg +0 -0
  22. data/unittest/creole1.0test.txt +128 -0
  23. data/unittest/expected/beamer_01_doc.html +1 -1
  24. data/unittest/expected/beamer_02_doc.html +1 -1
  25. data/unittest/expected/beamer_doc_html_overview_with_detailpic_and_text_doc.html +34 -0
  26. data/unittest/expected/beamer_doc_html_overview_with_detailpic_doc.html +34 -0
  27. data/unittest/expected/beamer_doc_key_doc.html +1 -1
  28. data/unittest/expected/beamer_doc_note_doc.html +1 -1
  29. data/unittest/expected/beamer_doc_pic_bottom_doc.html +1 -1
  30. data/unittest/expected/beamer_doc_pic_doc.html +1 -1
  31. data/unittest/expected/beamer_doc_pic_left_doc.html +1 -1
  32. data/unittest/expected/beamer_doc_pic_right_doc.html +1 -1
  33. data/unittest/expected/beamer_doc_pic_top_doc.html +1 -1
  34. data/unittest/expected/test_footnote.html +2 -2
  35. data/unittest/expected/test_footnote.latex +1 -1
  36. data/unittest/expected/test_footnote_group.html +3 -3
  37. data/unittest/expected/test_footnote_group.latex +2 -2
  38. data/unittest/expected_creole/test_creole.html +3 -0
  39. data/unittest/expected_creole/test_creole_characters_all.html +10 -0
  40. data/unittest/expected_creole/test_creole_characters_all.latex +20 -0
  41. data/unittest/expected_creole/test_creole_characters_special.html +10 -0
  42. data/unittest/expected_creole/test_creole_characters_special.latex +18 -0
  43. data/unittest/expected_creole/test_creole_countdown.html +3 -0
  44. data/unittest/expected_creole/test_creole_countdown.latex +4 -0
  45. data/unittest/expected_creole/test_creole_creole1.0test.html +182 -0
  46. data/unittest/expected_creole/test_creole_creole1.0test.latex +253 -0
  47. data/unittest/expected_creole/test_creole_creole1.0test.text +160 -0
  48. data/unittest/expected_creole/test_creole_footnotes.html +9 -0
  49. data/unittest/expected_creole/test_creole_footnotes.latex +14 -0
  50. data/unittest/expected_creole/test_creole_footnotes_label.html +9 -0
  51. data/unittest/expected_creole/test_creole_headings.html +17 -0
  52. data/unittest/expected_creole/test_creole_headings.latex +19 -0
  53. data/unittest/expected_creole/test_creole_headings.text +48 -0
  54. data/unittest/expected_creole/test_creole_headings.wiki +37 -0
  55. data/unittest/expected_creole/test_creole_hr.html +7 -0
  56. data/unittest/expected_creole/test_creole_hr.latex +9 -0
  57. data/unittest/expected_creole/test_creole_hr.text +4 -0
  58. data/unittest/expected_creole/test_creole_inline.html +3 -0
  59. data/unittest/expected_creole/test_creole_inline.latex +4 -0
  60. data/unittest/expected_creole/test_creole_inline.text +2 -0
  61. data/unittest/expected_creole/test_creole_inline_ruby.html +12 -0
  62. data/unittest/expected_creole/test_creole_inline_ruby.latex +20 -0
  63. data/unittest/expected_creole/test_creole_inline_ruby_raw.html +6 -0
  64. data/unittest/expected_creole/test_creole_inline_ruby_raw.latex +8 -0
  65. data/unittest/expected_creole/test_creole_input.normsource +23 -0
  66. data/unittest/expected_creole/test_creole_label.html +12 -0
  67. data/unittest/expected_creole/test_creole_label.latex +15 -0
  68. data/unittest/expected_creole/test_creole_line_break.html +6 -0
  69. data/unittest/expected_creole/test_creole_line_break.latex +8 -0
  70. data/unittest/expected_creole/test_creole_links_explicit_internal.html +6 -0
  71. data/unittest/expected_creole/test_creole_links_explicit_internal.text +4 -0
  72. data/unittest/expected_creole/test_creole_links_explicit_with_em.html +3 -0
  73. data/unittest/expected_creole/test_creole_links_explicit_with_em.latex +4 -0
  74. data/unittest/expected_creole/test_creole_links_explicit_with_em.text +2 -0
  75. data/unittest/expected_creole/test_creole_links_external.html +6 -0
  76. data/unittest/expected_creole/test_creole_links_external.latex +8 -0
  77. data/unittest/expected_creole/test_creole_links_external.text +4 -0
  78. data/unittest/expected_creole/test_creole_links_external_implicit.html +9 -0
  79. data/unittest/expected_creole/test_creole_links_external_implicit.latex +12 -0
  80. data/unittest/expected_creole/test_creole_links_external_implicit.text +6 -0
  81. data/unittest/expected_creole/test_creole_links_file.html +6 -0
  82. data/unittest/expected_creole/test_creole_links_file.latex +8 -0
  83. data/unittest/expected_creole/test_creole_links_file.text +4 -0
  84. data/unittest/expected_creole/test_creole_list_ol.html +12 -0
  85. data/unittest/expected_creole/test_creole_list_ol.latex +22 -0
  86. data/unittest/expected_creole/test_creole_list_ol_after_ul.html +12 -0
  87. data/unittest/expected_creole/test_creole_list_ol_after_ul.latex +20 -0
  88. data/unittest/expected_creole/test_creole_list_ol_after_ul.text +6 -0
  89. data/unittest/expected_creole/test_creole_list_ol_ul.html +15 -0
  90. data/unittest/expected_creole/test_creole_list_ol_ul.latex +26 -0
  91. data/unittest/expected_creole/test_creole_list_ul.html +22 -0
  92. data/unittest/expected_creole/test_creole_list_ul.latex +40 -0
  93. data/unittest/expected_creole/test_creole_list_ul.normsource +83 -0
  94. data/unittest/expected_creole/test_creole_list_ul_too_much.html +24 -0
  95. data/unittest/expected_creole/test_creole_list_ul_too_much.latex +44 -0
  96. data/unittest/expected_creole/test_creole_newline.html +9 -0
  97. data/unittest/expected_creole/test_creole_newline.latex +11 -0
  98. data/unittest/expected_creole/test_creole_newline.text +7 -0
  99. data/unittest/expected_creole/test_creole_paragraphs.html +6 -0
  100. data/unittest/expected_creole/test_creole_paragraphs.latex +8 -0
  101. data/unittest/expected_creole/test_creole_paragraphs.normsource +27 -0
  102. data/unittest/expected_creole/test_creole_paragraphs.text +4 -0
  103. data/unittest/expected_creole/test_creole_paragraphs.wiki +4 -0
  104. data/unittest/expected_creole/test_creole_paragraphs_wrap.html +5 -0
  105. data/unittest/expected_creole/test_creole_paragraphs_wrap.latex +6 -0
  106. data/unittest/expected_creole/test_creole_paragraphs_wrap.text +4 -0
  107. data/unittest/expected_creole/test_creole_paragraphs_wrap.wiki +4 -0
  108. data/unittest/expected_creole/test_creole_paragraphs_wrap0.html +9 -0
  109. data/unittest/expected_creole/test_creole_paragraphs_wrap0.latex +11 -0
  110. data/unittest/expected_creole/test_creole_paragraphs_wrap0.text +7 -0
  111. data/unittest/expected_creole/test_creole_paragraphs_wrap0.wiki +7 -0
  112. data/unittest/expected_creole/test_creole_paragraphs_wrap60.html +5 -0
  113. data/unittest/expected_creole/test_creole_paragraphs_wrap60.latex +6 -0
  114. data/unittest/expected_creole/test_creole_paragraphs_wrap60.text +4 -0
  115. data/unittest/expected_creole/test_creole_paragraphs_wrap60.wiki +4 -0
  116. data/unittest/expected_creole/test_creole_picture_link.html +6 -0
  117. data/unittest/expected_creole/test_creole_pictures.html +10 -0
  118. data/unittest/expected_creole/test_creole_pictures.latex +13 -0
  119. data/unittest/expected_creole/test_creole_pictures_css.html +3 -0
  120. data/unittest/expected_creole/test_creole_pictures_css.latex +4 -0
  121. data/unittest/expected_creole/test_creole_pictures_imgclass.html +6 -0
  122. data/unittest/expected_creole/test_creole_pictures_imgclass.latex +8 -0
  123. data/unittest/expected_creole/test_creole_placeholders_html.html +7 -0
  124. data/unittest/expected_creole/test_creole_placeholders_html.latex +8 -0
  125. data/unittest/expected_creole/test_creole_placeholders_html.text +4 -0
  126. data/unittest/expected_creole/test_creole_placeholders_latex.html +6 -0
  127. data/unittest/expected_creole/test_creole_placeholders_latex.latex +9 -0
  128. data/unittest/expected_creole/test_creole_placeholders_latex.text +4 -0
  129. data/unittest/expected_creole/test_creole_tabular.html +20 -0
  130. data/unittest/expected_creole/test_creole_tabular.latex +22 -0
  131. data/unittest/expected_creole/test_creole_tabular_creole.html +18 -0
  132. data/unittest/expected_creole/test_creole_tabular_creole.latex +19 -0
  133. data/unittest/expected_creole/test_creole_tabular_css.html +20 -0
  134. data/unittest/expected_creole/test_creole_tabular_css.latex +22 -0
  135. data/unittest/expected_creole/test_creole_toc.html +11 -0
  136. data/unittest/expected_creole/test_creole_toc.latex +22 -0
  137. data/unittest/expected_creole/test_creole_toc.text +4 -0
  138. data/unittest/expected_creole/test_creole_toc_text.html +5 -0
  139. data/unittest/expected_creole/test_creole_toc_text.latex +5 -0
  140. data/unittest/expected_creole/test_creole_ul_multiple_line.html +7 -0
  141. data/unittest/expected_creole/test_creole_ul_multiple_line.latex +14 -0
  142. data/unittest/expected_creole/test_creole_ul_with_blank.html +11 -0
  143. data/unittest/expected_creole/test_creole_ul_with_blank.latex +20 -0
  144. data/unittest/expected_creole/test_creole_ul_with_bold.creole +0 -0
  145. data/unittest/expected_creole/test_creole_ul_with_bold.html +11 -0
  146. data/unittest/expected_creole/test_creole_ul_with_bold.latex +18 -0
  147. data/unittest/expected_creole/test_creole_ul_with_bold.text +7 -0
  148. data/unittest/expected_creole/test_creole_verbatim.html +25 -0
  149. data/unittest/expected_creole/test_creole_verbatim.latex +33 -0
  150. data/unittest/expected_creole/test_creole_verbatim.text +17 -0
  151. data/unittest/expected_creole/test_creole_verbatim_inline.html +6 -0
  152. data/unittest/expected_creole/test_creole_verbatim_inline.latex +8 -0
  153. data/unittest/expected_creole/test_creole_verbatim_inline_at_start.html +6 -0
  154. data/unittest/expected_creole/test_creole_verbatim_inline_at_start.latex +8 -0
  155. data/unittest/expected_privat/test_creole_test_document.html +6 -0
  156. data/unittest/{expected → expected_wiki}/test_wiki.html +0 -0
  157. data/unittest/{expected → expected_wiki}/test_wiki.latex +0 -0
  158. data/unittest/{expected → expected_wiki}/test_wiki.text +0 -0
  159. data/unittest/{expected → expected_wiki}/test_wiki.wiki +0 -0
  160. data/unittest/{expected → expected_wiki}/test_wiki_amazon.html +0 -0
  161. data/unittest/{expected → expected_wiki}/test_wiki_description.html +0 -0
  162. data/unittest/{expected → expected_wiki}/test_wiki_description.latex +0 -0
  163. data/unittest/{expected → expected_wiki}/test_wiki_description.text +0 -0
  164. data/unittest/{expected → expected_wiki}/test_wiki_description.wiki +0 -0
  165. data/unittest/expected_wiki/test_wiki_footnote.html +8 -0
  166. data/unittest/expected_wiki/test_wiki_footnote.latex +17 -0
  167. data/unittest/{expected → expected_wiki}/test_wiki_footnote.text +2 -4
  168. data/unittest/expected_wiki/test_wiki_footnote.wiki +10 -0
  169. data/unittest/expected_wiki/test_wiki_footnote_2.html +8 -0
  170. data/unittest/expected_wiki/test_wiki_footnote_groupid.html +21 -0
  171. data/unittest/{expected → expected_wiki}/test_wiki_html_code.html +0 -0
  172. data/unittest/{expected → expected_wiki}/test_wiki_html_code.latex +0 -0
  173. data/unittest/{expected → expected_wiki}/test_wiki_html_code.text +0 -0
  174. data/unittest/{expected → expected_wiki}/test_wiki_html_code.wiki +0 -0
  175. data/unittest/{expected → expected_wiki}/test_wiki_inline.html +0 -0
  176. data/unittest/{expected → expected_wiki}/test_wiki_inline.latex +0 -0
  177. data/unittest/{expected → expected_wiki}/test_wiki_inline.text +0 -0
  178. data/unittest/{expected → expected_wiki}/test_wiki_inline.wiki +0 -0
  179. data/unittest/{expected → expected_wiki}/test_wiki_label.html +0 -0
  180. data/unittest/{expected → expected_wiki}/test_wiki_link.html +0 -0
  181. data/unittest/{expected → expected_wiki}/test_wiki_link.latex +0 -0
  182. data/unittest/{expected → expected_wiki}/test_wiki_link.log +0 -0
  183. data/unittest/{expected → expected_wiki}/test_wiki_link.wiki +0 -0
  184. data/unittest/{expected → expected_wiki}/test_wiki_list_ol.html +0 -0
  185. data/unittest/{expected → expected_wiki}/test_wiki_list_ol.latex +0 -0
  186. data/unittest/{expected → expected_wiki}/test_wiki_list_ol.text +0 -0
  187. data/unittest/{expected → expected_wiki}/test_wiki_list_ol.wiki +0 -0
  188. data/unittest/{expected → expected_wiki}/test_wiki_list_ol_after_ul.html +0 -0
  189. data/unittest/{expected → expected_wiki}/test_wiki_list_ol_after_ul.latex +0 -0
  190. data/unittest/{expected → expected_wiki}/test_wiki_list_ol_after_ul.text +0 -0
  191. data/unittest/{expected → expected_wiki}/test_wiki_list_ol_after_ul.wiki +0 -0
  192. data/unittest/{expected → expected_wiki}/test_wiki_list_ol_ul.html +0 -0
  193. data/unittest/{expected → expected_wiki}/test_wiki_list_ol_ul.latex +0 -0
  194. data/unittest/{expected → expected_wiki}/test_wiki_list_ol_ul.text +0 -0
  195. data/unittest/{expected → expected_wiki}/test_wiki_list_ol_ul.wiki +0 -0
  196. data/unittest/{expected → expected_wiki}/test_wiki_list_ul.html +0 -0
  197. data/unittest/{expected → expected_wiki}/test_wiki_list_ul.latex +0 -0
  198. data/unittest/{expected → expected_wiki}/test_wiki_list_ul.text +0 -0
  199. data/unittest/{expected → expected_wiki}/test_wiki_list_ul.wiki +0 -0
  200. data/unittest/{expected → expected_wiki}/test_wiki_list_ul_too_much.html +0 -0
  201. data/unittest/{expected → expected_wiki}/test_wiki_list_ul_too_much.latex +0 -0
  202. data/unittest/{expected → expected_wiki}/test_wiki_list_ul_too_much.text +0 -0
  203. data/unittest/{expected → expected_wiki}/test_wiki_list_ul_too_much.wiki +0 -0
  204. data/unittest/{expected → expected_wiki}/test_wiki_picture.html +0 -0
  205. data/unittest/{expected → expected_wiki}/test_wiki_picture.latex +0 -0
  206. data/unittest/{expected → expected_wiki}/test_wiki_picture_thumb.html +0 -0
  207. data/unittest/{expected → expected_wiki}/test_wiki_tab1.html +0 -0
  208. data/unittest/{expected → expected_wiki}/test_wiki_tab1.latex +0 -0
  209. data/unittest/{expected → expected_wiki}/test_wiki_tab1.wiki +0 -0
  210. data/unittest/{expected → expected_wiki}/test_wiki_textformatting.html +0 -0
  211. data/unittest/{expected → expected_wiki}/test_wiki_textformatting.latex +0 -0
  212. data/unittest/{expected → expected_wiki}/test_wiki_textformatting.text +0 -0
  213. data/unittest/{expected → expected_wiki}/test_wiki_textformatting.wiki +0 -0
  214. data/unittest/{expected → expected_wiki}/test_wiki_toc.html +0 -0
  215. data/unittest/{expected → expected_wiki}/test_wiki_toc.latex +0 -0
  216. data/unittest/{expected → expected_wiki}/test_wiki_toc.text +0 -0
  217. data/unittest/{expected → expected_wiki}/test_wiki_toc.wiki +0 -0
  218. data/unittest/{expected → expected_wiki}/test_wiki_ul_multiple_line.html +0 -0
  219. data/unittest/{expected → expected_wiki}/test_wiki_ul_multiple_line.latex +0 -0
  220. data/unittest/{expected → expected_wiki}/test_wiki_ul_multiple_line.text +0 -0
  221. data/unittest/{expected → expected_wiki}/test_wiki_ul_multiple_line.wiki +0 -0
  222. data/unittest/test_docgenerator.rb +1 -2
  223. data/unittest/unittest_creole2doc.rb +1024 -0
  224. data/unittest/unittest_docgenerator.rb +17 -8
  225. data/unittest/unittest_wiki2doc.rb +92 -88
  226. data/unittest/unittest_yaml2pres.rb +336 -0
  227. metadata +202 -70
  228. data/unittest/expected/test_wiki_footnote.html +0 -8
  229. data/unittest/expected/test_wiki_footnote.latex +0 -15
  230. data/unittest/expected/test_wiki_footnote.wiki +0 -12
  231. data/unittest/expected/test_wiki_footnote_groupid.html +0 -21
@@ -4,6 +4,28 @@
4
4
  #Each document contains a header and a body. Both are special Element classes.
5
5
  #
6
6
  class Document
7
+ #Valid meta tags, used for HTML
8
+ #
9
+ #This meta-tags are used by sitegenerator
10
+ VALID_META_TAGS = %w{
11
+ keywords
12
+ description
13
+ id
14
+ altlang
15
+ toc
16
+ pdf
17
+ odp
18
+ amazon
19
+ forum
20
+ feed
21
+ }
22
+ class << VALID_META_TAGS
23
+ # Return true if self is part of the given parameter.
24
+ def ===(o)
25
+ return self.include?(o)
26
+ end
27
+ end
28
+
7
29
  #Create a new document.
8
30
  #There are different document templates supported.
9
31
  #The templates refer to the corresponding TeX-classes.
@@ -29,9 +51,12 @@ class Document
29
51
  settings = { :template => settings }
30
52
  end
31
53
  ##<<<<temporary check, old interface
54
+
32
55
  @log = settings[:log]
33
- @log = Log4r::Logger.new( 'Doc' ) unless @log
34
-
56
+ if ! @log
57
+ @log = Log4r::Logger.new( 'Doc', Log4r::WARN )
58
+ @log.outputters = Log4r::StdoutOutputter.new('log_xxx')
59
+ end
35
60
  @meta = {} #some meta-Tags for HTML
36
61
  @body = element( :body )
37
62
  @head = element( :head )
@@ -44,9 +69,10 @@ class Document
44
69
 
45
70
  settings.each{|key, value|
46
71
  case key
47
- when :title, :author, :date, :keywords, :description, :creator, :language
72
+ when :title, :shorttitle, :author, :date, :keywords, :description, :creator, :language
48
73
  self.send("#{key}=".to_sym, value)
49
- when :shorttitle, :odp
74
+ #~ when :odp, :pdf, :amazon #VALID_META_TAGS
75
+ when *VALID_META_TAGS.map{|mkey|mkey.to_sym}
50
76
  self.meta( key, value )
51
77
  when :template
52
78
  [value].flatten.each{|template|
@@ -62,11 +88,25 @@ class Document
62
88
  end
63
89
  end
64
90
  } #templates
91
+ when :css
92
+ if ! File.exist?(value)
93
+ @log.warn("CSS-Reference not found (#{value})") if @log.warn?
94
+ end
95
+ #~ @head << element(:htmlonly,{}, <<css
96
+ #~ <meta http-equiv="Content-Style-Type" content="text/css">
97
+ #~ css
98
+ #~ <link rel="stylesheet" type="text/css" href="#{value}">
99
+ #~ ).cr
100
+ @head << element( :link, {
101
+ :href => value,
102
+ :rel => 'stylesheet',
103
+ :type => "text/css" } ).cr. restrict_to(:html)
65
104
  when :maketitle
66
- @body << element(:maketitle ).cr
105
+ #:maketitle is defined, but we have also to check, if it is true
106
+ @body << element(:maketitle ).cr if settings[key]
67
107
  when :log
68
108
  else
69
- @log.error("Document.new: Unknown setting #{key.inspect} (=#{value.inspect})") if @log.error?
109
+ @log.warn("Document.new: Unknown setting #{key.inspect} (=#{value.inspect})") if @log.warn?
70
110
  end
71
111
  } #settings
72
112
 
@@ -77,7 +117,7 @@ class Document
77
117
  #Logger for the document
78
118
  attr_reader :log
79
119
  #Document title
80
- attr_accessor :title
120
+ attr_accessor :title, :shorttitle
81
121
  #Set document description
82
122
  attr_writer :author, :date, :keywords, :description, :creator
83
123
  attr_writer :language
@@ -103,9 +143,15 @@ class Document
103
143
  #Add a meta-tag-information for the HTML-Output.
104
144
  def meta( key, content )
105
145
  key = key.to_s
146
+
147
+ if ! VALID_META_TAGS.include?(key)
148
+ @log.warn("Unknown meta-tag #{key} (#{content})") if @log.warn?
149
+ @log.info("\tAllowed meta-tags: #{VALID_META_TAGS.join(', ')}") if @log.info?
150
+ end
106
151
  if @meta[key]
107
- puts "Double definition meta-tag #{key} (old: #{@meta[key]}, new: #{content})"
152
+ @log.warn("Double definition meta-tag #{key} (old: #{@meta[key]}, new: #{content})") if @log.warn? and @meta[key] != content
108
153
  end
154
+
109
155
  @meta[key] = content
110
156
  end
111
157
  #Prepare the docinfo.
@@ -122,7 +168,7 @@ class Document
122
168
 
123
169
  #Build docinfo.
124
170
  result = []
125
- result << element( :title, {:short => @meta["shorttitle"] }, @title).CR if @title
171
+ result << element( :title, {:short => @shorttitle }, @title).CR if @title
126
172
  result << element( :author, {}, @author).cr if @author
127
173
  result << element( :date, {}, @date).cr if @date
128
174
  result << element( :keywords, {}, @keywords).cr if @keywords
@@ -145,6 +191,9 @@ class Document
145
191
  #- tocfilename: Added as prefix to link.
146
192
  # can be used to make toc for in another file (cross-referencing)
147
193
  #- level: Depth of toc
194
+ #The document should be filled before you add the toc.
195
+ #You an use Element#insertbefore:
196
+ # doc.body.insertbefore(start, doc.toc)
148
197
  def toc( options = {} )
149
198
  opt = {
150
199
  :id => 'toc',
@@ -228,9 +277,44 @@ end
228
277
  #There is a comparison between an already existing file and the new one.
229
278
  #To write a new version, the document must change and overwrite must be true.
230
279
  #
231
- #It is possible to give pairs of RegExp (pattern) and replacements to the result.
232
- def save( filename, overwrite=false, replacements = {} )
233
-
280
+ #Valid options:
281
+ #- :replacements
282
+ # It is possible to give pairs of RegExp (pattern) and replacements to the result.
283
+ #- overwrite [true]
284
+ # allows to overwrite
285
+ #- :additional_options
286
+ # List of options.
287
+ # If you want to give parameters to specific 'Element'-obejcts you can define the keys here.
288
+ # If you don't make it, you get warnings about undefined options.
289
+ #
290
+ def save( filename, options = {} )
291
+ #check old interface before 1.1.0
292
+ case options
293
+ when true, false
294
+ @log.warn( "Old interface for Document.save, use :overwrite => true/false" ) if @log.error?
295
+ options = { :overwrite => options }
296
+ end
297
+
298
+ options = {
299
+ :overwrite => true,
300
+ :replacements => {} ,
301
+ :additional_options => [],
302
+ }.update(options)
303
+
304
+ #Check valid options
305
+ options.each{|key,value|
306
+ case key
307
+ when :overwrite, :replacements
308
+ when :additional_options
309
+ else
310
+ if options[:additional_options].include?(key)
311
+ @log.warn( "unknown option #{key.inspect} for Document.save" ) if @log.warn?
312
+ else
313
+ @log.debug( "Save-Specific option #{key.inspect} in Document.save" ) if @log.debug?
314
+ end
315
+ end
316
+ }
317
+
234
318
  if ! @template
235
319
  @log.error( "No template available to create #{filename}" ) if @log.error?
236
320
  return false
@@ -254,26 +338,26 @@ end
254
338
  extension = File.basename( filename ).split( /\./).last
255
339
  case extension
256
340
  when /tex/i
257
- @target = :latex
341
+ target = :latex
258
342
  when /htm[l]?/i
259
- @target = :html
343
+ target = :html
260
344
  when /txt/
261
- @target = :text
345
+ target = :text
262
346
  when /wiki/
263
- @target = :wiki
347
+ target = :wiki
264
348
  else
265
349
  @log.fatal( "Unknown Extension #{extension} for #{File.basename( filename )}" ) if @log.fatal?
266
350
  raise "Unknown Extension #{extension}"
267
351
  end
268
352
 
269
- new = to_doc( @target, {
353
+ new = to_doc( target, {
270
354
  :template=> @template[target],
271
355
  :filename => filename,
272
- :replacements => replacements,
356
+ :replacements => options[:replacements],
273
357
  :log => @log
274
358
  })
275
359
 
276
- case @target
360
+ case target
277
361
  when :latex
278
362
  prefix.gsub!( /^/, '%' )
279
363
  old.sub!(/\A.*#{PREFIX_ENDFLAG}/m, '<<prefix>>' ) if old
@@ -284,8 +368,8 @@ end
284
368
  when :wiki
285
369
  #~ new.squeeze!("\n")
286
370
  else
287
- @log.fatal( "Unknown target #{@target} for #{File.basename( filename )}" ) if @log.fatal?
288
- raise "Unknown target #{@target}"
371
+ @log.fatal( "Unknown target #{target} for #{File.basename( filename )}" ) if @log.fatal?
372
+ raise "Unknown target #{target}"
289
373
  end
290
374
  #Make it a bit more compact.
291
375
  #TeX requires at least 2 \n for paragraph changes
@@ -294,11 +378,10 @@ end
294
378
  if ! new.kind_of?( String )
295
379
  @log.error( "New is wrong type: #{new.inspect}" ) if @log.error?
296
380
  end
297
- @target = nil
298
381
 
299
382
  if new != old
300
383
  new.sub!( '<<prefix>>', prefix)
301
- if ( File.exist?( filename ) and !overwrite )
384
+ if ( File.exist?( filename ) and ! options[:overwrite] )
302
385
  puts "Datei #{filename} exist already \nContinue [yn]?"
303
386
  answer = $stdin.gets() if $stdin.tty? #nur bei call aus DOS-Box
304
387
  if ! ( answer =~ /[YyjJ].*/ )
@@ -316,23 +399,23 @@ end
316
399
  #~ f = File.new( filename.sub( extension, 'bak'), 'w' )
317
400
  #~ f << old
318
401
  #~ f.close
319
- Document.runtex( filename, @runtex ) if @runtex
402
+ Document.runtex( filename, @runtex ) if @runtex and target == :latex
320
403
  return true
321
404
  elsif old
322
405
  @log.info("Unchanged\t#{filename}") if @log.info?
323
406
  puts "Unchanged\t#{filename}" if @@givemessage.include?(:nochange)
324
407
  return false
325
408
  end
326
- end
409
+ end #Document#save
327
410
  #Build the content for the target format.
328
- #Supported tagret formats are:
411
+ #Supported target formats are:
329
412
  #- :latex
330
413
  #- :html
331
414
  #- :text
332
415
  #If the standard templates are used, there is a <<prefix>> left
333
416
  #(used from Document#save to include some additional information).
334
417
  #
335
- #If the method is called directly to prpare document snipplets, you can use:
418
+ #If the method is called directly to prepare document snipplets, you can use:
336
419
  # puts Document#to_doc( :latex, '<<body>>')
337
420
  #
338
421
  #It is possible to give pairs of RegExp (pattern) and a replacement to the result.
@@ -385,28 +468,35 @@ end
385
468
  attr_reader :target
386
469
 
387
470
  #Call TeX and translate the file.
388
- #Experimental
471
+ #Experimental, unpublished feature up to now.
389
472
  #Fixme: Chain
390
- def Document.runtex( filename, format = :xelatex )
473
+ def Document.runtex( filename, format = :pdflualatex )
391
474
  begin
392
- #~ require 'rtex'
393
- require 'c:/usr/script/rtex/rtex'
475
+ require 'runtex'
476
+ #~ require 'c:/usr/script/runtex/lib/runtex'
394
477
  rescue LoadError
395
- puts "Sorry, didn't find the experimental tex translation tool to translate #{filename}"
478
+ puts "Sorry, I didn't find the experimental tex translation tool to translate #{filename}"
396
479
  return false
397
480
  end
398
481
  #~ puts "Unknown texfile #{filename}" if ! filename
399
- tex = Chain.new()
400
- tex.xelatex() #default
401
- case format
402
- when :xelatex; tex.xelatex()
403
- when :pdflatex; tex.pdflatex()
404
- when :latex; tex.latex()
405
- end
406
- #~ Logger.level=3
407
- tex.file = filename
482
+ tex = RunTeX::Job_chain.new( filename,
483
+ :format => format )
484
+ #~ case format
485
+ #~ when true: tex.pdflualatex() #default
486
+ #~ when false, nil
487
+ #~ when :pdflatex; tex.pdflatex()
488
+ #~ when :pdflualatex; tex.pdflualatex()
489
+ #~ when :xelatex; tex.xelatex()
490
+ #~ when :latex; tex.latex()
491
+ #~ else
492
+ #~ puts "Undefined chain #{format.inspect} for runtex, use pdflualatex"
493
+ #~ tex.pdflualatex() #default
494
+ #~ end
495
+ #~ tex.file = filename
408
496
  begin
409
- tex.execute()
497
+ puts "Start TeX-job #{tex.basename}"
498
+ tex.log.level = Log4r::WARN
499
+ tex.start(format)
410
500
  rescue SystemExit
411
501
  puts "rescued a SystemExit exception"
412
502
  return false