yarrow 0.8.2 → 0.8.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/lib/yarrow/config.rb +1 -1
- data/lib/yarrow/configuration.rb +8 -1
- data/lib/yarrow/content/expansion/strategy.rb +8 -7
- data/lib/yarrow/content/expansion/tree.rb +3 -0
- data/lib/yarrow/content/model.rb +5 -1
- data/lib/yarrow/content/policy.rb +8 -26
- data/lib/yarrow/version.rb +1 -1
- data/lib/yarrow/web/generator.rb +3 -1
- data/lib/yarrow/web/template.rb +3 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b4319be245b1b70240d28422cf095d64bb61bdacf1b95c545cd055ed7c9e645b
|
4
|
+
data.tar.gz: 1c0fc21f3536a09dd5c11a1c359ce11ab128ea9c527f002a6e6a777090848173
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c3d3176870c6bc82695a825bfa7dc46908311200a35722142620e2fdfd5ce60ea795ef03b88ee35c206379e9f382bab41e0cd38f96d5cc261ba0578d7fe51ed
|
7
|
+
data.tar.gz: 3d8b4f4acb48ef94dc75b65ebda43c5a0d0e588679688b090a6ebaba6c5bccc7f7610793d60663a2e7c5cdd6fcdc213be989f064ac8d9092f6dfd191a0b38b90
|
data/lib/yarrow/config.rb
CHANGED
@@ -62,7 +62,7 @@ module Yarrow
|
|
62
62
|
attribute :meta, :any
|
63
63
|
attribute :server, :any
|
64
64
|
attribute :content, :__config_content
|
65
|
-
|
65
|
+
attribute :output, :__config_output
|
66
66
|
end
|
67
67
|
#
|
68
68
|
# `content_dir` and `output_dir` are placeholders and should be overriden
|
data/lib/yarrow/configuration.rb
CHANGED
@@ -59,6 +59,12 @@ module Yarrow
|
|
59
59
|
})
|
60
60
|
end
|
61
61
|
|
62
|
+
output_obj = if config.key?(:output)
|
63
|
+
Yarrow::Config::Output.new(config[:output])
|
64
|
+
else
|
65
|
+
Yarrow::Config::Output.new({ generator: "web", template_dir: "templates" })
|
66
|
+
end
|
67
|
+
|
62
68
|
# TODO: messy hack to get rid of Hashie::Mash, this should either be
|
63
69
|
# automated as part of the schema types or a default value should be
|
64
70
|
# generated here (eg: `"#{Dir.pwd}/docs"`)
|
@@ -70,7 +76,8 @@ module Yarrow
|
|
70
76
|
source_dir: Pathname.new(File.expand_path(source_dir_or_string)),
|
71
77
|
meta: meta_obj,
|
72
78
|
server: server_obj,
|
73
|
-
content: content_obj
|
79
|
+
content: content_obj,
|
80
|
+
output: output_obj
|
74
81
|
)
|
75
82
|
end
|
76
83
|
end
|
@@ -3,19 +3,19 @@ module Yarrow
|
|
3
3
|
module Expansion
|
4
4
|
class Strategy
|
5
5
|
include Yarrow::Tools::FrontMatter
|
6
|
-
|
6
|
+
|
7
7
|
attr_reader :graph
|
8
|
-
|
8
|
+
|
9
9
|
def initialize(graph)
|
10
10
|
@graph = graph
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
# Extract collection level configuration/metadata from the root node for
|
14
14
|
# this content type.
|
15
15
|
def extract_metadata(node, type)
|
16
16
|
# TODO: support _index or _slug convention as well
|
17
17
|
meta_file = node.out(slug: type.to_s).first
|
18
|
-
|
18
|
+
|
19
19
|
if meta_file
|
20
20
|
# Process metadata and add it to the collection node
|
21
21
|
# TODO: pass in content converter object
|
@@ -25,15 +25,15 @@ module Yarrow
|
|
25
25
|
# Otherwise, assume default collection behaviour
|
26
26
|
data = {}
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
# Generate a default title if not provided in metadata
|
30
30
|
unless data.key?(:title)
|
31
31
|
data[:title] = type.to_s.capitalize
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
data
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
# Workaround for handling meta and content source in multiple files or a single
|
38
38
|
# file with front matter.
|
39
39
|
def process_content(path)
|
@@ -46,6 +46,7 @@ module Yarrow
|
|
46
46
|
when '.yml'
|
47
47
|
[nil, YAML.load(File.read(path.to_s), symbolize_names: true)]
|
48
48
|
end
|
49
|
+
# TODO: Raise error if unsupported extname reaches here
|
49
50
|
end
|
50
51
|
end
|
51
52
|
end
|
@@ -63,6 +63,9 @@ module Yarrow
|
|
63
63
|
item_node.props[:body] = body if body
|
64
64
|
item_node.props[:title] = meta[:title] if meta
|
65
65
|
# TODO: better handling of metadata on node props
|
66
|
+
|
67
|
+
# TODO: new schema edits go here
|
68
|
+
#puts policy.entity_const
|
66
69
|
end
|
67
70
|
|
68
71
|
# We may not have an expanded node for the parent collection if this is a
|
data/lib/yarrow/content/model.rb
CHANGED
@@ -4,7 +4,11 @@ module Yarrow
|
|
4
4
|
def initialize(content_config)
|
5
5
|
@policies = {}
|
6
6
|
content_config.source_map.each_entry do |policy_label, policy_spec|
|
7
|
-
@policies[policy_label] = Policy.from_spec(
|
7
|
+
@policies[policy_label] = Policy.from_spec(
|
8
|
+
policy_label,
|
9
|
+
policy_spec,
|
10
|
+
content_config.module
|
11
|
+
)
|
8
12
|
end
|
9
13
|
end
|
10
14
|
|
@@ -9,6 +9,8 @@ module Yarrow
|
|
9
9
|
|
10
10
|
DEFAULT_MATCH_PATH = "."
|
11
11
|
|
12
|
+
MODULE_SEPARATOR = "::"
|
13
|
+
|
12
14
|
# Construct a content policy from the given source specification.
|
13
15
|
def self.from_spec(policy_label, policy_props, module_prefix="")
|
14
16
|
# TODO: validate length, structure etc
|
@@ -27,7 +29,7 @@ module Yarrow
|
|
27
29
|
if policy_props.key?(:entity)
|
28
30
|
Yarrow::Symbols.to_plural(policy_props[:entity])
|
29
31
|
else
|
30
|
-
Yarrow::Symbols.to_plural(
|
32
|
+
Yarrow::Symbols.to_plural(policy_label)
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
@@ -38,7 +40,7 @@ module Yarrow
|
|
38
40
|
if policy_props.key?(:container)
|
39
41
|
Yarrow::Symbols.to_singular(policy_props[:container])
|
40
42
|
else
|
41
|
-
Yarrow::Symbols.to_singular(
|
43
|
+
Yarrow::Symbols.to_singular(policy_label)
|
42
44
|
end
|
43
45
|
end
|
44
46
|
|
@@ -64,7 +66,7 @@ module Yarrow
|
|
64
66
|
end
|
65
67
|
end
|
66
68
|
|
67
|
-
attr_reader :container, :entity, :expansion, :extensions, :match_path, :
|
69
|
+
attr_reader :container, :entity, :expansion, :extensions, :match_path, :module_prefix
|
68
70
|
|
69
71
|
def initialize(container, entity, expansion, extensions, match_path, module_prefix)
|
70
72
|
@container = container
|
@@ -72,35 +74,15 @@ module Yarrow
|
|
72
74
|
@expansion = expansion
|
73
75
|
@extensions = extensions
|
74
76
|
@match_path = match_path
|
75
|
-
@module_prefix = module_prefix
|
77
|
+
@module_prefix = module_prefix.split(MODULE_SEPARATOR)
|
76
78
|
end
|
77
79
|
|
78
80
|
def container_const
|
79
|
-
@container_const ||= Yarrow::Symbols.to_module_const([module_prefix, container])
|
81
|
+
@container_const ||= Yarrow::Symbols.to_module_const([*module_prefix, container])
|
80
82
|
end
|
81
83
|
|
82
84
|
def entity_const
|
83
|
-
@entity_const ||= Yarrow::Symbols.to_module_const([module_prefix, entity])
|
84
|
-
end
|
85
|
-
|
86
|
-
def _container
|
87
|
-
return @properties.container if @properties.container
|
88
|
-
Yarrow::Symbols.to_plural(@properties.entity)
|
89
|
-
end
|
90
|
-
|
91
|
-
def _entity
|
92
|
-
return @properties.entity if @properties.entity
|
93
|
-
Yarrow::Symbols.to_singular(@properties.container)
|
94
|
-
end
|
95
|
-
|
96
|
-
def _extensions
|
97
|
-
return @properties.extensions if @properties.extensions
|
98
|
-
DEFAULT_EXTENSIONS
|
99
|
-
end
|
100
|
-
|
101
|
-
def _match_path
|
102
|
-
return @properties.match_path if @properties.match_path
|
103
|
-
DEFAULT_MATCH_PATH
|
85
|
+
@entity_const ||= Yarrow::Symbols.to_module_const([*module_prefix, entity])
|
104
86
|
end
|
105
87
|
end
|
106
88
|
end
|
data/lib/yarrow/version.rb
CHANGED
data/lib/yarrow/web/generator.rb
CHANGED
@@ -18,7 +18,7 @@ module Yarrow
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def write_document(document)
|
21
|
-
template = Template.for_document(document)
|
21
|
+
template = Template.for_document(document, config)
|
22
22
|
write_output_file(document.url, template.render(document))
|
23
23
|
end
|
24
24
|
|
@@ -39,6 +39,8 @@ module Yarrow
|
|
39
39
|
File.open(path.to_s, 'w+:UTF-8') do |file|
|
40
40
|
file.puts(content)
|
41
41
|
end
|
42
|
+
|
43
|
+
puts "[write] #{path} → #{url}"
|
42
44
|
end
|
43
45
|
|
44
46
|
def generate_sitemap(manifest)
|
data/lib/yarrow/web/template.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
module Yarrow
|
2
2
|
module Web
|
3
3
|
class Template
|
4
|
-
def self.for_document(document)
|
4
|
+
def self.for_document(document, config)
|
5
5
|
layout_name = if document.respond_to?(:layout)
|
6
6
|
document.layout || document.type
|
7
7
|
else
|
8
8
|
document.type
|
9
9
|
end
|
10
10
|
|
11
|
-
@template_dir =
|
11
|
+
@template_dir = config.output.template_dir
|
12
|
+
#@template_dir = "./spec/fixtures/templates/doctest"
|
12
13
|
@template_ext = ".html"
|
13
14
|
|
14
15
|
template_file = "#{layout_name}#{@template_ext}"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yarrow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Rickerby
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-11-
|
11
|
+
date: 2022-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|