deplate 0.8 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (163) hide show
  1. data/AUTHORS.TXT +19 -16
  2. data/CHANGES.TXT +214 -248
  3. data/NEWS.TXT +47 -30
  4. data/README.TXT +0 -1
  5. data/TODO.TXT +93 -20
  6. data/VERSION.TXT +1 -1
  7. data/bin/deplate.exy +192 -0
  8. data/etc/deplate.ini +70 -9
  9. data/lib/action_view/helpers/deplate.rb +33 -33
  10. data/lib/deplate.rb +2 -2
  11. data/lib/deplate/bib.rb +72 -41
  12. data/lib/deplate/builtin.rb +1 -1
  13. data/lib/deplate/cache.rb +1 -1
  14. data/lib/deplate/commands.rb +161 -102
  15. data/lib/deplate/common.rb +93 -7
  16. data/lib/deplate/converter.rb +10 -4
  17. data/lib/deplate/core.rb +215 -108
  18. data/lib/deplate/counters.rb +23 -8
  19. data/lib/deplate/css/article.css +9 -5
  20. data/lib/deplate/css/deplate.css +37 -3
  21. data/lib/deplate/css/heading-navbar.css +1 -1
  22. data/lib/deplate/css/highstep.css +18 -0
  23. data/lib/deplate/css/htmldoc.css +43 -0
  24. data/lib/deplate/css/layout-deplate-print.css +1 -1
  25. data/lib/deplate/css/layout-deplate.css +1 -1
  26. data/lib/deplate/css/play.css +101 -0
  27. data/lib/deplate/css/sans-serif.css +1 -1
  28. data/lib/deplate/css/serif-e.css +1 -1
  29. data/lib/deplate/css/serif-rel.css +1 -1
  30. data/lib/deplate/css/serif.css +1 -1
  31. data/lib/deplate/css/slides.css +1 -1
  32. data/lib/deplate/css/styles.css +4 -0
  33. data/lib/deplate/css/tabbar-right.css +54 -8
  34. data/lib/deplate/css/tabbar-top.css +28 -9
  35. data/lib/deplate/css/text-sans-serif.css +1 -1
  36. data/lib/deplate/css/text-serif.css +1 -1
  37. data/lib/deplate/define.rb +71 -38
  38. data/lib/deplate/deplate-string.rb +3 -3
  39. data/lib/deplate/docbook.rb +9 -9
  40. data/lib/deplate/elements.rb +173 -84
  41. data/lib/deplate/etc.rb +6 -8
  42. data/lib/deplate/external.rb +9 -5
  43. data/lib/deplate/fmt/dbk-article-4.1.2.rb +4 -3
  44. data/lib/deplate/fmt/dbk-article.rb +9 -8
  45. data/lib/deplate/fmt/dbk-book.rb +4 -3
  46. data/lib/deplate/fmt/dbk-ref.rb +5 -4
  47. data/lib/deplate/fmt/dbk-slides.rb +4 -3
  48. data/lib/deplate/fmt/dbk-snippet.rb +4 -3
  49. data/lib/deplate/fmt/html-snippet.rb +1 -1
  50. data/lib/deplate/fmt/html.rb +186 -46
  51. data/lib/deplate/fmt/htmlsite.rb +19 -9
  52. data/lib/deplate/fmt/htmlslides.rb +1 -1
  53. data/lib/deplate/fmt/htmlwebsite.rb +1 -1
  54. data/lib/deplate/fmt/latex-dramatist.rb +175 -0
  55. data/lib/deplate/fmt/latex-snippet.rb +1 -1
  56. data/lib/deplate/fmt/latex.rb +132 -80
  57. data/lib/deplate/fmt/null.rb +1 -1
  58. data/lib/deplate/fmt/php.rb +1 -1
  59. data/lib/deplate/fmt/phpsite.rb +1 -1
  60. data/lib/deplate/fmt/plain.rb +16 -9
  61. data/lib/deplate/fmt/template.rb +1 -1
  62. data/lib/deplate/fmt/xhtml10t.rb +1 -1
  63. data/lib/deplate/formatter-snippet.rb +1 -1
  64. data/lib/deplate/formatter.rb +272 -81
  65. data/lib/deplate/guesslanguage.rb +57 -0
  66. data/lib/deplate/input.rb +205 -50
  67. data/lib/deplate/input/deplate-headings.rb +9 -11
  68. data/lib/deplate/input/deplate-restricted.rb +3 -23
  69. data/lib/deplate/input/deplate.rb +1 -1
  70. data/lib/deplate/input/play.rb +208 -0
  71. data/lib/deplate/input/rdoc.rb +37 -15
  72. data/lib/deplate/input/template.rb +6 -11
  73. data/lib/deplate/lib/Makefile.config +53 -4
  74. data/lib/deplate/lib/html/parbreak +3 -0
  75. data/lib/deplate/lib/javascript/StepwiseNextPage.js +8 -0
  76. data/lib/deplate/lib/javascript/StepwiseNextPage_confirm.js +8 -0
  77. data/lib/deplate/lib/latex/deplate.sty +36 -0
  78. data/lib/deplate/lib/latex/parbreak +6 -0
  79. data/lib/deplate/lib/php/page-comment.inc.php +5 -5
  80. data/lib/deplate/lib/plain/parbreak +6 -0
  81. data/lib/deplate/locale/de.latin1 +87 -15
  82. data/lib/deplate/locale/de.latin1_data +60 -0
  83. data/lib/deplate/locale/en.latin1_data +46 -0
  84. data/lib/deplate/locale/fr.latin1_data +74 -0
  85. data/lib/deplate/locale/ru.koi8-r_data +63 -0
  86. data/lib/deplate/locale/{zh_cn.gb2312 → zh_CN.GB2312} +0 -0
  87. data/lib/deplate/macros.rb +106 -32
  88. data/lib/deplate/messages.rb +22 -8
  89. data/lib/deplate/metadata.rb +1 -1
  90. data/lib/deplate/metadata/marshal.rb +1 -1
  91. data/lib/deplate/metadata/xml.rb +1 -1
  92. data/lib/deplate/metadata/yaml.rb +1 -1
  93. data/lib/deplate/mod/anyword.rb +4 -4
  94. data/lib/deplate/mod/babelfish.rb +1 -1
  95. data/lib/deplate/mod/code-gvim.rb +14 -8
  96. data/lib/deplate/mod/code-gvim71.rb +52 -0
  97. data/lib/deplate/mod/code-highlight.rb +35 -19
  98. data/lib/deplate/mod/colored-log.rb +1 -1
  99. data/lib/deplate/mod/endnotes.rb +1 -1
  100. data/lib/deplate/mod/guesslanguage.rb +75 -0
  101. data/lib/deplate/mod/html-asciimath.rb +1 -1
  102. data/lib/deplate/mod/html-deplate-button.rb +1 -1
  103. data/lib/deplate/mod/html-headings-navbar.rb +1 -1
  104. data/lib/deplate/mod/html-highstep.rb +43 -0
  105. data/lib/deplate/mod/html-jsmath.rb +1 -1
  106. data/lib/deplate/mod/html-obfuscate-email.rb +1 -1
  107. data/lib/deplate/mod/html-sidebar.rb +1 -1
  108. data/lib/deplate/mod/iconv.rb +1 -1
  109. data/lib/deplate/mod/imgurl.rb +1 -1
  110. data/lib/deplate/mod/inlatex-compound.rb +1 -1
  111. data/lib/deplate/mod/koma.rb +4 -4
  112. data/lib/deplate/mod/{de.rb → lang-de.rb} +1 -1
  113. data/lib/deplate/mod/{en.rb → lang-en.rb} +1 -1
  114. data/lib/deplate/mod/{ru_koi8-r.rb → lang-ru-koi8-r.rb} +1 -1
  115. data/lib/deplate/mod/lang-ru.rb +9 -0
  116. data/lib/deplate/mod/{zh-cn-autospace.rb → lang-zh_CN-autospace.rb} +3 -3
  117. data/lib/deplate/mod/{zh-cn.rb → lang-zh_CN.rb} +8 -8
  118. data/lib/deplate/mod/latex-emph-table-head.rb +1 -1
  119. data/lib/deplate/mod/latex-styles.rb +6 -6
  120. data/lib/deplate/mod/latex-verbatim-small.rb +1 -1
  121. data/lib/deplate/mod/linkmap.rb +128 -0
  122. data/lib/deplate/mod/makefile.rb +23 -22
  123. data/lib/deplate/mod/mark-external-urls.rb +13 -7
  124. data/lib/deplate/mod/markup-1-warn.rb +1 -1
  125. data/lib/deplate/mod/markup-1.rb +1 -1
  126. data/lib/deplate/mod/navbar-png.rb +5 -4
  127. data/lib/deplate/mod/noindent.rb +1 -1
  128. data/lib/deplate/mod/numpara.rb +1 -1
  129. data/lib/deplate/mod/particle-math.rb +1 -1
  130. data/lib/deplate/mod/php-extra.rb +1 -1
  131. data/lib/deplate/mod/pstoedit.rb +1 -1
  132. data/lib/deplate/mod/recode.rb +1 -1
  133. data/lib/deplate/mod/smart-dash.rb +1 -1
  134. data/lib/deplate/mod/smiley.rb +1 -1
  135. data/lib/deplate/mod/soffice.rb +1 -1
  136. data/lib/deplate/mod/symbols-latin1.rb +1 -1
  137. data/lib/deplate/mod/symbols-od-utf-8.rb +1 -1
  138. data/lib/deplate/mod/symbols-plain.rb +1 -1
  139. data/lib/deplate/mod/symbols-sgml.rb +1 -1
  140. data/lib/deplate/mod/symbols-utf-8.rb +1 -1
  141. data/lib/deplate/mod/symbols-xml.rb +1 -1
  142. data/lib/deplate/mod/syntax-region-alt.rb +1 -1
  143. data/lib/deplate/mod/utf8.rb +1 -1
  144. data/lib/deplate/mod/validate-html.rb +1 -1
  145. data/lib/deplate/mod/xmlrpc.rb +37 -36
  146. data/lib/deplate/nukumi2.rb +4 -4
  147. data/lib/deplate/once-method.rb +1 -1
  148. data/lib/deplate/output.rb +12 -4
  149. data/lib/deplate/particles.rb +52 -22
  150. data/lib/deplate/regions.rb +160 -90
  151. data/lib/deplate/skeletons.rb +4 -3
  152. data/lib/deplate/structured.rb +19 -13
  153. data/lib/deplate/template.rb +17 -9
  154. data/lib/deplate/templates/html-doc.html +8 -11
  155. data/lib/deplate/templates/html-tabbar-right.html +1 -1
  156. data/lib/deplate/templates/html-tabbar-top.html +3 -3
  157. data/lib/deplate/variables.rb +25 -9
  158. data/lib/deplate/wiki-markup.rb +14 -3
  159. data/lib/deplate/xml.rb +3 -4
  160. data/lib/deplate/{zh-cn.rb → zh_CN.rb} +16 -16
  161. data/man/man1/deplate.1 +80 -65
  162. metadata +72 -48
  163. data/lib/deplate/mod/fr.rb +0 -46
