deplate 0.7.3 → 0.8

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 (160) hide show
  1. data/AUTHORS.TXT +3 -0
  2. data/CHANGES.TXT +248 -175
  3. data/LICENSE.TXT +0 -0
  4. data/NEWS.TXT +28 -24
  5. data/README.TXT +0 -0
  6. data/TODO.TXT +174 -88
  7. data/VERSION.TXT +1 -1
  8. data/bin/deplate +0 -0
  9. data/bin/deplate.bat +0 -0
  10. data/etc/deplate.ini +91 -3
  11. data/lib/action_view/helpers/deplate.rb +45 -0
  12. data/lib/deplate.rb +6 -1
  13. data/lib/deplate/abstract-class.rb +0 -0
  14. data/lib/deplate/bib.rb +576 -0
  15. data/lib/deplate/builtin.rb +0 -0
  16. data/lib/deplate/cache.rb +55 -5
  17. data/lib/deplate/commands.rb +346 -183
  18. data/lib/deplate/common.rb +209 -48
  19. data/lib/deplate/converter.rb +12 -6
  20. data/lib/deplate/core.rb +777 -378
  21. data/lib/deplate/counters.rb +254 -0
  22. data/lib/deplate/css/article.css +4 -3
  23. data/lib/deplate/css/deplate.css +121 -5
  24. data/lib/deplate/css/heading-navbar.css +0 -0
  25. data/lib/deplate/css/layout-deplate-print.css +0 -0
  26. data/lib/deplate/css/layout-deplate.css +0 -0
  27. data/lib/deplate/css/sans-serif.css +0 -0
  28. data/lib/deplate/css/serif-e.css +0 -0
  29. data/lib/deplate/css/serif-rel.css +0 -0
  30. data/lib/deplate/css/serif.css +9 -3
  31. data/lib/deplate/css/slides.css +0 -0
  32. data/lib/deplate/css/tabbar-left.css +0 -0
  33. data/lib/deplate/css/tabbar-right-ie.css +3 -9
  34. data/lib/deplate/css/tabbar-right.css +51 -18
  35. data/lib/deplate/css/tabbar-top.css +7 -1
  36. data/lib/deplate/css/tabbar.css +0 -0
  37. data/lib/deplate/css/text-sans-serif.css +0 -0
  38. data/lib/deplate/css/text-serif.css +0 -0
  39. data/lib/deplate/define.rb +183 -177
  40. data/lib/deplate/deplate-string.rb +82 -0
  41. data/lib/deplate/docbook.rb +236 -128
  42. data/lib/deplate/elements.rb +584 -417
  43. data/lib/deplate/etc.rb +163 -101
  44. data/lib/deplate/external.rb +42 -11
  45. data/lib/deplate/fmt/dbk-article-4.1.2.rb +0 -0
  46. data/lib/deplate/fmt/dbk-article.rb +0 -0
  47. data/lib/deplate/fmt/dbk-book.rb +0 -0
  48. data/lib/deplate/fmt/dbk-ref.rb +3 -3
  49. data/lib/deplate/fmt/dbk-slides.rb +0 -0
  50. data/lib/deplate/fmt/dbk-snippet.rb +0 -0
  51. data/lib/deplate/fmt/html-snippet.rb +0 -0
  52. data/lib/deplate/fmt/html.rb +783 -550
  53. data/lib/deplate/fmt/htmlsite.rb +192 -199
  54. data/lib/deplate/fmt/htmlslides.rb +0 -0
  55. data/lib/deplate/fmt/htmlwebsite.rb +3 -3
  56. data/lib/deplate/fmt/latex-snippet.rb +0 -0
  57. data/lib/deplate/fmt/latex.rb +242 -83
  58. data/lib/deplate/fmt/null.rb +32 -0
  59. data/lib/deplate/fmt/php.rb +4 -4
  60. data/lib/deplate/fmt/phpsite.rb +6 -5
  61. data/lib/deplate/fmt/plain.rb +160 -106
  62. data/lib/deplate/fmt/template.rb +0 -0
  63. data/lib/deplate/fmt/xhtml10t.rb +0 -0
  64. data/lib/deplate/formatter-snippet.rb +0 -0
  65. data/lib/deplate/formatter.rb +613 -301
  66. data/lib/deplate/input.rb +202 -142
  67. data/lib/deplate/input/deplate-headings.rb +4 -6
  68. data/lib/deplate/input/deplate-restricted.rb +15 -9
  69. data/lib/deplate/input/deplate.rb +2 -4
  70. data/lib/deplate/input/rdoc.rb +39 -38
  71. data/lib/deplate/input/template.rb +0 -0
  72. data/lib/deplate/lib/Makefile.config +29 -0
  73. data/lib/deplate/lib/latex/deplate.sty +54 -0
  74. data/lib/deplate/lib/latex/highlight-extra.sty +0 -0
  75. data/lib/deplate/lib/latex/highlight-typical.sty +0 -0
  76. data/lib/deplate/lib/php/page-comment.inc.php +216 -0
  77. data/lib/deplate/lib/tabmenu.js +0 -0
  78. data/lib/deplate/locale/de.latin1 +155 -17
  79. data/lib/deplate/locale/ru.koi8-r +0 -0
  80. data/lib/deplate/locale/zh_cn.gb2312 +0 -0
  81. data/lib/deplate/macros.rb +133 -82
  82. data/lib/deplate/messages.rb +6 -4
  83. data/lib/deplate/metadata.rb +0 -0
  84. data/lib/deplate/metadata/marshal.rb +0 -0
  85. data/lib/deplate/metadata/xml.rb +0 -0
  86. data/lib/deplate/metadata/yaml.rb +0 -0
  87. data/lib/deplate/mod/anyword.rb +3 -3
  88. data/lib/deplate/mod/babelfish.rb +4 -4
  89. data/lib/deplate/mod/code-gvim.rb +8 -4
  90. data/lib/deplate/mod/code-highlight.rb +3 -3
  91. data/lib/deplate/mod/colored-log.rb +0 -0
  92. data/lib/deplate/mod/de.rb +2 -2
  93. data/lib/deplate/mod/en.rb +0 -0
  94. data/lib/deplate/mod/endnotes.rb +0 -0
  95. data/lib/deplate/mod/fr.rb +0 -0
  96. data/lib/deplate/mod/html-asciimath.rb +0 -0
  97. data/lib/deplate/mod/html-deplate-button.rb +0 -0
  98. data/lib/deplate/mod/html-headings-navbar.rb +5 -13
  99. data/lib/deplate/mod/html-jsmath.rb +39 -0
  100. data/lib/deplate/mod/html-obfuscate-email.rb +3 -3
  101. data/lib/deplate/mod/html-sidebar.rb +0 -0
  102. data/lib/deplate/mod/htmlslides-navbar-fh.rb +3 -3
  103. data/lib/deplate/mod/iconv.rb +0 -0
  104. data/lib/deplate/mod/imgurl.rb +4 -4
  105. data/lib/deplate/mod/inlatex-compound.rb +7 -10
  106. data/lib/deplate/mod/koma.rb +0 -0
  107. data/lib/deplate/mod/latex-emph-table-head.rb +0 -0
  108. data/lib/deplate/mod/latex-styles.rb +7 -4
  109. data/lib/deplate/mod/latex-verbatim-small.rb +0 -0
  110. data/lib/deplate/mod/makefile.rb +23 -7
  111. data/lib/deplate/mod/mark-external-urls.rb +3 -3
  112. data/lib/deplate/mod/markup-1-warn.rb +10 -10
  113. data/lib/deplate/mod/markup-1.rb +0 -0
  114. data/lib/deplate/mod/navbar-png.rb +24 -8
  115. data/lib/deplate/mod/noindent.rb +0 -0
  116. data/lib/deplate/mod/numpara.rb +0 -0
  117. data/lib/deplate/mod/particle-math.rb +4 -4
  118. data/lib/deplate/mod/php-extra.rb +46 -6
  119. data/lib/deplate/mod/pstoedit.rb +0 -0
  120. data/lib/deplate/mod/recode.rb +0 -0
  121. data/lib/deplate/mod/ru_koi8-r.rb +0 -0
  122. data/lib/deplate/mod/smart-dash.rb +26 -0
  123. data/lib/deplate/mod/smiley.rb +69 -7
  124. data/lib/deplate/mod/soffice.rb +0 -0
  125. data/lib/deplate/mod/symbols-latin1.rb +14 -23
  126. data/lib/deplate/mod/symbols-od-utf-8.rb +5 -3
  127. data/lib/deplate/mod/symbols-plain.rb +5 -35
  128. data/lib/deplate/mod/symbols-sgml.rb +8 -9
  129. data/lib/deplate/mod/symbols-utf-8.rb +8 -9
  130. data/lib/deplate/mod/symbols-xml.rb +5 -9
  131. data/lib/deplate/mod/syntax-region-alt.rb +5 -5
  132. data/lib/deplate/mod/utf8.rb +0 -0
  133. data/lib/deplate/mod/validate-html.rb +0 -0
  134. data/lib/deplate/mod/xmlrpc.rb +0 -0
  135. data/lib/deplate/mod/zh-cn-autospace.rb +18 -20
  136. data/lib/deplate/mod/zh-cn.rb +4 -6
  137. data/lib/deplate/nukumi2.rb +71 -0
  138. data/lib/deplate/once-method.rb +0 -0
  139. data/lib/deplate/output.rb +19 -21
  140. data/lib/deplate/particles.rb +178 -116
  141. data/lib/deplate/regions.rb +99 -58
  142. data/lib/deplate/skeletons.rb +122 -0
  143. data/lib/deplate/structured.rb +164 -106
  144. data/lib/deplate/template.rb +67 -43
  145. data/lib/deplate/templates/html-doc.html +0 -0
  146. data/lib/deplate/templates/html-left-tabbar-js.html +0 -0
  147. data/lib/deplate/templates/html-left-tabbar.html +0 -0
  148. data/lib/deplate/templates/html-tabbar-right-pcomments.php +22 -0
  149. data/lib/deplate/templates/html-tabbar-right-step.html +24 -0
  150. data/lib/deplate/templates/html-tabbar-right-table.html +0 -0
  151. data/lib/deplate/templates/html-tabbar-right.html +2 -4
  152. data/lib/deplate/templates/html-tabbar-top.html +0 -9
  153. data/lib/deplate/templates/html-tabbar.html +0 -0
  154. data/lib/deplate/variables.rb +127 -0
  155. data/lib/deplate/wiki-markup.rb +99 -33
  156. data/lib/deplate/xml.rb +18 -18
  157. data/lib/deplate/zh-cn.rb +0 -0
  158. data/lib/ps2ppm.rb +0 -0
  159. data/man/man1/deplate.1 +564 -474
  160. metadata +201 -186
