deplate 0.7.3 → 0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS.TXT +3 -0
- data/CHANGES.TXT +248 -175
- data/LICENSE.TXT +0 -0
- data/NEWS.TXT +28 -24
- data/README.TXT +0 -0
- data/TODO.TXT +174 -88
- data/VERSION.TXT +1 -1
- data/bin/deplate +0 -0
- data/bin/deplate.bat +0 -0
- data/etc/deplate.ini +91 -3
- data/lib/action_view/helpers/deplate.rb +45 -0
- data/lib/deplate.rb +6 -1
- data/lib/deplate/abstract-class.rb +0 -0
- data/lib/deplate/bib.rb +576 -0
- data/lib/deplate/builtin.rb +0 -0
- data/lib/deplate/cache.rb +55 -5
- data/lib/deplate/commands.rb +346 -183
- data/lib/deplate/common.rb +209 -48
- data/lib/deplate/converter.rb +12 -6
- data/lib/deplate/core.rb +777 -378
- data/lib/deplate/counters.rb +254 -0
- data/lib/deplate/css/article.css +4 -3
- data/lib/deplate/css/deplate.css +121 -5
- data/lib/deplate/css/heading-navbar.css +0 -0
- data/lib/deplate/css/layout-deplate-print.css +0 -0
- data/lib/deplate/css/layout-deplate.css +0 -0
- data/lib/deplate/css/sans-serif.css +0 -0
- data/lib/deplate/css/serif-e.css +0 -0
- data/lib/deplate/css/serif-rel.css +0 -0
- data/lib/deplate/css/serif.css +9 -3
- data/lib/deplate/css/slides.css +0 -0
- data/lib/deplate/css/tabbar-left.css +0 -0
- data/lib/deplate/css/tabbar-right-ie.css +3 -9
- data/lib/deplate/css/tabbar-right.css +51 -18
- data/lib/deplate/css/tabbar-top.css +7 -1
- data/lib/deplate/css/tabbar.css +0 -0
- data/lib/deplate/css/text-sans-serif.css +0 -0
- data/lib/deplate/css/text-serif.css +0 -0
- data/lib/deplate/define.rb +183 -177
- data/lib/deplate/deplate-string.rb +82 -0
- data/lib/deplate/docbook.rb +236 -128
- data/lib/deplate/elements.rb +584 -417
- data/lib/deplate/etc.rb +163 -101
- data/lib/deplate/external.rb +42 -11
- data/lib/deplate/fmt/dbk-article-4.1.2.rb +0 -0
- data/lib/deplate/fmt/dbk-article.rb +0 -0
- data/lib/deplate/fmt/dbk-book.rb +0 -0
- data/lib/deplate/fmt/dbk-ref.rb +3 -3
- data/lib/deplate/fmt/dbk-slides.rb +0 -0
- data/lib/deplate/fmt/dbk-snippet.rb +0 -0
- data/lib/deplate/fmt/html-snippet.rb +0 -0
- data/lib/deplate/fmt/html.rb +783 -550
- data/lib/deplate/fmt/htmlsite.rb +192 -199
- data/lib/deplate/fmt/htmlslides.rb +0 -0
- data/lib/deplate/fmt/htmlwebsite.rb +3 -3
- data/lib/deplate/fmt/latex-snippet.rb +0 -0
- data/lib/deplate/fmt/latex.rb +242 -83
- data/lib/deplate/fmt/null.rb +32 -0
- data/lib/deplate/fmt/php.rb +4 -4
- data/lib/deplate/fmt/phpsite.rb +6 -5
- data/lib/deplate/fmt/plain.rb +160 -106
- data/lib/deplate/fmt/template.rb +0 -0
- data/lib/deplate/fmt/xhtml10t.rb +0 -0
- data/lib/deplate/formatter-snippet.rb +0 -0
- data/lib/deplate/formatter.rb +613 -301
- data/lib/deplate/input.rb +202 -142
- data/lib/deplate/input/deplate-headings.rb +4 -6
- data/lib/deplate/input/deplate-restricted.rb +15 -9
- data/lib/deplate/input/deplate.rb +2 -4
- data/lib/deplate/input/rdoc.rb +39 -38
- data/lib/deplate/input/template.rb +0 -0
- data/lib/deplate/lib/Makefile.config +29 -0
- data/lib/deplate/lib/latex/deplate.sty +54 -0
- data/lib/deplate/lib/latex/highlight-extra.sty +0 -0
- data/lib/deplate/lib/latex/highlight-typical.sty +0 -0
- data/lib/deplate/lib/php/page-comment.inc.php +216 -0
- data/lib/deplate/lib/tabmenu.js +0 -0
- data/lib/deplate/locale/de.latin1 +155 -17
- data/lib/deplate/locale/ru.koi8-r +0 -0
- data/lib/deplate/locale/zh_cn.gb2312 +0 -0
- data/lib/deplate/macros.rb +133 -82
- data/lib/deplate/messages.rb +6 -4
- data/lib/deplate/metadata.rb +0 -0
- data/lib/deplate/metadata/marshal.rb +0 -0
- data/lib/deplate/metadata/xml.rb +0 -0
- data/lib/deplate/metadata/yaml.rb +0 -0
- data/lib/deplate/mod/anyword.rb +3 -3
- data/lib/deplate/mod/babelfish.rb +4 -4
- data/lib/deplate/mod/code-gvim.rb +8 -4
- data/lib/deplate/mod/code-highlight.rb +3 -3
- data/lib/deplate/mod/colored-log.rb +0 -0
- data/lib/deplate/mod/de.rb +2 -2
- data/lib/deplate/mod/en.rb +0 -0
- data/lib/deplate/mod/endnotes.rb +0 -0
- data/lib/deplate/mod/fr.rb +0 -0
- data/lib/deplate/mod/html-asciimath.rb +0 -0
- data/lib/deplate/mod/html-deplate-button.rb +0 -0
- data/lib/deplate/mod/html-headings-navbar.rb +5 -13
- data/lib/deplate/mod/html-jsmath.rb +39 -0
- data/lib/deplate/mod/html-obfuscate-email.rb +3 -3
- data/lib/deplate/mod/html-sidebar.rb +0 -0
- data/lib/deplate/mod/htmlslides-navbar-fh.rb +3 -3
- data/lib/deplate/mod/iconv.rb +0 -0
- data/lib/deplate/mod/imgurl.rb +4 -4
- data/lib/deplate/mod/inlatex-compound.rb +7 -10
- data/lib/deplate/mod/koma.rb +0 -0
- data/lib/deplate/mod/latex-emph-table-head.rb +0 -0
- data/lib/deplate/mod/latex-styles.rb +7 -4
- data/lib/deplate/mod/latex-verbatim-small.rb +0 -0
- data/lib/deplate/mod/makefile.rb +23 -7
- data/lib/deplate/mod/mark-external-urls.rb +3 -3
- data/lib/deplate/mod/markup-1-warn.rb +10 -10
- data/lib/deplate/mod/markup-1.rb +0 -0
- data/lib/deplate/mod/navbar-png.rb +24 -8
- data/lib/deplate/mod/noindent.rb +0 -0
- data/lib/deplate/mod/numpara.rb +0 -0
- data/lib/deplate/mod/particle-math.rb +4 -4
- data/lib/deplate/mod/php-extra.rb +46 -6
- data/lib/deplate/mod/pstoedit.rb +0 -0
- data/lib/deplate/mod/recode.rb +0 -0
- data/lib/deplate/mod/ru_koi8-r.rb +0 -0
- data/lib/deplate/mod/smart-dash.rb +26 -0
- data/lib/deplate/mod/smiley.rb +69 -7
- data/lib/deplate/mod/soffice.rb +0 -0
- data/lib/deplate/mod/symbols-latin1.rb +14 -23
- data/lib/deplate/mod/symbols-od-utf-8.rb +5 -3
- data/lib/deplate/mod/symbols-plain.rb +5 -35
- data/lib/deplate/mod/symbols-sgml.rb +8 -9
- data/lib/deplate/mod/symbols-utf-8.rb +8 -9
- data/lib/deplate/mod/symbols-xml.rb +5 -9
- data/lib/deplate/mod/syntax-region-alt.rb +5 -5
- data/lib/deplate/mod/utf8.rb +0 -0
- data/lib/deplate/mod/validate-html.rb +0 -0
- data/lib/deplate/mod/xmlrpc.rb +0 -0
- data/lib/deplate/mod/zh-cn-autospace.rb +18 -20
- data/lib/deplate/mod/zh-cn.rb +4 -6
- data/lib/deplate/nukumi2.rb +71 -0
- data/lib/deplate/once-method.rb +0 -0
- data/lib/deplate/output.rb +19 -21
- data/lib/deplate/particles.rb +178 -116
- data/lib/deplate/regions.rb +99 -58
- data/lib/deplate/skeletons.rb +122 -0
- data/lib/deplate/structured.rb +164 -106
- data/lib/deplate/template.rb +67 -43
- data/lib/deplate/templates/html-doc.html +0 -0
- data/lib/deplate/templates/html-left-tabbar-js.html +0 -0
- data/lib/deplate/templates/html-left-tabbar.html +0 -0
- data/lib/deplate/templates/html-tabbar-right-pcomments.php +22 -0
- data/lib/deplate/templates/html-tabbar-right-step.html +24 -0
- data/lib/deplate/templates/html-tabbar-right-table.html +0 -0
- data/lib/deplate/templates/html-tabbar-right.html +2 -4
- data/lib/deplate/templates/html-tabbar-top.html +0 -9
- data/lib/deplate/templates/html-tabbar.html +0 -0
- data/lib/deplate/variables.rb +127 -0
- data/lib/deplate/wiki-markup.rb +99 -33
- data/lib/deplate/xml.rb +18 -18
- data/lib/deplate/zh-cn.rb +0 -0
- data/lib/ps2ppm.rb +0 -0
- data/man/man1/deplate.1 +564 -474
- metadata +201 -186
data/lib/deplate/regions.rb
CHANGED
@@ -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: 08-Mai-2004.
|
6
|
-
# @Last Change:
|
7
|
-
# @Revision: 0.
|
6
|
+
# @Last Change: 05-Jun-2006.
|
7
|
+
# @Revision: 0.1662
|
8
8
|
|
9
9
|
# Description:
|
10
10
|
#
|
@@ -18,9 +18,9 @@
|
|
18
18
|
class Deplate::Region < Deplate::Element
|
19
19
|
@@regions = {}
|
20
20
|
|
21
|
+
class_attribute :line_cont, true
|
22
|
+
|
21
23
|
class << self
|
22
|
-
attr_reader :line_cont
|
23
|
-
|
24
24
|
def regions
|
25
25
|
@@regions
|
26
26
|
end
|
@@ -30,7 +30,7 @@ class Deplate::Region < Deplate::Element
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def set_line_cont(val=true)
|
33
|
-
|
33
|
+
self.line_cont=val
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -133,10 +133,16 @@ class Deplate::Region::SecondOrder < Deplate::Region
|
|
133
133
|
process_etc
|
134
134
|
@elt = @elt.collect {|e| e.process}.compact
|
135
135
|
@prototype = @elt.first
|
136
|
-
|
136
|
+
unless label_mode == :none
|
137
|
+
@prototype.put_label(@label) if @prototype
|
138
|
+
end
|
137
139
|
return self
|
138
140
|
end
|
139
141
|
|
142
|
+
def push_styles(*args)
|
143
|
+
@elt.each {|e| e.push_styles(*args)}
|
144
|
+
end
|
145
|
+
|
140
146
|
alias format_special format_compound
|
141
147
|
end
|
142
148
|
|
@@ -146,7 +152,6 @@ module Deplate::Regions; end
|
|
146
152
|
class Deplate::Regions::UNKNOWN < Deplate::Region
|
147
153
|
register_as 'UNKNOWN'
|
148
154
|
set_formatter :format_unknown
|
149
|
-
set_line_cont
|
150
155
|
|
151
156
|
def finish
|
152
157
|
# finish_accum
|
@@ -161,7 +166,7 @@ class Deplate::Regions::UNKNOWN < Deplate::Region
|
|
161
166
|
end
|
162
167
|
|
163
168
|
def format_special
|
164
|
-
format_unknown(self)
|
169
|
+
@deplate.formatter.format_unknown(self)
|
165
170
|
end
|
166
171
|
end
|
167
172
|
|
@@ -173,13 +178,8 @@ class Deplate::Regions::Doc < Deplate::Region
|
|
173
178
|
|
174
179
|
def finish
|
175
180
|
finish_accum
|
176
|
-
id = @args[
|
177
|
-
@deplate
|
178
|
-
@deplate.register_metadata(@source,
|
179
|
-
"type" => "variable",
|
180
|
-
"name" => id,
|
181
|
-
"value" => @accum
|
182
|
-
)
|
181
|
+
id = @args['id'] || @regNote
|
182
|
+
Deplate::Command::VAR.set_variable(@deplate, id, @accum, @args, @source)
|
183
183
|
return nil
|
184
184
|
end
|
185
185
|
end
|
@@ -187,7 +187,9 @@ end
|
|
187
187
|
|
188
188
|
class Deplate::Regions::Native < Deplate::Region
|
189
189
|
register_as 'Native'
|
190
|
+
register_as 'Ins'
|
190
191
|
set_line_cont false
|
192
|
+
self.label_mode = :once
|
191
193
|
|
192
194
|
def finish
|
193
195
|
finish_accum
|
@@ -207,9 +209,49 @@ class Deplate::Regions::Native < Deplate::Region
|
|
207
209
|
end
|
208
210
|
|
209
211
|
|
212
|
+
class Deplate::Regions::Write < Deplate::Regions::Native
|
213
|
+
register_as 'Write'
|
214
|
+
self.label_mode = :none
|
215
|
+
|
216
|
+
def finish
|
217
|
+
@vars = @deplate.variables.dup
|
218
|
+
super
|
219
|
+
end
|
220
|
+
|
221
|
+
def format_special
|
222
|
+
@elt = Deplate::Template.new(:template => @elt,
|
223
|
+
:source => @source,
|
224
|
+
:container => self)
|
225
|
+
Deplate::Define.let_variables(@deplate, @vars) do
|
226
|
+
@elt = @elt.fill_in(@deplate, :source => @source)
|
227
|
+
end
|
228
|
+
@elt = @elt.join("\n")
|
229
|
+
fname = @args['file'] || @args['id']
|
230
|
+
if @deplate.is_allowed?(['w', 'W'], :logger => self)
|
231
|
+
if fname
|
232
|
+
unless @deplate.is_allowed?('W')
|
233
|
+
fname = File.basename(fname)
|
234
|
+
end
|
235
|
+
fname = Deplate::Core.get_out_fullname(fname, nil, @deplate.options)
|
236
|
+
sfx = @args['suffix'] || @args['sfx']
|
237
|
+
fname = [fname, sfx.gsub(/[^[:alnum:].]/, '_')].join('.') if sfx
|
238
|
+
mode = @args['append'] ? 'a' : 'w'
|
239
|
+
@deplate.write_file(fname, mode) do |io|
|
240
|
+
io.puts(@elt)
|
241
|
+
end
|
242
|
+
else
|
243
|
+
log(['No filename'], :error)
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
end
|
249
|
+
|
250
|
+
|
210
251
|
class Deplate::Regions::Code < Deplate::Regions::Native
|
211
252
|
register_as 'Code'
|
212
|
-
set_line_cont false
|
253
|
+
# set_line_cont false
|
254
|
+
self.label_mode = :once
|
213
255
|
|
214
256
|
@@code_idx = 0
|
215
257
|
@general_highlighter = {}
|
@@ -229,7 +271,6 @@ class Deplate::Regions::Code < Deplate::Regions::Native
|
|
229
271
|
|
230
272
|
def setup(region)
|
231
273
|
super
|
232
|
-
@label_mode = :once
|
233
274
|
@syntax = @deplate.variables["codeSyntax"]
|
234
275
|
@style = @deplate.variables["codeStyle"]
|
235
276
|
end
|
@@ -257,7 +298,7 @@ class Deplate::Regions::Code < Deplate::Regions::Native
|
|
257
298
|
fcode = @deplate.auxiliary_filename("code_#{id}")
|
258
299
|
fout = @deplate.auxiliary_filename("code_#{id}.#{fmt_name}")
|
259
300
|
else
|
260
|
-
log("No
|
301
|
+
log("No ID given", :anyway)
|
261
302
|
@@code_idx += 1
|
262
303
|
fcode = @deplate.auxiliary_filename(@deplate.auxiliary_auto_filename('code', @@code_idx, @elt, @syntax))
|
263
304
|
fout = @deplate.auxiliary_filename(@deplate.auxiliary_auto_filename('code', @@code_idx, @elt, fmt_name))
|
@@ -305,15 +346,14 @@ end
|
|
305
346
|
class Deplate::Regions::Inlatex < Deplate::Region
|
306
347
|
register_as 'Inlatex'
|
307
348
|
register_as 'Ltx'
|
308
|
-
set_line_cont
|
309
349
|
set_formatter :format_inlatex
|
350
|
+
self.label_mode = :once
|
310
351
|
|
311
352
|
attr_reader :content_type
|
312
353
|
|
313
354
|
def setup(region)
|
314
355
|
super
|
315
356
|
@content_type = @args["type"] || "fig"
|
316
|
-
@label_mode = :once
|
317
357
|
end
|
318
358
|
|
319
359
|
def finish
|
@@ -346,7 +386,6 @@ class Deplate::Regions::Img < Deplate::Region
|
|
346
386
|
register_as 'Image'
|
347
387
|
register_as 'Fig'
|
348
388
|
register_as 'Figure'
|
349
|
-
set_line_cont
|
350
389
|
|
351
390
|
@@ImgAutoN = 0
|
352
391
|
@@ImgSuffix = {}
|
@@ -514,42 +553,42 @@ module Deplate::Regions::Img_R
|
|
514
553
|
end
|
515
554
|
|
516
555
|
|
517
|
-
class Deplate::Regions::Footnote < Deplate::Region
|
556
|
+
class Deplate::Regions::Footnote < Deplate::Region::SecondOrder
|
557
|
+
# class Deplate::Regions::Footnote < Deplate::Region
|
518
558
|
register_as 'Footnote'
|
519
559
|
register_as 'Fn'
|
520
|
-
|
560
|
+
self.label_mode = :none
|
521
561
|
|
522
|
-
|
562
|
+
attr_accessor :fn_label, :fn_n, :fn_consumed
|
523
563
|
|
524
564
|
def finish
|
525
|
-
|
526
|
-
|
527
|
-
id = @args['id'] ||= @regNote
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
565
|
+
rv = super
|
566
|
+
@prototype = Deplate::Element
|
567
|
+
id = (@args['id'] ||= @regNote)
|
568
|
+
if id
|
569
|
+
@deplate.footnotes[id] = rv
|
570
|
+
# @deplate.register_metadata(src,
|
571
|
+
# "type" => "footnote",
|
572
|
+
# "name" => id,
|
573
|
+
# "value" => accum
|
574
|
+
# )
|
575
|
+
else
|
576
|
+
log('Missing arguments', :error)
|
577
|
+
end
|
535
578
|
return nil
|
536
579
|
end
|
537
|
-
|
538
|
-
def process_particles(&block)
|
539
|
-
@elt.body = ( @elt.body.collect(&block) ).join
|
540
|
-
end
|
541
580
|
end
|
542
581
|
|
543
582
|
|
544
583
|
class Deplate::Regions::Foreach < Deplate::Region
|
545
584
|
register_as 'Foreach'
|
546
|
-
|
585
|
+
self.label_mode = :once
|
547
586
|
|
548
587
|
def finish
|
549
588
|
finish_accum
|
550
589
|
@id = @args['@id'].split(/[\s,]+/)
|
551
590
|
unless @id
|
552
|
-
log('No
|
591
|
+
log('No ID given', :error)
|
553
592
|
return nil
|
554
593
|
end
|
555
594
|
doc = @args['doc']
|
@@ -605,7 +644,6 @@ end
|
|
605
644
|
|
606
645
|
class Deplate::Regions::Table < Deplate::Region
|
607
646
|
register_as 'Table'
|
608
|
-
set_line_cont
|
609
647
|
|
610
648
|
def finish
|
611
649
|
finish_accum
|
@@ -618,6 +656,10 @@ class Deplate::Regions::Table < Deplate::Region
|
|
618
656
|
end
|
619
657
|
end
|
620
658
|
|
659
|
+
# duck method
|
660
|
+
def register_caption
|
661
|
+
end
|
662
|
+
|
621
663
|
class << self
|
622
664
|
def make_char_separated(instance, accum, sep=nil)
|
623
665
|
sep = Regexp.new(sep || "\t")
|
@@ -625,9 +667,9 @@ class Deplate::Regions::Table < Deplate::Region
|
|
625
667
|
beg = 1 + instance.source.begin
|
626
668
|
file = instance.source.file
|
627
669
|
table = instance.deplate.parsed_array_from_strings(acc, beg, file)
|
628
|
-
n
|
670
|
+
n = table[0]
|
629
671
|
n.collapse = false
|
630
|
-
n.
|
672
|
+
n.unify_props(instance)
|
631
673
|
return n
|
632
674
|
end
|
633
675
|
end
|
@@ -639,6 +681,7 @@ class Deplate::Regions::Verbatim < Deplate::Region
|
|
639
681
|
register_as 'Verb'
|
640
682
|
set_formatter :format_verbatim
|
641
683
|
set_line_cont false
|
684
|
+
class_attribute :indentation_mode, :none
|
642
685
|
|
643
686
|
def finish
|
644
687
|
finish_accum
|
@@ -649,8 +692,11 @@ class Deplate::Regions::Verbatim < Deplate::Region
|
|
649
692
|
|
650
693
|
def process
|
651
694
|
process_etc
|
652
|
-
@elt
|
653
|
-
|
695
|
+
@elt = @elt.join("\n")
|
696
|
+
if @args['removeBackslashes']
|
697
|
+
@elt = Deplate::Core.remove_backslashes(@elt)
|
698
|
+
end
|
699
|
+
margin = @args['wrap'] || @verbatimMargin
|
654
700
|
if margin
|
655
701
|
@elt = @deplate.formatter.wrap_text(@elt, :margin => margin.to_i)
|
656
702
|
end
|
@@ -663,7 +709,6 @@ end
|
|
663
709
|
class Deplate::Regions::Abstract < Deplate::Region::SecondOrder
|
664
710
|
register_as 'Abstract'
|
665
711
|
set_formatter :format_abstract, true
|
666
|
-
set_line_cont
|
667
712
|
|
668
713
|
def finish
|
669
714
|
rv = super
|
@@ -676,9 +721,9 @@ class Deplate::Regions::Abstract < Deplate::Region::SecondOrder
|
|
676
721
|
end
|
677
722
|
else
|
678
723
|
@deplate.register_metadata(@source,
|
679
|
-
|
680
|
-
|
681
|
-
|
724
|
+
'type' => 'abstract',
|
725
|
+
'lang' => lang,
|
726
|
+
'value' => @accum
|
682
727
|
)
|
683
728
|
end
|
684
729
|
rv
|
@@ -691,13 +736,11 @@ class Deplate::Regions::Quote < Deplate::Region::SecondOrder
|
|
691
736
|
register_as 'Quote'
|
692
737
|
register_as 'Qu'
|
693
738
|
set_formatter :format_quote, true
|
694
|
-
set_line_cont
|
695
739
|
end
|
696
740
|
|
697
741
|
|
698
742
|
class Deplate::Regions::R < Deplate::Region
|
699
743
|
register_as 'R'
|
700
|
-
set_line_cont
|
701
744
|
|
702
745
|
@@RAutoN = 0
|
703
746
|
|
@@ -824,10 +867,13 @@ class Deplate::Regions::R < Deplate::Region
|
|
824
867
|
@accum.collect! do |r|
|
825
868
|
if r =~ /^\s*$/
|
826
869
|
"| |"
|
827
|
-
elsif @deplate.variables['rScanTable']
|
870
|
+
elsif @args['guess'] or @args['scanTable'] or @deplate.variables['rScanTable']
|
828
871
|
cells = scn.match(r)
|
829
872
|
if cells
|
830
|
-
cells = cells.captures.collect
|
873
|
+
cells = cells.captures.collect do |c|
|
874
|
+
v = c.strip
|
875
|
+
v.empty? ? @deplate.formatter.table_empty_cell : v
|
876
|
+
end
|
831
877
|
['|', cells.join(' | '), '|'].join(' ')
|
832
878
|
else
|
833
879
|
puts @accum.join("\n")
|
@@ -953,7 +999,6 @@ end
|
|
953
999
|
|
954
1000
|
class Deplate::Regions::Ruby < Deplate::Region
|
955
1001
|
register_as 'Ruby'
|
956
|
-
set_line_cont
|
957
1002
|
|
958
1003
|
def finish
|
959
1004
|
finish_accum
|
@@ -980,7 +1025,6 @@ class Deplate::Regions::Clip < Deplate::Region::SecondOrder
|
|
980
1025
|
register_as 'Clip'
|
981
1026
|
register_as 'Put'
|
982
1027
|
register_as 'Set'
|
983
|
-
set_line_cont
|
984
1028
|
|
985
1029
|
# attr_accessor :prototype
|
986
1030
|
attr_reader :is_template, :inline
|
@@ -1028,7 +1072,6 @@ end
|
|
1028
1072
|
class Deplate::Regions::Header < Deplate::Region
|
1029
1073
|
register_as 'Header'
|
1030
1074
|
set_formatter :format_header
|
1031
|
-
set_line_cont
|
1032
1075
|
|
1033
1076
|
def finish
|
1034
1077
|
finish_accum
|
@@ -1050,14 +1093,12 @@ end
|
|
1050
1093
|
class Deplate::Regions::Footer < Deplate::Regions::Header
|
1051
1094
|
register_as 'Footer'
|
1052
1095
|
set_formatter :format_footer
|
1053
|
-
set_line_cont
|
1054
1096
|
end
|
1055
1097
|
|
1056
1098
|
|
1057
1099
|
class Deplate::Regions::Swallow < Deplate::Region
|
1058
1100
|
register_as 'Swallow'
|
1059
1101
|
register_as 'Skip'
|
1060
|
-
set_line_cont
|
1061
1102
|
|
1062
1103
|
def finish
|
1063
1104
|
finish_accum
|
@@ -0,0 +1,122 @@
|
|
1
|
+
# skeletons.rb
|
2
|
+
# @Author: Thomas Link (samul AT web de)
|
3
|
+
# @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
|
4
|
+
# @Created: 28-Apr-2006.
|
5
|
+
# @Last Change: 03-Jun-2006.
|
6
|
+
# @Revision: 0.147
|
7
|
+
|
8
|
+
# Skeletons:
|
9
|
+
class Deplate::SkeletonExpander < Deplate::CommonObject
|
10
|
+
def initialize(deplate)
|
11
|
+
@deplate = deplate
|
12
|
+
@formatter = deplate.formatter
|
13
|
+
@formatter_name = @formatter.class.myname
|
14
|
+
@max_iteration = 5
|
15
|
+
@skeletons = deplate.options.skeletons
|
16
|
+
@skeletons_tmpl = {}
|
17
|
+
@skel_ids = {}
|
18
|
+
@skel_names = @skeletons.collect {|n| Regexp.escape(n)}.join('|')
|
19
|
+
@rx = Deplate::Rx.builder("\\{\\{((#@skel_names)\\b(?>\\\\\\{|\\\\\\}|\\\\\\\\|[^{}]+?|{#})*)\\}\\}|^[[:blank:]]+",
|
20
|
+
Regexp::MULTILINE, 5, false)
|
21
|
+
srand(Time.now.to_i)
|
22
|
+
end
|
23
|
+
|
24
|
+
def require_skeleton(name, source=nil)
|
25
|
+
skels = @skeletons_tmpl[@formatter_name] ||= {}
|
26
|
+
# names = @deplate.formatter_family_members.collect {|f| "#{name}.#{f}"}
|
27
|
+
# names << name
|
28
|
+
# names.each do |name|
|
29
|
+
t = skels[name] ||= load_skeleton(name)
|
30
|
+
return t if t
|
31
|
+
# end
|
32
|
+
Deplate::Core.log(['Unknown skeleton', name], :error, source)
|
33
|
+
end
|
34
|
+
|
35
|
+
def load_skeleton(name)
|
36
|
+
# tmpl = @deplate.skeletons[name]
|
37
|
+
tmpl = @deplate.find_in_lib(name, :pwd => true)
|
38
|
+
if tmpl and File.exist?(tmpl)
|
39
|
+
t = File.open(tmpl) {|io| io.read}
|
40
|
+
return t
|
41
|
+
end
|
42
|
+
return nil
|
43
|
+
end
|
44
|
+
|
45
|
+
def expand(string, source=nil, iterations=@max_iteration)
|
46
|
+
if string.empty?
|
47
|
+
return string
|
48
|
+
end
|
49
|
+
expanded = false
|
50
|
+
indent = ''
|
51
|
+
string.gsub!(@rx) do |s|
|
52
|
+
text = $1
|
53
|
+
if text
|
54
|
+
expansion = expand_skeleton(text, indent, source)
|
55
|
+
if expansion
|
56
|
+
expanded ||= true
|
57
|
+
expansion
|
58
|
+
else
|
59
|
+
text
|
60
|
+
end
|
61
|
+
else
|
62
|
+
indent = s
|
63
|
+
end
|
64
|
+
end
|
65
|
+
if expanded and iterations > 0
|
66
|
+
return expand(string, source, iterations - 1)
|
67
|
+
else
|
68
|
+
return string
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def split_name_args(string)
|
73
|
+
m = Regexp.new("^(#@skel_names)\s*").match(string)
|
74
|
+
name = m[1]
|
75
|
+
args = m.post_match.strip
|
76
|
+
if args
|
77
|
+
args = Deplate::Core.remove_backslashes(args)
|
78
|
+
args, body = @deplate.input.parse_args(args)
|
79
|
+
args['@body'] = body
|
80
|
+
else
|
81
|
+
args = {}
|
82
|
+
end
|
83
|
+
return name, args
|
84
|
+
end
|
85
|
+
|
86
|
+
def expand_skeleton(string, indent='', source=nil)
|
87
|
+
name, args = split_name_args(string)
|
88
|
+
if @skeletons.include?(name)
|
89
|
+
special = "skeleton_#{name}"
|
90
|
+
text = if respond_to?(special)
|
91
|
+
send(special, args)
|
92
|
+
else
|
93
|
+
skeleton = require_skeleton(name, source)
|
94
|
+
if skeleton
|
95
|
+
tmpl = Deplate::Template.new(:template => skeleton,
|
96
|
+
:source => source)
|
97
|
+
accum = Deplate::Define.let_variables(@deplate, args) do
|
98
|
+
tmpl.fill_in(@deplate, :source => source)
|
99
|
+
end
|
100
|
+
accum.flatten!
|
101
|
+
accum.join("\n")
|
102
|
+
else
|
103
|
+
nil
|
104
|
+
end
|
105
|
+
end
|
106
|
+
if text
|
107
|
+
return @formatter.indent_text(text, :hanging => true, :indenttail => indent)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
return nil
|
111
|
+
end
|
112
|
+
|
113
|
+
def skeleton_id(args)
|
114
|
+
name = args['name'] || args['id'] || args['@body']
|
115
|
+
sep = '_' * (4 + rand(4))
|
116
|
+
# rid = Time.now.to_f
|
117
|
+
rid = '%x' % rand.to_s[2..-1].to_i
|
118
|
+
@skel_ids[name] ||= [sep, name, rid, sep].join('_')
|
119
|
+
return @skel_ids[name]
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|