jekyll-github-metadata 2.8.0 → 2.9.1
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f30ae34c0ecef4f7a5ef2cb3669d9c1f9204ff17
|
4
|
+
data.tar.gz: 7f81b7ca161a562b966012f6aae369ef2957e88c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d898b20ea3034666929654dc6e1a437f29dbce86e5a18b14dc948024d60505c7a7b7c5dddaedd6bf91ae11b8c1f9fff2dc0e3a758e1f06998da6bd5c2c1d23f9
|
7
|
+
data.tar.gz: e1a149c71cb64d2369e61490409518e291cdbabae217271b5c7f706144303b81f6457d3b76ca9e133455cd4d77cb68d82ac853581722b811bc9051cd417a59c5
|
@@ -0,0 +1,102 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module GitHubMetadata
|
3
|
+
class EditLinkTag < Liquid::Tag
|
4
|
+
attr_reader :context
|
5
|
+
|
6
|
+
# Defines an instance method that delegates to a hash's key
|
7
|
+
#
|
8
|
+
# hash_method - a symbol representing the instance method to delegate to. The
|
9
|
+
# instance method should return a hash or respond to #[]
|
10
|
+
# key - the key to call within the hash
|
11
|
+
# method - (optional) the instance method the key should be aliased to.
|
12
|
+
# If not specified, defaults to the hash key
|
13
|
+
# default - (optional) value to return if value is nil (defaults to nil)
|
14
|
+
#
|
15
|
+
# Returns a symbol representing the instance method
|
16
|
+
def self.def_hash_delegator(hash_method, key, method, default = nil)
|
17
|
+
define_method(method) do
|
18
|
+
hash = send(hash_method)
|
19
|
+
if hash.respond_to? :[]
|
20
|
+
hash[key.to_s] || default
|
21
|
+
else
|
22
|
+
default
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
MISSING_DATA_MSG = "Cannot generate edit URLs due to missing site.github data".freeze
|
28
|
+
LINK_TEXT_REGEX = %r!(?:\"(.*)\"|'(.*)')!
|
29
|
+
|
30
|
+
extend Forwardable
|
31
|
+
private def_hash_delegator :site, :github, :site_github, {}
|
32
|
+
private def_hash_delegator :site_github, :repository_url, :repository_url
|
33
|
+
private def_hash_delegator :site_github, :source, :source, {}
|
34
|
+
private def_hash_delegator :source, :branch, :branch
|
35
|
+
private def_hash_delegator :source, :path, :source_path
|
36
|
+
private def_hash_delegator :page, :path, :page_path
|
37
|
+
|
38
|
+
def render(context)
|
39
|
+
@context = context
|
40
|
+
if link_text
|
41
|
+
link
|
42
|
+
else
|
43
|
+
uri.to_s
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def link_text
|
50
|
+
@link_text ||= begin
|
51
|
+
matches = @markup.match LINK_TEXT_REGEX
|
52
|
+
matches[1] || matches[2] if matches
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def link
|
57
|
+
"<a href=\"#{uri}\">#{link_text}</a>"
|
58
|
+
end
|
59
|
+
|
60
|
+
def uri
|
61
|
+
if parts.any?(&:nil?)
|
62
|
+
Jekyll.logger.warn "JekyllEditLink: ", MISSING_DATA_MSG
|
63
|
+
""
|
64
|
+
else
|
65
|
+
Addressable::URI.join(*parts_normalized).normalize
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def parts
|
70
|
+
@parts ||= [repository_url, "edit/", branch, source_path, page_path]
|
71
|
+
end
|
72
|
+
|
73
|
+
def parts_normalized
|
74
|
+
@parts_normalized ||= parts.map.with_index do |part, index|
|
75
|
+
part = remove_leading_slash(part.to_s)
|
76
|
+
part = ensure_trailing_slash(part) unless index == parts.length - 1
|
77
|
+
ensure_not_just_a_slash(part)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def page
|
82
|
+
@page ||= context.registers[:page]
|
83
|
+
end
|
84
|
+
|
85
|
+
def site
|
86
|
+
@site ||= context.registers[:site].site_payload["site"]
|
87
|
+
end
|
88
|
+
|
89
|
+
def remove_leading_slash(part)
|
90
|
+
part.start_with?("/") ? part[1..-1] : part
|
91
|
+
end
|
92
|
+
|
93
|
+
def ensure_trailing_slash(part)
|
94
|
+
part.end_with?("/") ? part : "#{part}/"
|
95
|
+
end
|
96
|
+
|
97
|
+
def ensure_not_just_a_slash(part)
|
98
|
+
part == "/" ? "" : part
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require "octokit"
|
2
|
+
require "liquid"
|
2
3
|
require "logger"
|
3
4
|
|
4
5
|
if defined?(Jekyll) && Jekyll.respond_to?(:env) && Jekyll.env == "development"
|
@@ -19,6 +20,7 @@ module Jekyll
|
|
19
20
|
|
20
21
|
module GitHubMetadata
|
21
22
|
autoload :Client, "jekyll-github-metadata/client"
|
23
|
+
autoload :EditLinkTag, "jekyll-github-metadata/edit-link-tag"
|
22
24
|
autoload :MetadataDrop, "jekyll-github-metadata/metadata_drop"
|
23
25
|
autoload :Pages, "jekyll-github-metadata/pages"
|
24
26
|
autoload :Repository, "jekyll-github-metadata/repository"
|
@@ -83,3 +85,5 @@ module Jekyll
|
|
83
85
|
end
|
84
86
|
end
|
85
87
|
end
|
88
|
+
|
89
|
+
Liquid::Template.register_tag("github_edit_link", Jekyll::GitHubMetadata::EditLinkTag)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-github-metadata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Parker Moore
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: octokit
|
@@ -123,6 +123,7 @@ extra_rdoc_files: []
|
|
123
123
|
files:
|
124
124
|
- lib/jekyll-github-metadata.rb
|
125
125
|
- lib/jekyll-github-metadata/client.rb
|
126
|
+
- lib/jekyll-github-metadata/edit-link-tag.rb
|
126
127
|
- lib/jekyll-github-metadata/metadata_drop.rb
|
127
128
|
- lib/jekyll-github-metadata/pages.rb
|
128
129
|
- lib/jekyll-github-metadata/repository.rb
|