@@ -73,10 +73,17 @@
73
73
 
74
74
  ; codeSyntax :: The default syntax for #Code regions (STRING)
75
75
 
76
+ ; commentsShow :: Display comments in the output (BOOLEAN = any comment
77
+ ; or STRING = comments with this prefix/marker)
78
+
76
79
  ; description :: A short description of the document (STRING)
77
80
 
78
81
  ; docBasename :: The base name of the output document (STRING)
79
82
 
83
+ ; efilter :: Include only elements in the output that are tagged with
84
+ ; one of these tags. ''any'' matched untagged elements.
85
+ ; (COMMA-SEPARATED LIST)
86
+
80
87
  ; elementStyle :: If set to 'block', the markup of styles changes. For
81
88
  ; LaTeX output, this make ''deplate'' use regions. You can set this
82
89
  ; for single elements too. (STRING)
@@ -91,6 +98,10 @@
91
98
  ; HTML :: ISO-8859-1
92
99
  ; LaTeX :: latin1
93
100
  ; XML :: UTF-8
101
+ ; - In order to set the encoding do:
102
+ ; ''#VAR: encoding=utf-8''
103
+ ; - To set the encoding for HTML output only:
104
+ ; ''#VAR fmt=html: encoding=utf-8''
94
105
 
95
106
  ; figureNumbering :: How figures should be numbered (STRING)
