deplate 0.8.4 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. data/CHANGES.TXT +118 -0
  2. data/NEWS.TXT +6 -21
  3. data/VERSION.TXT +1 -1
  4. data/etc/deplate.ini +15 -2
  5. data/lib/action_view/helpers/deplate.rb +0 -0
  6. data/lib/deplate/abstract-class.rb +3 -2
  7. data/lib/deplate/bib.rb +3 -2
  8. data/lib/deplate/builtin.rb +3 -2
  9. data/lib/deplate/cache.rb +3 -2
  10. data/lib/deplate/commands.rb +3 -11
  11. data/lib/deplate/common.rb +7 -2
  12. data/lib/deplate/compat.rb +21 -0
  13. data/lib/deplate/compat/parsedate.rb +24 -0
  14. data/lib/deplate/converter.rb +3 -2
  15. data/lib/deplate/core.rb +135 -103
  16. data/lib/deplate/counters.rb +3 -2
  17. data/lib/deplate/css/article.css +2 -2
  18. data/lib/deplate/css/doc.css +3 -2
  19. data/lib/deplate/css/heading-navbar.css +2 -2
  20. data/lib/deplate/css/highlight.css +0 -0
  21. data/lib/deplate/css/layout-deplate-print.css +2 -2
  22. data/lib/deplate/css/layout-deplate.css +2 -2
  23. data/lib/deplate/css/presentation.css +2 -2
  24. data/lib/deplate/css/sans-serif.css +2 -2
  25. data/lib/deplate/css/screenplay.css +0 -0
  26. data/lib/deplate/css/serif-e.css +2 -2
  27. data/lib/deplate/css/serif-rel.css +3 -2
  28. data/lib/deplate/css/serif.css +2 -2
  29. data/lib/deplate/css/slides.css +3 -2
  30. data/lib/deplate/css/tabbar-top.css +2 -2
  31. data/lib/deplate/css/text-sans-serif.css +3 -2
  32. data/lib/deplate/css/text-serif.css +2 -2
  33. data/lib/deplate/css/website.css +0 -0
  34. data/lib/deplate/define.rb +3 -2
  35. data/lib/deplate/deplate-string.rb +3 -2
  36. data/lib/deplate/docbook.rb +4 -14
  37. data/lib/deplate/elements.rb +37 -4
  38. data/lib/deplate/encoding.rb +57 -0
  39. data/lib/deplate/etc.rb +7 -5
  40. data/lib/deplate/external.rb +5 -13
  41. data/lib/deplate/fmt/dbk-article-4.1.2.rb +3 -2
  42. data/lib/deplate/fmt/dbk-article.rb +3 -2
  43. data/lib/deplate/fmt/dbk-book.rb +3 -2
  44. data/lib/deplate/fmt/dbk-ref.rb +3 -2
  45. data/lib/deplate/fmt/dbk-slides.rb +3 -2
  46. data/lib/deplate/fmt/dbk-snippet.rb +3 -2
  47. data/lib/deplate/fmt/html-snippet.rb +3 -2
  48. data/lib/deplate/fmt/html.rb +40 -27
  49. data/lib/deplate/fmt/htmlsite.rb +3 -2
  50. data/lib/deplate/fmt/htmlslides.rb +3 -2
  51. data/lib/deplate/fmt/htmlwebsite.rb +3 -2
  52. data/lib/deplate/fmt/latex-dramatist.rb +2 -1
  53. data/lib/deplate/fmt/latex-snippet.rb +3 -2
  54. data/lib/deplate/fmt/latex.rb +88 -67
  55. data/lib/deplate/fmt/null.rb +3 -2
  56. data/lib/deplate/fmt/php.rb +3 -2
  57. data/lib/deplate/fmt/phpsite.rb +3 -2
  58. data/lib/deplate/fmt/plain.rb +4 -3
  59. data/lib/deplate/fmt/sweave.rb +104 -0
  60. data/lib/deplate/fmt/template.rb +3 -2
  61. data/lib/deplate/fmt/xhtml10t.rb +82 -2
  62. data/lib/deplate/fmt/xhtml11m.rb +3 -2
  63. data/lib/deplate/formatter-snippet.rb +3 -2
  64. data/lib/deplate/formatter.rb +203 -29
  65. data/lib/deplate/guesslanguage.rb +3 -2
  66. data/lib/deplate/input.rb +9 -8
  67. data/lib/deplate/input/deplate-headings.rb +3 -2
  68. data/lib/deplate/input/deplate-restricted.rb +3 -2
  69. data/lib/deplate/input/deplate.rb +3 -2
  70. data/lib/deplate/input/play.rb +3 -2
  71. data/lib/deplate/input/rdoc.rb +3 -2
  72. data/lib/deplate/input/template.rb +3 -2
  73. data/lib/deplate/lib/Makefile.config +8 -0
  74. data/lib/deplate/locale/de.latin1 +6 -0
  75. data/lib/deplate/macros.rb +4 -2
  76. data/lib/deplate/messages.rb +9 -5
  77. data/lib/deplate/metadata.rb +3 -2
  78. data/lib/deplate/metadata/marshal.rb +3 -2
  79. data/lib/deplate/metadata/xml.rb +3 -2
  80. data/lib/deplate/metadata/yaml.rb +3 -2
  81. data/lib/deplate/mod/anyword.rb +3 -2
  82. data/lib/deplate/mod/babelfish.rb +3 -2
  83. data/lib/deplate/mod/code-coderay.rb +3 -2
  84. data/lib/deplate/mod/code-gvim.rb +3 -2
  85. data/lib/deplate/mod/code-gvim71.rb +3 -2
  86. data/lib/deplate/mod/code-highlight.rb +3 -2
  87. data/lib/deplate/mod/colored-log.rb +3 -2
  88. data/lib/deplate/mod/encode.rb +33 -0
  89. data/lib/deplate/mod/endnotes.rb +3 -2
  90. data/lib/deplate/mod/entities-decode.rb +2 -1
  91. data/lib/deplate/mod/entities-encode.rb +2 -1
  92. data/lib/deplate/mod/guesslanguage.rb +3 -2
  93. data/lib/deplate/mod/html-asciimath.rb +3 -2
  94. data/lib/deplate/mod/html-deplate-button.rb +3 -2
  95. data/lib/deplate/mod/html-headings-navbar.rb +3 -2
  96. data/lib/deplate/mod/html-highstep.rb +3 -2
  97. data/lib/deplate/mod/html-jsmath.rb +3 -2
  98. data/lib/deplate/mod/html-mathml.rb +2 -1
  99. data/lib/deplate/mod/html-obfuscate-email.rb +3 -2
  100. data/lib/deplate/mod/html-sidebar.rb +3 -2
  101. data/lib/deplate/mod/htmlslides-navbar-fh.rb +3 -2
  102. data/lib/deplate/mod/iconv.rb +3 -2
  103. data/lib/deplate/mod/imgurl.rb +4 -3
  104. data/lib/deplate/mod/inlatex-compound.rb +3 -2
  105. data/lib/deplate/mod/koma.rb +3 -2
  106. data/lib/deplate/mod/lang-de.rb +3 -2
  107. data/lib/deplate/mod/lang-en.rb +3 -2
  108. data/lib/deplate/mod/lang-ru-koi8-r.rb +3 -2
  109. data/lib/deplate/mod/lang-ru.rb +3 -2
  110. data/lib/deplate/mod/lang-zh_CN-autospace.rb +3 -2
  111. data/lib/deplate/mod/lang-zh_CN.rb +3 -2
  112. data/lib/deplate/mod/latex-emph-table-head.rb +3 -2
  113. data/lib/deplate/mod/latex-styles.rb +3 -2
  114. data/lib/deplate/mod/latex-verbatim-small.rb +3 -2
  115. data/lib/deplate/mod/linkmap.rb +2 -1
  116. data/lib/deplate/mod/makefile.rb +39 -46
  117. data/lib/deplate/mod/mark-external-urls.rb +3 -2
  118. data/lib/deplate/mod/markup-1-warn.rb +3 -2
  119. data/lib/deplate/mod/markup-1.rb +3 -2
  120. data/lib/deplate/mod/navbar-png.rb +3 -2
  121. data/lib/deplate/mod/noindent.rb +3 -2
  122. data/lib/deplate/mod/numpara.rb +3 -2
  123. data/lib/deplate/mod/particle-math.rb +3 -2
  124. data/lib/deplate/mod/php-extra.rb +3 -2
  125. data/lib/deplate/mod/pstoedit.rb +3 -2
  126. data/lib/deplate/mod/recode.rb +3 -2
  127. data/lib/deplate/mod/smart-dash.rb +3 -2
  128. data/lib/deplate/mod/smiley.rb +3 -2
  129. data/lib/deplate/mod/soffice.rb +3 -2
  130. data/lib/deplate/mod/symbols-latin1.rb +8 -2
  131. data/lib/deplate/mod/symbols-od-utf-8.rb +3 -2
  132. data/lib/deplate/mod/symbols-plain.rb +3 -2
  133. data/lib/deplate/mod/symbols-sgml.rb +6 -5
  134. data/lib/deplate/mod/symbols-utf-8.rb +6 -5
  135. data/lib/deplate/mod/symbols-xml.rb +3 -2
  136. data/lib/deplate/mod/syntax-region-alt.rb +3 -2
  137. data/lib/deplate/mod/utf8.rb +3 -2
  138. data/lib/deplate/mod/validate-html.rb +3 -2
  139. data/lib/deplate/mod/xmlrpc.rb +3 -2
  140. data/lib/deplate/nukumi2.rb +3 -2
  141. data/lib/deplate/once-method.rb +3 -2
  142. data/lib/deplate/output.rb +3 -2
  143. data/lib/deplate/particles.rb +12 -6
  144. data/lib/{ps2ppm.rb → deplate/ps2ppm.rb} +11 -11
  145. data/lib/deplate/regions.rb +75 -52
  146. data/lib/deplate/skeletons.rb +3 -2
  147. data/lib/deplate/structured.rb +8 -24
  148. data/lib/deplate/template.rb +3 -2
  149. data/lib/deplate/themes/presentation.html/css/presentation.css +2 -2
  150. data/lib/deplate/themes/presentation.html/prelude.txt +1 -1
  151. data/lib/deplate/themes/presentation.html/resources/spacer.png +0 -0
  152. data/lib/deplate/themes/s5.xhtml/README.TXT +2 -0
  153. data/lib/deplate/themes/s5.xhtml/templates/s5.xhtml +42 -0
  154. data/lib/deplate/themes/s5.xhtml/theme.ini +11 -0
  155. data/lib/deplate/variables.rb +12 -2
  156. data/lib/deplate/wiki-markup.rb +3 -2
  157. data/lib/deplate/xml.rb +19 -21
  158. data/lib/deplate/zh_CN.rb +3 -2
  159. data/man/man1/deplate.1 +83 -128
  160. metadata +16 -4
