deplate 0.8 → 0.8.1
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.
- data/AUTHORS.TXT +19 -16
- data/CHANGES.TXT +214 -248
- data/NEWS.TXT +47 -30
- data/README.TXT +0 -1
- data/TODO.TXT +93 -20
- data/VERSION.TXT +1 -1
- data/bin/deplate.exy +192 -0
- data/etc/deplate.ini +70 -9
- data/lib/action_view/helpers/deplate.rb +33 -33
- data/lib/deplate.rb +2 -2
- data/lib/deplate/bib.rb +72 -41
- data/lib/deplate/builtin.rb +1 -1
- data/lib/deplate/cache.rb +1 -1
- data/lib/deplate/commands.rb +161 -102
- data/lib/deplate/common.rb +93 -7
- data/lib/deplate/converter.rb +10 -4
- data/lib/deplate/core.rb +215 -108
- data/lib/deplate/counters.rb +23 -8
- data/lib/deplate/css/article.css +9 -5
- data/lib/deplate/css/deplate.css +37 -3
- data/lib/deplate/css/heading-navbar.css +1 -1
- data/lib/deplate/css/highstep.css +18 -0
- data/lib/deplate/css/htmldoc.css +43 -0
- data/lib/deplate/css/layout-deplate-print.css +1 -1
- data/lib/deplate/css/layout-deplate.css +1 -1
- data/lib/deplate/css/play.css +101 -0
- data/lib/deplate/css/sans-serif.css +1 -1
- data/lib/deplate/css/serif-e.css +1 -1
- data/lib/deplate/css/serif-rel.css +1 -1
- data/lib/deplate/css/serif.css +1 -1
- data/lib/deplate/css/slides.css +1 -1
- data/lib/deplate/css/styles.css +4 -0
- data/lib/deplate/css/tabbar-right.css +54 -8
- data/lib/deplate/css/tabbar-top.css +28 -9
- data/lib/deplate/css/text-sans-serif.css +1 -1
- data/lib/deplate/css/text-serif.css +1 -1
- data/lib/deplate/define.rb +71 -38
- data/lib/deplate/deplate-string.rb +3 -3
- data/lib/deplate/docbook.rb +9 -9
- data/lib/deplate/elements.rb +173 -84
- data/lib/deplate/etc.rb +6 -8
- data/lib/deplate/external.rb +9 -5
- data/lib/deplate/fmt/dbk-article-4.1.2.rb +4 -3
- data/lib/deplate/fmt/dbk-article.rb +9 -8
- data/lib/deplate/fmt/dbk-book.rb +4 -3
- data/lib/deplate/fmt/dbk-ref.rb +5 -4
- data/lib/deplate/fmt/dbk-slides.rb +4 -3
- data/lib/deplate/fmt/dbk-snippet.rb +4 -3
- data/lib/deplate/fmt/html-snippet.rb +1 -1
- data/lib/deplate/fmt/html.rb +186 -46
- data/lib/deplate/fmt/htmlsite.rb +19 -9
- data/lib/deplate/fmt/htmlslides.rb +1 -1
- data/lib/deplate/fmt/htmlwebsite.rb +1 -1
- data/lib/deplate/fmt/latex-dramatist.rb +175 -0
- data/lib/deplate/fmt/latex-snippet.rb +1 -1
- data/lib/deplate/fmt/latex.rb +132 -80
- data/lib/deplate/fmt/null.rb +1 -1
- data/lib/deplate/fmt/php.rb +1 -1
- data/lib/deplate/fmt/phpsite.rb +1 -1
- data/lib/deplate/fmt/plain.rb +16 -9
- data/lib/deplate/fmt/template.rb +1 -1
- data/lib/deplate/fmt/xhtml10t.rb +1 -1
- data/lib/deplate/formatter-snippet.rb +1 -1
- data/lib/deplate/formatter.rb +272 -81
- data/lib/deplate/guesslanguage.rb +57 -0
- data/lib/deplate/input.rb +205 -50
- data/lib/deplate/input/deplate-headings.rb +9 -11
- data/lib/deplate/input/deplate-restricted.rb +3 -23
- data/lib/deplate/input/deplate.rb +1 -1
- data/lib/deplate/input/play.rb +208 -0
- data/lib/deplate/input/rdoc.rb +37 -15
- data/lib/deplate/input/template.rb +6 -11
- data/lib/deplate/lib/Makefile.config +53 -4
- data/lib/deplate/lib/html/parbreak +3 -0
- data/lib/deplate/lib/javascript/StepwiseNextPage.js +8 -0
- data/lib/deplate/lib/javascript/StepwiseNextPage_confirm.js +8 -0
- data/lib/deplate/lib/latex/deplate.sty +36 -0
- data/lib/deplate/lib/latex/parbreak +6 -0
- data/lib/deplate/lib/php/page-comment.inc.php +5 -5
- data/lib/deplate/lib/plain/parbreak +6 -0
- data/lib/deplate/locale/de.latin1 +87 -15
- data/lib/deplate/locale/de.latin1_data +60 -0
- data/lib/deplate/locale/en.latin1_data +46 -0
- data/lib/deplate/locale/fr.latin1_data +74 -0
- data/lib/deplate/locale/ru.koi8-r_data +63 -0
- data/lib/deplate/locale/{zh_cn.gb2312 → zh_CN.GB2312} +0 -0
- data/lib/deplate/macros.rb +106 -32
- data/lib/deplate/messages.rb +22 -8
- data/lib/deplate/metadata.rb +1 -1
- data/lib/deplate/metadata/marshal.rb +1 -1
- data/lib/deplate/metadata/xml.rb +1 -1
- data/lib/deplate/metadata/yaml.rb +1 -1
- data/lib/deplate/mod/anyword.rb +4 -4
- data/lib/deplate/mod/babelfish.rb +1 -1
- data/lib/deplate/mod/code-gvim.rb +14 -8
- data/lib/deplate/mod/code-gvim71.rb +52 -0
- data/lib/deplate/mod/code-highlight.rb +35 -19
- data/lib/deplate/mod/colored-log.rb +1 -1
- data/lib/deplate/mod/endnotes.rb +1 -1
- data/lib/deplate/mod/guesslanguage.rb +75 -0
- data/lib/deplate/mod/html-asciimath.rb +1 -1
- data/lib/deplate/mod/html-deplate-button.rb +1 -1
- data/lib/deplate/mod/html-headings-navbar.rb +1 -1
- data/lib/deplate/mod/html-highstep.rb +43 -0
- data/lib/deplate/mod/html-jsmath.rb +1 -1
- data/lib/deplate/mod/html-obfuscate-email.rb +1 -1
- data/lib/deplate/mod/html-sidebar.rb +1 -1
- data/lib/deplate/mod/iconv.rb +1 -1
- data/lib/deplate/mod/imgurl.rb +1 -1
- data/lib/deplate/mod/inlatex-compound.rb +1 -1
- data/lib/deplate/mod/koma.rb +4 -4
- data/lib/deplate/mod/{de.rb → lang-de.rb} +1 -1
- data/lib/deplate/mod/{en.rb → lang-en.rb} +1 -1
- data/lib/deplate/mod/{ru_koi8-r.rb → lang-ru-koi8-r.rb} +1 -1
- data/lib/deplate/mod/lang-ru.rb +9 -0
- data/lib/deplate/mod/{zh-cn-autospace.rb → lang-zh_CN-autospace.rb} +3 -3
- data/lib/deplate/mod/{zh-cn.rb → lang-zh_CN.rb} +8 -8
- data/lib/deplate/mod/latex-emph-table-head.rb +1 -1
- data/lib/deplate/mod/latex-styles.rb +6 -6
- data/lib/deplate/mod/latex-verbatim-small.rb +1 -1
- data/lib/deplate/mod/linkmap.rb +128 -0
- data/lib/deplate/mod/makefile.rb +23 -22
- data/lib/deplate/mod/mark-external-urls.rb +13 -7
- data/lib/deplate/mod/markup-1-warn.rb +1 -1
- data/lib/deplate/mod/markup-1.rb +1 -1
- data/lib/deplate/mod/navbar-png.rb +5 -4
- data/lib/deplate/mod/noindent.rb +1 -1
- data/lib/deplate/mod/numpara.rb +1 -1
- data/lib/deplate/mod/particle-math.rb +1 -1
- data/lib/deplate/mod/php-extra.rb +1 -1
- data/lib/deplate/mod/pstoedit.rb +1 -1
- data/lib/deplate/mod/recode.rb +1 -1
- data/lib/deplate/mod/smart-dash.rb +1 -1
- data/lib/deplate/mod/smiley.rb +1 -1
- data/lib/deplate/mod/soffice.rb +1 -1
- data/lib/deplate/mod/symbols-latin1.rb +1 -1
- data/lib/deplate/mod/symbols-od-utf-8.rb +1 -1
- data/lib/deplate/mod/symbols-plain.rb +1 -1
- data/lib/deplate/mod/symbols-sgml.rb +1 -1
- data/lib/deplate/mod/symbols-utf-8.rb +1 -1
- data/lib/deplate/mod/symbols-xml.rb +1 -1
- data/lib/deplate/mod/syntax-region-alt.rb +1 -1
- data/lib/deplate/mod/utf8.rb +1 -1
- data/lib/deplate/mod/validate-html.rb +1 -1
- data/lib/deplate/mod/xmlrpc.rb +37 -36
- data/lib/deplate/nukumi2.rb +4 -4
- data/lib/deplate/once-method.rb +1 -1
- data/lib/deplate/output.rb +12 -4
- data/lib/deplate/particles.rb +52 -22
- data/lib/deplate/regions.rb +160 -90
- data/lib/deplate/skeletons.rb +4 -3
- data/lib/deplate/structured.rb +19 -13
- data/lib/deplate/template.rb +17 -9
- data/lib/deplate/templates/html-doc.html +8 -11
- data/lib/deplate/templates/html-tabbar-right.html +1 -1
- data/lib/deplate/templates/html-tabbar-top.html +3 -3
- data/lib/deplate/variables.rb +25 -9
- data/lib/deplate/wiki-markup.rb +14 -3
- data/lib/deplate/xml.rb +3 -4
- data/lib/deplate/{zh-cn.rb → zh_CN.rb} +16 -16
- data/man/man1/deplate.1 +80 -65
- metadata +72 -48
- data/lib/deplate/mod/fr.rb +0 -46
data/lib/deplate/builtin.rb
CHANGED
data/lib/deplate/cache.rb
CHANGED
data/lib/deplate/commands.rb
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# commands.rb
|
|
2
|
-
# @Author: Thomas Link (
|
|
2
|
+
# @Author: Thomas Link (micathom AT gmail com)
|
|
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: 2007-09-30.
|
|
7
|
+
# @Revision: 0.1298
|
|
8
8
|
|
|
9
9
|
# Description:
|
|
10
10
|
#
|
|
@@ -16,17 +16,22 @@
|
|
|
16
16
|
#
|
|
17
17
|
|
|
18
18
|
module Deplate::Names
|
|
19
|
+
module_function
|
|
20
|
+
def name_match_c(text)
|
|
21
|
+
if text =~ /^\{(.*)\}$/
|
|
22
|
+
return {:surname => $1}
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
19
26
|
def name_match_sf(text)
|
|
20
27
|
m = /^\s*(.+?),\s*(.+?)\s*$/.match(text)
|
|
21
28
|
return m ? {:firstname => m[2], :surname => m[1]} : nil
|
|
22
29
|
end
|
|
23
|
-
module_function :name_match_sf
|
|
24
30
|
|
|
25
31
|
def name_match_fs(text)
|
|
26
32
|
m = /^\s*(\S+(\s+\S+)*?)\s+(\S+)\s*$/.match(text)
|
|
27
33
|
return m ? {:firstname => m[1], :surname => m[3]} : nil
|
|
28
34
|
end
|
|
29
|
-
module_function :name_match_fs
|
|
30
35
|
end
|
|
31
36
|
|
|
32
37
|
class Deplate::Command < Deplate::Element
|
|
@@ -84,7 +89,7 @@ class Deplate::Command < Deplate::Element
|
|
|
84
89
|
end
|
|
85
90
|
|
|
86
91
|
def finish
|
|
87
|
-
@elt = [ @accum.join(
|
|
92
|
+
@elt = [ @accum.join(' ') ]
|
|
88
93
|
return self
|
|
89
94
|
end
|
|
90
95
|
|
|
@@ -111,7 +116,7 @@ class Deplate::Command::CAP < Deplate::Command
|
|
|
111
116
|
if last
|
|
112
117
|
last.set_caption(Deplate::CaptionDef.new(text, args, src))
|
|
113
118
|
else
|
|
114
|
-
Deplate::Core.log(["
|
|
119
|
+
Deplate::Core.log(["Cannot attach caption to", nil], :error, src)
|
|
115
120
|
end
|
|
116
121
|
end
|
|
117
122
|
end
|
|
@@ -133,55 +138,79 @@ end
|
|
|
133
138
|
class Deplate::Command::INC < Deplate::Command
|
|
134
139
|
register_as 'INC'
|
|
135
140
|
register_as 'INCLUDE'
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
if
|
|
142
|
-
|
|
141
|
+
|
|
142
|
+
class << self
|
|
143
|
+
def accumulate(src, array, deplate, text, match, args, cmd)
|
|
144
|
+
Deplate::Core.log("%s: %s" % [cmd, text], :debug, src)
|
|
145
|
+
var = args['var'] || args['var'] || args['val']
|
|
146
|
+
if args.has_key?('file')
|
|
147
|
+
if text
|
|
148
|
+
Deplate::Core.log(['Conflicting arguments', 'file > @anonymous'], :error, src)
|
|
149
|
+
end
|
|
150
|
+
text = args['file']
|
|
151
|
+
end
|
|
152
|
+
args['INCLUDED'] = src.file
|
|
153
|
+
vars = swap_variables(deplate, args)
|
|
154
|
+
input_format = args['inputFormat']
|
|
155
|
+
pif = deplate.push_input_format(input_format)
|
|
156
|
+
|
|
157
|
+
begin
|
|
158
|
+
if var
|
|
159
|
+
strings = deplate.variables[var]
|
|
160
|
+
if strings
|
|
161
|
+
deplate.include_stringarray(strings, array, nil, src.file)
|
|
162
|
+
else
|
|
163
|
+
Deplate::Core.log(['Unknown doc variable', var], :error, src)
|
|
164
|
+
end
|
|
165
|
+
elsif !text or text == ''
|
|
166
|
+
Deplate::Core.log(['Malformed command', cmd, text], :error, src)
|
|
167
|
+
else
|
|
168
|
+
fn = deplate.find_in_lib(text, :pwd => true)
|
|
169
|
+
if fn
|
|
170
|
+
deplate.include_file(array, fn, args)
|
|
171
|
+
else
|
|
172
|
+
Deplate::Core.log(['File not found', text], :error, src)
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
ensure
|
|
176
|
+
restore_variables(deplate, vars)
|
|
177
|
+
deplate.pop_input_format(input_format) if pif
|
|
143
178
|
end
|
|
144
|
-
text = args['file']
|
|
145
179
|
end
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
syntax = args['codeSyntax'] || args['syntax']
|
|
156
|
-
syntax_orig = deplate.variables['codeSyntax']
|
|
157
|
-
deplate.variables['codeSyntax'] = syntax if syntax
|
|
158
|
-
|
|
159
|
-
input_format = args['inputFormat']
|
|
160
|
-
pif = deplate.push_input_format(input_format)
|
|
161
|
-
|
|
162
|
-
begin
|
|
163
|
-
if doc
|
|
164
|
-
strings = deplate.variables[doc]
|
|
165
|
-
if strings
|
|
166
|
-
deplate.include_stringarray(strings, array, nil, src.file)
|
|
180
|
+
|
|
181
|
+
def swap_variables(deplate, args, vars={})
|
|
182
|
+
# vars[:deplate] ||= deplate.variables.dup
|
|
183
|
+
args.each do |var, val|
|
|
184
|
+
case var
|
|
185
|
+
when 'syntax'
|
|
186
|
+
var = 'codeSyntax'
|
|
187
|
+
when 'codeSyntax', 'embeddedTextRx', 'embeddedVerbatim'
|
|
167
188
|
else
|
|
168
|
-
|
|
189
|
+
if var[0..0] == '$'
|
|
190
|
+
var = var[1..-1]
|
|
191
|
+
else
|
|
192
|
+
next
|
|
193
|
+
end
|
|
169
194
|
end
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
195
|
+
has_key = deplate.variables.has_key?(var)
|
|
196
|
+
vars[var] = {
|
|
197
|
+
:has_key => has_key,
|
|
198
|
+
:value => has_key ? deplate.variables[var] : nil,
|
|
199
|
+
}
|
|
200
|
+
deplate.variables[var] = val
|
|
201
|
+
end
|
|
202
|
+
vars
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def restore_variables(deplate, hash)
|
|
206
|
+
# deplate.variables = hash[:deplate]
|
|
207
|
+
hash.each do |var, val|
|
|
208
|
+
if val[:has_key]
|
|
209
|
+
deplate.variables[var] = val[:value]
|
|
176
210
|
else
|
|
177
|
-
|
|
211
|
+
deplate.variables.delete(var)
|
|
178
212
|
end
|
|
179
213
|
end
|
|
180
|
-
ensure
|
|
181
|
-
deplate.variables['embeddedTextRx'] = embeddedTextRx_orig if embeddedTextRx
|
|
182
|
-
deplate.variables['embeddedVerbatim'] = embeddedVerbatim_orig if embeddedVerbatim
|
|
183
|
-
deplate.variables['codeSyntax'] = syntax_orig if syntax
|
|
184
|
-
deplate.pop_input_format(input_format) if pif
|
|
185
214
|
end
|
|
186
215
|
end
|
|
187
216
|
end
|
|
@@ -216,7 +245,9 @@ class Deplate::Command::VAR < Deplate::Command
|
|
|
216
245
|
set_variable(deplate, id, text, args, src)
|
|
217
246
|
end
|
|
218
247
|
else
|
|
219
|
-
|
|
248
|
+
cnt = Deplate::PseudoContainer.new(deplate, args)
|
|
249
|
+
cnt.source = src
|
|
250
|
+
opts, text = deplate.input.parse_args(text, cnt, false)
|
|
220
251
|
for k, v in opts
|
|
221
252
|
unless set_variable(deplate, k, v, args, src)
|
|
222
253
|
opts.delete(k)
|
|
@@ -228,6 +259,16 @@ class Deplate::Command::VAR < Deplate::Command
|
|
|
228
259
|
end
|
|
229
260
|
|
|
230
261
|
|
|
262
|
+
class Deplate::Command::PUSH < Deplate::Command::VAR
|
|
263
|
+
register_as 'PUSH'
|
|
264
|
+
self.volatile = true
|
|
265
|
+
def self.accumulate(src, array, deplate, text, match, args, cmd)
|
|
266
|
+
args['add'] ||= ','
|
|
267
|
+
super
|
|
268
|
+
end
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
|
|
231
272
|
class Deplate::Command::KEYWORDS < Deplate::Command::VAR
|
|
232
273
|
register_as 'KEYWORDS'
|
|
233
274
|
self.volatile = true
|
|
@@ -240,17 +281,22 @@ end
|
|
|
240
281
|
|
|
241
282
|
class Deplate::Command::OPT < Deplate::Command
|
|
242
283
|
register_as 'OPT'
|
|
284
|
+
# register_as 'ATTR'
|
|
285
|
+
register_as 'PROP'
|
|
286
|
+
register_as 'PP'
|
|
243
287
|
self.volatile = true
|
|
244
288
|
def self.accumulate(src, array, deplate, text, match, args, cmd)
|
|
245
289
|
Deplate::Core.log("%s: %s" % [cmd, text], :debug, src)
|
|
246
290
|
elt = array.last
|
|
247
291
|
if elt
|
|
248
|
-
|
|
292
|
+
cnt = Deplate::PseudoContainer.new(deplate, args)
|
|
293
|
+
cnt.source = src
|
|
294
|
+
opts, text = deplate.input.parse_args(text, cnt, false)
|
|
249
295
|
deplate.register_id(opts, elt)
|
|
250
296
|
update_variables(elt.args, args, opts)
|
|
251
297
|
elt.update_args
|
|
252
298
|
else
|
|
253
|
-
Deplate::Core.log([
|
|
299
|
+
Deplate::Core.log(['No element given', match[0]], :error, src)
|
|
254
300
|
end
|
|
255
301
|
end
|
|
256
302
|
end
|
|
@@ -262,12 +308,12 @@ class Deplate::Command::PUT < Deplate::Command
|
|
|
262
308
|
register_as 'SET'
|
|
263
309
|
def self.accumulate(src, array, deplate, text, match, args, cmd)
|
|
264
310
|
Deplate::Core.log("%s: %s" % [cmd, text], :debug, src)
|
|
265
|
-
id = args[
|
|
311
|
+
id = args['id']
|
|
266
312
|
if id
|
|
267
313
|
text = deplate.parse_with_source(src, text, false)
|
|
268
314
|
deplate.set_clip(id, Deplate::Element::Clip.new(text, deplate, src))
|
|
269
315
|
else
|
|
270
|
-
Deplate::Core.log([
|
|
316
|
+
Deplate::Core.log(['No ID given', text], :error, src)
|
|
271
317
|
end
|
|
272
318
|
end
|
|
273
319
|
end
|
|
@@ -278,7 +324,7 @@ class Deplate::Command::GET < Deplate::Command
|
|
|
278
324
|
set_formatter :format_GET
|
|
279
325
|
|
|
280
326
|
def setup_command
|
|
281
|
-
@id = @args[
|
|
327
|
+
@id = @args['id'] || @accum[0]
|
|
282
328
|
end
|
|
283
329
|
|
|
284
330
|
def process
|
|
@@ -286,7 +332,7 @@ class Deplate::Command::GET < Deplate::Command
|
|
|
286
332
|
if @elt
|
|
287
333
|
return self
|
|
288
334
|
else
|
|
289
|
-
log([
|
|
335
|
+
log(['GET: Clip not found', @id], :error)
|
|
290
336
|
return nil
|
|
291
337
|
end
|
|
292
338
|
end
|
|
@@ -296,20 +342,18 @@ end
|
|
|
296
342
|
class Deplate::Command::XARG < Deplate::Command
|
|
297
343
|
register_as 'XARG'
|
|
298
344
|
register_as 'XVAL'
|
|
299
|
-
self.volatile = true
|
|
345
|
+
# self.volatile = true
|
|
300
346
|
|
|
301
347
|
def setup_command
|
|
302
|
-
id = args[
|
|
303
|
-
@elt = @deplate.variables[id] || @args[
|
|
348
|
+
id = args['id'] || @accum[0]
|
|
349
|
+
@elt = @deplate.variables[id] || @args['default']
|
|
304
350
|
if @elt
|
|
305
|
-
@elt = Deplate::
|
|
306
|
-
@elt = post_process_text(@elt)
|
|
307
|
-
@elt = @elt.split(/[\n\r]/).each {|l| l.chomp!}
|
|
351
|
+
@elt = Deplate::Command::ARG.preformat_element(@elt, @args)
|
|
308
352
|
else
|
|
309
|
-
log([
|
|
353
|
+
log(['Unknown variable', id, @name], :error)
|
|
310
354
|
end
|
|
311
355
|
end
|
|
312
|
-
|
|
356
|
+
|
|
313
357
|
def format_special
|
|
314
358
|
@elt
|
|
315
359
|
end
|
|
@@ -319,7 +363,7 @@ end
|
|
|
319
363
|
class Deplate::Command::ARG < Deplate::Command
|
|
320
364
|
register_as 'ARG'
|
|
321
365
|
register_as 'VAL'
|
|
322
|
-
self.volatile = true
|
|
366
|
+
# self.volatile = true
|
|
323
367
|
|
|
324
368
|
class << self
|
|
325
369
|
def accumulate(src, array, deplate, text, match, args, cmd)
|
|
@@ -327,17 +371,30 @@ class Deplate::Command::ARG < Deplate::Command
|
|
|
327
371
|
id = args['id'] || text
|
|
328
372
|
val = deplate.variables[id] || args['default']
|
|
329
373
|
if val
|
|
330
|
-
|
|
331
|
-
val = Deplate::CommonGround.post_process_text(val, args)
|
|
332
|
-
# val.gsub!(/\\/, '\\\\\\\\')
|
|
333
|
-
acc = val.split(/[\n\r]/)
|
|
334
|
-
acc.each {|l| l.chomp!}
|
|
374
|
+
acc = preformat_element(val, args)
|
|
335
375
|
d = deplate.options.master ? deplate.options.master : deplate
|
|
336
376
|
d.include_stringarray(acc, array, src.begin, src.file)
|
|
337
377
|
else
|
|
338
378
|
Deplate::Core.log(['Unknown variable', id, cmd], :error, src)
|
|
339
379
|
end
|
|
340
380
|
end
|
|
381
|
+
|
|
382
|
+
def preformat_element(elt, args)
|
|
383
|
+
case elt
|
|
384
|
+
when Array
|
|
385
|
+
elt = elt.collect {|text| preformat_text(text, args)}
|
|
386
|
+
else
|
|
387
|
+
elt = preformat_text(elt, args)
|
|
388
|
+
end
|
|
389
|
+
elt.flatten!
|
|
390
|
+
return elt
|
|
391
|
+
end
|
|
392
|
+
|
|
393
|
+
def preformat_text(text, args)
|
|
394
|
+
text = Deplate::Core.escape_characters(text, args)
|
|
395
|
+
text = Deplate::CommonGround.post_process_text(text, args)
|
|
396
|
+
return text.split(/[\n\r]/).each {|l| l.chomp!}
|
|
397
|
+
end
|
|
341
398
|
end
|
|
342
399
|
end
|
|
343
400
|
|
|
@@ -361,13 +418,13 @@ class Deplate::Command::TITLE < Deplate::Command
|
|
|
361
418
|
register_as 'TI'
|
|
362
419
|
self.volatile = true
|
|
363
420
|
def self.accumulate(src, array, deplate, text, match, args, cmd)
|
|
364
|
-
Deplate::Core.log(
|
|
421
|
+
Deplate::Core.log('%s: %s' % [cmd, text], :debug, src)
|
|
365
422
|
c = deplate.parse_with_source(src, text, false)
|
|
366
|
-
deplate.set_clip(
|
|
423
|
+
deplate.set_clip('title', Deplate::Element::Clip.new(c, deplate, src))
|
|
367
424
|
deplate.register_metadata(src,
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
425
|
+
'type' => 'metadata',
|
|
426
|
+
'name' => 'title',
|
|
427
|
+
'value' => text
|
|
371
428
|
)
|
|
372
429
|
end
|
|
373
430
|
end
|
|
@@ -379,34 +436,34 @@ class Deplate::Command::AUTHOR < Deplate::Command
|
|
|
379
436
|
self.volatile = true
|
|
380
437
|
class << self
|
|
381
438
|
def accumulate(src, array, deplate, text, match, args, cmd)
|
|
382
|
-
Deplate::Core.log(
|
|
439
|
+
Deplate::Core.log('%s: %s' % [cmd, text], :debug, src)
|
|
383
440
|
deplate.options.author ||= []
|
|
384
441
|
for this in text.split(/([;\/]|\s+(&|and))\s+/)
|
|
385
442
|
unless this =~ /^\s*([;\/&]|and)\s*$/
|
|
386
443
|
author = Deplate::Names.name_match_sf(this) ||
|
|
387
444
|
Deplate::Names.name_match_fs(this) || {}
|
|
388
|
-
sn = args[
|
|
445
|
+
sn = args['surname']
|
|
389
446
|
author[:surname] = sn if sn
|
|
390
|
-
fn = args[
|
|
447
|
+
fn = args['firstname']
|
|
391
448
|
author[:firstname] = fn if fn
|
|
392
449
|
if this.empty?
|
|
393
|
-
author[:name] = args[
|
|
450
|
+
author[:name] = args['name'] || '%s %s' % [args['firstname'], args['surname']]
|
|
394
451
|
else
|
|
395
452
|
author[:name] = this
|
|
396
453
|
end
|
|
397
|
-
author[:note] = args[
|
|
454
|
+
author[:note] = args['note']
|
|
398
455
|
deplate.options.author << author
|
|
399
456
|
end
|
|
400
457
|
end
|
|
401
|
-
sep = deplate.variables[
|
|
458
|
+
sep = deplate.variables['authorSep'] || '; '
|
|
402
459
|
authors = deplate.options.author.collect {|h| h[:name]}
|
|
403
460
|
authors = authors.join(sep)
|
|
404
461
|
parsed = deplate.parse_with_source(src, authors, false)
|
|
405
|
-
deplate.set_clip(
|
|
462
|
+
deplate.set_clip('author', Deplate::Element::Clip.new(parsed, deplate, src))
|
|
406
463
|
deplate.register_metadata(src,
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
464
|
+
'type' => 'metadata',
|
|
465
|
+
'name' => 'author',
|
|
466
|
+
'value' => authors
|
|
410
467
|
)
|
|
411
468
|
end
|
|
412
469
|
end
|
|
@@ -418,7 +475,7 @@ class Deplate::Command::AUTHORNOTE < Deplate::Command
|
|
|
418
475
|
register_as 'AN'
|
|
419
476
|
self.volatile = true
|
|
420
477
|
def self.accumulate(src, array, deplate, text, match, args, cmd)
|
|
421
|
-
Deplate::Core.log(
|
|
478
|
+
Deplate::Core.log('%s: %s' % [cmd, text], :debug, src)
|
|
422
479
|
unless text.empty?
|
|
423
480
|
author = deplate.options.author.last
|
|
424
481
|
if author
|
|
@@ -426,14 +483,14 @@ class Deplate::Command::AUTHORNOTE < Deplate::Command
|
|
|
426
483
|
end
|
|
427
484
|
end
|
|
428
485
|
ans = deplate.options.author.collect {|h| h[:note]}
|
|
429
|
-
sep = deplate.variables[
|
|
486
|
+
sep = deplate.variables['authorSep'] || '; '
|
|
430
487
|
ans = ans.compact.join(sep)
|
|
431
488
|
parsed = deplate.parse_with_source(src, ans, false)
|
|
432
|
-
deplate.set_clip(
|
|
489
|
+
deplate.set_clip('authornote', Deplate::Element::Clip.new(parsed, deplate, src))
|
|
433
490
|
deplate.register_metadata(src,
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
491
|
+
'type' => 'metadata',
|
|
492
|
+
'name' => 'authornote',
|
|
493
|
+
'value' => ans
|
|
437
494
|
)
|
|
438
495
|
end
|
|
439
496
|
end
|
|
@@ -443,7 +500,7 @@ class Deplate::Command::DATE < Deplate::Command
|
|
|
443
500
|
register_as 'DATE'
|
|
444
501
|
self.volatile = true
|
|
445
502
|
def self.accumulate(src, array, deplate, text, match, args, cmd)
|
|
446
|
-
Deplate::Core.log(
|
|
503
|
+
Deplate::Core.log('%s: %s' % [cmd, text], :debug, src)
|
|
447
504
|
d = get_date(text, args)
|
|
448
505
|
c = deplate.parse_with_source(src, d, false)
|
|
449
506
|
deplate.set_clip(cmd.downcase, Deplate::Element::Clip.new(c, deplate, src))
|
|
@@ -611,7 +668,7 @@ class Deplate::Command::IDX < Deplate::Command
|
|
|
611
668
|
accum = []
|
|
612
669
|
auto = args['auto']
|
|
613
670
|
auto = deplate.variables['autoindex'] if auto.nil?
|
|
614
|
-
for i in
|
|
671
|
+
for i in Deplate::Core.split_list(text, ';', nil, source)
|
|
615
672
|
# <+TBD IDX+>idx = deplate.add_index(nil, i, deplate.get_current_heading)
|
|
616
673
|
idx = deplate.add_index(container, i)
|
|
617
674
|
Deplate::Particle.auto_indexing(deplate, idx) if auto
|
|
@@ -652,7 +709,7 @@ class Deplate::Command::AUTOIDX < Deplate::Command
|
|
|
652
709
|
def self.accumulate(src, array, deplate, text, match, args, cmd)
|
|
653
710
|
Deplate::Core.log("%s: %s" % [cmd, text], :debug, src)
|
|
654
711
|
hd = deplate.get_current_heading
|
|
655
|
-
for i in
|
|
712
|
+
for i in Deplate::Core.split_list(text, ';', nil, src)
|
|
656
713
|
Deplate::Particle.auto_indexing(deplate, deplate.add_index(nil, i, hd))
|
|
657
714
|
end
|
|
658
715
|
end
|
|
@@ -664,7 +721,7 @@ class Deplate::Command::NOIDX < Deplate::Command
|
|
|
664
721
|
self.volatile = true
|
|
665
722
|
def self.accumulate(src, array, deplate, text, match, args, cmd)
|
|
666
723
|
Deplate::Core.log("%s: %s" % [cmd, text], :debug, src)
|
|
667
|
-
for i in
|
|
724
|
+
for i in Deplate::Core.split_list(text, ';', nil, src)
|
|
668
725
|
deplate.remove_index(self, i)
|
|
669
726
|
end
|
|
670
727
|
end
|
|
@@ -676,7 +733,7 @@ class Deplate::Command::DONTIDX < Deplate::Command
|
|
|
676
733
|
self.volatile = true
|
|
677
734
|
def self.accumulate(src, array, deplate, text, match, args, cmd)
|
|
678
735
|
Deplate::Core.log("%s: %s" % [cmd, text], :debug, src)
|
|
679
|
-
deplate.options.dont_index +=
|
|
736
|
+
deplate.options.dont_index += Deplate::Core.split_list(text, ';', nil, src)
|
|
680
737
|
end
|
|
681
738
|
end
|
|
682
739
|
|
|
@@ -723,11 +780,12 @@ class Deplate::Command::ABBREV < Deplate::Command
|
|
|
723
780
|
rs = nil
|
|
724
781
|
tx = nil
|
|
725
782
|
cmd = nil
|
|
726
|
-
deplate.options.abbrevs ||= {}
|
|
727
783
|
catch(:exit) do
|
|
728
784
|
w = args['word'] || args['w'] || args['wd']
|
|
729
785
|
if w
|
|
730
|
-
rs = %{\\b%s\\b} % Regexp.escape(w)
|
|
786
|
+
# rs = %{\\b%s\\b} % Regexp.escape(w)
|
|
787
|
+
# rs = %{\\b%s(?=[^#{Deplate::HyperLink.chars}])} % Regexp.escape(w)
|
|
788
|
+
rs = %{\\b%s(?=([[:punct:][:cntrl:][:space:]]|$))} % Regexp.escape(w)
|
|
731
789
|
# tx = "#{Deplate::Core.remove_backslashes(text.inspect)}"
|
|
732
790
|
# tx = "#{text.inspect}"
|
|
733
791
|
# tx = text.inspect
|
|
@@ -755,14 +813,14 @@ class Deplate::Command::ABBREV < Deplate::Command
|
|
|
755
813
|
cmd = lambda {|c, t| c.deplate.formatter.plain_text(t)}
|
|
756
814
|
specific = false
|
|
757
815
|
elsif args['native'] or args['ins']
|
|
758
|
-
cmd =
|
|
816
|
+
cmd = lambda {|c, t| t}
|
|
759
817
|
specific = true
|
|
760
818
|
else
|
|
761
819
|
# cmd = %{@deplate.parse_and_format(@container, #{tx}, false)}
|
|
762
820
|
cmd = lambda {|c, t| c.deplate.parse_and_format(c, t, false)}
|
|
763
821
|
specific = false
|
|
764
822
|
end
|
|
765
|
-
deplate.options.abbrevs[rs] = [tx, cmd]
|
|
823
|
+
deplate.options.abbrevs[[rs, deplate.formatter.formatter_name]] = [tx, cmd]
|
|
766
824
|
rx = Regexp.new("^#{rs}")
|
|
767
825
|
# body = <<-EOR
|
|
768
826
|
# set_rx(#{rx.inspect})
|
|
@@ -773,7 +831,7 @@ class Deplate::Command::ABBREV < Deplate::Command
|
|
|
773
831
|
body = <<-EOR
|
|
774
832
|
set_rx(#{rx.inspect})
|
|
775
833
|
def setup
|
|
776
|
-
tx, cmd = @deplate.options.abbrevs[#{rs.inspect}]
|
|
834
|
+
tx, cmd = @deplate.options.abbrevs[[#{rs.inspect}, @deplate.formatter.formatter_name]]
|
|
777
835
|
case cmd
|
|
778
836
|
when Proc
|
|
779
837
|
tx = tx.call(self) if tx.kind_of?(Proc)
|
|
@@ -787,7 +845,8 @@ class Deplate::Command::ABBREV < Deplate::Command
|
|
|
787
845
|
EOR
|
|
788
846
|
cls = Deplate::Cache.particle(deplate, body,
|
|
789
847
|
:register => true,
|
|
790
|
-
:specific => specific
|
|
848
|
+
:specific => specific,
|
|
849
|
+
:unshift => args['priority']
|
|
791
850
|
)
|
|
792
851
|
else
|
|
793
852
|
Deplate::Core.log(["No pattern specified", args], :error, src)
|