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,108 @@
1
+ # zh-cn-autospace.rb
2
+ # @Author: Thomas Link
3
+ # @Website: http://deplate.sf.net/
4
+ # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
+ # @Created: 01-Aug-2004.
6
+ # @Last Change: 23-Okt-2005.
7
+ # @Revision: 0.222
8
+
9
+ require "deplate/zh-cn"
10
+
11
+ class Deplate::Formatter
12
+ attr_reader :cjk_space, :cjk_nospace
13
+ def hook_pre_setup_zh_cn_autospace
14
+ @cjk_space = " "
15
+ @cjk_nospace = ""
16
+ end
17
+ end
18
+
19
+ class Deplate::Formatter::LaTeX
20
+ def hook_pre_setup_zh_cn_autospace
21
+ @cjk_space = "~"
22
+ @cjk_nospace = " "
23
+ end
24
+ end
25
+
26
+ class Deplate::Core
27
+ @cjk_nonchars = "%c-%c" % [33, 0xA0]
28
+ @cjk_rx_C = Regexp.new("[^%s]" % @cjk_nonchars)
29
+ @cjk_rx_a = Regexp.new("[%s]" % @cjk_nonchars)
30
+ class << self
31
+ attr_reader :cjk_nonchars, :cjk_rx_a, :cjk_rx_C
32
+ end
33
+
34
+ def module_initialize_zh_cn_autospace
35
+ class << self
36
+ def join_particles(particles)
37
+ acc = []
38
+ prev = ""
39
+ prev_cjk = false
40
+ particles.delete("")
41
+ particles.each_with_index do |e, i|
42
+ if e == " "
43
+ enext = particles[i + 1]
44
+ if prev == " " or enext == " "
45
+ elsif @formatter.cjk_smart_blanks and prev =~ Deplate::Core.cjk_rx_C and enext =~ Deplate::Core.cjk_rx_C
46
+ acc << @formatter.cjk_nospace
47
+ else
48
+ acc << @formatter.cjk_space
49
+ end
50
+ else
51
+ acc << e
52
+ prev = e
53
+ end
54
+ end
55
+ return acc.join
56
+ end
57
+ end
58
+ end
59
+
60
+ def hook_pre_setup_zh_cn_particles
61
+ register_particle(Deplate::Particle::Space)
62
+ register_particle(Deplate::Particle::NonCJK)
63
+ end
64
+
65
+ def hook_late_require_zh_cn
66
+ module_initialize_zh_cn_autospace
67
+ call_methods_matching(@formatter, /^hook_pre_setup_zh_cn/)
68
+ end
69
+ end
70
+
71
+ class Deplate::Element
72
+ def join_lines(accum)
73
+ accum.join(" ")
74
+ end
75
+ end
76
+
77
+ class Deplate::Particle::Space < Deplate::Particle
78
+ # @@particles << self
79
+ @rx = /^ /
80
+ def setup
81
+ @elt = " "
82
+ end
83
+ end
84
+
85
+ class Deplate::Particle::NonCJK < Deplate::Particle
86
+ # @@particles << self
87
+ @rx = /^([#{Deplate::Core.cjk_nonchars}])/o
88
+ @part = nil
89
+
90
+ class << self
91
+ attr_accessor :part
92
+ end
93
+
94
+ def setup
95
+ @elt = @match[0]
96
+ end
97
+
98
+ def process
99
+ unless self.class.part
100
+ particles = @@particles + @@particles_extended
101
+ particles.delete(self.class)
102
+ self.class.part = particles
103
+ end
104
+ @elt = @deplate.parse_with_particles(@container, @elt, self.class.part)
105
+ @elt = @deplate.format_particles(@elt)
106
+ end
107
+ end
108
+
@@ -0,0 +1,59 @@
1
+ # zh-cn.rb
2
+ # @Author: Thomas Link
3
+ # @Website: http://deplate.sf.net/
4
+ # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
+ # @Created: 01-Aug-2004.
6
+ # @Last Change: 23-Okt-2005.
7
+ # @Revision: 0.161
8
+
9
+ require "deplate/zh-cn"
10
+
11
+ class Deplate::Element
12
+ alias join_lines_re_zh_cn join_lines
13
+ def join_lines(accum)
14
+ if @deplate.formatter.matches?("latex")
15
+ return accum.join
16
+ else
17
+ return join_lines_re_zh_cn(accum)
18
+ end
19
+ end
20
+ end
21
+
22
+ class Deplate::Particle::SwallowedSpace < Deplate::Particle
23
+ # @@particles << self
24
+ @rx = /^ +/
25
+
26
+ def setup
27
+ @elt = @deplate.formatter.cjk_smart_blanks ? "" : " "
28
+ end
29
+ end
30
+
31
+ class Deplate::Particle::Space < Deplate::Particle
32
+ # @@particles << self
33
+ @rx = /^~/
34
+
35
+ def setup
36
+ @elt = "~"
37
+ end
38
+
39
+ def process
40
+ if @deplate.formatter.matches?("latex")
41
+ super
42
+ else
43
+ @elt = " "
44
+ end
45
+ end
46
+ end
47
+
48
+ class Deplate::Core
49
+ def hook_post_input_initialize_zh_cn_particles
50
+ register_particle(Deplate::Particle::Space)
51
+ register_particle(Deplate::Particle::SwallowedSpace)
52
+ end
53
+
54
+ def hook_late_require_zh_cn
55
+ call_methods_matching(self, /^hook_post_input_initialize_zh_cn_/)
56
+ call_methods_matching(@formatter, /^hook_pre_setup_zh_cn/)
57
+ end
58
+ end
59
+
@@ -0,0 +1,44 @@
1
+ # once-method.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: 25-M�r-2005.
6
+ # @Last Change: 23-Okt-2005.
7
+ # @Revision: 0.22
8
+ #
9
+ # = Description
10
+ # Provide poor-man's once methods vor Module class.
11
+
12
+ class Module
13
+ def once_method(*args)
14
+ for sym in args
15
+ module_eval <<-CODE
16
+ alias :#{sym}__once :#{sym}
17
+ private :#{sym}__once
18
+ def #{sym}(*args)
19
+ @@__once ||= {}
20
+ if (rv = @@__once["#{sym}"])
21
+ return rv
22
+ else
23
+ return (@@__once["#{sym}"] = #{sym}__once(*args))
24
+ end
25
+ end
26
+ CODE
27
+ end
28
+ end
29
+ end
30
+
31
+ if __FILE__ == $0
32
+ class TestOnce
33
+ def foo(x)
34
+ puts "This is foo being executed"
35
+ return "bar" * x
36
+ end
37
+ once_method :foo
38
+ end
39
+ t = TestOnce.new
40
+ p t.foo(2)
41
+ p t.foo(3)
42
+ p t.foo(3)
43
+ end
44
+
@@ -0,0 +1,249 @@
1
+ # output.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: 04-Dez-2004.
6
+ # @Last Change: 02-Nov-2005.
7
+ # @Revision: 0.245
8
+
9
+ require 'forwardable'
10
+ require 'deplate/metadata'
11
+
12
+ # Description:
13
+ #
14
+ # Usage:
15
+ #
16
+ # TODO:
17
+ #
18
+ # CHANGES:
19
+ #
20
+
21
+ class Deplate::Output
22
+ extend Forwardable
23
+
24
+ attr_accessor :pre_matter, :body, :post_matter
25
+ attr_accessor :top_heading, :index
26
+ attr_accessor :destination
27
+ # , :metadata
28
+
29
+ def_delegator(:@deplate, :slot_by_name)
30
+ def_delegator(:@deplate, :log)
31
+ def_delegator(:@deplate, :call_methods_matching)
32
+
33
+ def_delegator(:@meta, :merge_metadata)
34
+ def_delegator(:@meta, :push_metadata)
35
+ def_delegator(:@meta, :metadata_available?)
36
+ def_delegator(:@meta, :metadata_destination)
37
+ def_delegator(:@meta, :format_metadata)
38
+ def_delegator(:@meta, :metadata)
39
+ def_delegator(:@meta, :metadata=)
40
+
41
+ class << self
42
+ def reset
43
+ @@pre_matter_template = Array.new
44
+ @@body_template = Array.new
45
+ @@post_matter_template = Array.new
46
+ @@idx = 0
47
+ end
48
+ end
49
+
50
+ def initialize(deplate, inherited_output=nil)
51
+ @@idx += 1
52
+ @deplate = deplate
53
+ @formatter = deplate.formatter
54
+ @options = deplate.options
55
+ @variables = deplate.variables
56
+ @templates = deplate.templates
57
+ @meta = Deplate::Metadata.new(deplate, self)
58
+ # @metadata = {}
59
+ @destination = nil
60
+ @index = nil
61
+ if inherited_output
62
+ @pre_matter = inherited_output.pre_matter.dup
63
+ @body = @@body_template.dup
64
+ @post_matter = inherited_output.post_matter.dup
65
+ else
66
+ @pre_matter = @@pre_matter_template.dup
67
+ @body = @@body_template.dup
68
+ @post_matter = @@post_matter_template.dup
69
+ end
70
+ @top_heading = nil
71
+ @body_empty_done = false
72
+ end
73
+
74
+ def body_flush
75
+ call_methods_matching(@formatter, /^hook_pre_body_flush_/)
76
+ save!
77
+ log(["Flushing formatted elements", @destination], :debug)
78
+ process
79
+ call_methods_matching(@formatter, /^hook_post_body_flush_/)
80
+ end
81
+
82
+ def save!
83
+ if do_i_feel_empty?
84
+ @output = nil
85
+ else
86
+ call_methods_matching(@formatter, /^hook_pre_output_save_/)
87
+ @index ||= @top_heading.top_index
88
+ @destination ||= @top_heading.destination
89
+ @pre_matter = @pre_matter.dup
90
+ @body = @body.dup
91
+ @post_matter = @post_matter.dup
92
+ call_methods_matching(@formatter, /^hook_post_output_save_/)
93
+ end
94
+ log(["Save output", destination], :debug)
95
+ end
96
+
97
+ def process
98
+ if @options.included
99
+ peel!
100
+ else
101
+ tmpl = @options.template || @variables["template"]
102
+ if tmpl
103
+ @variables["@idx"] = @index[0].to_s
104
+ if File.exist?(tmpl)
105
+ fill_in_template(tmpl)
106
+ else
107
+ template_file = @templates[tmpl]
108
+ if template_file
109
+ log(["Using template", template_file], :debug)
110
+ fill_in_template(template_file)
111
+ else
112
+ log(["Unknown template", tmpl], :error)
113
+ flatten!
114
+ end
115
+ end
116
+ else
117
+ flatten!
118
+ end
119
+ end
120
+ end
121
+
122
+ def body_empty?
123
+ @body_empty = @body.compact.flatten.empty?
124
+ log(["Body is empty", caller[0..5]], :debug) if @body_empty
125
+ @body_empty
126
+ end
127
+
128
+ def do_i_feel_empty?
129
+ if @body_empty_done
130
+ @body_empty
131
+ else
132
+ @body_empty_done = true
133
+ body_empty?
134
+ end
135
+ end
136
+ private :do_i_feel_empty?
137
+
138
+ def peel!
139
+ unless do_i_feel_empty?
140
+ @output = @body.flatten.compact
141
+ end
142
+ end
143
+
144
+ def flatten!
145
+ unless do_i_feel_empty?
146
+ @output = [@pre_matter, @body, @post_matter].flatten.compact
147
+ end
148
+ end
149
+
150
+ def fill_in_template(template_file)
151
+ @deplate.maintain_current_top(@top_heading) do
152
+ unless do_i_feel_empty?
153
+ t = Deplate::Template.new(:file => template_file)
154
+ @output = t.fill_in(@deplate,
155
+ :pre => @pre_matter,
156
+ :body => @body,
157
+ :post => @post_matter)
158
+ end
159
+ end
160
+ end
161
+
162
+ def join(sep)
163
+ @output.join(sep) if @output
164
+ end
165
+
166
+ def pos_and_array(type, pos)
167
+ if type == :array
168
+ arr = [pos]
169
+ pos = 0
170
+ else
171
+ pos = slot_by_name(pos)
172
+ unless pos or pos == 0
173
+ log(["Undefined slot", pos, type, text], :error) if pos.nil?
174
+ return
175
+ end
176
+ case type
177
+ when :body, "body"
178
+ arr = @body
179
+ when :pre, "preMatter", "pre"
180
+ arr = @pre_matter
181
+ when :post, "postMatter", "post"
182
+ arr = @post_matter
183
+ when :array
184
+ else
185
+ raise "Unknown type: #{type}"
186
+ end
187
+ end
188
+ return pos, arr
189
+ end
190
+
191
+ def empty_at?(type, pos)
192
+ pos, arr = pos_and_array(type, pos)
193
+ slot = arr[pos]
194
+ return slot.nil? || slot.empty?
195
+ end
196
+
197
+ def add_at(type, pos, *text)
198
+ text = text.compact
199
+ unless text.empty?
200
+ negative = false
201
+ pos, arr = pos_and_array(type, pos)
202
+ if pos
203
+ negative = pos ? pos < 0 : false
204
+ if text.first == :prepend
205
+ negative = true
206
+ text.shift
207
+ end
208
+ pos = pos.abs
209
+ if arr[pos].nil?
210
+ arr[pos] = text
211
+ else
212
+ for t in text
213
+ if block_given?
214
+ arr[pos] = yield(arr[pos], t)
215
+ elsif negative
216
+ arr[pos].unshift(t)
217
+ else
218
+ arr[pos] << t
219
+ end
220
+ end
221
+ end
222
+ @formatter.join_blocks(text)
223
+ else
224
+ log(["No slot", text], :error)
225
+ end
226
+ end
227
+ end
228
+
229
+ def union_at(type, pos, *text)
230
+ add_at(type, pos, *text) do |arr, t|
231
+ if !arr.include?(t)
232
+ arr << t
233
+ else
234
+ arr
235
+ end
236
+ end
237
+ end
238
+
239
+ def set_at(type, pos, *text)
240
+ add_at(type, pos, *text) do |arr, t|
241
+ t
242
+ end
243
+ end
244
+
245
+ end
246
+
247
+ Deplate::Output.reset
248
+
249
+