@@ -1,10 +1,11 @@
1
+ # encoding: ASCII
1
2
  # null.rb
2
3
  # @Author: Thomas Link (micathom AT gmail com)
3
4
  # @Website: http://deplate.sf.net/
4
5
  # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
6
  # @Created: 17-M�r-2004.
6
- # @Last Change: 08-Jan-2006.
7
- # @Revision: 0.3747
7
+ # @Last Change: 2009-02-02.
8
+ # @Revision: 0.3749
8
9
 
9
10
  require 'deplate/formatter'
10
11
 
@@ -1,10 +1,11 @@
1
+ # encoding: ASCII
1
2
  # php.rb
2
3
  # @Author: Thomas Link (micathom AT gmail com)
3
4
  # @Website: http://deplate.sf.net/
4
5
  # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
6
  # @Created: 17-M�r-2004.
6
- # @Last Change: 21-Apr-2006.
7
- # @Revision: 0.914
7
+ # @Last Change: 2009-02-02.
8
+ # @Revision: 0.916
8
9
 
9
10
  require 'deplate/fmt/html'
10
11
  require 'deplate/mod/php-extra'
@@ -1,10 +1,11 @@
1
+ # encoding: ASCII
1
2
  # phpsite.rb
2
3
  # @Author: Thomas Link (micathom AT gmail com)
