webgen 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 752984a6bcdf000d963941ddd4c32f9703361a5d
4
- data.tar.gz: 6ec75a97844417d5bfcce8c6b9fcf9efae0a6b0e
3
+ metadata.gz: 2a1b98190c63a1f48d1d1dccd972540408c621f0
4
+ data.tar.gz: 5b512539e92608915846a6ed88c42f4aca49fcf1
5
5
  SHA512:
6
- metadata.gz: 3810ef988115522a56d71c49bd24697c598e1d10640427de278f033f10ccd25a7b2571675d947f66f9aa310c2be53dfeec64fe31d691f4e6eb631b32a331d937
7
- data.tar.gz: 69051fc7a5f18bb19dc1bc3573dea799ecd3c0283819dc9be7d9ac2948b4ab545854d448aa90a6af4381dcd6472a9f3c2846de70b89d6ef27cf12a06fb48b7fc
6
+ metadata.gz: a588782682753d0dab0ef0870202c1900c31de91968eedf05b3697d822614ca6a37ed5b689d6461f23d709cfd39c6ab065955499d73f650ef4b8b7ac596637c4
7
+ data.tar.gz: bb345850ff9514ef556e17f5b49e10a096451196419e0b351d1f36db462c0b4f505f591e913f7c2636a8073ded7c9cad07c93d13ac47ed58ad07dfc4e7e81c0b
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.0
1
+ 1.2.1
@@ -9,16 +9,27 @@ module Webgen
9
9
  # Processes embedded Ruby statements with the +erubis+ library.
10
10
  module Erubis
11
11
 
12
+ class CompatibleEruby < ::Erubis::Eruby #:nodoc:
13
+ include ::Erubis::ErboutEnhancer
14
+ include ::Erubis::PercentLineEnhancer
15
+ end
16
+
17
+ class CompatiblePIEruby < ::Erubis::PI::Eruby #:nodoc:
18
+ include ::Erubis::ErboutEnhancer
19
+ include ::Erubis::PercentLineEnhancer
20
+ end
21
+
12
22
  # Including Erubis because of problem with resolving Erubis::XmlHelper et al
13
23
  include ::Erubis
24
+ extend ::Erubis::XmlHelper
14
25
 
15
26
  # Process the Ruby statements embedded in the content of +context+.
16
27
  def self.call(context)
17
28
  options = context.website.config['content_processor.erubis.options']
18
29
  erubis = if context.website.config['content_processor.erubis.use_pi']
19
- ::Erubis::PI::Eruby.new(context.content, options)
30
+ CompatiblePIEruby.new(context.content, options)
20
31
  else
21
- ::Erubis::Eruby.new(context.content, options)
32
+ CompatibleEruby.new(context.content, options)
22
33
  end
23
34
  erubis.filename = context.ref_node.alcn
24
35
  context.content = erubis.result(binding)
@@ -33,10 +33,25 @@ module Webgen
33
33
 
34
34
  end
35
35
 
36
+ class ::Kramdown::Parser::WebgenKramdown < ::Kramdown::Parser::Kramdown #:nodoc:
37
+
38
+ LINK_DEFS_CACHE = {}
39
+
40
+ # Caching already normalized link definitions because this is potentially an O(n*m)
41
+ # operation where n...number of link definitions, m...number of invocations.
42
+ def update_link_definitions(link_defs)
43
+ link_defs.each do |k, v|
44
+ @link_defs[LINK_DEFS_CACHE[k] ||= normalize_link_id(k)] = v
45
+ end
46
+ end
47
+
48
+ end
49
+
36
50
  # Convert the content in +context+ to HTML.
37
51
  def self.call(context)
38
52
  options = context.website.config['content_processor.kramdown.options'].dup
39
53
  options[:link_defs] = context.website.ext.link_definitions.merge(options[:link_defs] || {})
54
+ options[:input] = 'WebgenKramdown'
40
55
  doc = ::Kramdown::Document.new(context.content, options)
41
56
  context.content = CustomHtmlConverter.new(doc.root, doc.options, context).convert(doc.root)
42
57
  context.content.encode!(doc.root.options[:encoding])
@@ -73,7 +73,7 @@ module Webgen
73
73
  def initialize(website, options = {}, persistent = {})
74
74
  @website = website