@@ -3,8 +3,8 @@
3
3
  # @Website: http://deplate.sf.net/
4
4
  # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
5
  # @Created: 02-Aug-2004.
6
- # @Last Change: 01-Nov-2005.
7
- # @Revision: 0.636
6
+ # @Last Change: 05-Jun-2006.
7
+ # @Revision: 0.805
8
8
  #
9
9
  # = Description:
10
10
  # Misc classes
@@ -13,18 +13,20 @@
13
13
 
14
14
  module Deplate::CommonGround
15
15
  #### pointer to the master deplater
16
- attr_reader :deplate
16
+ attr_accessor :deplate
17
17
  attr_writer :container
18
+ attr_accessor :indentation
19
+ attr_accessor :indentation_level
18
20
  attr_accessor :args
19
21
  attr_accessor :styles
20
22
  attr_writer :doc_type
21
- attr_accessor :doc_slot
22
- attr_reader :label_mode
23
+ attr_writer :doc_slot
23
24
  attr_accessor :keep_whitespace
24
25
  attr_accessor :match
25
26
  attr_accessor :level_as_string
26
27
  attr_accessor :level_as_list
27
28
  attr_accessor :level
29
+ attr_reader :prototype
28
30
 
29
31
  #### the element's parsed value
30
32
  attr_accessor :elt