3
4
  # @Website: http://deplate.sf.net/
4
5
  # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
6
  # @Created: 17-M�r-2004.
6
- # @Last Change: 21-Apr-2006.
7
- # @Revision: 0.918
7
+ # @Last Change: 2009-02-02.
8
+ # @Revision: 0.920
8
9
 
9
10
  require 'deplate/fmt/htmlsite'
10
11
  require 'deplate/mod/php-extra'
@@ -1,10 +1,11 @@
1
+ # encoding: ASCII
1
2
  # fmt-html.rb
2
3
  # @Author: Thomas Link (micathom AT gmail com)
3
4
  # @Website: http://deplate.sf.net/
4
5
  # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
6
  # @Created: 17-M�r-2004.
6
- # @Last Change: 2008-05-14.
7
- # @Revision: 0.3594
7
+ # @Last Change: 2009-02-02.
8
+ # @Revision: 0.3597
8
9
 
9
10
  require "deplate/formatter"
10
11
 
@@ -65,7 +66,7 @@ class Deplate::Formatter::Plain < Deplate::Formatter
65
66
  end
66
67
  end
67
68
 
68
- def include_image(invoker, file, args, inline=false)
69
+ def include_image_general(invoker, file, args, inline=false)
69
70
  file = args['file'] if args['file']
