webgen 1.7.2 → 1.7.3
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.
- checksums.yaml +4 -4
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/lib/webgen/bundle_loader.rb +3 -3
- data/lib/webgen/cli/commands/show_bundles.rb +2 -1
- data/lib/webgen/cli.rb +2 -1
- data/lib/webgen/configuration.rb +2 -1
- data/lib/webgen/node.rb +4 -1
- data/lib/webgen/page.rb +3 -2
- data/lib/webgen/path_handler/api.rb +1 -1
- data/lib/webgen/path_handler/meta_info.rb +2 -1
- data/lib/webgen/path_handler/virtual.rb +2 -1
- data/lib/webgen/utils/tag_parser.rb +2 -1
- data/lib/webgen/utils.rb +6 -0
- data/lib/webgen/version.rb +1 -1
- data/test/webgen/item_tracker/test_file.rb +1 -1
- data/test/webgen/item_tracker/test_nodes.rb +1 -1
- data/test/webgen/source/test_stacked.rb +2 -2
- data/test/webgen/tag/test_tikz.rb +1 -1
- data/test/webgen/test_context.rb +1 -1
- data/test/webgen/test_destination.rb +1 -1
- data/test/webgen/test_error.rb +3 -3
- data/test/webgen/test_node.rb +1 -1
- metadata +20 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abf6f162be63a2724a21ba9d446637813047ce78d9b8ecd7677bdd994d0cb0f4
|
4
|
+
data.tar.gz: 41767d022e9e0370ad086954fa26682b45cf11760b8f437ea49f6ede05d9a66c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5986a587fe071fbc943afe55c2e95b3e63f303d702aabf6fb0d647dea437ca573969eb4d8bcd11b6e56094589064f50107d3945b5429f329349573d1ce17fd72
|
7
|
+
data.tar.gz: de5270884ef504f193eddd0c92dda36b21cdfd9f469c58e9e93c0f50c380bddf907c8dc5e6c14b62d6437e7acf4b4678c62fc853c1e4280ad199850cf31ef6b3
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.7.
|
1
|
+
1.7.3
|
data/lib/webgen/bundle_loader.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
3
|
require 'rbconfig'
|
4
|
-
require 'yaml'
|
5
4
|
require 'webgen/error'
|
5
|
+
require 'webgen/utils'
|
6
6
|
|
7
7
|
module Webgen
|
8
8
|
|
@@ -59,7 +59,7 @@ module Webgen
|
|
59
59
|
if info_file.nil?
|
60
60
|
@infos[:bundles][bundle] = {}
|
61
61
|
else
|
62
|
-
infos =
|
62
|
+
infos = Utils.yaml_load(File.read(info_file))
|
63
63
|
[:extensions, :options].each do |type|
|
64
64
|
if data = infos.delete(type.to_s)
|
65
65
|
data.each do |name, hash|
|
@@ -134,7 +134,7 @@ module Webgen
|
|
134
134
|
|
135
135
|
info_file = File.join(File.dirname(file), 'info.yaml')
|
136
136
|
next unless File.file?(info_file)
|
137
|
-
next unless (begin
|
137
|
+
next unless (begin Utils.yaml_load(File.read(info_file))['autoload']; rescue Exception; false end)
|
138
138
|
|
139
139
|
load(bundle_name)
|
140
140
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
3
|
require 'webgen/cli/utils'
|
4
|
+
require 'webgen/utils'
|
4
5
|
|
5
6
|
module Webgen
|
6
7
|
module CLI
|
@@ -32,7 +33,7 @@ DESC
|
|
32
33
|
populate_hash = lambda do |file|
|
33
34
|
bundle_name = File.basename(File.dirname(file))
|
34
35
|
info_file = File.join(File.dirname(file), 'info.yaml')
|
35
|
-
bundles[bundle_name] ||= (File.file?(info_file) ?
|
36
|
+
bundles[bundle_name] ||= (File.file?(info_file) ? Utils.yaml_load(File.read(info_file)) : {})
|
36
37
|
bundles[bundle_name][:state] ||= :available
|
37
38
|
bundles[bundle_name]
|
38
39
|
end
|
data/lib/webgen/cli.rb
CHANGED
@@ -10,6 +10,7 @@ require 'webgen/cli/commands/generate'
|
|
10
10
|
require 'webgen/cli/commands/show'
|
11
11
|
require 'webgen/cli/commands/create'
|
12
12
|
require 'webgen/cli/commands/install'
|
13
|
+
require 'webgen/utils'
|
13
14
|
|
14
15
|
module Webgen
|
15
16
|
|
@@ -129,7 +130,7 @@ module Webgen
|
|
129
130
|
opts.on("-o", "--option CONFIG_OPTION", String, "Specify a simple configuration option (key=value)") do |v|
|
130
131
|
k, v = v.split('=')
|
131
132
|
begin
|
132
|
-
@config_options[k.to_s] =
|
133
|
+
@config_options[k.to_s] = Utils.yaml_load(v.to_s)
|
133
134
|
rescue YAML::SyntaxError
|
134
135
|
raise ConfigurationOptionError.new("Couldn't parse value for '#{k}': #{$!}")
|
135
136
|
end
|
data/lib/webgen/configuration.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'yaml'
|
4
4
|
require 'webgen/error'
|
5
|
+
require 'webgen/utils'
|
5
6
|
|
6
7
|
module Webgen
|
7
8
|
|
@@ -171,7 +172,7 @@ module Webgen
|
|
171
172
|
def load_from_file(filename)
|
172
173
|
data = if String === filename || filename.respond_to?(:read)
|
173
174
|
begin
|
174
|
-
|
175
|
+
Utils.yaml_load(String === filename ? File.read(filename) : filename.read) || {}
|
175
176
|
rescue RuntimeError, ArgumentError, SyntaxError, YAML::SyntaxError => e
|
176
177
|
raise Error, "Problem parsing configuration data (it needs to contain a YAML hash): #{e.message}", e.backtrace
|
177
178
|
end
|
data/lib/webgen/node.rb
CHANGED
@@ -94,7 +94,10 @@ module Webgen
|
|
94
94
|
|
95
95
|
@level = -1
|
96
96
|
@tree = @parent
|
97
|
-
|
97
|
+
while @tree.kind_of?(Webgen::Node)
|
98
|
+
@level += 1
|
99
|
+
@tree = @tree.parent
|
100
|
+
end
|
98
101
|
|
99
102
|
@tree.register_node(self)
|
100
103
|
@parent.children << self unless @parent == @tree
|
data/lib/webgen/page.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'yaml'
|
4
4
|
require 'webgen/error'
|
5
|
+
require 'webgen/utils'
|
5
6
|
|
6
7
|
module Webgen
|
7
8
|
|
@@ -49,7 +50,7 @@ module Webgen
|
|
49
50
|
{}
|
50
51
|
else
|
51
52
|
begin
|
52
|
-
meta_info =
|
53
|
+
meta_info = Utils.yaml_load(mi_data.to_s)
|
53
54
|
unless meta_info.kind_of?(Hash)
|
54
55
|
raise FormatError, "Invalid structure of meta information block: expected YAML hash but found #{meta_info.class}"
|
55
56
|
end
|
@@ -78,7 +79,7 @@ module Webgen
|
|
78
79
|
else
|
79
80
|
md = RE_BLOCKS_START_COMPLEX.match(options.to_s)
|
80
81
|
raise(FormatError, "Found invalid blocks starting line for block #{index}: #{options}") if content =~ /\A---/ || md.nil?
|
81
|
-
options = Hash[*md[1].to_s.scan(/(\w+):([^\s]*)/).map {|k,v| [k, (v == '' ? nil :
|
82
|
+
options = Hash[*md[1].to_s.scan(/(\w+):([^\s]*)/).map {|k,v| [k, (v == '' ? nil : Utils.yaml_load(v))]}.flatten]
|
82
83
|
end
|
83
84
|
|
84
85
|
name = options.delete('name') || (index == 1 ? 'content' : 'block' + (index).to_s)
|
@@ -226,7 +226,7 @@ module Webgen
|
|
226
226
|
# fragments.
|
227
227
|
def create_fragment_nodes_for_methods(api_path, klass_node, klass)
|
228
228
|
["Class", "Instance"].each do |type|
|
229
|
-
method_list = klass.
|
229
|
+
method_list = type == 'Class' ? klass.class_method_list : klass.instance_methods
|
230
230
|
next if method_list.empty?
|
231
231
|
meth_url = "#{klass_node.alcn}##{type}-Methods"
|
232
232
|
path = Webgen::Path.new(meth_url,
|
@@ -5,6 +5,7 @@ require 'set'
|
|
5
5
|
require 'yaml'
|
6
6
|
require 'webgen/path_handler/base'
|
7
7
|
require 'webgen/path_handler/page_utils'
|
8
|
+
require 'webgen/utils'
|
8
9
|
|
9
10
|
module Webgen
|
10
11
|
class PathHandler
|
@@ -44,7 +45,7 @@ module Webgen
|
|
44
45
|
# Add the data from the given page block to the hash.
|
45
46
|
def add_data(path, content, block_name)
|
46
47
|
entries = []
|
47
|
-
if content && (data =
|
48
|
+
if content && (data = Utils.yaml_load(content))
|
48
49
|
data.each do |(*keys), value|
|
49
50
|
value = Marshal.dump(value)
|
50
51
|
keys.each {|key| entries << [Webgen::Path.append(path.parent_path, key), value]}
|
@@ -4,6 +4,7 @@ require 'yaml'
|
|
4
4
|
require 'webgen/path'
|
5
5
|
require 'webgen/path_handler/base'
|
6
6
|
require 'webgen/path_handler/page_utils'
|
7
|
+
require 'webgen/utils'
|
7
8
|
|
8
9
|
module Webgen
|
9
10
|
class PathHandler
|
@@ -65,7 +66,7 @@ module Webgen
|
|
65
66
|
def read_entries(blocks)
|
66
67
|
blocks.each do |name, content|
|
67
68
|
begin
|
68
|
-
data =
|
69
|
+
data = Utils.yaml_load(content)
|
69
70
|
rescue RuntimeError, ArgumentError, SyntaxError, YAML::SyntaxError => e
|
70
71
|
raise RuntimeError, "Problem parsing block '#{name}' (it needs to contain a YAML hash): #{e.message}", e.backtrace
|
71
72
|
end
|
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'yaml'
|
4
4
|
require 'strscan'
|
5
5
|
require 'webgen/error'
|
6
|
+
require 'webgen/utils'
|
6
7
|
|
7
8
|
module Webgen
|
8
9
|
module Utils
|
@@ -113,7 +114,7 @@ module Webgen
|
|
113
114
|
|
114
115
|
# Parse the parameter string and return the result.
|
115
116
|
def parse_params(param_string, tag)
|
116
|
-
|
117
|
+
Utils.yaml_load("--- #{param_string}")
|
117
118
|
rescue ArgumentError, SyntaxError, YAML::SyntaxError => e
|
118
119
|
raise Error.new("Could not parse parameter string '#{param_string}' for tag '#{tag}': #{e.message}")
|
119
120
|
end
|
data/lib/webgen/utils.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'rbconfig'
|
4
4
|
require 'webgen/core_ext'
|
5
|
+
require 'yaml'
|
5
6
|
|
6
7
|
module Webgen
|
7
8
|
|
@@ -34,6 +35,11 @@ module Webgen
|
|
34
35
|
str
|
35
36
|
end
|
36
37
|
|
38
|
+
# Load the YAML string.
|
39
|
+
def self.yaml_load(str)
|
40
|
+
YAML.load(str, aliases: true, permitted_classes: [Symbol, Time])
|
41
|
+
end
|
42
|
+
|
37
43
|
end
|
38
44
|
|
39
45
|
end
|
data/lib/webgen/version.rb
CHANGED
@@ -37,7 +37,7 @@ class TestItemTrackerNodes < Minitest::Test
|
|
37
37
|
|
38
38
|
def test_item_changed?
|
39
39
|
setup_default_nodes(@website.tree)
|
40
|
-
@website.ext.item_tracker =
|
40
|
+
@website.ext.item_tracker = Minitest::Mock.new
|
41
41
|
2.times do
|
42
42
|
@website.ext.item_tracker.expect(:item_changed?, false, [:node_meta_info, @website.tree['/file.en.html']])
|
43
43
|
@website.ext.item_tracker.expect(:item_changed?, false, [:node_meta_info, @website.tree['/file.de.html']])
|
@@ -18,10 +18,10 @@ class TestSourceStacked < Minitest::Test
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_paths
|
21
|
-
path1 =
|
21
|
+
path1 = Minitest::Mock.new
|
22
22
|
path1.expect(:mount_at, 'path1', ['/'])
|
23
23
|
path1.expect(:hash, 'path1'.hash)
|
24
|
-
path2 =
|
24
|
+
path2 = Minitest::Mock.new
|
25
25
|
path2.expect(:mount_at, 'path2', ['/hallo/'])
|
26
26
|
path2.expect(:hash, 'path2'.hash)
|
27
27
|
|
@@ -10,7 +10,7 @@ class TestTagTikz < Minitest::Test
|
|
10
10
|
require 'webgen/tag/tikz' rescue skip($!.message)
|
11
11
|
|
12
12
|
setup_context
|
13
|
-
@website.ext.path_handler =
|
13
|
+
@website.ext.path_handler = Minitest::Mock.new
|
14
14
|
|
15
15
|
root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
|
16
16
|
node = Webgen::Node.new(root, 'file.page', '/file.html')
|
data/test/webgen/test_context.rb
CHANGED
@@ -62,7 +62,7 @@ class TestContext < Minitest::Test
|
|
62
62
|
|
63
63
|
def test_tags_methods
|
64
64
|
context = Webgen::Context.new(@website)
|
65
|
-
tag =
|
65
|
+
tag = Minitest::Mock.new
|
66
66
|
tag.expect(:call, 'value', ['mytag', {'opt' => 'val'}, 'body', context])
|
67
67
|
@website.ext.tag = tag
|
68
68
|
|
data/test/webgen/test_error.rb
CHANGED
@@ -26,7 +26,7 @@ class TestError < Minitest::Test
|
|
26
26
|
|
27
27
|
def test_class_error_line
|
28
28
|
begin
|
29
|
-
eval("5 =")
|
29
|
+
eval("5 =", binding, "(eval)", 1)
|
30
30
|
rescue SyntaxError => e
|
31
31
|
assert_equal(1, Webgen::Error.error_line(e))
|
32
32
|
end
|
@@ -40,7 +40,7 @@ class TestError < Minitest::Test
|
|
40
40
|
|
41
41
|
def test_class_error_file
|
42
42
|
begin
|
43
|
-
eval("5 =")
|
43
|
+
eval("5 =", binding, "(eval)")
|
44
44
|
rescue SyntaxError => e
|
45
45
|
assert_equal('(eval)', Webgen::Error.error_file(e))
|
46
46
|
end
|
@@ -79,7 +79,7 @@ class TestRenderError < Minitest::Test
|
|
79
79
|
assert_match(/Error at location in <\/error:~5> while rendering <\/path>/, e.message)
|
80
80
|
|
81
81
|
begin
|
82
|
-
eval("5 =")
|
82
|
+
eval("5 =", binding, "(eval)", 1)
|
83
83
|
rescue SyntaxError
|
84
84
|
e = Webgen::RenderError.new($!, 'location', '/path', '/error')
|
85
85
|
assert_equal("/error", e.error_path)
|
data/test/webgen/test_node.rb
CHANGED
@@ -111,7 +111,7 @@ class TestNode < Minitest::Test
|
|
111
111
|
assert_equal(tree['/dir2/index.en.html'], tree['/dir2/'].proxy_node('en'))
|
112
112
|
assert_equal(tree['/dir2/index.en.html'], tree['/dir2/'].proxy_node('en'))
|
113
113
|
|
114
|
-
@website.ext.item_tracker =
|
114
|
+
@website.ext.item_tracker = Minitest::Mock.new
|
115
115
|
@website.ext.item_tracker.expect(:add, nil, [:a, :b, :c, :d])
|
116
116
|
tree['/dir/subfile.html'].meta_info['proxy_path'] = 'holla'
|
117
117
|
assert_equal(tree['/dir/subfile.html'], tree['/dir/subfile.html'].proxy_node('pt'))
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webgen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Leitner
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: psych
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '5.1'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: cmdparse
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -516,8 +530,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
516
530
|
- !ruby/object:Gem::Version
|
517
531
|
version: '0'
|
518
532
|
requirements: []
|
519
|
-
rubygems_version: 3.
|
520
|
-
signing_key:
|
533
|
+
rubygems_version: 3.5.3
|
534
|
+
signing_key:
|
521
535
|
specification_version: 4
|
522
536
|
summary: webgen is a fast, powerful, and extensible static website generator.
|
523
537
|
test_files: []
|
538
|
+
...
|