@@ -33,18 +35,18 @@ module Deplate::CommonGround
33
35
  attr_accessor :prologue
34
36
  attr_accessor :epilogue
35
37
  # attr_accessor :expected
36
-
38
+
37
39
  def initialize(deplate, args={})
38
40
  @deplate = deplate
39
- @level_as_string = args[:level_as_string] || deplate.get_current_heading
41
+ # @args = {:class => self.class, :self => self, :deplate => deplate}
42
+ @args = args[:args] || {:self => self, :deplate => deplate}
43
+ self.level_as_string = args[:level_as_string] || deplate.get_current_heading
40
44
  @level_as_list = args[:level_as_string] || deplate.current_heading.dup
41
45
  @elt = args[:elt] || nil
42
46
  @text = args[:text] || nil
43
47
  @styles = args[:styles] || []
44
48
  @source = args[:source] || nil
45
49
  @expected = args[:expected] || nil
46
- # @args = {:class => self.class, :self => self, :deplate => deplate}
47
- @args = args[:args] || {:self => self, :deplate => deplate}
48
50
  @container = args[:container] || nil
49
51
  @prologue = args[:prologue] || []
50
52
  @epilogue = args[:epilogue] || []
@@ -52,7 +54,6 @@ module Deplate::CommonGround
52
54
  @keep_whitespace = args[:keep_whitespace] || false