75
75
  (website.ext.context_modules || []).each {|m| self.extend(m)}
76
- @options = {:content => ''}.merge(options)
76
+ @options = {:content => '', :chain => []}.merge(options)
77
77
  @persistent = persistent
78
78
  end
79
79
 
@@ -16,7 +16,7 @@ module Webgen
16
16
  #
17
17
  # The returned node should be used as source node for calculating relative paths to other nodes.
18
18
  def dest_node
19
- @options[:dest_node] || self.content_node
19
+ @options[:dest_node] || content_node
20
20
  end
21
21
 
22
22
  # Return the reference node, ie. the node which provided the original content for this context
@@ -24,14 +24,14 @@ module Webgen
24
24
  #
25
25
  # The returned node should be used, for example, for resolving relative paths.
26
26
  def ref_node
27
- @options[:chain] && @options[:chain].first
27
+ @options[:chain][0]
28
28
  end
29
29
 
30
30
  # Return the node that is ultimately rendered.
31
31
  #
32
32
  # This node should be used, for example, for retrieving meta information.
33
33
  def content_node
34
- @options[:chain] && @options[:chain].last
34
+ @options[:chain][-1]
35
35
  end
36
36
  alias :node :content_node
37
37
 
@@ -174,6 +174,7 @@ module Webgen
174
174
 
175
175
  # resolve any '.' and '..' paths in the target url
176
176
  if other_url.path =~ /\/\.\.?\// && other_url.scheme == 'webgen'
177
+ other_url = other_url.dup
177
178
  other_url.path = Pathname.new(other_url.path).cleanpath.to_s
178
179
  end
179
180
  route = my_url.route_to(other_url).to_s
@@ -188,7 +189,7 @@ module Webgen
188
189
  #
189
190
  # If the +lang+ parameter is not used, it defaults to the language of the current node.
190
191
  def proxy_node(lang = @lang)
191
- self['proxy_path'] && resolve(self['proxy_path'], lang, true) || self
192
+ @meta_info['proxy_path'] && resolve(@meta_info['proxy_path'], lang, true) || self
192
193
  end
193
194
 
194
195
  # Return a HTML link from this node to the given node.
@@ -207,7 +208,7 @@ module Webgen
207
208
  attr = (rnode['link_attrs'].kind_of?(Hash) ? rnode['link_attrs'] : {}).merge(attr)
208
209
  link_text = attr.delete('link_text') || (rnode != node && rnode['routed_title']) || node['title']
209
210
 
210
- attr['href'] = self.route_to(node, lang)
211
+ attr['href'] = route_to(node, lang)
211
212
  attr['hreflang'] = rnode.lang.to_s if rnode.lang
212
213
  attrs = attr.collect {|name,value| "#{name.to_s}=\"#{value}\"" }.sort.unshift('').join(' ')
213
214
  "<a#{attrs}>#{link_text}</a>"
@@ -287,7 +287,7 @@ module Webgen
287
287
  nodes.unshift(node)
288
288
  node = node.parent
289
289
  end
290
- result.nodes = nodes
290
+ result.nodes = nodes & result.nodes
291
291
  end
292
292
 
293
293
  def filter_descendants(result, ref_node, enabled)
@@ -295,8 +295,7 @@ module Webgen
295
295
  result.ref_node_used = true
296
296
 
297
297
  result.nodes.keep_if do |n|
298
- n = n.parent while n != n.tree.dummy_root && n != ref_node
299
- n == ref_node
298
+ n.alcn.start_with?(ref_node.alcn)
300
299
  end
301
300
  end
302
301
 
@@ -307,9 +306,9 @@ module Webgen
307
306
  if value == true
308
307
  result.nodes.keep_if {|n| n.parent == ref_node.parent}
309
308
  else
310
- value = [value].flatten.map {|i| (i = i.to_i) < 0 ? ref_node.level + 1 + i : i}
309
+ lower, upper = *[value].flatten.map {|i| (i = i.to_i) < 0 ? ref_node.level + 1 + i : i}
311
310
  result.nodes.keep_if do |n|
312
- n.level >= value.first && n.level <= value.last && (n.parent.is_ancestor_of?(ref_node) || n.is_root?)
311
+ n.level >= lower && n.level <= upper && (n.parent.is_ancestor_of?(ref_node) || n.is_root?)
313
312
  end