96
107
  ; flat, document :: One counter for all figures
@@ -117,6 +128,8 @@
117
128
 
118
129
  ; imgSfx :: The default suffix for images (STRING, default: png)
119
130
 
131
+ ; includeVars :: The variables to be used for #INC commands (HASH)
132
+
120
133
  ; indexwiki :: If "no", don't autoindex extended wiki links (STRING)
121
134
  ; - <+TBD+>This will be subject of change
122
135
 
@@ -126,6 +139,9 @@
126
139
  ; inlatexHeight, inlineLatexHeight :: Define the ''h'' parameter of
127
140
  ; images generated by an inline LaTeX snippet (NUMBER)
128
141
 
142
+ ; itemizeMarkers :: The markers for itemize lists (currently only
143
+ ; used for plain text output) (COMMA-SEPARATED LIST)
144
+
129
145
  ; ltxPointsize :: The pointsize used for LaTeX snippets; this can be
130
146
  ; overridden by a per-element 'pointsize' argument; see also
131
147
  ; [[#ps2imgRes][ps2imgRes]] (NUMBER, default: 10)
@@ -134,7 +150,7 @@
134
150
  ; (STRING, default: dependent on the output format)
135
151
 
136
152
  ; keywords :: The keyword to categorize the document; either an array
137
- ; of strings or a list separated by [,;]
153
+ ; of strings or a list separated by semi-colons
138
154
 
139
155
  ; levelshift :: Shift heading levels (NUMBER)
140
156
 
@@ -144,6 +160,9 @@
144
160
  ; mandatoryID :: If set, elements that create auxiliary files must
145
161
  ; have an ID (BOOLEAN)
146
162
 
163
+ ; mark1stStyle :: If set, use the style to markup the ''mark1st''
164
+ ; macro (STRING)
165
+
147
166
  ; mathPrelude :: Like ''inlatexPrelude'' but used for the ''math''
148
167
  ; macro only
149
168
 
@@ -156,6 +175,10 @@
156
175
  ; pdfOutput :: Automatically set when using pdf output (the ''--pdf''
157
176
  ; command line switch) (BOOLEAN)
158
177
 
178
+ ; pfilter :: Include only particles in the output that are tagged
179
+ ; with one of these tags. ''any'' matched untagged particles.
180
+ ; (COMMA-SEPARATED LIST)
181
+
159
182
  ; prefixID :: Prefix autogenerated names for auxiliary files with
160
183
  ; this string; if not defined, use the current document's base
161
184
  ; name (STRING)
@@ -175,6 +198,9 @@
175
198
  ; using multi-file output and when redirecting the output to
176
199
  ; STDOUT (STRING)
177
200
 
201
+ ; styledTags :: If set, tags will automatically style an element with
202
+ ; style "TAG#\{tagname\}" (BOOLEAN)
203
+
178
204
  ; suffix :: The suffix to be used when guessing target names
179
205
  ; referenced by wiki names (STRING)
180
206
  ; - <+TBD+>This will be subject of change
@@ -189,11 +215,16 @@
189
215
  ; tabwidth :: The tab width used when expanding whitespace (NUMBER,
190
216
  ; default: 4)
191
217
 
218
+ ; tag :: Tag all elements with these tags (COMMA-SEPARATED LIST)
219
+
192
220
  ; template :: The default template for the output (STRING)
193
221
 
194
222
  ; template_version :: Which template engine to use (NUMBER,
195
223
  ; default: 2)
196
224
 
225
+ ; useParentSuffix :: When referring to other files, use the source
226
+ ; file's suffix as fallback strategy (BOOL, default; false)
227
+
197
228
  ; verbatimMargin :: Wrap verbatim regions at this width (NUMBER)
198
229
 
199
230
 
@@ -207,12 +238,15 @@
207
238
 
208
239
  ; bodyOptions :: The arguments passed to the ''body'' tag (STRING)
209
240
 
210
- ; css :: The document's CSS file(s) (LIST separated by whitespace)
241
+ ; css :: The document's CSS file(s) (COMMA-SEPARATED LIST)
211
242
  ; - The output media can be defined in the form: CSS|MEDIA
212
243
 
213
244
  ; cssExtra :: Some extra text to be inserted at css position
214
245
  ; (STRING or ARRAY OF STRINGS)
215
246
 
247
+ ; cssInclude :: Include the contents of the CSS file in the HTML output
248
+ ; (BOOLEAN)
249
+
216
250
  ; docNavbar :: If true, display a navigation bar (BOOLEAN)
217
251
 
218
252
  ; explorerHack :: Code to deal with browser-specific stuff; inserted
@@ -230,6 +264,15 @@
230
264
  ; metaDataExtra :: Other HTML code to be inserted
231
265
  ; at head position (STRING or ARRAY OF STRINGS)
232
266
 
267
+ ; newsFeed :: An array of strings defining news feeds for the current
268
+ ; site. (STRING or ARRAY OF STRINGS)
269
+ ; - Entry format (please enclose the arguments in quotations marks):
270
+ ; - ''rss="URL" title="Title"''
271
+ ; - ''atom="URL" title="Title"''
272
+ ; - ''href="URL" title="Title"'' (defaults to ''rss'')
273
+ ; - ''type=rss href="URL" title="Title"''
274
+ ; - ''type=atom href="URL" title="Title"''
275
+
233
276
  ; nextButton :: The "next" button in the navigation bar
234
277
  ; (STRING, default: >>)
235
278
 
@@ -268,10 +311,11 @@
268
311
  ; 1){lab: stepwiseBegin}
269
312
 
270
313
  ; stepwiseContinous :: Automatically move to the next page if all elements
271
- ; are displayed (BOOLEAN, default: false)
314
+ ; are displayed. If the value is ''confirm'' the user will be
315
+ ; queried before moving to the next page. (MIXED, default: false)
272
316
 
273
317
  ; stepwiseKey :: Key code for revealing the next element (COMMA-SEPARATED
274
- ; LIST; default: 78 = 'n'){lab: stepwiseKey}
318
+ ; LIST; default: 34 = '\PageDn'){lab: stepwiseKey}
275
319
 