53
55
  @doc_slot = args[:doc_slot] || nil
54
56
  @doc_type = args[:doc_type] || nil
55
- @label_mode = args[:label_mode] || nil
56
57
  end
57
58
 
58
59
  def container
@@ -69,35 +70,41 @@ module Deplate::CommonGround
69
70
  end
70
71
 
71
72
  def update_styles(styles=nil)
72
- styles = @args["style"]
73
- if styles
74
- @styles += styles.split(/[ ,;]/)
73
+ styles ||= @args['style']
74
+ case styles
75
+ when String
76
+ styles = styles.split(/[ ,;]/)
77
+ end
78
+ if styles and !styles.empty?
79
+ @styles += styles
75
80
  @styles.uniq!
76
81
  end
77
82
  end
83
+ alias :push_styles :update_styles
78
84
 
79
85
  def update_id(opts={})
80
86
  my_id = @args['id']
81
- if my_id != @args[:id]
87
+ if my_id and my_id != @args[:id]
82
88
  aid = @args[:id]
83
89
  @label << aid if aid
84
90
  @args[:id] = my_id
85
91
  if block_given?
86
- yield
92
+ yield(my_id)
87
93
  end
88
94
  end
89
95
  end
90
96
 
91
- def get_explicit_id
92
- @args[:id] || @args['id']
97
+ def get_explicit_id(args=@args)
98
+ args[:id] || args['id']
93
99
  end
100
+ module_function :get_explicit_id
94
101
 
95
102
  def get_id
96
103
  # get_explicit_id || @label[0]
97
104
  get_explicit_id
98
105
  end
99
106
 
100
- def styles_as_string(sep=" ")
107
+ def styles_as_string(sep=' ')
101
108
  if @styles.empty?
102
109
  nil
103
110
  else
@@ -117,18 +124,18 @@ module Deplate::CommonGround
117
124
  if kind_of?(Deplate::Regions::Inlatex)
118
125
  return
119
126
  elsif expected
120
- if defined?(@prototype)
121
- cc = element_or_particle(@prototype)
122
- cl = @prototype.class
127
+ if defined?(invoker.prototype)
128
+ cc = element_or_particle(invoker.prototype || self)
129
+ cl = invoker.prototype.class
123
130
  else
124
131
  cc = expected
125
132
  cl = self.class
126
133
  end
127
134
  unless kind_of?(expected) or expected != cc
128
- invoker.log(["Expected something of a different class", expected, cl, invoker.class], :error)
135
+ invoker.log(['Expected something of a different class', expected, cl, invoker.class], :error)
129
136
  end
130
137
  # else
131
- # invoker.log("Neither element nor particle", :anyway)
138
+ # invoker.log('Neither element nor particle', :anyway)
132
139
  end
133
140
  end
134
141
 