314
313
  end
315
314
  end
@@ -38,31 +38,40 @@ module Webgen
38
38
  # not escaped. This is needed so that paths with fragments work correctly.
39
39
  URL_UNSAFE_PATTERN = Regexp.new("[^#{URI::PATTERN::UNRESERVED}#{URI::PATTERN::RESERVED}#]") # :nodoc:
40
40
 
41
- # Base URI prepended to all internal URLs.
42
- WEBGEN_BASE_URI = URI.parse('webgen://webgen.localhost/') # :nodoc:
41
+ # Hash that caches generated URLs
42
+ URL_CACHE = {} # :nodoc:
43
43
 
44
- # Construct an internal URL for the given +path+ which can be an acn/alcn/absolute path.
44
+ # Construct an internal URL for the given +path+.
45
45
  #
46
- # If the parameter +make_absolute+ is +true+, then a relative URL will be made absolute by
47
- # prepending the special URL 'webgen://webgen.localhost/'.
46
+ # If the parameter +make_absolute+ is +true+, then the path will be made absolute by prepending
47
+ # the special URL 'webgen://lh'
48
48
  def self.url(path, make_absolute = true)
49
- url = URI.parse(URI::DEFAULT_PARSER.escape(path, URL_UNSAFE_PATTERN))
50
- url = WEBGEN_BASE_URI + url unless url.absolute? || !make_absolute
51
- url
49
+ URL_CACHE[[path, make_absolute]] ||= begin
50
+ if absolute?(path) || !make_absolute
51
+ URI.parse(URI::DEFAULT_PARSER.escape(path, URL_UNSAFE_PATTERN))
52
+ else
53
+ URI.parse(URI::DEFAULT_PARSER.escape("webgen://lh#{path[0] != ?/ ? '/' : ''}#{path}",
54
+ URL_UNSAFE_PATTERN))
55
+ end
56
+ end.freeze
57
+ end
58
+
59
+ # Return +true+ if the given URI is an absolute one, i.e. if it include a scheme.
60
+ def self.absolute?(uri)
61
+ uri =~ /\A[\w+.-]+:/
52
62
  end
53
63
 
54
64
  # Append the +path+ to the +base+ path.
55
65
  #
56
- # The +base+ parameter has to be an acn/alcn/absolute path. If it represents a directory, it
57
- # needs to have a trailing slash! The +path+ parameter doesn't need to be absolute and may
58
- # contain path patterns.
66
+ # * The +base+ parameter has to be an acn/alcn/absolute path (i.e. starting with a slash).
67
+ # * If +base+ represents a directory, it needs to have a trailing slash!
68
+ # * The +path+ parameter doesn't need to be absolute and may contain path patterns.
59
69
  def self.append(base, path)
60
- raise(ArgumentError, 'base needs to start with a slash (i.e. be an absolute path)') unless base[0] == ?/
61
- url = url(base) + url(path, false)
62
- (url.path << (url.fragment.nil? ? '' : "##{url.fragment}")).encode!(path.encoding)
70
+ result = url(base) + url(path, false)
71
+ (result.fragment.nil? ? result.path : "#{result.path}##{result.fragment}").encode!(path.encoding)
63
72
  end
64
73
 
65
- # Return +true+ if the given path string matches the given path pattern.
74
+ # Return +true+ if the given path string matches the given non-empty path pattern.
66
75
  #
67
76
  # If a fragment path (i.e. one which has a hash character somewhere) should be matched, the
68
77
  # pattern needs to have a hash character as well.
@@ -70,8 +79,9 @@ module Webgen
70
79
  # For information on which patterns are supported, have a look at the API documentation of
71
80
  # File.fnmatch.
72
81
  def self.matches_pattern?(path, pattern, options = File::FNM_DOTMATCH|File::FNM_CASEFOLD|File::FNM_PATHNAME)
73
- pattern += '/' if path =~ /\/$/ && pattern !~ /\/$|^$/
74
- (path.to_s.include?('#') ? pattern.include?('#') : true) && File.fnmatch(pattern, path, options)
82
+ path = path.to_s
83
+ pattern += '/' if path[-1] == ?/ && pattern[-1] != ?/
84
+ (path.include?('#') ? pattern.include?('#') : true) && File.fnmatch(pattern, path, options)
75
85
  end