276
320
  ; styleExtra :: Some extra CSS information that will be wrapped in a
277
321
  ; style tag (STRING or ARRAY OF STRINGS)
@@ -302,13 +346,19 @@
302
346
 
303
347
 
304
348
  ; **** LaTeX
305
- ; classOptions :: Options passed on to the document class (LIST
306
- ; separated by whitespace or comma)
349
+ ; bookClass :: Classes that use a ''\\chapter{}'' command
350
+ ; (COMMA-SEPARATED LIST or BOOLEAN)
307
351
 
308
- ; DIV (koma) :: If set, use KOMA script's typearea package; use this
352
+ ; classOptions :: Options passed on to the document class
353
+ ; (COMMA-SEPARATED LIST)
354
+
355
+ ; typeareaDIV, DIV (koma) :: If set, use KOMA script's typearea package; use this
309
356
  ; variable to define the proportion of the printed area on a page;
310
357
  ; see the KOMA script manual for details (NUMBER)
311
358
 
359
+ ; typeareaDIV_, DIV_ (koma) :: Same as the above but the parameter is
360
+ ; set as a document class option.
361
+
312
362
  ; floatHere :: If true, add a ''h'' flag to floats (BOOLEAN,
313
363
  ; default: false)
314
364
 
@@ -355,7 +405,7 @@
355
405
  ; anyword_catalog :: A catalog file containing automatically linked
