deplate 0.7.3

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 (145) hide show
  1. data/AUTHORS.TXT +26 -0
  2. data/CHANGES.TXT +177 -0
  3. data/LICENSE.TXT +340 -0
  4. data/NEWS.TXT +29 -0
  5. data/README.TXT +86 -0
  6. data/TODO.TXT +202 -0
  7. data/VERSION.TXT +1 -0
  8. data/bin/deplate +3 -0
  9. data/bin/deplate.bat +2 -0
  10. data/etc/deplate.ini +361 -0
  11. data/lib/deplate.rb +31 -0
  12. data/lib/deplate/abstract-class.rb +30 -0
  13. data/lib/deplate/builtin.rb +11 -0
  14. data/lib/deplate/cache.rb +59 -0
  15. data/lib/deplate/commands.rb +693 -0
  16. data/lib/deplate/common.rb +335 -0
  17. data/lib/deplate/converter.rb +99 -0
  18. data/lib/deplate/core.rb +2705 -0
  19. data/lib/deplate/css/article.css +545 -0
  20. data/lib/deplate/css/deplate.css +699 -0
  21. data/lib/deplate/css/heading-navbar.css +29 -0
  22. data/lib/deplate/css/layout-deplate-print.css +540 -0
  23. data/lib/deplate/css/layout-deplate.css +764 -0
  24. data/lib/deplate/css/sans-serif.css +160 -0
  25. data/lib/deplate/css/serif-e.css +170 -0
  26. data/lib/deplate/css/serif-rel.css +121 -0
  27. data/lib/deplate/css/serif.css +190 -0
  28. data/lib/deplate/css/slides.css +11 -0
  29. data/lib/deplate/css/tabbar-left.css +91 -0
  30. data/lib/deplate/css/tabbar-right-ie.css +14 -0
  31. data/lib/deplate/css/tabbar-right.css +118 -0
  32. data/lib/deplate/css/tabbar-top.css +64 -0
  33. data/lib/deplate/css/tabbar.css +81 -0
  34. data/lib/deplate/css/text-sans-serif.css +154 -0
  35. data/lib/deplate/css/text-serif.css +175 -0
  36. data/lib/deplate/define.rb +439 -0
  37. data/lib/deplate/docbook.rb +738 -0
  38. data/lib/deplate/elements.rb +1355 -0
  39. data/lib/deplate/etc.rb +199 -0
  40. data/lib/deplate/external.rb +135 -0
  41. data/lib/deplate/fmt/dbk-article-4.1.2.rb +21 -0
  42. data/lib/deplate/fmt/dbk-article.rb +46 -0
  43. data/lib/deplate/fmt/dbk-book.rb +46 -0
  44. data/lib/deplate/fmt/dbk-ref.rb +105 -0
  45. data/lib/deplate/fmt/dbk-slides.rb +47 -0
  46. data/lib/deplate/fmt/dbk-snippet.rb +21 -0
  47. data/lib/deplate/fmt/html-snippet.rb +21 -0
  48. data/lib/deplate/fmt/html.rb +1696 -0
  49. data/lib/deplate/fmt/htmlsite.rb +419 -0
  50. data/lib/deplate/fmt/htmlslides.rb +21 -0
  51. data/lib/deplate/fmt/htmlwebsite.rb +70 -0
  52. data/lib/deplate/fmt/latex-snippet.rb +22 -0
  53. data/lib/deplate/fmt/latex.rb +1242 -0
  54. data/lib/deplate/fmt/php.rb +19 -0
  55. data/lib/deplate/fmt/phpsite.rb +19 -0
  56. data/lib/deplate/fmt/plain.rb +598 -0
  57. data/lib/deplate/fmt/template.rb +34 -0
  58. data/lib/deplate/fmt/xhtml10t.rb +41 -0
  59. data/lib/deplate/formatter-snippet.rb +17 -0
  60. data/lib/deplate/formatter.rb +1210 -0
  61. data/lib/deplate/input.rb +492 -0
  62. data/lib/deplate/input/deplate-headings.rb +48 -0
  63. data/lib/deplate/input/deplate-restricted.rb +70 -0
  64. data/lib/deplate/input/deplate.rb +28 -0
  65. data/lib/deplate/input/rdoc.rb +277 -0
  66. data/lib/deplate/input/template.rb +29 -0
  67. data/lib/deplate/lib/latex/highlight-extra.sty +15 -0
  68. data/lib/deplate/lib/latex/highlight-typical.sty +15 -0
  69. data/lib/deplate/lib/tabmenu.js +146 -0
  70. data/lib/deplate/locale/de.latin1 +708 -0
  71. data/lib/deplate/locale/ru.koi8-r +48 -0
  72. data/lib/deplate/locale/zh_cn.gb2312 +35 -0
  73. data/lib/deplate/macros.rb +639 -0
  74. data/lib/deplate/messages.rb +120 -0
  75. data/lib/deplate/metadata.rb +77 -0
  76. data/lib/deplate/metadata/marshal.rb +24 -0
  77. data/lib/deplate/metadata/xml.rb +42 -0
  78. data/lib/deplate/metadata/yaml.rb +26 -0
  79. data/lib/deplate/mod/anyword.rb +56 -0
  80. data/lib/deplate/mod/babelfish.rb +27 -0
  81. data/lib/deplate/mod/code-gvim.rb +52 -0
  82. data/lib/deplate/mod/code-highlight.rb +91 -0
  83. data/lib/deplate/mod/colored-log.rb +17 -0
  84. data/lib/deplate/mod/de.rb +19 -0
  85. data/lib/deplate/mod/en.rb +17 -0
  86. data/lib/deplate/mod/endnotes.rb +60 -0
  87. data/lib/deplate/mod/fr.rb +46 -0
  88. data/lib/deplate/mod/html-asciimath.rb +40 -0
  89. data/lib/deplate/mod/html-deplate-button.rb +15 -0
  90. data/lib/deplate/mod/html-headings-navbar.rb +39 -0
  91. data/lib/deplate/mod/html-obfuscate-email.rb +47 -0
  92. data/lib/deplate/mod/html-sidebar.rb +232 -0
  93. data/lib/deplate/mod/htmlslides-navbar-fh.rb +32 -0
  94. data/lib/deplate/mod/iconv.rb +35 -0
  95. data/lib/deplate/mod/imgurl.rb +30 -0
  96. data/lib/deplate/mod/inlatex-compound.rb +69 -0
  97. data/lib/deplate/mod/koma.rb +109 -0
  98. data/lib/deplate/mod/latex-emph-table-head.rb +38 -0
  99. data/lib/deplate/mod/latex-styles.rb +461 -0
  100. data/lib/deplate/mod/latex-verbatim-small.rb +29 -0
  101. data/lib/deplate/mod/makefile.rb +194 -0
  102. data/lib/deplate/mod/mark-external-urls.rb +38 -0
  103. data/lib/deplate/mod/markup-1-warn.rb +37 -0
  104. data/lib/deplate/mod/markup-1.rb +41 -0
  105. data/lib/deplate/mod/navbar-png.rb +33 -0
  106. data/lib/deplate/mod/noindent.rb +32 -0
  107. data/lib/deplate/mod/numpara.rb +40 -0
  108. data/lib/deplate/mod/particle-math.rb +34 -0
  109. data/lib/deplate/mod/php-extra.rb +44 -0
  110. data/lib/deplate/mod/pstoedit.rb +71 -0
  111. data/lib/deplate/mod/recode.rb +57 -0
  112. data/lib/deplate/mod/ru_koi8-r.rb +20 -0
  113. data/lib/deplate/mod/smiley.rb +50 -0
  114. data/lib/deplate/mod/soffice.rb +23 -0
  115. data/lib/deplate/mod/symbols-latin1.rb +58 -0
  116. data/lib/deplate/mod/symbols-od-utf-8.rb +16 -0
  117. data/lib/deplate/mod/symbols-plain.rb +58 -0
  118. data/lib/deplate/mod/symbols-sgml.rb +97 -0
  119. data/lib/deplate/mod/symbols-utf-8.rb +81 -0
  120. data/lib/deplate/mod/symbols-xml.rb +34 -0
  121. data/lib/deplate/mod/syntax-region-alt.rb +37 -0
  122. data/lib/deplate/mod/utf8.rb +49 -0
  123. data/lib/deplate/mod/validate-html.rb +35 -0
  124. data/lib/deplate/mod/xmlrpc.rb +233 -0
  125. data/lib/deplate/mod/zh-cn-autospace.rb +108 -0
  126. data/lib/deplate/mod/zh-cn.rb +59 -0
  127. data/lib/deplate/once-method.rb +44 -0
  128. data/lib/deplate/output.rb +249 -0
  129. data/lib/deplate/particles.rb +815 -0
  130. data/lib/deplate/regions.rb +1076 -0
  131. data/lib/deplate/structured.rb +763 -0
  132. data/lib/deplate/template.rb +430 -0
  133. data/lib/deplate/templates/html-doc.html +28 -0
  134. data/lib/deplate/templates/html-left-tabbar-js.html +37 -0
  135. data/lib/deplate/templates/html-left-tabbar.html +31 -0
  136. data/lib/deplate/templates/html-tabbar-right-table.html +43 -0
  137. data/lib/deplate/templates/html-tabbar-right.html +23 -0
  138. data/lib/deplate/templates/html-tabbar-top.html +43 -0
  139. data/lib/deplate/templates/html-tabbar.html +31 -0
  140. data/lib/deplate/wiki-markup.rb +117 -0
  141. data/lib/deplate/xml.rb +109 -0
  142. data/lib/deplate/zh-cn.rb +59 -0
  143. data/lib/ps2ppm.rb +239 -0
  144. data/man/man1/deplate.1 +692 -0
  145. metadata +210 -0
