yarrow 0.8.5 → 0.8.6
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/extensions/mementus.rb +16 -0
- data/lib/yarrow/version.rb +1 -1
- data/lib/yarrow/web/document.rb +60 -17
- data/lib/yarrow/web/manifest.rb +3 -3
- 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: cb8358e221f56cb48075609b4ae35e07ef7ea1bef577d6a1f929a8eb26ca4242
|
4
|
+
data.tar.gz: 8730eec22402eb73b1555a7421fd6ea5f22edb049d8dc7083c0b4de1ea777681
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1571c747f38efd25382c758b9974c1e5b644f541aa93f76f9f8d3082c35db13b30cf39da52487e67ad2611feb73fc24ad39acdf7de57393aaa8e16cebe8dc0ea
|
7
|
+
data.tar.gz: aad027b60c53a918b9b96f800e144b8b981f3e083a211524ce329549b8242cbd9100da756b7130adcfac990b7944d557378de963b62042cf2effba12acade81e
|
data/lib/extensions/mementus.rb
CHANGED
@@ -6,6 +6,22 @@ module Mementus
|
|
6
6
|
# Monkeypatch extension to ensure each pipeline step supports enumerable
|
7
7
|
# methods. Mostly used for #map. API needs to be fixed in the gem itself.
|
8
8
|
include Enumerable
|
9
|
+
|
10
|
+
def to
|
11
|
+
Step.new(map { |edge| edge.to }, Pipe.new(graph), graph)
|
12
|
+
end
|
13
|
+
|
14
|
+
def props
|
15
|
+
Step.new(map { |node| node.props }, Pipe.new(graph), graph)
|
16
|
+
end
|
17
|
+
|
18
|
+
# def props
|
19
|
+
# node_props = source.inject([]) do |result, node|
|
20
|
+
# result.concat(node.props)
|
21
|
+
# end
|
22
|
+
|
23
|
+
# Step.new(node_props, Pipe.new(graph), graph)
|
24
|
+
# end
|
9
25
|
end
|
10
26
|
end
|
11
27
|
module Structure
|
data/lib/yarrow/version.rb
CHANGED
data/lib/yarrow/web/document.rb
CHANGED
@@ -1,20 +1,15 @@
|
|
1
|
-
module Yarrow
|
1
|
+
module Yarrow
|
2
2
|
module Web
|
3
|
-
class
|
4
|
-
# This class is somewhat verbose for simplicity and long-term maintainability
|
5
|
-
# (having a clear and easy to follow construction, rather than doing anything
|
6
|
-
# too clever which has burned this lib in the past).
|
7
|
-
def initialize(item, parent, is_index)
|
8
|
-
@item = item
|
9
|
-
@resource = item.props[:resource]
|
10
|
-
@parent = parent
|
11
|
-
@is_index = is_index
|
12
|
-
end
|
13
|
-
|
3
|
+
class BaseDocument
|
14
4
|
def resource
|
15
5
|
@resource
|
16
6
|
end
|
17
7
|
|
8
|
+
def type
|
9
|
+
@type
|
10
|
+
end
|
11
|
+
|
12
|
+
# TODO: confirm this can be deleted
|
18
13
|
def index
|
19
14
|
_index = @item.out_e(:index)
|
20
15
|
unless _index.first.nil?
|
@@ -24,16 +19,19 @@ module Yarrow
|
|
24
19
|
end
|
25
20
|
end
|
26
21
|
|
22
|
+
# TODO: confirm this can be deleted
|
27
23
|
def index_body
|
28
24
|
@item.props[:index_body]
|
29
25
|
end
|
30
26
|
|
31
27
|
# TODO: manage behaviour with and without current item
|
32
28
|
# TODO: link to manifest
|
29
|
+
#
|
30
|
+
# TODO: replace @item and @collection with @node internally and in class interface
|
33
31
|
def breadcrumbs
|
34
32
|
path = []
|
35
33
|
|
36
|
-
current_parent = @
|
34
|
+
current_parent = @node.in(:collection)
|
37
35
|
|
38
36
|
while !current_parent.first.nil?
|
39
37
|
path << current_parent.first.props[:resource]
|
@@ -51,10 +49,6 @@ module Yarrow
|
|
51
49
|
@resource.title
|
52
50
|
end
|
53
51
|
|
54
|
-
def type
|
55
|
-
@item.props[:type]
|
56
|
-
end
|
57
|
-
|
58
52
|
def body
|
59
53
|
return @resource.body.to_html if @resource.respond_to?(:body)
|
60
54
|
""
|
@@ -78,5 +72,54 @@ module Yarrow
|
|
78
72
|
end
|
79
73
|
end
|
80
74
|
end
|
75
|
+
|
76
|
+
class IndexDocument < BaseDocument
|
77
|
+
# Represents the index document of a collection. This contains
|
78
|
+
# a reference to the individual items in the collection as well as
|
79
|
+
# any document content itself.
|
80
|
+
def initialize(collection, item=nil, is_index=false)
|
81
|
+
@collection = collection
|
82
|
+
@item = item
|
83
|
+
# The parent node of the collection is the first incoming node link
|
84
|
+
@parent = collection.in(:collection).first
|
85
|
+
@is_index = is_index
|
86
|
+
|
87
|
+
template_map = collection.out_e(:child).to.all.inject([]) do |result, node|
|
88
|
+
result << Document.new(node, false)
|
89
|
+
end
|
90
|
+
|
91
|
+
instance_variable_set("@children", template_map)
|
92
|
+
define_singleton_method(:children){ template_map }
|
93
|
+
|
94
|
+
if @item.nil?
|
95
|
+
@resource = collection.props[:resource]
|
96
|
+
@type = collection.props[:type]
|
97
|
+
@node = collection
|
98
|
+
else
|
99
|
+
@resource = item.props[:resource]
|
100
|
+
@type = item.props[:type]
|
101
|
+
@node = item
|
102
|
+
end
|
103
|
+
|
104
|
+
instance_variable_set("@#{@type}", @resource)
|
105
|
+
define_singleton_method(@type){ @resource }
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
class Document < BaseDocument
|
110
|
+
# This class is somewhat verbose for simplicity and long-term maintainability
|
111
|
+
# (having a clear and easy to follow construction, rather than doing anything
|
112
|
+
# too clever which has burned this lib in the past).
|
113
|
+
def initialize(item, is_index)
|
114
|
+
@item = item
|
115
|
+
@type = item.props[:type]
|
116
|
+
@parent = item.in(:collection).first
|
117
|
+
@node = item
|
118
|
+
@is_index = is_index
|
119
|
+
@resource = item.props[:resource]
|
120
|
+
instance_variable_set("@#{item.props[:type]}", @resource)
|
121
|
+
define_singleton_method(item.props[:type]){ @resource }
|
122
|
+
end
|
123
|
+
end
|
81
124
|
end
|
82
125
|
end
|
data/lib/yarrow/web/manifest.rb
CHANGED
@@ -50,15 +50,15 @@ module Yarrow
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def self.collection_context(collection)
|
53
|
-
|
53
|
+
IndexDocument.new(collection, nil, true)
|
54
54
|
end
|
55
55
|
|
56
56
|
def self.collection_index_context(collection, item)
|
57
|
-
|
57
|
+
IndexDocument.new(collection, item, false)
|
58
58
|
end
|
59
59
|
|
60
60
|
def self.item_context(item)
|
61
|
-
Document.new(item,
|
61
|
+
Document.new(item, false)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
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.6
|
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-12-
|
11
|
+
date: 2022-12-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|