@@ -137,18 +144,18 @@ module Deplate::CommonGround
137
144
  obj = obj.elt.first
138
145
  end
139
146
  for c in [Deplate::Element, Deplate::Particle]
140
- if obj.kind_of?(c)
147
+ if obj == c or obj === c or obj.kind_of?(c)
141
148
  return c
142
149
  end
143
150
  end
144
- log(["Neither block element nor inline text particle", self.class], :error)
151
+ log(['Neither block element nor inline text particle', self.class, obj], :error)
145
152
  return nil
146
153
  end
147
154
 
148
155
  def doc_slot(default=:body, overwrite=false)
149
156
  if (overwrite and default) or !@doc_slot
150
- if @args["slot"]
151
- @doc_slot = @args["slot"]
157
+ if @args['slot']
158
+ @doc_slot = @args['slot']
152
159
  else
153
160
  @doc_slot = default
154
161
  end
@@ -158,7 +165,7 @@ module Deplate::CommonGround
158
165
 
159
166
  def doc_type(default=:body, overwrite=false)
160
167
  if (overwrite and default) or !@doc_type
161
- @doc_type = @args["type"] || default
168
+ @doc_type = @args['type'] || default
162
169
  end
163
170
  return @doc_type
164
171
  end
@@ -176,7 +183,7 @@ module Deplate::CommonGround
176
183
  end
177
184
 
178
185
  def warn_unpexpected(expected, got)
179
- msg = "Expected %s but got %s" % [expected, got]
186
+ msg = 'Expected %s but got %s' % [expected, got]
180
187
  if @invoker
181
188
  @invoker.log(msg, :error)
182
189
  else
@@ -189,7 +196,7 @@ module Deplate::CommonGround
189
196
  end
190
197
 
191
198
  def plain_caption?
192
- @deplate.variables["headings"] == "plain" or @args["plain"]
199
+ @deplate.variables['headings'] == 'plain' or @args['plain']
193
200
  end
194
201
 
195
202
  def output_file_name(args={})
@@ -201,7 +208,7 @@ module Deplate::CommonGround
201
208
  if level_as_string
202
209
  rv = @deplate.file_name_by_level(level_as_string)
203
210
  elsif label
204
- rv = @deplate.get_filename_for_label(self, label) || ""
211
+ rv = @deplate.get_filename_for_label(self, label) || ''
205
212
  else
206
213
  if obj.kind_of?(Deplate::BaseParticle) or obj.kind_of?(Deplate::BaseParticle)
207
214
  obj = obj.container
@@ -214,16 +221,21 @@ module Deplate::CommonGround
214
221
  if rv
215
222
  if basename
216
223
  return File.basename(rv)
217
- elsif relative == ""
224
+ elsif relative == ''
218
225
  return File.basename(rv)
219
226
  elsif relative
220
- dir = File.dirname(relative.output_file_name)
221
- return @deplate.relative_path(rv, dir)
227
+ out = relative.output_file_name
228
+ if out == rv
229
+ return ''
230
+ else
231
+ dir = File.dirname(out)
232
+ return @deplate.relative_path(rv, dir)
233
+ end
222
234
  else
223
235
  return rv
224
236
  end
225
237
  else
226
- log(["Internal error in #output_file_name", obj.class.name], :error)
238
+ log(['Internal error in #output_file_name', obj.class.name], :error)
227
239
  raise Exception
228
240
  end
229
241
  end
@@ -239,8 +251,34 @@ module Deplate::CommonGround
239
251
  location = [output_file_name(args)]
240
252
  id = get_id
241
253
  location << id if id
242
- location.join("#")
254
+ location.join('#')
255
+ end
256
+
257
+ def post_process_text(text, args=@args)
258
+ sub = args['sub'] || args['s']
259
+ if sub
260
+ sep = sub[0..0]
261
+ rx, rp = sub[1..-1].split(Regexp.new(Regexp.quote(sep)))
262
+ text.gsub!(Regexp.new(rx), rp)
263
+ end
264
+ tr = args['tr']
265
+ if tr
266
+ sep = tr[0..0]
267
+ rx, rp = tr[1..-1].split(Regexp.new(Regexp.quote(sep)))
268
+ text.tr!(rx, rp)
269
+ end
270
+ if args['upcase']
271
+ text.upcase!
272
+ end
273
+ if args['downcase']
274
+ text.downcase!
275
+ end
276
+ if args['capitalize']
277
+ text.capitalize!
278
+ end
279
+ text
243
280
  end