70
71
  if inline or !@deplate.variables['asciiArt']
71
72
  return "[#{args["alt"] || @deplate.variables['imgAlt'] || file}]"
@@ -0,0 +1,104 @@
1
+ # encoding: ISO-8859-1
2
+ #!/usr/bin/env ruby
3
+ # @Last Change: 2009-01-17.
4
+ # Author:: Thomas Link (micathom AT gmail com)
5
+ # License:: GPL (see http://www.gnu.org/licenses/gpl.txt)
6
+ # Created:: 2008-11-24.
7
+
8
+
9
+ require 'deplate/fmt/latex.rb'
10
+
11
+
12
+ class Deplate::Formatter::Sweave < Deplate::Formatter::LaTeX
13
+ self.myname = 'sweave'
14
+ self.rx = /(la)?tex|sweave/i
15
+ self.related = ['latex']
16
+ self.suffix = ".Rnw"
17
+
18
+ self.latexDocClass = 'article'
19
+ # self.latexVariables = ['11pt', 'a4paper']
20
+
21
+
22
+ def prepare
23
+ super
24
+ sweave = @deplate.variables['sweaveOpts']
25
+ if sweave
26
+ output_at(:pre, :doc_def, "\\SweaveOpts{#{sweave}}")
27
+ end
28
+ sweavePath = @deplate.variables['sweavePath']
29
+ if sweavePath
30
+ # add_package('Sweave')
31
+ add_package(sweavePath)
32
+ end
33
+ end
34
+
35
+
36
+ def img_R(invoker, body)
37
+ if invoker.args['noFloat']
38
+ pre = post = nil
39
+ else
40
+ pre = with_agent(:figure_top, String, invoker)
41
+ post = with_agent(:figure_bottom, String, invoker).strip
42
+ end
43
+ opts = sweave_options(invoker, 'fig=TRUE')
44
+ return join_blocks([pre, "<<#{opts}>>=", body, '@', post].compact)
45
+ end
46
+
47
+
48
+ def region_R(invoker, body)
49
+ opts = sweave_options(invoker)
50
+ return join_blocks(["<<#{opts}>>=", body, '@'])
51
+ end
52
+
53
+
54
+ private
55
+
56
+ def sweave_options(invoker, rest=nil)
57
+ opts = [invoker.args['sweave'], rest]
58
+ if (id = invoker.args[:id])
59
+ opts << "label=#{id}"
60
+ end
61
+ if invoker.args[:hide]
62
+ opts << 'results=hide'
63
+ end
64
+ ['print', 'echo', 'results', 'height', 'width', 'engine'].each do |arg|
65
+ if invoker.args.has_key?(arg)
66
+ opts << "#{arg}=#{sweave_value(invoker.args[arg])}"
67
+ end
68
+ end
69
+ if invoker.args['swallow'] or invoker.args['drop']
70
+ opts << 'echo=FALSE,print=FALSE,results=hide'
71
+ end
72
+ return opts.compact.join(',')
73
+ end
74
+
75
+
76
+ def sweave_value(value)
77
+ case value
78
+ when TrueClass
79
+ return 'TRUE'
80
+ when FalseClass
81
+ return 'FALSE'
82
+ else
83
+ return value
84
+ end
85
+ end
86
+
87
+ end
88
+
89
+
90
+ class Deplate::Macro::Sweave < Deplate::Macro::Insert
91
+ register_as 'sweave'
92
+ register_as 'r'
93
+
94
+ def setup(text)
95
+ super
96
+ @text = "\\Sexpr{#{@text}}"
97
+ end
98
+ end
99
+
100
+
101
+
102
+ # Local Variables:
103
+ # revisionRx: REVISION\s\+=\s\+\'
104
+ # End:
@@ -1,10 +1,11 @@
1
+ # encoding: ASCII
1
2
  # template.rb
2
3
  # @Author: Thomas Link (micathom AT gmail com)
3
4
  # @Website: http://deplate.sf.net/
4
5
  # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
6
  # @Created: 25-M�r-2005.
6
- # @Last Change: 23-Okt-2005.
7
- # @Revision: 0.21
7
+ # @Last Change: 2009-02-02.
8
+ # @Revision: 0.23
8
9
  #
9
10
  # = Description
10
11
  # The formatter for templates
@@ -1,10 +1,11 @@
1
+ # encoding: ASCII
1
2
  # fmt-xhtml.rb