356
406
  ; words (STRING)
357
407
 
358
- ; anyword_list :: A comma separated list of automatically linked
408
+ ; anyword_list :: A comma-separated list of automatically linked
359
409
  ; words (STRING)
360
410
 
361
411
  ; anyword_pattern :: A glob pattern for file names in the current
@@ -398,6 +448,9 @@
398
448
  ; urlIcon :: The file name of the external URL icon (STRING,
399
449
  ; default: url.png)
400
450
 
451
+ ; markerInFrontOfURL :: Put the icon in front of the URL (BOOLEAN,
452
+ ; default: false)
453
+
401
454
 
402
455
  ; **** navbar-png
403
456
  ; buttonsColour :: The subtype of the button images
@@ -435,7 +488,7 @@
435
488
 
436
489
 
437
490
  ; **** XMLRPC
438
- ; xmlrpcAllow :: A whitespace separated list of valid IP addresses of
491
+ ; xmlrpcAllow :: A comma-separated list of valid IP addresses of
439
492
  ; regular expressions matching valid addresses
440
493
 
441
494
  ; xmlrpcPath :: The path for accessing this xmlrpc server (STRING,
@@ -447,3 +500,11 @@
447
500
  ; requests were part of one big document (BOOLEAN, default: nil)
448
501
 
449
502
 
503
+ ; *** Legacy
504
+ ; legacyDefine1 :: Make #Define type of regions behave as in
505
+ ; version up to 0.8 (alternatively, you can pass a noTemplate!
506
+ ; argument to the region)
507
+
508
+ ; legacyFor1 :: Make #For behave as in version up to 0.8 (alternatively,
509
+ ; you can pass a noTemplate! argument to the region)
510
+
@@ -1,45 +1,45 @@
1
1
  # deplate.rb -- support for ActionPack's action_view
