deplate 0.7.3 → 0.8

Sign up to get free protection for your applications and to get access to all the features.
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