2
3
  # @Author: Thomas Link (micathom AT gmail com)
3
4
  # @Website: http://deplate.sf.net/
4
5
  # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
6
  # @Created: 03-Aug-2004.
6
- # @Last Change: 23-Okt-2005.
7
- # @Revision: 0.35
7
+ # @Last Change: 2009-02-02.
8
+ # @Revision: 0.48
8
9
 
9
10
  require "deplate/fmt/html"
10
11
 
@@ -37,5 +38,84 @@ class Deplate::Formatter::XHTML10transitional < Deplate::Formatter::HTML
37
38
  def head_link_tag(text)
38
39
  return %Q{<link #{text} />}
39
40
  end
41
+
42
+ def include_image_svg(invoker, file, args, inline=false)
43
+ if args['include']
44
+
45
+ svg = File.read(file)
46
+ svg.sub!(/^.*?<\?xml .*?\?>[^<]*/, '')
47
+ svg.sub!(/^<!DOCTYPE .*?>[^<]*/, '')
48
+ return svg
49
+
50
+ else
51
+
52
+ acc = ['type="image/svg+xml"']
53
+
54
+ file = args['file'] if args['file']
55
+ file = img_url(use_image_filename(file, args))
56
+ acc << %{data="#{file}"}
57
+
58
+ w = args['w'] || args['width']
59
+ acc << %{width="#{w}"} if w
60
+ h = args['h'] || args['heigth']
61
+ acc << %{height="#{h}"} if h
62
+
63
+ # b = args['border'] || '0'
64
+ # acc << %{border="#{b}"}
65
+
66
+ # # f = file[0..-(File.extname(file).size + 1)]
67
+ # alt = args['alt']
68
+ # if alt
69
+ # alt.gsub!(/[\\"&<>]/) do |s|
70
+ # case s
71
+ # when '\\'
72
+ # ''
73
+ # else
74
+ # plain_text(s).gsub(/\\([0-9&`'+])/, '\\1')
75
+ # end
76
+ # end
77
+ # else
78
+ # alt = File.basename(file, '.*')
79
+ # end
80
+ # acc << %{alt="#{alt}"}
81
+
82
+ style = args['style']
83
+ if style
84
+ style = Deplate::Core.split_list(style, ',', '; ', invoker.source)
85
+ else
86
+ style = []
87
+ end
88
+ style << (inline ? 'inline' : 'figure')
89
+ acc << %{class="#{class_attr(style)}"}
90
+
91
+ img_id = args['id']
92
+ unless img_id
93
+ fbase = Deplate::Core.clean_name(File.basename(fbase || 'imgid'))
94
+ img_id = @deplate.auto_numbered(fbase, :inc => 1, :fmt => %{#{fbase}_%s})
95
+ end
96
+ acc << %{id="#{img_id}" name="#{img_id}"}
97
+
98
+ # hi = args['hi']
99
+ # if hi
100
+ # case hi
101
+ # when String
102
+ # hi_img = img_url(use_image_filename(hi, args))
103
+ # else
104
+ # hi_img = [File.dirname(file), %{hi-#{File.basename(file)}}]
105
+ # hi_img = File.join(hi_img.compact)
106
+ # end
107
+ #
108
+ # setup_highlight_image
109
+ # acc << %{onMouseover="HighlightImage('%s', '%s')" onMouseout="HighlightImage('%s', '%s')"} % [
110
+ # img_id, img_url(hi_img, args),
111
+ # img_id, file
112
+ # ]
113
+ # end
114
+
115
+ return %{<object #{acc.join(' ')} ></object>}
116
+
117
+ end
118
+ end
119
+
40
120
  end
41
121
 
@@ -1,9 +1,10 @@
1
+ # encoding: ASCII
1
2
  # @Author: Thomas Link (micathom AT gmail com)
2
3
  # @Website: http://deplate.sf.net/
3
4
  # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
4
5
  # @Created: 2008-04-14.
5
- # @Last Change: 2008-04-14.
6
- # @Revision: 0.42
6
+ # @Last Change: 2009-02-02.
7
+ # @Revision: 0.44
7
8
 
8
9
  require "deplate/fmt/xhtml10t"
9
10
 
@@ -1,10 +1,11 @@
1
+ # encoding: ASCII
1
2
  # formatter-snippet.rb
2
3
  # @Author: Thomas Link (micathom AT gmail com)
3
4
  # @Website: http://deplate.sf.net/
4
5
  # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
6
  # @Created: 11-Aug-2005.
6
- # @Last Change: 23-Okt-2005.
7
- # @Revision: 0.3
7
+ # @Last Change: 2009-02-02.
8
+ # @Revision: 0.5
8
9
 
9
10
  module Deplate::Snippet
10
11
  def formatter_initialize_snippet
@@ -1,13 +1,15 @@
1
+ # encoding: ASCII
1
2
  # formatter.rb
2
3
  # @Author: Thomas Link (micathom AT gmail com)
3
4
  # @Website: http://deplate.sf.net/
4
5
  # @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
5
6
  # @Created: 31-Okt-2004.
6
- # @Last Change: 2008-07-10.
7
- # @Revision: 0.2017
7
+ # @Last Change: 2009-02-05.
8
+ # @Revision: 0.2062
8
9
 
9
10
  require 'deplate/abstract-class'
10
11
  require 'deplate/common'
12
+ require 'deplate/encoding'
11
13
  require 'strscan'
12
14
 
13
15
  # Description:
@@ -98,7 +100,7 @@ class Deplate::Formatter < Deplate::CommonObject
98
100
  elsif file.nil?
99
101
  options.out = '-'
100
102
  else
101
- options.out = Deplate::Core.get_out_fullname(file, options.suffix, options)
103
+ options.out = Deplate::Core.get_out_fullname(file, options.suffix, options, :raw => true)
102
104
  end
103
105
  end
104
106
  options
@@ -254,22 +256,7 @@ class Deplate::Formatter < Deplate::CommonObject
254
256
  end
255
257
 
256
258
  def canonic_enc_name(enc, table=@encodings)
257
- case enc.downcase
258
- when 'latin-1', 'latin1', 'l1', 'isolat1', 'iso-8859-1'
259
- cen = 'latin1'
260
- when 'latin-9', 'latin9', 'l9', 'isolat9', 'iso-8859-15'
261
- cen = 'latin9'
262
- when 'gb2312', 'gbk'
263
- cen = 'gb2312'
264
- when 'koi8-r'
265
- cen = 'koi8-r'
266
- when 'utf8', 'utf-8'
267
- cen = 'utf-8'
268
- else
269
- log(['Unsupported encoding', enc], :anyway)
270
- cen = enc
271
- end
272
- return table[cen] || cen
259
+ Deplate::Encoding.canonic_enc_name(enc, table)
273
260
  end
274
261
 
275
262
  def output_destination
@@ -445,6 +432,8 @@ class Deplate::Formatter < Deplate::CommonObject
445
432
  else
446
433
  r = @special_symbols[e]
447
434
  case r
435
+ when :identity
436
+ acc << e
448
437
  when String
449
438
  acc << r
450
439
  when Proc
@@ -549,10 +538,10 @@ class Deplate::Formatter < Deplate::CommonObject
549
538
  @symbol_proxy.nonbreakingspace(invoker)
550
539
  end
551
540
 
552
- def symbol_paragraph(invoker)
553
- check_symbol_proxy
554
- @symbol_proxy.symbol_paragraph(invoker)
555
- end
541
+ # def symbol_paragraph(invoker)
542
+ # check_symbol_proxy
543
+ # @symbol_proxy.symbol_paragraph(invoker)
544
+ # end
556
545
 
557
546
  def format_symbol(invoker, sym)
558
547
  check_symbol_proxy
@@ -716,9 +705,166 @@ class Deplate::Formatter < Deplate::CommonObject
716
705
  return %{#{plain_text("{")}#{invoker.elt}#{plain_text("}")}}
717
706
  end
718
707
 
708
+ def format_heading_close(invoker)
709
+ end
710
+
711
+ def close_headings(level, &block)
712
+ hds = @deplate.options.headings
713
+ if hds
714
+ acc = []
715
+ loop do
716
+ hd = hds.last
717
+ if hd and level <= hd.level
718
+ acc << indent_text(format_heading_close(hd), :mult => hd.level - level)
719
+ if block
720
+ acc << block.call(hd.level)
721
+ end
722
+ hds.pop
723
+ else
724
+ break
725
+ end
726
+ end
727
+ if acc.empty?
728
+ return nil
729
+ else
730
+ return join_blocks(acc)
731
+ end
732
+ end
733
+ end
734
+
735
+
736
+ def canonic_mime(type)
737
+ case type
738
+ when 'image/cgm'
739
+ when 'image/g3fax'
740
+ when 'image/gif', 'gif'
741
+ return 'image/gif'
742
+ when 'image/ief', 'ief'
743
+ when 'image/jpeg', 'jpeg', 'jpg', 'jpe'
744
+ return 'image/jpeg'
745
+ when 'image/naplps'
746
+ when 'image/pcx', 'pcx'
747
+ when 'image/png', 'png'
748
+ return 'image/png'
749
+ when 'image/prs.btif'
750
+ when 'image/prs.pti'
751
+ when 'image/svg'+'xml', 'svg', 'svgz'
752
+ return 'image/svg+xml'
753
+ when 'image/tiff', 'tiff', 'tif'
754
+ return 'image/tiff'
755
+ when 'image/vnd.cns.inf2'
756
+ when 'image/vnd.djvu', 'djvu', 'djv'
757
+ when 'image/vnd.dwg'
758
+ when 'image/vnd.dxf'
759
+ when 'image/vnd.fastbidsheet'
760
+ when 'image/vnd.fpx'
761
+ when 'image/vnd.fst'
762
+ when 'image/vnd.fujixerox.edmics-mmr'
763
+ when 'image/vnd.fujixerox.edmics-rlc'
764
+ when 'image/vnd.mix'
765
+ when 'image/vnd.net-fpx'
766
+ when 'image/vnd.svf'
767
+ when 'image/vnd.wap.wbmp', 'wbmp'
768
+ when 'image/vnd.xiff'
769
+ when 'image/x-cmu-raster', 'ras'
770
+ when 'image/x-coreldraw', 'cdr'
771
+ when 'image/x-coreldrawpattern', 'pat'
772
+ when 'image/x-coreldrawtemplate', 'cdt'
773
+ when 'image/x-corelphotopaint', 'cpt'
774
+ when 'image/x-icon', 'ico'
775
+ when 'image/x-jg', 'art'
776
+ when 'image/x-jng', 'jng'
777
+ when 'image/x-ms-bmp', 'bmp'
778
+ return 'image/x-ms-bmp'
779
+ when 'image/x-photoshop', 'psd'
780
+ when 'image/x-portable-anymap', 'pnm'
781
+ when 'image/x-portable-bitmap', 'pbm'
782
+ when 'image/x-portable-graymap', 'pgm'
783
+ when 'image/x-portable-pixmap', 'ppm'
784
+ when 'image/x-rgb', 'rgb'
785
+ when 'image/x-xbitmap', 'xbm'
786
+ when 'image/x-xpixmap', 'xpm'
787
+ when 'image/x-xwindowdump', 'xwd'
788
+ # wmf
789
+ # ps, eps
790
+ # pdf
791
+ end
792
+ end
793
+
794
+
795
+ def canonic_image_type(type)
796
+ case type
797
+ when 'image/cgm'
798
+ when 'image/g3fax'
799
+ when 'image/gif', 'gif'
800
+ return 'gif'
801
+ when 'image/ief', 'ief'
802
+ when 'image/jpeg', 'jpeg', 'jpg', 'jpe'
803
+ return 'jpg'
804
+ when 'image/naplps'
805
+ when 'image/pcx', 'pcx'
806
+ when 'image/png', 'png'
807
+ return 'png'
808
+ when 'image/prs.btif'
809
+ when 'image/prs.pti'
810
+ when 'image/svg'+'xml', 'svg', 'svgz'
811
+ return 'svg'
812
+ when 'image/tiff', 'tiff', 'tif'
813
+ return 'tif'
814
+ when 'image/vnd.cns.inf2'
815
+ when 'image/vnd.djvu', 'djvu', 'djv'
816
+ when 'image/vnd.dwg'
817
+ when 'image/vnd.dxf'
818
+ when 'image/vnd.fastbidsheet'
819
+ when 'image/vnd.fpx'
820
+ when 'image/vnd.fst'
821
+ when 'image/vnd.fujixerox.edmics-mmr'
822
+ when 'image/vnd.fujixerox.edmics-rlc'
823
+ when 'image/vnd.mix'
824
+ when 'image/vnd.net-fpx'
825
+ when 'image/vnd.svf'
826
+ when 'image/vnd.wap.wbmp', 'wbmp'
827
+ when 'image/vnd.xiff'
828
+ when 'image/x-cmu-raster', 'ras'
829
+ when 'image/x-coreldraw', 'cdr'
830
+ when 'image/x-coreldrawpattern', 'pat'
831
+ when 'image/x-coreldrawtemplate', 'cdt'
832
+ when 'image/x-corelphotopaint', 'cpt'
833
+ when 'image/x-icon', 'ico'
834
+ when 'image/x-jg', 'art'
835
+ when 'image/x-jng', 'jng'
836
+ when 'image/x-ms-bmp', 'bmp'
837
+ return 'bmp'
838
+ when 'image/x-photoshop', 'psd'
839
+ when 'image/x-portable-anymap', 'pnm'
840
+ when 'image/x-portable-bitmap', 'pbm'
841
+ when 'image/x-portable-graymap', 'pgm'
842
+ when 'image/x-portable-pixmap', 'ppm'
843
+ when 'image/x-rgb', 'rgb'
844
+ when 'image/x-xbitmap', 'xbm'
845
+ when 'image/x-xpixmap', 'xpm'
846
+ when 'image/x-xwindowdump', 'xwd'
847
+ # wmf
848
+ # ps, eps
849
+ # pdf
850
+ end
851
+ end
852
+
853
+
854
+ def include_image(invoker, file, args, *other_args)
855
+ type = args['type'] || File.extname(file).sub(/^\./, '')
856
+ type = canonic_image_type(type)
857
+ meth = "include_image_#{type}"
858
+ if respond_to?(meth)
859
+ return send(meth, invoker, file, args, *other_args)
860
+ else
861
+ include_image_general(invoker, file, args, *other_args)
862
+ end
863
+ end
864
+
719
865
 
720
866
  ### General
721
- def_abstract :format_label, :format_figure, :include_image, :image_suffixes
867
+ def_abstract :format_label, :format_figure, :include_image_general, :image_suffixes
722
868
 
723
869
  ### Elements
724
870
  def_abstract :format_note, :format_table, :format_heading, :format_list,
@@ -804,7 +950,7 @@ class Deplate::Formatter < Deplate::CommonObject
804
950
  break_at = args[:break_at]
805
951
  acc = []
806
952
  rx = /(\n|[[:space:]#{break_at}]+)/
807
- text.each do |text|
953
+ text.each_line do |text|
808
954
  # if text.kind_of?(Array)
809
955
  # log("We shouldn't be here. If you can track down when this happens, please send an example to the author.", :error)
810
956
  # puts caller[0..10].join("\n")
@@ -1145,7 +1291,8 @@ class Deplate::Formatter < Deplate::CommonObject
1145
1291
  shift = args[:shift]
1146
1292
  hanging = args[:hanging]
1147
1293
  indent = args[:indent] || format_indent(mult, shift)
1148
- return text.collect do |l|
1294
+ acc = []
1295
+ text.each_line do |l|
1149
1296
  rv = '%s%s' % [indent, l.chomp]
1150
1297
  if hanging
1151
1298
  indent = args[:indenttail] || \
@@ -1162,8 +1309,9 @@ class Deplate::Formatter < Deplate::CommonObject
1162
1309
  end
1163
1310
  hanging = false
1164
1311
  end
1165
- rv
1166
- end.join("\n")
1312
+ acc << rv
1313
+ end
1314
+ return acc.join("\n")
1167
1315
  end
1168
1316
  end
1169
1317
 
@@ -1220,12 +1368,38 @@ class Deplate::Formatter < Deplate::CommonObject
1220
1368
  end
1221
1369
 
1222
1370
 
1223
- private
1371
+ protected
1224
1372
  def initialize_services
1225
1373
  services = {}
1226
1374
  return services
1227
1375
  end
1228
1376
 
1377
+ # def clean_tags(text)
1378
+ # if text
1379
+ # t = text.gsub(/\<[^>]*?\>/, '')
1380
+ # t.gsub!(/^\s*$/, '')
1381
+ # t.gsub!(/^\n\s*/, '')
1382
+ # t.gsub!(/\n\s*$/, '')
1383
+ # t
1384
+ # end
1385
+ # end
1386
+
1387
+ def clean_tags(text, *tags)
1388
+ if text
1389
+ if tags.empty?
1390
+ t = text.gsub(/\<[^>]*?\>/, '')
1391
+ else
1392
+ # tags = tags.empty? ? '\w+' : tags.join('|')
1393
+ tags = tags.join('|')
1394
+ t = text.gsub(/<(#{tags}).*?\/>|<(#{tags}).*?>.*?<\/\1>/, '')
1395
+ end
1396
+ t.gsub!(/^\s*$/, '')
1397
+ t.gsub!(/^\n\s*/, '')
1398
+ t.gsub!(/\n\s*$/, '')
1399
+ t
1400
+ end
1401
+ end
1402
+
1229
1403
  def format_custom_list(invoker, elt)
1230
1404
  listing = @deplate.options.listings.get(elt, true)
1231
1405
  props = listing[:props]