2
- # @Author: Thomas Link (samul AT web de)
2
+ # @Author: Thomas Link (micathom AT gmail com)
3
3
  # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
4
4
  # @Created: 13-Apr-2006.
5
- # @Last Change: 14-Apr-2006.
6
- # @Revision: 0.12
5
+ # @Last Change: 2007-07-07.
6
+ # @Revision: 0.16
7
7
 
8
8
  module ActionView
9
- module Helpers #:nodoc:
10
- module TextHelper
11
- begin
12
- require_library_or_gem 'deplate/deplate-string'
13
- unless defined?(DEPLATE_AUXBASEURL)
14
- DEPLATE_AUXBASEURL = 'http://localhost:2500/'
15
- end
16
- o = DeplateString.deplate_options
17
- o.input_def = 'deplate-restricted'
18
- o.variables['headings'] = 'plain'
19
- o.variables['htmlAuxUrl'] = [DEPLATE_AUXBASEURL, 'files/%s'].join
9
+ module Helpers #:nodoc:
10
+ module TextHelper
11
+ begin
12
+ require_library_or_gem 'deplate/deplate-string'
13
+ unless defined?(DEPLATE_AUXBASEURL)
14
+ DEPLATE_AUXBASEURL = 'http://localhost:2500/'
15
+ end
16
+ o = DeplateString.deplate_options
17
+ o.input_def = 'deplate-restricted'
18
+ o.variables['headings'] = 'plain'
19
+ o.variables['htmlAuxUrl'] = [DEPLATE_AUXBASEURL, 'files/%s'].join
20
20
 
21
- # Returns the text with all the deplate/viki codes turned into HTML-tags.
22
- # <i>This method is only available if deplate/deplate-string can be required</i>.
23
- def deplate(text, page_name=nil)
24
- if text.blank?
21
+ # Returns the text with all the deplate/viki codes turned into HTML-tags.
22
+ # <i>This method is only available if deplate/deplate-string can be required</i>.
23
+ def deplate(text, page_name=nil)
24
+ if text.blank?
25
25
  ''
26
- else
27
- out = DeplateString.new(text)
28
- if page_name
29
- pn = page_name.gsub(/[^a-zA-Z0-9_]/, '_')
30
- out.variables['auxiliaryDir'] = 'public/files/%s' % pn
31
- out.variables['mandatoryID'] = false
32
- else
33
- out.variables['auxiliaryDir'] = 'public/files'
34
- out.variables['mandatoryID'] = true
26
+ else
27
+ out = DeplateString.new(text)
28
+ if page_name
29
+ pn = page_name.gsub(/[^a-zA-Z0-9_]/, '_')
30
+ out.deplate_options.variables['auxiliaryDir'] = 'public/files/%s' % pn
31
+ out.deplate_options.variables['mandatoryID'] = false
32
+ else
33
+ out.deplate_options.variables['auxiliaryDir'] = 'public/files'
34
+ out.deplate_options.variables['mandatoryID'] = true
35
+ end
36
+ out.to_html
37
+ end
38
+ end
39
+ rescue LoadError
40
+ # We can't really help what's not there
35
41
  end
36
- out.to_html
37
- end
38
42
  end
39
- rescue LoadError
40
- # We can't really help what's not there
41
- end
42
43
  end
43
- end
44
44
  end