281
+ module_function :post_process_text
244
282
  end
245
283
 
246
284
 
@@ -264,10 +302,10 @@ module Deplate::CommonParticle
264
302
  return @deplate.formatter.format_particle(agent, *args)
265
303
  end
266
304
 
267
- def format_as_string(object)
305
+ def format_as_string
268
306
  # <+TBD+>: Doesn't work because the particles don't give info
269
307
  # about their formatting method
270
- # @deplate.formatter.format_particle_as_string(object)
308
+ # @deplate.formatter.format_particle_as_string(self)
271
309
  end
272
310
  end
273
311
 
@@ -277,11 +315,11 @@ module Deplate::CommonElement
277
315
  #### accumulated lines
278
316
  attr_accessor :accum
279
317
 
280
- def format_as_string(object)
281
- klass = object.class
318
+ def format_as_string
319
+ klass = self.class
282
320
  fm = klass.formatter
283
321
  if fm
284
- return @deplate.formatter.format_element_as_string(object, fm)
322
+ return @deplate.formatter.format_element_as_string(fm, self)
285
323
  else
286
324
  log(["Don't know how to format an object of this class", klass], :error)
287
325
  end
@@ -298,29 +336,151 @@ module Deplate::CommonElement
298
336
  end
299
337
 
300
338
  def update_id(opts={})
301
- super {@deplate.add_label(self, get_explicit_id, @level_as_string, :anyway => true)}
339
+ super do |id|
340
+ @deplate.add_label(self, get_explicit_id, level_as_string, :anyway => true)
341
+ end
302
342
  end
303
343
  end
304
344
 
305
345
 
306
- class Deplate::Base
307
- include Deplate::CommonGround
346
+ class Deplate::CommonObject
347
+ @class_attributes = {}
348
+ @class_meta_attributes = {}
308
349
 
309
350
  class << self
310
- attr_reader :formatter, :formatter2
351
+ def class_attributes
352
+ class_attributes_ensure
353
+ @class_attributes
354
+ end
355
+ # protected :class_attributes
356
+
357
+ def class_meta_attributes
358
+ class_attributes_ensure
359
+ @class_meta_attributes
360
+ end
361
+
362
+ def class_attributes=(value)
363
+ class_attributes_ensure
364
+ @class_attributes = value
365
+ end
366
+ protected :class_attributes=
367
+
368
+ def class_attributes_ensure
369
+ @class_attributes ||= {}
370
+ @class_meta_attributes ||= {}
371
+ end
372
+ private :class_attributes_ensure
373
+
374
+ def class_attribute(name, default=nil, args=nil)
375
+ class_attributes_ensure
376
+ @class_attributes[name] = default
377
+ if args
378
+ @class_meta_attributes ||= {}
379
+ if @class_meta_attributes[name]
380
+ @class_meta_attributes[name].merge!(args)
381
+ else
382
+ @class_meta_attributes[name] = args
383
+ end
384
+ end
385
+ end
311
386
 
