jekyll-graph 0.0.3 → 0.0.7
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/CHANGELOG.md +16 -1
- data/Gemfile +1 -1
- data/README.md +13 -6
- data/jekyll-graph.gemspec +2 -2
- data/lib/jekyll-graph/config.rb +19 -1
- data/lib/jekyll-graph/jekyll-graph.js +14 -14
- data/lib/jekyll-graph/{context.rb → patch/context.rb} +0 -0
- data/lib/jekyll-graph/{page.rb → patch/page.rb} +0 -0
- data/lib/jekyll-graph/version.rb +1 -1
- data/lib/jekyll-graph.rb +34 -30
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ed0feb31f2a12640c7ba6611b2768a0d2424fff77a5d6909876e5f1b586abd0
|
4
|
+
data.tar.gz: 856133d37f0c83fc570ea8437edea51a4181d5b43f8e832b310ea17a08966a4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7cff6886e6391bb8920746f0f248fb13ed8f795841c66c714f0c91b158afa0c16253d82249941fee5b2b4e018a2d715af2fd4527509ab3af7d0626f415c52d68
|
7
|
+
data.tar.gz: cbd240e478d07b67f92c8da3d8a31c261e3a3ea58a9052838b7fd4bb30da830dc37092c72453db65e2aab293a9bdf38d022f522cba227008947d3c45bfeb2275
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,19 @@
|
|
1
|
-
## [0.0.
|
1
|
+
## [0.0.7] - 2022-01-27
|
2
|
+
### Change
|
3
|
+
- Bump jekyll-wikilinks version number (0.0.11).
|
4
|
+
## [0.0.6] - 2022-01-24
|
5
|
+
### Change
|
6
|
+
- Move jekyll patch files to patch/ dir.
|
7
|
+
- Bump jekyll-wikilinks version number (0.0.10).
|
8
|
+
## [0.0.5] - 2021-11-23
|
9
|
+
### Change
|
10
|
+
- 'relatives' -> 'lineage' for tree nodes.
|
11
|
+
|
12
|
+
## [0.0.4] - 2021-11-22
|
13
|
+
### Fix
|
14
|
+
- Custom path config related fix in scripts.
|
15
|
+
|
16
|
+
## [0.0.3] - 2021-11-22
|
2
17
|
### Change
|
3
18
|
- Fix javascript inheritance.
|
4
19
|
- Decrement missing node log messages from 'warn' to 'debug'.
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
Jekyll-Graph generates data and renders a graph that allows visitors to navigate a jekyll site by clicking nodes in the graph. Nodes are generated from the site's markdown files. Links for the tree graph are generated from [`jekyll-namespaces`](https://github.com/manunamz/jekyll-namespaces) and links for the net-web graph from [`jekyll-wikilinks`](https://github.com/manunamz/jekyll-wikilinks).
|
8
8
|
|
9
|
-
This gem is part of the [jekyll-bonsai](https://
|
9
|
+
This gem is part of the [jekyll-bonsai](https://jekyll-bonsai.netlify.app/) project. 🎋
|
10
10
|
|
11
11
|
## Installation
|
12
12
|
|
@@ -41,15 +41,17 @@ export default class JekyllGraphSubClass extends JekyllGraph {
|
|
41
41
|
|
42
42
|
constructor() {
|
43
43
|
super();
|
44
|
+
// access graph with 'this.graph'
|
44
45
|
// access graph div with 'this.graphDiv'
|
45
46
|
}
|
46
47
|
|
47
48
|
// ...
|
48
49
|
}
|
49
50
|
```
|
51
|
+
|
50
52
|
Call `this.drawNetWeb()` and `this.drawTree()` to actually draw the graph. You could do this simply on initialization or on a button click, etc.
|
51
53
|
|
52
|
-
Unless otherwise
|
54
|
+
Unless otherwise configured (see `path` vars below), the `jekyll-graph.js` file will be generated into `_site/assets/js/`.
|
53
55
|
|
54
56
|
## Configuration
|
55
57
|
|
@@ -64,6 +66,9 @@ graph:
|
|
64
66
|
scripts: "/assets/js"
|
65
67
|
net_web:
|
66
68
|
enabled: true
|
69
|
+
exclude:
|
70
|
+
attrs: false
|
71
|
+
links: false
|
67
72
|
force:
|
68
73
|
charge:
|
69
74
|
strength_x:
|
@@ -88,6 +93,8 @@ graph:
|
|
88
93
|
|
89
94
|
`path.scripts`: An optional custom scripts location for the graph scripts to generate into. Location is relative to the assets location in the `_site/` directory (If `assets_path` is set, but `scripts_path` is not, the location will default to `_site/<assets_path>/js/`).
|
90
95
|
|
96
|
+
`net_web.exclude.attrs` and `net_web.exclude.links`: Determines whether wikilink attributes and/or links are added to the net-web graph from the link index.
|
97
|
+
|
91
98
|
`tree.enabled` and `net_web.enabled`: Toggles on/off the `tree` and `net_web` graphs, respectively. Be sure to disable graphs that are not in use.
|
92
99
|
|
93
100
|
`tree.force` and `net_web.force`: These are force variables from d3's simulation forces. You can check out the [docs for details](https://github.com/d3/d3-force#simulation_force).
|
@@ -175,11 +182,11 @@ For the tree graph, `graph-tree.json`, `links` are built from a tree data struct
|
|
175
182
|
"nodes": [
|
176
183
|
{
|
177
184
|
"id": "<some-id>",
|
178
|
-
"url": "<
|
185
|
+
"url": "<lineage-url>", // site.baseurl wil be handled for you here
|
179
186
|
"label": "<note's-title>",
|
180
|
-
"
|
181
|
-
"nodes": [<
|
182
|
-
"links": [<
|
187
|
+
"lineage": {
|
188
|
+
"nodes": [<lineage-node-id>, ...],
|
189
|
+
"links": [<lineage-link-id>, ...],
|
183
190
|
}
|
184
191
|
},
|
185
192
|
...
|
data/jekyll-graph.gemspec
CHANGED
@@ -30,11 +30,11 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.require_paths = ["lib"]
|
31
31
|
|
32
32
|
# Uncomment to register a new dependency of your gem
|
33
|
-
|
33
|
+
spec.add_dependency "jekyll", "~> 4.2.0"
|
34
34
|
|
35
35
|
# For more information and examples about making a new gem, checkout our
|
36
36
|
# guide at: https://bundler.io/guides/creating_gem.html
|
37
37
|
|
38
38
|
spec.add_runtime_dependency "jekyll-namespaces", "~> 0.0.3"
|
39
|
-
spec.add_runtime_dependency "jekyll-wikilinks", "~> 0.0.
|
39
|
+
spec.add_runtime_dependency "jekyll-wikilinks", "~> 0.0.11"
|
40
40
|
end
|
data/lib/jekyll-graph/config.rb
CHANGED
@@ -7,9 +7,11 @@ module Jekyll
|
|
7
7
|
class PluginConfig
|
8
8
|
|
9
9
|
ASSETS_KEY = "assets"
|
10
|
+
ATTRS_KEY = "attrs"
|
10
11
|
CONFIG_KEY = "graph"
|
11
12
|
ENABLED_KEY = "enabled"
|
12
13
|
EXCLUDE_KEY = "exclude"
|
14
|
+
LINKS_KEY = "links"
|
13
15
|
NET_WEB_KEY = "net_web"
|
14
16
|
PATH_KEY = "path"
|
15
17
|
SCRIPTS_KEY = "scripts"
|
@@ -22,7 +24,7 @@ module Jekyll
|
|
22
24
|
Jekyll.logger.debug("Excluded jekyll types in graph: ", option(EXCLUDE_KEY)) unless disabled?
|
23
25
|
end
|
24
26
|
|
25
|
-
#
|
27
|
+
# descriptors
|
26
28
|
|
27
29
|
def disabled?
|
28
30
|
return option(ENABLED_KEY) == false
|
@@ -49,6 +51,18 @@ module Jekyll
|
|
49
51
|
return option_path(SCRIPTS_KEY)
|
50
52
|
end
|
51
53
|
|
54
|
+
def use_attrs?
|
55
|
+
return true if option_net_web_exclude(ATTRS_KEY).nil?
|
56
|
+
return !option_net_web_exclude(ATTRS_KEY)
|
57
|
+
end
|
58
|
+
|
59
|
+
def use_links?
|
60
|
+
return true if option_net_web_exclude(LINKS_KEY).nil?
|
61
|
+
return !option_net_web_exclude(LINKS_KEY)
|
62
|
+
end
|
63
|
+
|
64
|
+
# options
|
65
|
+
|
52
66
|
def option(key)
|
53
67
|
@config[CONFIG_KEY] && @config[CONFIG_KEY][key]
|
54
68
|
end
|
@@ -61,6 +75,10 @@ module Jekyll
|
|
61
75
|
@config[CONFIG_KEY] && @config[CONFIG_KEY][NET_WEB_KEY] && @config[CONFIG_KEY][NET_WEB_KEY][key]
|
62
76
|
end
|
63
77
|
|
78
|
+
def option_net_web_exclude(key)
|
79
|
+
@config[CONFIG_KEY] && @config[CONFIG_KEY][NET_WEB_KEY] && @config[CONFIG_KEY][NET_WEB_KEY][EXCLUDE_KEY] && @config[CONFIG_KEY][NET_WEB_KEY][EXCLUDE_KEY][key]
|
80
|
+
end
|
81
|
+
|
64
82
|
def option_tree(key)
|
65
83
|
@config[CONFIG_KEY] && @config[CONFIG_KEY][TREE_KEY] && @config[CONFIG_KEY][TREE_KEY][key]
|
66
84
|
end
|
@@ -8,7 +8,7 @@ export default class JekyllGraph {
|
|
8
8
|
|
9
9
|
// d3
|
10
10
|
drawNetWeb () {
|
11
|
-
let assetsPath = '{{ site.graph.
|
11
|
+
let assetsPath = '{{ site.graph.path.assets }}' !== '' ? '{{ site.graph.path.assets }}' : '/assets';
|
12
12
|
fetch(`{{ site.baseurl }}${assetsPath}/graph-net-web.json`).then(res => res.json()).then(data => {
|
13
13
|
|
14
14
|
// neighbors: replace ids with full object
|
@@ -110,7 +110,7 @@ export default class JekyllGraph {
|
|
110
110
|
}
|
111
111
|
|
112
112
|
drawTree () {
|
113
|
-
let assetsPath = '{{ site.graph.
|
113
|
+
let assetsPath = '{{ site.graph.path.assets }}' !== '' ? '{{ site.graph.path.assets }}' : '/assets';
|
114
114
|
fetch(`{{ site.baseurl }}${assetsPath}/graph-tree.json`).then(res => res.json()).then(data => {
|
115
115
|
|
116
116
|
if (this.graph) {
|
@@ -127,19 +127,19 @@ export default class JekyllGraph {
|
|
127
127
|
let hoverNode = null;
|
128
128
|
let hoverLink = null;
|
129
129
|
|
130
|
-
//
|
130
|
+
// lineage: replace ids with full objects
|
131
131
|
data.nodes.forEach(node => {
|
132
|
-
//
|
133
|
-
let
|
134
|
-
node.
|
135
|
-
|
132
|
+
// lineage
|
133
|
+
let lineageNodes = [];
|
134
|
+
node.lineage.nodes.forEach(nNodeId => {
|
135
|
+
lineageNodes.push(data.nodes.find(node => node.id === nNodeId));
|
136
136
|
});
|
137
137
|
let relativeLinks = [];
|
138
|
-
node.
|
138
|
+
node.lineage.links.forEach(nLink => {
|
139
139
|
relativeLinks.push(data.links.find(link => link.source === nLink.source && link.target === nLink.target));
|
140
140
|
});
|
141
|
-
node.
|
142
|
-
node.
|
141
|
+
node.lineage.nodes = lineageNodes;
|
142
|
+
node.lineage.links = relativeLinks;
|
143
143
|
// siblings
|
144
144
|
this.numSiblingsLeft[node.parent] = node.siblings.length;
|
145
145
|
});
|
@@ -188,8 +188,8 @@ export default class JekyllGraph {
|
|
188
188
|
highlightLinks.clear();
|
189
189
|
if (node) {
|
190
190
|
highlightNodes.add(node);
|
191
|
-
node.
|
192
|
-
node.
|
191
|
+
node.lineage.nodes.forEach(node => highlightNodes.add(node));
|
192
|
+
node.lineage.links.forEach(link => highlightLinks.add(link));
|
193
193
|
}
|
194
194
|
hoverNode = node || null;
|
195
195
|
})
|
@@ -269,9 +269,9 @@ export default class JekyllGraph {
|
|
269
269
|
} else if (hoverNode !== null && gType === "net-web" && !hoverNode.neighbors.nodes.includes(node)) {
|
270
270
|
// non-neighbor to hoverNode
|
271
271
|
fillText = false;
|
272
|
-
} else if (hoverNode !== null && gType === "tree" && hoverNode.
|
272
|
+
} else if (hoverNode !== null && gType === "tree" && hoverNode.lineage.nodes.includes(node)) {
|
273
273
|
// neighbor to hoverNode
|
274
|
-
} else if (hoverNode !== null && gType === "tree" && !hoverNode.
|
274
|
+
} else if (hoverNode !== null && gType === "tree" && !hoverNode.lineage.nodes.includes(node)) {
|
275
275
|
// non-neighbor to hoverNode
|
276
276
|
fillText = false;
|
277
277
|
} else if ((hoverNode === null && hoverLink !== null) && (hoverLink.source === node || hoverLink.target === node)) {
|
File without changes
|
File without changes
|
data/lib/jekyll-graph/version.rb
CHANGED
data/lib/jekyll-graph.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require "jekyll"
|
3
3
|
|
4
|
-
require_relative "jekyll-graph/context"
|
5
|
-
require_relative "jekyll-graph/page"
|
4
|
+
require_relative "jekyll-graph/patch/context"
|
5
|
+
require_relative "jekyll-graph/patch/page"
|
6
6
|
require_relative "jekyll-graph/version"
|
7
7
|
|
8
8
|
# setup config
|
@@ -69,7 +69,7 @@ module Jekyll
|
|
69
69
|
if !$graph_conf.disabled_tree?
|
70
70
|
# generate json data
|
71
71
|
json_tree_nodes, json_tree_links = self.generate_json_tree(@site.tree.root)
|
72
|
-
self.
|
72
|
+
self.set_lineage(json_tree_nodes, json_tree_links)
|
73
73
|
tree_graph_content = JSON.dump(
|
74
74
|
nodes: json_tree_nodes,
|
75
75
|
links: json_tree_links,
|
@@ -138,20 +138,20 @@ module Jekyll
|
|
138
138
|
end
|
139
139
|
end
|
140
140
|
|
141
|
-
def
|
141
|
+
def set_lineage(json_nodes, json_links)
|
142
142
|
# TODO: json nodes have relative_url, but node.id's/urls are doc urls.
|
143
143
|
json_nodes.each do |json_node|
|
144
|
-
# set
|
144
|
+
# set lineage
|
145
145
|
|
146
|
-
ancestor_node_ids, descendent_node_ids = @site.tree.
|
147
|
-
|
148
|
-
json_node[:
|
146
|
+
ancestor_node_ids, descendent_node_ids = @site.tree.get_all_lineage_ids(json_node[:id])
|
147
|
+
lineage_node_ids = ancestor_node_ids.concat(descendent_node_ids)
|
148
|
+
json_node[:lineage][:nodes] = lineage_node_ids if !lineage_node_ids.nil?
|
149
149
|
|
150
150
|
# include current node when filtering for links along entire relative lineage
|
151
|
-
lineage_ids =
|
151
|
+
lineage_ids = lineage_node_ids.concat([json_node[:id]])
|
152
152
|
|
153
|
-
|
154
|
-
json_node[:
|
153
|
+
json_lineage_links = json_links.select { |l| lineage_ids.include?(l[:source]) && lineage_ids.include?(l[:target]) }
|
154
|
+
json_node[:lineage][:links] = json_lineage_links if !json_lineage_links.nil?
|
155
155
|
|
156
156
|
# set siblings
|
157
157
|
|
@@ -203,10 +203,27 @@ module Jekyll
|
|
203
203
|
},
|
204
204
|
}
|
205
205
|
# TODO: this link calculation ends up with duplicates -- re-visit this later.
|
206
|
-
|
207
|
-
#
|
208
|
-
|
209
|
-
|
206
|
+
if $graph_conf.use_attrs?
|
207
|
+
@site.link_index.index[doc.url].attributes.each do |link| # link = { 'type' => str, 'urls' => [str, str, ...] }
|
208
|
+
# TODO: Header + Block-level wikilinks
|
209
|
+
link['urls'].each do |lu|
|
210
|
+
link_no_anchor = lu.match(/([^#]+)/i)[0]
|
211
|
+
link_no_baseurl = @site.baseurl.nil? ? link_no_anchor : link_no_anchor.gsub(@site.baseurl, "")
|
212
|
+
linked_doc = @md_docs.select{ |d| d.url == link_no_baseurl }
|
213
|
+
if !linked_doc.nil? && linked_doc.size == 1 && !$graph_conf.excluded?(linked_doc.first.type)
|
214
|
+
# TODO: add link['type'] to d3 graph
|
215
|
+
net_web_links << {
|
216
|
+
source: doc.url,
|
217
|
+
target: linked_doc.first.url,
|
218
|
+
}
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
223
|
+
if $graph_conf.use_links?
|
224
|
+
@site.link_index.index[doc.url].forelinks.each do |link| # link = { 'type' => str, 'url' => str }
|
225
|
+
# TODO: Header + Block-level wikilinks
|
226
|
+
link_no_anchor = link['url'].match(/([^#]+)/i)[0]
|
210
227
|
link_no_baseurl = @site.baseurl.nil? ? link_no_anchor : link_no_anchor.gsub(@site.baseurl, "")
|
211
228
|
linked_doc = @md_docs.select{ |d| d.url == link_no_baseurl }
|
212
229
|
if !linked_doc.nil? && linked_doc.size == 1 && !$graph_conf.excluded?(linked_doc.first.type)
|
@@ -218,19 +235,6 @@ module Jekyll
|
|
218
235
|
end
|
219
236
|
end
|
220
237
|
end
|
221
|
-
@site.link_index.index[doc.url].forelinks.each do |link| # link = { 'type' => str, 'url' => str }
|
222
|
-
# TODO: Header + Block-level wikilinks
|
223
|
-
link_no_anchor = link['url'].match(/([^#]+)/i)[0]
|
224
|
-
link_no_baseurl = @site.baseurl.nil? ? link_no_anchor : link_no_anchor.gsub(@site.baseurl, "")
|
225
|
-
linked_doc = @md_docs.select{ |d| d.url == link_no_baseurl }
|
226
|
-
if !linked_doc.nil? && linked_doc.size == 1 && !$graph_conf.excluded?(linked_doc.first.type)
|
227
|
-
# TODO: add link['type'] to d3 graph
|
228
|
-
net_web_links << {
|
229
|
-
source: doc.url,
|
230
|
-
target: linked_doc.first.url,
|
231
|
-
}
|
232
|
-
end
|
233
|
-
end
|
234
238
|
|
235
239
|
end
|
236
240
|
end
|
@@ -252,7 +256,7 @@ module Jekyll
|
|
252
256
|
namespace: node.namespace,
|
253
257
|
url: "",
|
254
258
|
level: level,
|
255
|
-
|
259
|
+
lineage: {
|
256
260
|
nodes: [],
|
257
261
|
links: [],
|
258
262
|
},
|
@@ -278,7 +282,7 @@ module Jekyll
|
|
278
282
|
namespace: node.namespace,
|
279
283
|
url: relative_url(node.url),
|
280
284
|
level: level,
|
281
|
-
|
285
|
+
lineage: {
|
282
286
|
nodes: [],
|
283
287
|
links: [],
|
284
288
|
},
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-graph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- manunamz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: jekyll
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.2.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.2.0
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: jekyll-namespaces
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -30,14 +44,14 @@ dependencies:
|
|
30
44
|
requirements:
|
31
45
|
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.0.
|
47
|
+
version: 0.0.11
|
34
48
|
type: :runtime
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.0.
|
54
|
+
version: 0.0.11
|
41
55
|
description:
|
42
56
|
email:
|
43
57
|
- manunamz@pm.me
|
@@ -59,9 +73,9 @@ files:
|
|
59
73
|
- jekyll-graph.gemspec
|
60
74
|
- lib/jekyll-graph.rb
|
61
75
|
- lib/jekyll-graph/config.rb
|
62
|
-
- lib/jekyll-graph/context.rb
|
63
76
|
- lib/jekyll-graph/jekyll-graph.js
|
64
|
-
- lib/jekyll-graph/
|
77
|
+
- lib/jekyll-graph/patch/context.rb
|
78
|
+
- lib/jekyll-graph/patch/page.rb
|
65
79
|
- lib/jekyll-graph/tags.rb
|
66
80
|
- lib/jekyll-graph/version.rb
|
67
81
|
homepage: https://github.com/manunamz/jekyll-graph
|