@@ -0,0 +1,19 @@
1
+ # php.rb
2
+ # @Author: Thomas Link (samul AT web.de)
3
+ # @Website: http://deplate.sf.net/
4
+ # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
+ # @Created: 17-M�r-2004.
6
+ # @Last Change: 23-Okt-2005.
7
+ # @Revision: 0.911
8
+
9
+ require 'deplate/fmt/html'
10
+ require 'deplate/mod/php-extra'
11
+
12
+ # A variant of the html-formatter that is suited for php output.
13
+
14
+ class Deplate::Formatter::Php < Deplate::Formatter::HTML
15
+ self.myname = "php"
16
+ self.rx = /php[0-9]?/i
17
+ self.suffix = ".php"
18
+ end
19
+
@@ -0,0 +1,19 @@
1
+ # phpsite.rb
2
+ # @Author: Thomas Link (samul AT web.de)
3
+ # @Website: http://deplate.sf.net/
4
+ # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
+ # @Created: 17-M�r-2004.
6
+ # @Last Change: 29-Okt-2005.
7
+ # @Revision: 0.916
8
+
9
+ require 'deplate/fmt/htmlsite'
10
+ require 'deplate/mod/php-extra'
11
+
12
+ # A variant of the htmlsite-formatter that is suited for php output.
13
+
14
+ class Deplate::Formatter::PhpSite < Deplate::Formatter::HTML_Site
15
+ self.myname = "phpsite"
16
+ self.rx = /php[0-9]?/i
17
+ self.suffix = ".php"
18
+ end
19
+
@@ -0,0 +1,598 @@
1
+ # fmt-html.rb
2
+ # @Author: Thomas Link (samul AT web.de)
3
+ # @Website: http://deplate.sf.net/
4
+ # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
+ # @Created: 17-M�r-2004.
6
+ # @Last Change: 28-Okt-2005.
7
+ # @Revision: 0.3450
8
+
9
+ require "deplate/formatter"
10
+
11
+ # No formatter.
12
+
13
+ class Deplate::Formatter::Plain < Deplate::Formatter
14
+ self.myname = "plain"
15
+ self.rx = /plain/i
16
+ self.suffix = ".txt"
17
+
18
+ self.label_mode = :delegate
19
+ self.label_delegate = []
20
+ self.label_once = []
21
+
22
+ def initialize(deplate, args)
23
+ super
24
+ @list_counter = {}
25
+ end
26
+
27
+ def read_bib(bibfiles)
28
+ simple_bibtex_reader(bibfiles)
29
+ end
30
+
31
+ def format_label(invoker, mode=nil, label=nil)
32
+ ""
33
+ end
34
+
35
+ def format_figure(invoker, inline=false, elt=nil)
36
+ if elt
37
+ if inline
38
+ elt
39
+ else
40
+ "\n#{elt}\n"
41
+ end
42
+ elsif inline
43
+ include_image(invoker.elt, invoker.args)
44
+ else
45
+ acc = []
46
+ fig = @deplate.msg("Figure")
47
+ caption = invoker.caption
48
+ if caption
49
+ capAbove = !(caption && caption.args && caption.args.include?("below"))
50
+ lev = invoker.level_as_string
51
+ cap = %{#{fig} #{lev}: #{caption.elt}}
52
+ else
53
+ capAbove = false
54
+ end
55
+ if caption and capAbove
56
+ acc << cap
57
+ end
58
+ acc << include_image(invoker.elt, invoker.args)
59
+ if caption and !capAbove
60
+ acc << cap
61
+ end
62
+ acc << ""
63
+ join_blocks(acc)
64
+ end
65
+ end
66
+
67
+ def include_image(file, args, inline=false)
68
+ # alt = args["alt"]
69
+ # alt ? "[#{alt}]" : "[IMG:#{file}]"
70
+ "[#{args["alt"] || file}]"
71
+ end
72
+
73
+ alias :format_IMG :format_figure
74
+
75
+ alias :format_MAKETITLE :format_title
76
+
77
+ def format_note(invoker)
78
+ indent = " #{invoker.marker * 3} "
79
+ wrap_text(indent + invoker.elt, :indent => indent) + "\n"
80
+ end
81
+
82
+ def format_table(invoker)
83
+ elt = invoker.elt
84
+ args = invoker.args
85
+ level_as_string = invoker.level_as_string
86
+ caption = invoker.caption
87
+ capAbove = !(caption && caption.args && caption.args.include?("below"))
88
+
89
+ widths = []
90
+ elt.each_with_index do |row, y|
91
+ row.cols.each_with_index do |cell, x|
92
+ case cell
93
+ when :join_left, :join_above
94
+ when :ruler, :noruler
95
+ else
96
+ t = cell.cell.split(/\n/).collect {|l| l.size}
97
+ s = t.max || 0
98
+ w = widths[x]
99
+ if !w or w < s
100
+ widths[x] = s
101
+ end
102
+ end
103
+ end
104
+ end
105
+
106
+ ruler = ["+-", widths.collect {|w| "-" * w}.join("-+-"), "-+"].join
107
+ acc = []
108
+
109
+ if caption and capAbove
110
+ acc << %{#{@deplate.msg("Table")} #{level_as_string}: #{caption.elt}}
111
+ end
112
+
113
+ acc_head = []
114
+ acc_foot = []
115
+ acc_body = []
116
+ elt.each_with_index do |r, n|
117
+ if r.is_ruler
118
+ # acc_body << ruler
119
+ elsif r.head
120
+ acc_head << formatted_table_row(n, r, widths)
121
+ elsif r.foot
122
+ acc_foot << formatted_table_row(n, r, widths)
123
+ else
124
+ acc_body << formatted_table_row(n, r, widths)
125
+ end
126
+ end
127
+
128
+ acc << ruler
129
+ unless acc_head.empty?
130
+ acc << acc_head << ruler
131
+ end
132
+ acc << acc_body
133
+ unless acc_foot.empty?
134
+ acc << ruler << acc_foot
135
+ end
136
+ acc << ruler
137
+
138
+ note = invoker.args["note"]
139
+ if note
140
+ acc << @deplate.parse_and_format(invoker, note)
141
+ end
142
+
143
+ if caption and !capAbove
144
+ acc << %{#{@deplate.msg("Table")} #{level_as_string}: #{caption.elt}}
145
+ end
146
+
147
+ acc << ""
148
+ join_blocks(acc)
149
+ end
150
+
151
+ def formatted_table_row(y, r, widths)
152
+ n = 1
153
+ i = 0
154
+ acc = []
155
+ cols = r.cols.collect do |c|
156
+ if c.kind_of?(Symbol)
157
+ c
158
+ else
159
+ c.cell.gsub(/\n*(.*)\n*/, "\\1")
160
+ end
161
+ end
162
+ while i < n
163
+ row = []
164
+ r.cols.each_with_index do |c, x|
165
+ case c
166
+ when :join_left
167
+ when :join_above
168
+ w = widths[x]
169
+ row << %{%-#{w}s} % " "
170
+ when :ruler, :noruler
171
+ w = get_width(x, c.span_x, widths)
172
+ row << %{%-#{w}s} % (i == 0 ? "-" : " ")
173
+ else
174
+ w = get_width(x, c.span_x, widths)
175
+ t = c.cell.split(/\n/)
176
+ ts = t.size
177
+ if ts > n
178
+ n = ts
179
+ end
180
+ row << %{%-#{w}s} % (t[i] || " ")
181
+ end
182
+ end
183
+ acc << "| #{row.join(" | ")} |"
184
+ i += 1
185
+ end
186
+ acc.join("\n")
187
+ end
188
+ private :formatted_table_row
189
+
190
+ def get_width(x, span, widths)
191
+ w = widths[x]
192
+ for j in 1..(span - 1)
193
+ w += 3 + widths[x + j]
194
+ end
195
+ w
196
+ end
197
+ private :get_width
198
+
199
+ def format_heading(invoker, level=nil, elt=nil)
200
+ level ||= invoker.level
201
+ elt ||= invoker.elt
202
+ ul = ["", "=", "~", "-", '"', "'"][level]
203
+ if invoker and invoker.level_as_string
204
+ elt = [invoker.level_as_string, elt].join(" ")
205
+ end
206
+ if ul
207
+ [nil, elt, ul * elt.size, nil].join("\n")
208
+ # [elt, ul * elt.size].join("\n")
209
+ else
210
+ # "\n#{elt}\n"
211
+ elt
212
+ end
213
+ end
214
+
215
+ def format_list(invoker)
216
+ printable_list(invoker) + "\n"
217
+ end
218
+
219
+ def format_list_env(invoker, type, level, what, subtype=nil)
220
+ case what
221
+ when :open
222
+ @list_counter[type] ||= []
223
+ @list_counter[type].push(0)
224
+ when :close
225
+ @list_counter[type].pop
226
+ end
227
+ nil
228
+ end
229
+
230
+ LIST_ITEMIZE_MARKERS = ['*', '*', '+', '+', '-', '-']
231
+ LIST_ITEMIZE_MARKERS_N = LIST_ITEMIZE_MARKERS.size
232
+ # <+TBD+>Alphabethic lists give strange counters if the index passes beyond 'z'
233
+ def format_list_item(invoker, type, level, item, html_class=nil, explicit=false)
234
+ # indent = format_indent(level, true)
235
+ indent = " " * level
236
+ case type
237
+ when "Numbered"
238
+ if explicit or item.explicit and item.item
239
+ # and !item.item.empty?
240
+ i = item.item
241
+ else
242
+ i = @list_counter[type][-1] += 1
243
+ case list_subtype(type, item.item)
244
+ when "a"
245
+ i = "%c" % (96 + i)
246
+ when "A"
247
+ i = "%c" % (64 + i)
248
+ else
249
+ i = i.to_s
250
+ end
251
+ end
252
+ unless i.empty?
253
+ i += ". "
254
+ end
255
+ return wrap_text([indent, i, item.body].join, :hanging => 2), :none
256
+ when "Itemize"
257
+ if explicit or item.explicit and item.item
258
+ # and !item.item.empty?
259
+ i = item.item
260
+ else
261
+ i = LIST_ITEMIZE_MARKERS[level % LIST_ITEMIZE_MARKERS_N]
262
+ end
263
+ unless i.empty?
264
+ i += " "
265
+ end
266
+ return wrap_text([indent, i, item.body].join, :hanging => 2), :none
267
+ when "Description"
268
+ accum = [indent, item.item, "\n"]
269
+ accum << indent << " " << item.body if item.body
270
+ return wrap_text(accum.join), :none
271
+ when "Paragraph"
272
+ # t = "\n" + wrap_text(indent + item.body)
273
+ t = wrap_text(indent + item.body)
274
+ return t, nil
275
+ else
276
+ raise "Unknown list type: #{item.inspect}"
277
+ end
278
+ end
279
+
280
+ def format_verbatim(invoker, text=nil)
281
+ text = invoker.elt
282
+ indent_text(text) + "\n"
283
+ end
284
+
285
+ def format_abstract(invoker)
286
+ text = invoker.elt
287
+ wrap_text(" " + text) + "\n"
288
+ end
289
+
290
+ def format_quote(invoker)
291
+ text = invoker.elt
292
+ wrap_text("> " + text, :indent => "> ") + "\n"
293
+ end
294
+
295
+ def format_title(invoker)
296
+ acc = []
297
+ for i, c in [["title", %{%s}],
298
+ ["author", %{%s}],
299
+ ["authornote", %{%s}],
300
+ ["date", %{%s}]]
301
+ ii = @deplate.get_clip(i)
302
+ acc << wrap_text(c % ii.elt) if ii
303
+ end
304
+ acc = acc.join("\n\n")
305
+ s = acc.collect {|l| l.size}.max
306
+ r = "~" * s
307
+ [r, acc, r, nil].join("\n\n")
308
+ end
309
+
310
+ def format_MAKEBIB(invoker)
311
+ format_bibliography(invoker) do |key, labels, text|
312
+ wrap_text(" " + text, :hanging => 4)
313
+ end
314
+ end
315
+
316
+ def format_IDX(invoker)
317
+ nil
318
+ end
319
+
320
+ def format_emphasize(invoker, text)
321
+ text
322
+ end
323
+
324
+ def format_code(invoker, text)
325
+ text
326
+ end
327
+
328
+ # <+TBD+> [1] + urls at the bottom
329
+ def format_url(invoker, name, dest, anchor, literal=false)
330
+ idx = @deplate.footnote_last_idx += 1
331
+ fn = "[#{idx}]"
332
+ # invoker.container.postponed_format << Proc.new do |container|
333
+ output_at(:body, :footnotes, %{#{fn} #{Deplate::HyperLink.url_anchor(dest, anchor)}})
334
+ # end
335
+ if name and !(name.empty?)
336
+ [name, fn].join
337
+ else
338
+ fn
339
+ end
340
+ end
341
+
342
+ alias :format_wiki :format_url
343
+ # def format_wiki(invoker, name, dest, anchor)
344
+ # idx = @deplate.footnote_last_idx += 1
345
+ # fn = "[#{idx}]"
346
+ # invoker.container.postponed_format << Proc.new do |container|
347
+ # output_at(:body, :footnotes, %{#{fn} #{Deplate::HyperLink.url_anchor(dest, anchor)}})
348
+ # end
349
+ # [name, fn].join(" ")
350
+ # end
351
+
352
+ def format_symbol(invoker, text)
353
+ text
354
+ end
355
+
356
+ def format_index(invoker, idx)
357
+ ""
358
+ end
359
+
360
+ def format_footnote(invoker)
361
+ elt = invoker.elt
362
+ if elt and elt.elt and elt.elt.consumed
363
+ fn = elt.elt
364
+ lab = fn.label
365
+ if !@deplate.footnotes_used.include?(lab)
366
+ idx = @deplate.footnote_last_idx +=1
367
+ lab = "[#{idx}]"
368
+ fn.n = idx
369
+ fn.label = lab
370
+ @deplate.footnotes_used << lab
371
+ text = wrap_text("#{lab} #{fn.body}", :hanging => 4)
372
+ # invoker.container.postponed_format << Proc.new do |container|
373
+ output_at(:body, :footnotes, text)
374
+ # end
375
+ end
376
+ end
377
+ return fn.label
378
+ end
379
+
380
+ def format_ref(invoker)
381
+ " " + @deplate.labels[invoker.text]
382
+ end
383
+
384
+ def format_break(invoker)
385
+ "-" * 72
386
+ end
387
+
388
+ def format_anchor(invoker)
389
+ ""
390
+ end
391
+
392
+ def format_paragraph(invoker)
393
+ wrap_text(invoker.elt) + "\n"
394
+ end
395
+
396
+ def format_header(invoker)
397
+ format_header_or_footer(invoker, :pre, :header)
398
+ nil
399
+ end
400
+
401
+ def format_footer(invoker)
402
+ format_header_or_footer(invoker, :post, :footer)
403
+ nil
404
+ end
405
+
406
+ def format_header_or_footer(invoker, type, slot)
407
+ args = invoker.args
408
+ acc = [""]
409
+ for e in invoker.elt
410
+ e.args[:dontWrapTable] = true
411
+ acc << e.format_current
412
+ end
413
+ acc << ""
414
+ output_at(type, slot, *acc)
415
+ nil
416
+ end
417
+ private :format_header_or_footer
418
+
419
+ def format_pagebreak(invoker, style=nil, major=false)
420
+ " "
421
+ end
422
+
423
+ def doublequote_open(invoker)
424
+ '"'
425
+ end
426
+
427
+ def doublequote_close(invoker)
428
+ '"'
429
+ end
430
+
431
+ def singlequote_open(invoker)
432
+ "'"
433
+ end
434
+
435
+ def singlequote_close(invoker)
436
+ "'"
437
+ end
438
+
439
+ def format_linebreak(invoker)
440
+ "\n"
441
+ end
442
+
443
+ def format_subscript(invoker)
444
+ invoker.elt
445
+ end
446
+
447
+ def format_superscript(invoker)
448
+ invoker.elt
449
+ end
450
+
451
+ def format_stacked(invoker)
452
+ invoker.elt
453
+ end
454
+
455
+ def format_pagenumber(invoker)
456
+ return ""
457
+ end
458
+
459
+ def format_list_of_contents(invoker)
460
+ format_list_of(invoker, "Table of Contents", @deplate.table_of_contents, "hd",
461
+ :flat => false)
462
+ end
463
+
464
+ alias :format_list_of_toc :format_list_of_contents
465
+
466
+ def format_list_of_minitoc(invoker)
467
+ data = @deplate.table_of_contents.find_all {|e| e.level == 1}
468
+ format_list_of(invoker, "Contents", data, "hd",
469
+ :flat => false) do |hd|
470
+ hd.args["shortcaption"] || hd.args["id"]
471
+ end
472
+ end
473
+
474
+ def format_list_of_tables(invoker)
475
+ format_list_of(invoker, "List of Tables", @deplate.table_of_tables, "tab",
476
+ :flat => true)
477
+ end
478
+
479
+ def format_list_of_figures(invoker)
480
+ format_list_of(invoker, "List of Figures", @deplate.table_of_figures, "fig",
481
+ :flat => true)
482
+ end
483
+
484
+ def format_list_of_index(invoker)
485
+ format_the_index(invoker, "Index", @deplate.index, "idx", true)
486
+ end
487
+
488
+ def format_list_of(invoker, name, data, prefix, other_args)
489
+ args = invoker.args
490
+ flat = other_args[:flat] || false
491
+ name = args["title"] || name
492
+ id = name.gsub(/\W/, "_")
493
+
494
+ acc = []
495
+ unless args["plain"] || args["noTitle"]
496
+ acc << format_heading(nil, 1, @deplate.msg(name))
497
+ end
498
+ ll = 1
499
+ accData = []
500
+ for hd in data
501
+ unless hd.nil? or hd.args["noList"]
502
+ l = if flat then 1 else hd.level end
503
+ v = nil
504
+ if block_given?
505
+ v = yield(hd)
506
+ end
507
+ unless v
508
+ v = if hd.caption then hd.caption.elt else v = hd.elt.dup end
509
+ end
510
+ v = [hd.level_as_string, v].join(" ") unless hd.plain_caption?
511
+ s = Deplate::ListItem.new("", v, "Itemize", "Itemize", l, 0, true)
512
+ accData << s
513
+ end
514
+ end
515
+ acc << printable_list(invoker, accData) << ""
516
+ join_blocks(acc)
517
+ end
518
+
519
+ def format_the_index(invoker, name, data, prefix="", flat=false, other_args={})
520
+ accum = []
521
+ chars = []
522
+
523
+ # accum << format_list_env(invoker, "Description", 0, :open)
524
+ for n, arr in sort_index_entries(data)
525
+ cht = get_first_char(n, true)
526
+ if !chars.include?(cht)
527
+ chars << cht
528
+ accum << format_list_env(invoker, "Description", 0, :close) unless accum.empty?
529
+ accum << format_heading(nil, 2, cht)
530
+ accum << format_list_env(invoker, "Description", 0, :open)
531
+ end
532
+ acc = []
533
+ for i in arr
534
+ ff = @deplate.dest
535
+ if i.file || i.level_as_string
536
+ f = i.file || invoker.output_file_name(:level_as_string => i.level_as_string,
537
+ :relative => invoker)
538
+ if f == ff
539
+ f = ""
540
+ l = i.level_as_string
541
+ if l and !l.empty?
542
+ t = l
543
+ elsif @deplate.options.multi_file_output
544
+ t = "<>"
545
+ else
546
+ t = "I"
547
+ end
548
+ else
549
+ t = @deplate.file_with_suffix(f, "", true)
550
+ end
551
+ acc << t
552
+ else
553
+ log(["Index: Neither file nor level defined: dropping", i.label], :error)
554
+ end
555
+ end
556
+ s = Deplate::ListItem.new(plain_text(n), acc.join(", "))
557
+ ot, et = format_list_item(invoker, "Description", 0, s)
558
+ accum << ot
559
+ accum << et unless et == :none
560
+ end
561
+ accum << format_list_env(invoker, "Description", 0, :close)
562
+ acc = []
563
+ acc << chars.join(" ")
564
+ acc << accum.compact.join("\n")
565
+ acc << ""
566
+ join_blocks(acc)
567
+ end
568
+ end
569
+
570
+
571
+ class Deplate::Command::MAKEBIB
572
+ accumulate_pre(self, Deplate::Formatter::Plain) do |src, array, deplate, text, match, args, cmd|
573
+ unless args["plain"]
574
+ n = deplate.msg("Bibliography")
575
+ m = [nil, "*", n]
576
+ o = Deplate::Element::Heading.new(deplate, src, n, m).finish
577
+ o.update_options(args)
578
+ deplate.options.html_makebib_heading = o
579
+ array << o
580
+ end
581
+ end
582
+ end
583
+
584
+
585
+ class Deplate::Command::LIST
586
+ accumulate_pre(self, Deplate::Formatter::Plain) do |src, array, deplate, text, match, args, cmd|
587
+ if text == "index" and !args["plain"] and !args["noTitle"]
588
+ n = deplate.msg("Index")
589
+ m = [nil, "*", n]
590
+ h = Deplate::Element::Heading.new(deplate, src, n, m).finish
591
+ h.update_options(args)
592
+ array << h
593
+ end
594
+ end
595
+ end
596
+
597
+
598
+ # vim: ff=unix