387
+ def inherited(subclass)
388
+ subclass.class_attributes.merge!(@class_attributes.dup) do |key, ov, nv|
389
+ end
390
+ subclass.class_meta_attributes.merge!(@class_meta_attributes.dup) do |key, ov, nv|
391
+ end
392
+ end
393
+
394
+ def method_missing(method, *args)
395
+ # p "DBG method_missing: #{method} #{args}"
396
+ class_attributes_ensure
397
+ method_s = method.to_s
398
+ if method_s =~ /=$/
399
+ method_s = method_s[0..-2]
400
+ method_y = method_s.intern
401
+ setter = true
402
+ else
403
+ method_y = method
404
+ setter = false
405
+ end
406
+ if @class_attributes.keys.include?(method_y)
407
+ pre = "hook_pre_#{method}"
408
+ if respond_to?(pre)
409
+ send(pre, *args)
410
+ end
411
+ if setter
412
+ if args.size > 1
413
+ raise "Wrong number of arguments: #{method} #{args}"
414
+ end
415
+ rv = @class_attributes[method_y] = args[0]
416
+ else
417
+ rv = @class_attributes[method_y]
418
+ end
419
+ post = "hook_post_#{method}"
420
+ if respond_to?(post)
421
+ send(post, *args)
422
+ end
423
+ # p "DBG method_missing => #{rv}"
424
+ return rv
425
+ else
426
+ super
427
+ end
428
+ end
429
+
430
+ def respond_to?(symbol, *args)
431
+ class_attributes_ensure
432
+ super or @class_attributes.keys.include?(symbol)
433
+ end
434
+ end
435
+ end
436
+
437
+
438
+ class Deplate::Base < Deplate::CommonObject
439
+ include Deplate::CommonGround
440
+
441
+ class << self
312
442
  def set_rx(rx)
313
- @rx = rx
443
+ self.rx = rx
314
444
  end
315
445
 
446
+ def def_get(name, arg=nil)
447
+ mname = "get_#{name}"
448
+ case arg
449
+ when Array
450
+ define_method(mname) do
451
+ for i in arg
452
+ rv = @match[i]
453
+ return rv if rv
454
+ end
455
+ end
456
+ when Proc
457
+ define_method(mname, arg)
458
+ when Numeric
459
+ define_method(mname) {@match[arg]}
460
+ else
461
+ define_method(mname) {nil}
462
+ end
463
+ end
464
+
316
465
  def set_formatter(formatter, alt=false)
317
466
  if alt
318
- @formatter2 = formatter
467
+ self.formatter2 = formatter
319
468
  else
320
- @formatter = formatter
469
+ self.formatter = formatter
321
470
  end
322
471
  end
323
472
  end
473
+
474
+ def label_mode
475
+ self.class.label_mode
476
+ end
477
+
478
+ class_attribute :formatter
479
+ class_attribute :formatter2
480
+ class_attribute :rx
481
+ class_attribute :indentation_mode, :auto
482
+ class_attribute :label_mode
483
+ class_attribute :volatile, false
324
484
  end
325
485
 
326
486
 
@@ -330,6 +490,7 @@ end
330
490
 
331
491
 
332
492
  class Deplate::BaseParticle < Deplate::Base
493
+ class_attribute :pre_condition, nil
333
494
  include Deplate::CommonParticle
334
495
  end
335
496
 
@@ -4,8 +4,8 @@
4
4
  # @Website: http://deplate.sf.net/
5
5
  # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
6
6
  # @Created: 14-Okt-2004.
7
- # @Last Change: 23-Okt-2005.
8
- # @Revision: 0.125
7
+ # @Last Change: 07-Apr-2006.
8
+ # @Revision: 0.128
9
9
  #
10
10
  # = Description
11
11
  # = Usage
@@ -56,10 +56,8 @@ class Deplate::Converter
56
56
  @deplate = Deplate::Core.new(formatter, :options => @options)
57
57
  vars = args[:variables]
58
58
  vars ||= @master.variables.dup if @master
59
- @deplate.instance_eval do
60
- @variables = vars if vars
61
- end
62
- @formatter_method = "to_%s" % formatter.gsub(/[^a-zA-Z_]/, "_")
59
+ @deplate.instance_eval {@variables = vars} if vars
60
+ @formatter_method = "to_%s" % formatter.gsub(/[^[:alnum:]_]/, "_")
63
61
  end
64
62
 
65
63
  def convert_string(string)
@@ -69,6 +67,14 @@ class Deplate::Converter
69
67
  def convert_file(filename)
70
68
  @deplate.send(@formatter_method, nil, filename)
71
69
  end
70
+
71
+ def method_missing(method, *args, &block)
72
+ if @deplate.respond_to?(method)
73
+ @deplate.send(method, *args, &block)
74
+ else
75
+ super
76
+ end
77
+ end
72
78
  end
73
79
 
74
80
  # if __FILE__ == $0