76
86
 
77
87
  # Construct a localized canonical name from a given canonical name and a language.
@@ -79,7 +89,7 @@ module Webgen
79
89
  if lang.nil?
80
90
  cn
81
91
  else
82
- cn.split('.').insert((cn =~ /^\./ ? 2 : 1), lang.to_s).join('.')
92
+ cn.split('.').insert((cn.start_with?('.') ? 2 : 1), lang.to_s).join('.')
83
93
  end
84
94
  end
85
95
 
@@ -185,7 +195,7 @@ module Webgen
185
195
  #
186
196
  # Triggers analyzation of the path if invoked.
187
197
  def acn
188
- if @path =~ /#/
198
+ if @path.include?('#')
189
199
  self.class.new(parent_path).acn << cn
190
200
  else
191
201
  parent_path + cn
@@ -196,7 +206,7 @@ module Webgen
196
206
  #
197
207
  # Triggers analyzation of the path if invoked.
198
208
  def alcn
199
- if @path =~ /#/
209
+ if @path.include?('#')
200
210
  self.class.new(parent_path).alcn << lcn
201
211
  else
202
212
  parent_path + lcn
@@ -287,9 +297,9 @@ module Webgen
287
297
 
288
298
  # Analyse the path and extract the needed information.
289
299
  def analyse
290
- if @path =~ /#/
300
+ if @path.include?('#')
291
301
  analyse_fragment
292
- elsif @path =~ /\/$/
302
+ elsif @path[-1] == ?/
293
303
  analyse_directory
294
304
  else
295
305
  analyse_file
@@ -297,7 +307,7 @@ module Webgen
297
307
  @meta_info['title'] ||= @basename.tr('_-', ' ').capitalize
298
308
  @ext ||= ''
299
309
  raise "The basename of a path may not be empty: #{@path}" if @basename.empty? || @basename == '#'
300
- raise "The parent path must start with a slash: #{@path}" if @path !~ /^\//
310
+ raise "The parent path must start with a slash: #{@path}" if @path[0] != ?/
301
311
  end
302
312
 
303
313
  # Analyse the path assuming it is a directory.
@@ -327,7 +337,7 @@ module Webgen
327
337
  # Analyse the path assuming it is a fragment.
328
338
  def analyse_fragment
