yarrow 0.8.2 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|