45
45
 
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
  # deplate.rb -- Convert wiki-like plain text pseudo markup to something else
3
- # @Author: Thomas Link (samul AT web.de)
3
+ # @Author: Thomas Link (micathom AT gmail com)
4
4
  # @Website: http://deplate.sf.net/
5
5
  # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
6
6
  # @Created: 24-Feb-2004.
7
- # @Last Change: 28-Apr-2006.
7
+ # @Last Change: 2007-04-14.
8
8
 
9
9
  require 'profile' if ARGV[0] == '--profile'
10
10
 
@@ -1,9 +1,9 @@
1
1
  # bib.rb
2
- # @Author: Thomas Link (samul AT web de)
2
+ # @Author: Thomas Link (micathom AT gmail com)
3
3
  # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
4
4
  # @Created: 11-Feb-2006.
5
- # @Last Change: 19-Feb-2006.
6
- # @Revision: 0.48
5
+ # @Last Change: 2007-07-01.
6
+ # @Revision: 0.85
7
7
  #
8
8
  # = Description
9
9
  # = Usage
@@ -37,7 +37,7 @@ class Deplate::Bib::Default < Deplate::CommonObject
37
37
  end
38
38
 
39
39
  def bib_format(bibdef)
40
- type = bib_get_value(bibdef, '@type').downcase
40
+ type = bib_get_value(bibdef, '_type').downcase
41
41
  meth = "bib_#{type}"
42
42
  unless self.respond_to?(meth, true)
43
43
  meth = 'bib_default'
@@ -51,15 +51,17 @@ class Deplate::Bib::Default < Deplate::CommonObject
51
51
  args = invoker.args
52
52
  n = args['n']
53
53
  p = args['p']
54
- np = args['np']
54
+ ip = args['ip']
55
+ np = ip || args['np']
56
+ mode = args['mode']
55
57
  y = args['y']
58
+ sep = args['sep'] || (np ? '' : ' ')
56
59
  acc = []
57
60
  pmsg = @deplate.msg('p.\\ ')
58
61
  for c in invoker.elt
59
62
  cc = @deplate.formatter.bib_entry(c)
60
63
  if cc
61
- yr = cc.assoc('year')
62
- yr = if yr then yr[1] else '' end
64
+ yr = cc['year'] || ''
63
65
  if p
64
66
  p = @deplate.parse_and_format_without_wikinames(container, "#{pmsg}#{p}")
65
67
  yr += ": #{p}"
@@ -68,14 +70,21 @@ class Deplate::Bib::Default < Deplate::CommonObject
68
70
  if y
69
71
  acc << referenced_bib_entry(invoker, c, yr)
70
72
  else
71
- nm = cc.assoc('author') || cc.assoc('editor') || cc.assoc('howpublished')
73
+ nm = cc['author'] || cc['editor'] || cc['howpublished']
72
74
  if nm
73
- nm = nm[1]
74
- nm = nm.gsub(/\s+/, ' ').split(' and ').collect do |a|
75
- a.scan(/\w+$/)
75
+ if nm =~ /^\{(.*?)\}$/
76
+ nm = $1
77
+ else
78
+ nm = nm.gsub(/\s+/, ' ').split(/ +and +/).collect do |a|
79
+ a.scan(/\w+$/)
80
+ end
81
+ nm = nm.join(', ')
82
+ end
83
+ if ip
84
+ acc << referenced_bib_entry(invoker, c, "#{nm} (#{yr})")
85
+ else
86
+ acc << referenced_bib_entry(invoker, c, [nm, yr].join(' '))
76
87
  end
77
- nm = nm.join(', ')
78
- acc << referenced_bib_entry(invoker, c, [nm, yr].join(' '))
79
88
  else
80
89
  acc << referenced_bib_entry(invoker, c, c)
81
90
  end
@@ -84,10 +93,16 @@ class Deplate::Bib::Default < Deplate::CommonObject
84
93
  end
85
94
  n &&= n + @deplate.formatter.plain_text(' ', true)
86
95
  acc = acc.join('; ')
96
+ sep = @deplate.formatter.plain_text(sep, true)
87
97
  if np