329
339
  @parent_path, @basename = @path.scan(/^(.*?)(#.*?)$/).first
330
- raise "The parent path of a fragment path must be a file path and not a directory path: #{@path}" if @parent_path =~ /\/$/
340
+ raise "The parent path of a fragment path must be a file path and not a directory path: #{@path}" if @parent_path[-1] == ?/
331
341
  raise "A fragment path must only contain one hash character: #{path}" if @path.count("#") > 1
332
342
  end
333
343
 
@@ -214,6 +214,12 @@ module Webgen
214
214
  @instances[handler.intern] ||= extension(handler).new(@website)
215
215
  end
216
216
 
217
+ # Return the name of the give path handler instance.
218
+ def name_of_instance(instance)
219
+ @instances.rassoc(instance)[0] || 'unknown'
220
+ end
221
+ private :name_of_instance
222
+
217
223
 
218
224
  # Populate the website tree with nodes.
219
225
  #
@@ -277,10 +283,10 @@ module Webgen
277
283
  @website.blackboard.dispatch_msg(:after_node_written, node, content)
278
284
  rescue Webgen::Error => e
279
285
  e.path = node.alcn if e.path.to_s.empty?
280
- e.location = "path_handler.#{node.node_info[:path_handler]}" unless e.location
286
+ e.location = "path_handler.#{name_of_instance(node.node_info[:path_handler])}" unless e.location
281
287
  raise
282
288
  rescue Exception => e
283
- raise Webgen::RenderError.new(e, "path_handler.#{node.node_info[:path_handler]}", node)
289
+ raise Webgen::RenderError.new(e, "path_handler.#{name_of_instance(node.node_info[:path_handler])}", node)
284
290
  end
285
291
  end
286
292
  @website.blackboard.dispatch_msg(:after_all_nodes_written)
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
- require 'uri'
4
3
  require 'yaml'
4
+ require 'webgen/path'
5
5
  require 'webgen/path_handler/base'
6
6
  require 'webgen/path_handler/page_utils'
7
7
 
@@ -31,7 +31,7 @@ module Webgen
31
31
  parent_path = create_directories(File.dirname(key), 'modified_at' => meta_info['modified_at'])
32
32
 
33
33
  dest_path = meta_info.delete('dest_path') || key
34
- dest_path = if URI::parse(dest_path).absolute?
34
+ dest_path = if Webgen::Path.absolute?(dest_path)
35
35
  dest_path
36
36
  elsif dest_path =~ /^\//
37
37
  "webgen:#{dest_path}"
@@ -19,7 +19,7 @@ module Webgen
19
19
  path = context[:config]['tag.relocatable.path']
20
20
  result = ''
21
21
  begin
22
- result = (Webgen::Path.url(path, false).absolute? ? path : resolve_path(path, context))
22
+ result = (Webgen::Path.absolute?(path) ? path : resolve_path(path, context))
23
23
  rescue URI::InvalidURIError => e
24
24
  context.website.logger.warn do
25
25
  ["Could not parse path '#{path}' for tag.relocatable in <#{context.ref_node}>",
@@ -3,6 +3,6 @@
3
3
  module Webgen
4
4
 
5
5
  # The version of webgen.
6
- VERSION = '1.2.0'
6
+ VERSION = '1.2.1'
7
7
 
8
8
  end
@@ -12,7 +12,7 @@ class TestErubis < Minitest::Test
12
12
  @website.config.merge!('content_processor.erubis.options' => {}, 'content_processor.erubis.use_pi' => false)
13
13
  cp = Webgen::ContentProcessor::Erubis
14
14
 
15
- @context.content = "<%= context[:doit] %>6\n<%= context.ref_node.alcn %>\n<%= context.node.alcn %>\n<%= context.dest_node.alcn %><% context.website %>"
15
+ @context.content = "<%= context[:doit] %>6\n<%= h(context.ref_node.alcn) %>\n<%= context.node.alcn %>\n<%= context.dest_node.alcn %><% context.website %>"
16
16
  assert_equal("hallo6\n/test\n/test\n/test", cp.call(@context).content)
17
17
 
18
18
  @context.content = "\n<%= 5* %>"
@@ -133,6 +133,8 @@ class TestNodeFinder < Minitest::Test
133
133
  # test filter: ancestors
134
134
  check.call(%w[/ /dir/ /dir/dir/ /dir/dir/file.html],
135
135
  @nf.find({:ancestors => true, :flatten => true}, tree['/dir/dir/file.html']))
136
+ check.call(%w[/dir/dir/],
137
+ @nf.find({:absolute_levels => 2, :ancestors => true, :flatten => true}, tree['/dir/dir/file.html']))
136
138
  check.call(%w[/ /dir/ /dir/dir/],
137
139
  @nf.find({:ancestors => true, :flatten => true}, tree['/dir/dir/']))
138
140
 
@@ -8,12 +8,12 @@ require 'tmpdir'
8
8
  class TestPath < Minitest::Test
9
9
 
10
10
  def test_class_url
11
- assert_equal("webgen://webgen.localhost/hallo", Webgen::Path.url("hallo").to_s)
12
- assert_equal("webgen://webgen.localhost/hallo%20du", Webgen::Path.url("hallo du").to_s)
13
- assert_equal("webgen://webgen.localhost/hall%C3%B6chen", Webgen::Path.url("hallöchen").to_s)
14
- assert_equal("webgen://webgen.localhost/hallo#du", Webgen::Path.url("hallo#du").to_s)
11
+ assert_equal("webgen://lh/hallo", Webgen::Path.url("hallo").to_s)
12
+ assert_equal("webgen://lh/hallo%20du", Webgen::Path.url("hallo du").to_s)
13
+ assert_equal("webgen://lh/hall%C3%B6chen", Webgen::Path.url("hallöchen").to_s)
14
+ assert_equal("webgen://lh/hallo#du", Webgen::Path.url("hallo#du").to_s)
15
15
 
16
- assert_equal("webgen://webgen.localhost/test", Webgen::Path.url("/test").to_s)
16
+ assert_equal("webgen://lh/test", Webgen::Path.url("/test").to_s)
17
17
  assert_equal("http://example.com/test", Webgen::Path.url("http://example.com/test").to_s)
18
18
 
19
19
  assert_equal("test", Webgen::Path.url("test", false).to_s)
@@ -21,8 +21,6 @@ class TestPath < Minitest::Test
21
21
  end
22
22
 
23
23
  def test_class_append
24
- assert_raises(ArgumentError) { Webgen::Path.append('test', 'test') }
25
- assert_raises(ArgumentError) { Webgen::Path.append('test/', 'test') }
26
24
  assert_equal('/', Webgen::Path.append('/', '/'))
27
25
  assert_equal('/dir', Webgen::Path.append('/other', '/dir'))
28
26
  assert_equal('/dir/', Webgen::Path.append('/other', '/dir/'))
@@ -56,7 +54,6 @@ class TestPath < Minitest::Test
56
54
 
57
55
  path = '/'
58
56
  assert(Webgen::Path.matches_pattern?(path, '/'))
59
- assert(!Webgen::Path.matches_pattern?(path, ''))
60
57
 
61
58
  path = ''
62
59
  assert(!Webgen::Path.matches_pattern?(path, '/'))
metadata CHANGED
@@ -1,257 +1,257 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webgen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Leitner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-30 00:00:00.000000000 Z
11
+ date: 2014-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cmdparse
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.0'
20
- - - ">="
20
+ - - '>='
21
21
  - !ruby/object:Gem::Version
22
22
  version: 2.0.5
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - "~>"
27
+ - - ~>
28
28
  - !ruby/object:Gem::Version
29
29
  version: '2.0'
30
- - - ">="
30
+ - - '>='
31
31
  - !ruby/object:Gem::Version
32
32
  version: 2.0.5
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: systemu
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
37
+ - - ~>
38
38
  - !ruby/object:Gem::Version
39
39
  version: '2.5'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - "~>"
44
+ - - ~>
45
45
  - !ruby/object:Gem::Version
46
46
  version: '2.5'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: kramdown
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "~>"
51
+ - - ~>
52
52
  - !ruby/object:Gem::Version
53
53
  version: '1.3'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - "~>"
58
+ - - ~>
59
59
  - !ruby/object:Gem::Version
60
60
  version: '1.3'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rake
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - ">="
65
+ - - '>='
66
66
  - !ruby/object:Gem::Version
67
67
  version: 0.8.3
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ">="
72
+ - - '>='
73
73
  - !ruby/object:Gem::Version
74
74
  version: 0.8.3
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: minitest
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ~>
80
80
  - !ruby/object:Gem::Version
81
81
  version: '5.0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ~>
87
87
  - !ruby/object:Gem::Version
88
88
  version: '5.0'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: diff-lcs
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - "~>"
93
+ - - ~>
94
94
  - !ruby/object:Gem::Version
95
95
  version: '1.0'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - "~>"
100
+ - - ~>
101
101
  - !ruby/object:Gem::Version
102
102
  version: '1.0'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: rubyforge
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - "~>"
107
+ - - ~>
108
108
  - !ruby/object:Gem::Version
109
109
  version: '2.0'
110
110
  type: :development
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - "~>"
114
+ - - ~>
115
115
  - !ruby/object:Gem::Version
116
116
  version: '2.0'
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: maruku
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - "~>"
121
+ - - ~>
122
122
  - !ruby/object:Gem::Version
123
123
  version: '0.7'
124
124
  type: :development
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - "~>"
128
+ - - ~>
129
129
  - !ruby/object:Gem::Version
130
130
  version: '0.7'
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: RedCloth
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
- - - "~>"
135
+ - - ~>
136
136
  - !ruby/object:Gem::Version
137
137
  version: '4.1'
138
138
  type: :development
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
- - - "~>"
142
+ - - ~>
143
143
  - !ruby/object:Gem::Version
144
144
  version: '4.1'
145
145
  - !ruby/object:Gem::Dependency
146
146
  name: haml
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
- - - "~>"
149
+ - - ~>
150
150
  - !ruby/object:Gem::Version
151
151
  version: '4.0'
152
152
  type: :development
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
- - - "~>"
156
+ - - ~>
157
157
  - !ruby/object:Gem::Version
158
158
  version: '4.0'
159
159
  - !ruby/object:Gem::Dependency
160
160
  name: sass
161
161
  requirement: !ruby/object:Gem::Requirement
162
162
  requirements:
163
- - - "~>"
163
+ - - ~>
164
164
  - !ruby/object:Gem::Version
165
165
  version: '3.2'
166
166
  type: :development
167
167
  prerelease: false
168
168
  version_requirements: !ruby/object:Gem::Requirement
169
169
  requirements:
170
- - - "~>"
170
+ - - ~>
171
171
  - !ruby/object:Gem::Version
172
172
  version: '3.2'
173
173
  - !ruby/object:Gem::Dependency
174
174
  name: builder
175
175
  requirement: !ruby/object:Gem::Requirement
176
176
  requirements:
177
- - - "~>"
177
+ - - ~>
178
178
  - !ruby/object:Gem::Version
179
179
  version: '2.1'
180
180
  type: :development
181
181
  prerelease: false
182
182
  version_requirements: !ruby/object:Gem::Requirement
183
183
  requirements:
184
- - - "~>"
184
+ - - ~>
185
185
  - !ruby/object:Gem::Version
186
186
  version: '2.1'
187
187
  - !ruby/object:Gem::Dependency
188
188
  name: rdoc
189
189
  requirement: !ruby/object:Gem::Requirement
190
190
  requirements:
191
- - - "~>"
191
+ - - ~>
192
192
  - !ruby/object:Gem::Version
193
193
  version: '4.0'
194
194
  type: :development
195
195
  prerelease: false
196
196
  version_requirements: !ruby/object:Gem::Requirement
197
197
  requirements:
198
- - - "~>"
198
+ - - ~>
199
199
  - !ruby/object:Gem::Version
200
200
  version: '4.0'
201
201
  - !ruby/object:Gem::Dependency
202
202
  name: coderay
203
203
  requirement: !ruby/object:Gem::Requirement
204
204
  requirements:
205
- - - "~>"
205
+ - - ~>
206
206
  - !ruby/object:Gem::Version
207
207
  version: '1.0'
208
208
  type: :development
209
209
  prerelease: false
210
210
  version_requirements: !ruby/object:Gem::Requirement
211
211
  requirements:
212
- - - "~>"
212
+ - - ~>
213
213
  - !ruby/object:Gem::Version
214
214
  version: '1.0'
215
215
  - !ruby/object:Gem::Dependency
216
216
  name: erubis
217
217
  requirement: !ruby/object:Gem::Requirement
218
218
  requirements:
219
- - - "~>"
219
+ - - ~>
220
220
  - !ruby/object:Gem::Version
221
221
  version: '2.6'
222
222
  type: :development
223
223
  prerelease: false
224
224
  version_requirements: !ruby/object:Gem::Requirement
225
225
  requirements:
226
- - - "~>"
226
+ - - ~>
227
227
  - !ruby/object:Gem::Version
228
228
  version: '2.6'
229
229
  - !ruby/object:Gem::Dependency
230
230
  name: rdiscount
231
231
  requirement: !ruby/object:Gem::Requirement
232
232
  requirements:
233
- - - "~>"
233
+ - - ~>
234
234
  - !ruby/object:Gem::Version
235
235
  version: '1.3'
236
236
  type: :development
237
237
  prerelease: false
238
238
  version_requirements: !ruby/object:Gem::Requirement
239
239
  requirements:
240
- - - "~>"
240
+ - - ~>
241
241
  - !ruby/object:Gem::Version
242
242
  version: '1.3'
243
243
  - !ruby/object:Gem::Dependency
244
244
  name: archive-tar-minitar
245
245
  requirement: !ruby/object:Gem::Requirement
246
246
  requirements:
247
- - - "~>"
247
+ - - ~>
248
248
  - !ruby/object:Gem::Version
249
249
  version: '0.5'
250
250
  type: :development
251
251
  prerelease: false
252
252
  version_requirements: !ruby/object:Gem::Requirement
253
253
  requirements:
254
- - - "~>"
254
+ - - ~>
255
255
  - !ruby/object:Gem::Version
256
256
  version: '0.5'
257
257
  description: |
@@ -266,17 +266,17 @@ extensions: []
266
266
  extra_rdoc_files:
267
267
  - API.rdoc
268
268
  files:
269
- - API.rdoc
269
+ - Rakefile
270
+ - setup.rb
271
+ - VERSION
270
272
  - AUTHORS
273
+ - THANKS
271
274
  - COPYING
272
275
  - GPL
276
+ - API.rdoc
273
277
  - README.md
274
- - Rakefile
275
- - THANKS
276
- - VERSION
277
278
  - bin/webgen
278
279
  - data/webgen/basic_website_template/ext/init.rb
279
- - data/webgen/basic_website_template/src/.gitignore
280
280
  - data/webgen/basic_website_template/webgen.config
281
281
  - data/webgen/bundle_template_files/README.md.erb
282
282
  - data/webgen/bundle_template_files/Rakefile.erb
@@ -292,6 +292,7 @@ files:
292
292
  - data/webgen/passive_sources/templates/sitemap.template
293
293
  - data/webgen/passive_sources/templates/tag.template
294
294
  - data/webgen/passive_sources/templates/tikz.template
295
+ - data/webgen/basic_website_template/src/.gitignore
295
296
  - lib/webgen/blackboard.rb
296
297
  - lib/webgen/bundle/built-in-show-changes/info.yaml
297
298
  - lib/webgen/bundle/built-in-show-changes/init.rb
@@ -401,7 +402,6 @@ files:
401
402
  - lib/webgen/version.rb
402
403
  - lib/webgen/website.rb
403
404
  - man/man1/webgen.1
404
- - setup.rb
405
405
  - test/test_documentation.rb
406
406
  - test/webgen/cli/test_logger.rb
407
407
  - test/webgen/content_processor/test_blocks.rb
@@ -412,7 +412,6 @@ files:
412
412
  - test/webgen/content_processor/test_haml.rb
413
413
  - test/webgen/content_processor/test_html_head.rb
414
414
  - test/webgen/content_processor/test_kramdown.rb
415
- - test/webgen/content_processor/test_maruku.rb
416
415
  - test/webgen/content_processor/test_r_discount.rb
417
416
  - test/webgen/content_processor/test_r_doc.rb
418
417
  - test/webgen/content_processor/test_rainpress.rb
@@ -499,24 +498,24 @@ post_install_message: |2+
499
498
  Have fun!
500
499
 
501
500
  rdoc_options:
502
- - "--line-numbers"
503
- - "--main"
501
+ - --line-numbers
502
+ - --main
504
503
  - API.rdoc
505
504
  require_paths:
506
505
  - lib
507
506
  required_ruby_version: !ruby/object:Gem::Requirement
508
507
  requirements:
509
- - - ">="
508
+ - - '>='
510
509
  - !ruby/object:Gem::Version
511
510
  version: 1.9.3
512
511
  required_rubygems_version: !ruby/object:Gem::Requirement
513
512
  requirements:
514
- - - ">="
513
+ - - '>='
515
514
  - !ruby/object:Gem::Version
516
515
  version: '0'
517
516
  requirements: []
518
517
  rubyforge_project: webgen
519
- rubygems_version: 2.2.0.rc.1
518
+ rubygems_version: 2.0.3
520
519
  signing_key:
521
520
  specification_version: 4
522
521
  summary: webgen is a fast, powerful, and extensible static website generator.
@@ -1,30 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- require 'webgen/test_helper'
4
-
5
- class TestMaruku < Minitest::Test
6
-
7
- include Webgen::TestHelper
8
-
9
- def setup
10
- require 'webgen/content_processor/maruku' rescue skip('Library maruku not installed')
11
- setup_context
12
- @cp = Webgen::ContentProcessor::Maruku
13
- end
14
-
15
- def test_static_call
16
- @context.content = '# header'
17
- assert_equal('<h1 id=\'header\'>header</h1>', @cp.call(@context).content)
18
-
19
- @context.content = "# head*d* {#das .dsaf "
20
- assert_raises(MaRuKu::Exception) { @cp.call(@context) }
21
- end
22
-
23
- def test_static_call_fix_for_invalid_id
24
- @context.content = '# `test`'
25
- assert_equal('<h1 id=\'id1\'><code>test</code></h1>', @cp.call(@context).content)
26
- @context.content = '# `test`'
27
- assert_equal('<h1 id=\'id1\'><code>test</code></h1>', @cp.call(@context).content)
28
- end
29
-
30
- end