webgen 0.5.3 → 0.5.4

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 (41) hide show
  1. data/Rakefile +2 -0
  2. data/VERSION +1 -1
  3. data/bin/webgen +1 -0
  4. data/doc/contentprocessor.template +4 -3
  5. data/doc/contentprocessor/blocks.page +5 -6
  6. data/doc/contentprocessor/builder.page +1 -1
  7. data/doc/contentprocessor/erb.page +1 -1
  8. data/doc/contentprocessor/erubis.page +46 -0
  9. data/doc/contentprocessor/haml.page +1 -1
  10. data/doc/contentprocessor/maruku.page +1 -1
  11. data/doc/contentprocessor/rdiscount.page +37 -0
  12. data/doc/contentprocessor/rdoc.page +1 -1
  13. data/doc/contentprocessor/redcloth.page +0 -1
  14. data/doc/contentprocessor/sass.page +0 -1
  15. data/doc/contentprocessor/tags.page +1 -1
  16. data/doc/extensions.page +2 -7
  17. data/doc/faq.page +49 -12
  18. data/doc/index.page +9 -9
  19. data/doc/manual.page +110 -22
  20. data/doc/reference_configuration.page +28 -3
  21. data/doc/reference_metainfo.page +2 -1
  22. data/doc/sourcehandler/page.page +16 -0
  23. data/doc/upgrading.page +109 -37
  24. data/doc/webgen_page_format.page +3 -1
  25. data/lib/webgen/configuration.rb +14 -1
  26. data/lib/webgen/contentprocessor.rb +2 -0
  27. data/lib/webgen/contentprocessor/erubis.rb +40 -0
  28. data/lib/webgen/contentprocessor/rdiscount.rb +15 -0
  29. data/lib/webgen/default_config.rb +8 -0
  30. data/lib/webgen/node.rb +22 -7
  31. data/lib/webgen/page.rb +9 -5
  32. data/lib/webgen/sourcehandler/base.rb +51 -31
  33. data/lib/webgen/tag/menu.rb +1 -3
  34. data/lib/webgen/version.rb +1 -1
  35. data/test/test_configuration.rb +7 -0
  36. data/test/test_contentprocessor_erubis.rb +47 -0
  37. data/test/test_contentprocessor_rdiscount.rb +15 -0
  38. data/test/test_node.rb +8 -0
  39. data/test/test_page.rb +6 -1
  40. data/test/test_sourcehandler_base.rb +35 -21
  41. metadata +28 -2
data/lib/webgen/page.rb CHANGED
@@ -55,7 +55,9 @@ module Webgen
55
55
  # the information. The +meta_info+ parameter can be used to provide default meta information.
56
56
  def from_data(data, meta_info = {})