88
- return %{#{@deplate.formatter.plain_text(' ', true)}#{n}#{acc}}
98
+ return %{#{sep}#{n}#{acc}}
89
99
  else
90
- return %{#{@deplate.formatter.plain_text(' ', true)}(#{n}#{acc})}
100
+ case mode
101
+ when 'np'
102
+ return %{#{sep}#{n}#{acc}}
103
+ else
104
+ return %{#{sep}(#{n}#{acc})}
105
+ end
91
106
  end
92
107
  end
93
108
 
@@ -101,9 +116,8 @@ class Deplate::Bib::Default < Deplate::CommonObject
101
116
  end
102
117
 
103
118
  def bib_get_value(bibdef, key)
104
- val = bibdef.assoc(key)
119
+ val = bibdef[key.downcase]
105
120
  if val
106
- val = val[1]
107
121
  val.gsub(/\s{2,}/, ' ')
108
122
  end
109
123
  end
@@ -334,9 +348,17 @@ class Deplate::Bib::Default < Deplate::CommonObject
334
348
  # author title howpublished month year
335
349
  def bib_misc(bibdef)
336
350
  author = bib_author(bibdef)
351
+ how = bib_howpublished(bibdef)
352
+ pub = bib_publisher(bibdef)
353
+ if !author and how
354
+ author = how
355
+ how = nil
356
+ end
357
+ if !how and pub
358
+ how = pub
359
+ end
337
360
  year = bib_year(bibdef)
338
361
  title = bib_title(bibdef)
339
- how = bib_howpublished(bibdef)
340
362
  month = bib_month(bibdef)
341
363
  address = bib_address(bibdef)
342
364
  url = bib_url(bibdef)
@@ -529,29 +551,38 @@ class Deplate::Bib::Default < Deplate::CommonObject
529
551
 
530
552
  def reformat_authors(text)
531
553
  if text
532
- namesep = @deplate.variables['bibSepName'] || bibSepName
533
- authorsep = @deplate.variables['bibSepAuthors'] || bibSepAuthors
534
- twosep = @deplate.variables['bibSepTwoAuthors'] || bibSepTwoAuthors
535
- lastsep = @deplate.variables['bibSepLastAuthor'] || bibSepLastAuthor
536
- authors = Deplate::Core.authors_split(text)
537
- authorsn = authors.size
538
- authorsn1 = authors.size - 1
539
- authorsn2 = authors.size - 2
540
- au = []
541
- authors.each_with_index do |a, i|
542
- m = /^((.+?)?\s+)?(\S+)$/.match(a.strip)
543
- if m[2]
544
- au << reformat_author_name(m[2], m[3], namesep)
545
- else
546
- au << a
547
- end
548
- if i < authorsn2
549
- au << authorsep
550
- elsif i < authorsn1
551
- au << (authorsn == 2 ? twosep : lastsep)
552
- end
553
- end
554
- return au.join
554
+ if text =~ /^\{(.*?)\}$/
555
+ return $1
556
+ else
557
+ namesep = @deplate.variables['bibSepName'] || bibSepName
558
+ authorsep = @deplate.variables['bibSepAuthors'] || bibSepAuthors
559
+ twosep = @deplate.variables['bibSepTwoAuthors'] || bibSepTwoAuthors
560
+ lastsep = @deplate.variables['bibSepLastAuthor'] || bibSepLastAuthor
561
+ authors = Deplate::Core.authors_split(text)
562
+ authorsn = authors.size
563
+ authorsn1 = authors.size - 1
564
+ authorsn2 = authors.size - 2
565
+ au = []
566
+ authors.each_with_index do |a, i|
567
+ m = /^(.+?)\s*,\s*(.+)$/.match(a.strip)
568
+ if m
569
+ au << reformat_author_name(m[2], m[1], namesep)
570
+ else
571
+ m = /^((.+?)?\s+)?(\S+)$/.match(a.strip)
572
+ if m[2]
573
+ au << reformat_author_name(m[2], m[3], namesep)
574
+ else
575
+ au << a
576
+ end
577
+ if i < authorsn2
578
+ au << authorsep
579
+ elsif i < authorsn1
580
+ au << (authorsn == 2 ? twosep : lastsep)
581
+ end
582
+ end
583
+ end
584
+ return au.join
585
+ end
555
586
  end
556
587
  end
557
588