57
57
  md = /(#{RE_META_INFO})?(.*)/m.match(normalize_eol(data))
58
- raise(WebgenPageFormatError, 'Invalid structure of meta information part') if md[1].nil? && data =~ RE_META_INFO_START
58
+ if md[1].nil? && data =~ RE_META_INFO_START
59
+ raise WebgenPageFormatError, 'Found start line for meta information block but no valid meta information block'
60
+ end
59
61
  meta_info = meta_info.merge(md[1].nil? ? {} : parse_meta_info(md[1]))
60
62
  blocks = parse_blocks(md[2] || '', meta_info)
61
63
  new(meta_info, blocks)
@@ -74,7 +76,9 @@ module Webgen
74
76
  def parse_meta_info(data)
75
77
  begin
76
78
  meta_info = YAML::load(data)
77
- raise(WebgenPageFormatError, 'Invalid structure of meta information part') unless meta_info.kind_of?(Hash)
79
+ unless meta_info.kind_of?(Hash)
80
+ raise WebgenPageFormatError, "Invalid structure of meta information block: expected YAML hash but found #{meta_info.class}"
81
+ end
78
82
  rescue ArgumentError => e
79
83
  raise WebgenPageFormatError, e.message
80
84
  end
@@ -91,14 +95,14 @@ module Webgen
91
95
  scanned.each_with_index do |block_data, index|
92
96
  options, content = *block_data
93
97
  md = RE_BLOCKS_OPTIONS.match(options.to_s)
94
- raise(WebgenPageFormatError, "Found invalid blocks starting line") if content =~ /\A---/ || md.nil?
95
- options = Hash[*md[1].to_s.scan(/(\w+):([^\s]*)/).flatten]
98
+ raise(WebgenPageFormatError, "Found invalid blocks starting line for block #{index+1}: #{options}") if content =~ /\A---/ || md.nil?
99
+ options = Hash[*md[1].to_s.scan(/(\w+):([^\s]*)/).map {|k,v| [k, YAML::load(v)]}.flatten]
96
100
  options = (meta_info['blocks']['default'] || {} rescue {}).
97
101
  merge((meta_info['blocks'][index+1] || {} rescue {})).
98
102
  merge(options)
99
103
 
100
104
  name = options.delete('name') || (index == 0 ? 'content' : 'block' + (index + 1).to_s)
101
- raise(WebgenPageFormatError, "Same name used for more than one block: #{name}") if blocks.has_key?(name)
105
+ raise(WebgenPageFormatError, "Previously used name '#{name}' also used for block #{index+1}") if blocks.has_key?(name)
102
106
  content ||= ''
103
107
  content.gsub!(/^(\\+)(---.*?)$/) {|m| "\\" * ($1.length / 2) + $2}
104
108
  content.strip!
@@ -102,49 +102,69 @@ module Webgen::SourceHandler
102
102
  #
103
103
  module Base
104
104
 
105
- include Webgen::Loggable
106
-
107
- # Construct the output name for the given +path+. First it is checked if a node with the
108
- # constructed output name already exists. If it exists, the language part is forced to be in the
109
- # output name and the resulting output name is returned.
105
+ # This module is used for defining all methods that can be used for creating output paths.
110
106
  #
111
- # The parameter +style+ (which uses the meta information +output_path_style+ from the path's
112
- # meta information hash) defines how the output name should be built (more information about
113
- # this in the user documentation).
114
- def output_path(parent, path, style = path.meta_info['output_path_style'])
115
- name = construct_output_path(parent, path, style)
116
- name += '/' if path.path =~ /\/$/ && name !~ /\/$/
117
- if node_exists?(parent, path, name)
118
- name = construct_output_path(parent, path, style, true)
119
- name += '/' if path.path =~ /\/$/ && name !~ /\/$/
107
+ # All public methods of this module are considered to be output path creation methods and must
108
+ # have the following parameters:
109
+ # +parent+:: the parent node
110
+ # +path+:: the path for which the output name should be created
111
+ # +use_lang_part+:: controls whether the output path name has to include the language part
112
+ module OutputPathHelpers
113
+
114
+ # Default method for creating an output path for +parent+ and source +path+.
115
+ #
116
+ # The automatically set parameter +style+ (which uses the meta information +output_path_style+
117
+ # from the path's meta information hash) defines how the output name should be built (more
118
+ # information about this in the user documentation).
119
+ def standard_output_path(parent, path, use_lang_part, style = path.meta_info['output_path_style'])
120
+ result = style.collect do |part|
121
+ case part
122
+ when String then part
123
+ when :lang then use_lang_part ? path.meta_info['lang'] : ''
124
+ when :ext then path.ext.empty? ? '' : '.' + path.ext
125
+ when :parent then temp = parent; temp = temp.parent while temp.is_fragment?; temp.path
126
+ when :year, :month, :day
127
+ ctime = path.meta_info['created_at']
128
+ if !ctime.kind_of?(Time)
129
+ raise "Invalid meta info 'created_at' for #{path}, needed because of used output path style"
130
+ end
131
+ ctime.send(part).to_s.rjust(2, '0')
132
+ when Symbol then path.send(part)
133
+ when Array then part.include?(:lang) && !use_lang_part ? '' : standard_output_path(parent, path, use_lang_part, part)
134
+ else ''
135
+ end
136
+ end
137
+ result.join('')
120
138
  end
121
- name
139
+
122
140
  end
123
141
 
124
- # Utility method for constructing the output name.
125
- def construct_output_path(parent, path, style, use_lang_part = nil)
142
+ include Webgen::Loggable
143
+ include OutputPathHelpers
144
+
145
+ # Construct the output name for the given +path+ and +parent+. First it is checked if a node
146
+ # with the constructed output name already exists. If it exists, the language part is forced to
147
+ # be in the output name and the resulting output name is returned.
148
+ def output_path(parent, path)
149
+ method = path.meta_info['output_path'] + '_output_path'
126
150
  use_lang_part = if path.meta_info['lang'].nil? # unlocalized files never get a lang in the filename!
127
151
  false
128
- elsif use_lang_part.nil?
152
+ else
129
153
  Webgen::WebsiteAccess.website.config['sourcehandler.default_lang_in_output_path'] ||
130
154
  Webgen::WebsiteAccess.website.config['website.lang'] != path.meta_info['lang']
131
- else
132
- use_lang_part
133
155
  end
134
- result = style.collect do |part|
135
- case part
136
- when String then part
137
- when :lang then use_lang_part ? path.meta_info['lang'] : ''
138
- when :ext then path.ext.empty? ? '' : '.' + path.ext
139
- when :parent then temp = parent; temp = temp.parent while temp.is_fragment?; temp.path
140
- when Symbol then path.send(part)
141
- when Array then part.include?(:lang) && !use_lang_part ? '' : construct_output_path(parent, path, part, use_lang_part)
142
- else ''
156
+ if OutputPathHelpers.public_instance_methods(false).include?(method)
157
+ name = send(method, parent, path, use_lang_part)
158
+ name += '/' if path.path =~ /\/$/ && name !~ /\/$/
159
+ if node_exists?(parent, path, name)
160
+ name = send(method, parent, path, (path.meta_info['lang'].nil? ? false : true))
161
+ name += '/' if path.path =~ /\/$/ && name !~ /\/$/
143
162
  end
163
+ name
164
+ else
165
+ raise "Unknown method for creating output path: #{method}"
144
166
  end
145
- result.join('')
146
167
  end
147
- private :construct_output_path
148
168
 
149
169
  # Check if the node alcn and output path which would be created by #create_node exists. The
150
170
  # +output_path+ to check for can individually be set.
@@ -68,9 +68,8 @@ module Webgen::Tag
68
68
 
69
69
  # Check if the menus for +node+ have changed.
70
70
  def node_changed?(node)
71
- return if !node.node_info[:tag_menu_menus] || @inside_node_changed
71
+ return if !node.node_info[:tag_menu_menus]
72
72
 
73
- @inside_node_changed = true #TODO: better solution for this race condition?
74
73
  node.node_info[:tag_menu_menus].each do |(params, cn_alcn), cached_tree|
75
74
  cn = node.tree[cn_alcn]
76
75
  menu_tree = menu_tree_for_lang(cn.lang, cn.tree.root)
@@ -88,7 +87,6 @@ module Webgen::Tag
88
87
  break
89
88
  end
90
89
  end
91
- @inside_node_changed = false
92
90
  end
93
91
 
94
92
  # Wrapper method for returning the specific menu tree for +content_node+.
@@ -1,6 +1,6 @@
1
1
  module Webgen
2
2
 
3
3
  # The version of webgen.
4
- VERSION = '0.5.3'
4
+ VERSION = '0.5.4'
5
5
 
6
6
  end
@@ -54,6 +54,13 @@ class TestConfiguration < Test::Unit::TestCase
54
54
  assert_equal(['**/*.page'], @config['sourcehandler.patterns']['Other'])
55
55
  assert_raise(ArgumentError) { @config.patterns([5,6]) }
56
56
  assert_raise(ArgumentError) { @config.patterns('Page' => 5) }
57
+
58
+ @config.default_processing_pipeline('Page' => 'tags,maruku')
59
+ assert_equal('tags,maruku', @config['sourcehandler.default_meta_info']['Webgen::SourceHandler::Page']['blocks']['default']['pipeline'])
60
+ @config.default_processing_pipeline('Other' => 'tags,maruku')
61
+ assert_equal('tags,maruku', @config['sourcehandler.default_meta_info']['Other']['blocks']['default']['pipeline'])
62
+ assert_raise(ArgumentError) { @config.default_processing_pipeline([5,6]) }
63
+ assert_raise(ArgumentError) { @config.default_processing_pipeline('Page' => [5,6]) }
57
64
  end
58
65
 
59
66
  end
@@ -0,0 +1,47 @@
1
+ require 'ostruct'
2
+ require 'helper'
3
+ require 'test/unit'
4
+ require 'webgen/tree'
5
+ require 'webgen/page'
6
+ require 'webgen/contentprocessor'
7
+
8
+ class TestContentProcessorErubis < Test::Unit::TestCase
9
+
10
+ include Test::WebsiteHelper
11
+
12
+ def test_call
13
+ obj = Webgen::ContentProcessor::Erubis.new
14
+ root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/')
15
+ node = Webgen::Node.new(root, 'test', 'test')
16
+ context = Webgen::ContentProcessor::Context.new(:doit => 'hallo', :chain => [node])
17
+
18
+ context.content = '<%= context[:doit] %>6'
19
+ assert_equal('hallo6', obj.call(context).content)
20
+
21
+ context.content = '<%= 5* %>'
22
+ assert_raise(RuntimeError) { obj.call(context) }
23
+
24
+ context.content = "<% for i in [1] %>\n<%= i %>\n<% end %>"
25
+ assert_equal("1\n", obj.call(context).content)
26
+ @website.config['contentprocessor.erubis.options'][:trim] = false
27
+ context.content = "<% for i in [1] %>\n<%== i %>\n<% end %>"
28
+ assert_equal("\n1\n", obj.call(context).content)
29
+
30
+ context[:block] = OpenStruct.new
31
+ context[:block].options = {'erubis_trim' => true}
32
+ context.content = "<% for i in [1] %>\n<%== i %>\n<% end %>"
33
+ assert_equal("1\n", obj.call(context).content)
34
+ context[:block].options['erubis_use_pi'] = true
35
+ context.content = "<?rb for i in [1] ?>\n@{i}@\n<?rb end ?>"
36
+ assert_equal("1\n", obj.call(context).content)
37
+ context[:block] = nil
38
+
39
+ @website.config['contentprocessor.erubis.use_pi'] = true
40
+ context.content = "<?rb for i in [1] ?>\n@{i}@\n<?rb end ?>"
41
+ assert_equal("1\n", obj.call(context).content)
42
+
43
+ page = Webgen::Page.from_data("--- pipeline:erubis erubis_trim:false erubis_use_pi:false\n<% for i in [1] %>\n<%== i %>\n<% end %>")
44
+ assert_equal("\n1\n", page.blocks['content'].render(context).content)
45
+ end
46
+
47
+ end
@@ -0,0 +1,15 @@
1
+ require 'test/unit'
2
+ require 'webgen/node'
3
+ require 'webgen/tree'
4
+ require 'webgen/contentprocessor'
5
+
6
+ class TestContentProcessorRDiscount < Test::Unit::TestCase
7
+
8
+ def test_call
9
+ @obj = Webgen::ContentProcessor::RDiscount.new
10
+ node = Webgen::Node.new(Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/'), 'test', 'test')
11
+ context = Webgen::ContentProcessor::Context.new(:content => '# header', :chain => [node])
12
+ assert_equal("<h1>header</h1>\n", @obj.call(context).content)
13
+ end
14
+
15
+ end
data/test/test_node.rb CHANGED
@@ -158,6 +158,14 @@ class TestNode < Test::Unit::TestCase
158
158
  node.node_info[:used_nodes] << @tree.dummy_root.absolute_lcn
159
159
  node.changed?
160
160
  assert_equal(1, calls)
161
+
162
+ # Test circular depdendence
163
+ other_node = Webgen::Node.new(@tree.dummy_root, '/other', 'test.l', {'lang' => 'de', :test => :value})
164
+ other_node.dirty = node.created = false
165
+ node.dirty = false
166
+ other_node.node_info[:used_nodes] = [node.absolute_lcn]
167
+ node.node_info[:used_nodes] = [other_node.absolute_lcn]
168
+ node.changed?
161
169
  end
162
170
 
163
171
  def test_meta_info_changed
data/test/test_page.rb CHANGED
@@ -97,13 +97,14 @@ class TestPage < Test::Unit::TestCase
97
97
  --- name:block
98
98
  content doing -
99
99
  with?: with some things
100
- --- other:optins
100
+ --- other:options test1:true test2:false test3:542
101
101
  meta_info: {}
102
102
  blocks:
103
103
  - name: block
104
104
  content: "content doing -\\nwith?: with some things"
105
105
  - name: block2
106
106
  content: ''
107
+ options: {other: options, test1: true, test2: false, test3: 542}
107
108
 
108
109
  # block with seemingly block start line it
109
110
  - in: |
@@ -118,6 +119,9 @@ class TestPage < Test::Unit::TestCase
118
119
  EOF
119
120
 
120
121
  INVALID=<<EOF
122
+ # invalid meta info: none specified
123
+ - "---\\n---"
124
+
121
125
  # invalid meta info: no hash
122
126
  - |
123
127
  ---
@@ -166,6 +170,7 @@ EOF
166
170
  index += 1
167
171
  assert_equal(b['name'], d.blocks[index].name, "test item #{oindex} - name")
168
172
  assert_equal(b['content'], d.blocks[index].content, "test item #{oindex} - content")
173
+ assert_equal(b['options'] || {}, d.blocks[index].options, "test item #{oindex} - options")
169
174
  assert_same(d.blocks[index], d.blocks[b['name']])
170
175
  end
171
176
  end
@@ -4,6 +4,7 @@ require 'webgen/tree'
4
4
  require 'webgen/node'
5
5
  require 'webgen/path'
6
6
  require 'webgen/sourcehandler/base'
7
+ require 'time'
7
8
 
8
9
  class TestSourceHandlerBase < Test::Unit::TestCase
9
10
 
@@ -30,35 +31,48 @@ class TestSourceHandlerBase < Test::Unit::TestCase
30
31
  end
31
32
 
32
33
  def test_output_path
34
+ node = Webgen::Node.new(Webgen::Tree.new.dummy_root, 'test/', 'test')
35
+ assert_raise(RuntimeError) { @obj.output_path(node, path_with_meta_info('test.page', 'output_path' => 'non'))}
36
+ end
37
+
38
+ def test_standard_output_path
33
39
  @tree = Webgen::Tree.new
34
40
  node = Webgen::Node.new(@tree.dummy_root, 'test/', 'test', {'lang' => 'de', :test => :value})
35
41
 
36
- output_path_style = [:parent, :cnbase, ['.', :lang], :ext]
37
-
38
- path = Webgen::Path.new('path.html')
39
- assert_equal('test/path.html', @obj.output_path(node, path, output_path_style))
40
- path = Webgen::Path.new('path.en.html')
41
- assert_equal('test/path.html', @obj.output_path(node, path, output_path_style))
42
- path = Webgen::Path.new('path.eo.html')
43
- assert_equal('test/path.eo.html', @obj.output_path(node, path, output_path_style))
44
- path = Webgen::Path.new('dir/')
45
- assert_equal('test/dir/', @obj.output_path(node, path, output_path_style))
42
+ path = path_with_meta_info('path.html')
43
+ assert_equal('test/path.html', @obj.output_path(node, path))
44
+ path = path_with_meta_info('path.en.html')
45
+ assert_equal('test/path.html', @obj.output_path(node, path))
46
+ path = path_with_meta_info('path.eo.html')
47
+ assert_equal('test/path.eo.html', @obj.output_path(node, path))
48
+ path = path_with_meta_info('dir/')
49
+ assert_equal('test/dir/', @obj.output_path(node, path))
46
50
 
47
51
  other = Webgen::Node.new(node, 'test/path.html', 'other.page')
48
- path = Webgen::Path.new('path.html')
49
- assert_equal('test/path.html', @obj.output_path(node, path, output_path_style))
50
- path = Webgen::Path.new('path.en.html')
51
- assert_equal('test/path.en.html', @obj.output_path(node, path, output_path_style))
52
+ path = path_with_meta_info('path.html')
53
+ assert_equal('test/path.html', @obj.output_path(node, path))
54
+ path = path_with_meta_info('path.en.html')
55
+ assert_equal('test/path.en.html', @obj.output_path(node, path))
52
56
 
53
- path = Webgen::Path.new('#frag')
54
- assert_equal('test/path.html#frag', @obj.output_path(other, path, output_path_style))
57
+ path = path_with_meta_info('#frag')
58
+ assert_equal('test/path.html#frag', @obj.output_path(other, path))
55
59
  frag = Webgen::Node.new(other, 'test/path.html#frag', '#frag')
56
- path = Webgen::Path.new('#frag1')
57
- assert_equal('test/path.html#frag1', @obj.output_path(frag, path, output_path_style))
60
+ path = path_with_meta_info('#frag1')
61
+ assert_equal('test/path.html#frag1', @obj.output_path(frag, path))
62
+
63
+ path = path_with_meta_info('/')
64
+ assert_equal('/', @obj.output_path(@tree.dummy_root, path))
65
+ path = path_with_meta_info('/', 'output_path_style' => [:parent, 'hallo', 56])
66
+ assert_equal('hallo/', @obj.output_path(@tree.dummy_root, path))
58
67
 
59
- path = Webgen::Path.new('/')
60
- assert_equal('/', @obj.output_path(@tree.dummy_root, path, output_path_style))
61
- assert_equal('hallo/', @obj.output_path(@tree.dummy_root, path, [:parent, 'hallo', 56]))
68
+ assert_raise(RuntimeError) do
69
+ path = path_with_meta_info('path.html', 'output_path_style' => [:parent, :year, '/', :month, '/', :cnbase, :ext])
70
+ @obj.output_path(node, path)
71
+ end
72
+ time = Time.parse('2008-09-04 08:15')
73
+ path = path_with_meta_info('path.html', 'output_path_style' => [:parent, :year, '/', :month, '/', :day, '-', :cnbase, :ext],
74
+ 'created_at' => time)
75
+ assert_equal('test/2008/09/04-path.html', @obj.output_path(node, path))
62
76
  end
63
77
 
64
78
  def test_content
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webgen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Leitner
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-25 00:00:00 +02:00
12
+ date: 2008-09-08 00:00:00 +02:00
13
13
  default_executable: webgen
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -162,6 +162,26 @@ dependencies:
162
162
  - !ruby/object:Gem::Version
163
163
  version: 0.2.29
164
164
  version:
165
+ - !ruby/object:Gem::Dependency
166
+ name: erubis
167
+ type: :development
168
+ version_requirement:
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: 2.6.2
174
+ version:
175
+ - !ruby/object:Gem::Dependency
176
+ name: rdiscount
177
+ type: :development
178
+ version_requirement:
179
+ version_requirements: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: 1.2.9
184
+ version:
165
185
  description: webgen is used to generate static websites from templates and content files (which can be written in a markup language). It can generate dynamic content like menus on the fly and comes with many powerful extensions.
166
186
  email: t_leitner@gmx.at
167
187
  executables:
@@ -340,8 +360,10 @@ files:
340
360
  - doc/contentprocessor/blocks.page
341
361
  - doc/contentprocessor/builder.page
342
362
  - doc/contentprocessor/erb.page
363
+ - doc/contentprocessor/erubis.page
343
364
  - doc/contentprocessor/haml.page
344
365
  - doc/contentprocessor/maruku.page
366
+ - doc/contentprocessor/rdiscount.page
345
367
  - doc/contentprocessor/rdoc.page
346
368
  - doc/contentprocessor/redcloth.page
347
369
  - doc/contentprocessor/sass.page
@@ -394,8 +416,10 @@ files:
394
416
  - lib/webgen/contentprocessor/builder.rb
395
417
  - lib/webgen/contentprocessor/context.rb
396
418
  - lib/webgen/contentprocessor/erb.rb
419
+ - lib/webgen/contentprocessor/erubis.rb
397
420
  - lib/webgen/contentprocessor/haml.rb
398
421
  - lib/webgen/contentprocessor/maruku.rb
422
+ - lib/webgen/contentprocessor/rdiscount.rb
399
423
  - lib/webgen/contentprocessor/rdoc.rb
400
424
  - lib/webgen/contentprocessor/redcloth.rb
401
425
  - lib/webgen/contentprocessor/sass.rb
@@ -465,8 +489,10 @@ files:
465
489
  - test/test_contentprocessor_builder.rb
466
490
  - test/test_contentprocessor_context.rb
467
491
  - test/test_contentprocessor_erb.rb
492
+ - test/test_contentprocessor_erubis.rb
468
493
  - test/test_contentprocessor_haml.rb
469
494
  - test/test_contentprocessor_maruku.rb
495
+ - test/test_contentprocessor_rdiscount.rb
470
496
  - test/test_contentprocessor_rdoc.rb
471
497
  - test/test_contentprocessor_redcloth.rb
472
498
  - test/test_contentprocessor_sass.rb