jekyll-commit-mentions 0.1.1 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a3a0dc4eb6f161ded768904fcc66efa9de0c1fbe
4
- data.tar.gz: 16cc8173db3ab806c79ed080ce293d17718189bb
3
+ metadata.gz: 87ffeea732e0618fa4f7e37aa4ce263516300bf0
4
+ data.tar.gz: aa3e8bc25e70d06ceebbacb78a823a7c89dc1b46
5
5
  SHA512:
6
- metadata.gz: d3b924783e47e064af1409ca22932e7987ea2c018e24b3757b48d4d21e6acf731d3094836cc1c9d98c585f8ced0b7c0abebb741cc8a2df02a711f0a50837f6b3
7
- data.tar.gz: 7db3165bae90bdb3b82b7c6194836db498fb3f0a9eebe7cf85138a822abcc81bd31515de9ea28d21b0d82e5cb7c234fafb9cafa6cb7e9cf6edeeb516c32266f0
6
+ metadata.gz: 302339310c9fd3c999af178b3d049ba874ea77b13ba273a38a468eee9654f5e497a8b2fc435768868dcc3927bfbe30394bb9461d84af7c8138807fc0f16fb778
7
+ data.tar.gz: 62473ed2b2f6fe1f4f8fc7bd49ea8f699c5ebfd242c3e1890a58a68bebd97c708bf2f0e827f27f18240a604f51d0404fc56f683557fdf360c57f6a221ed9367a
@@ -2,16 +2,16 @@ require 'set'
2
2
 
3
3
  module HTML
4
4
  class Pipeline
5
- # HTML filter that replaces #mention mentions with links to Github issue. Mentions within <pre>,
5
+ # HTML filter that replaces mention mentions with links to Github commit. Mentions within <pre>,
6
6
  # <code>, <style> and <a> elements are ignored.
7
7
  #
8
8
  # Context options:
9
- # :base_url - Used to construct links to issue page for each mention.
9
+ # :base_url - Used to construct links to commit page for each mention.
10
10
  # :commitid_pattern - Used to provide a custom regular expression to
11
- # identify issue ids
11
+ # identify commit ids
12
12
  #
13
13
  class CommitMentionFilter < Filter
14
- # Public: Find issue #mention in text. See
14
+ # Public: Find commit mention in text. See
15
15
  # CommitMentionFilter#mention_link_filter.
16
16
  #
17
17
  # CommitMentionFilter.mentioned_commits_in(text) do |match, commitid|
@@ -49,17 +49,17 @@ module HTML
49
49
 
50
50
  # Default pattern used to extract commitid from text. The value can be
51
51
  # overriden by providing the commitid_pattern variable in the context.
52
- CommitidPattern = /[0-9a-f]{7,40}/
52
+ CommitidPattern = /[0-9a-f]{40}/
53
53
 
54
54
  # Don't look for mentions in text nodes that are children of these elements
55
- IGNORE_PARENTS = %w(pre code a style).to_set
55
+ IGNORE_PARENTS = %w(pre code a style script).to_set
56
56
 
57
57
  def call
58
58
  result[:mentioned_commitids] ||= []
59
59
 
60
60
  doc.search('text()').each do |node|
61
61
  content = node.to_html
62
- next if !content.match(CommitidPattern)
62
+ next if !content.match(commitid_pattern)
63
63
  next if has_ancestor?(node, IGNORE_PARENTS)
64
64
  html = mention_link_filter(content, base_url, commitid_pattern)
65
65
  next if html == content
@@ -72,33 +72,32 @@ module HTML
72
72
  context[:commitid_pattern] || CommitidPattern
73
73
  end
74
74
 
75
- # Replace issue #mentions in text with links to the mentioned
76
- # issue's page.
75
+ # Replace commit mentions in text with links to the mentioned
76
+ # commit's page.
77
77
  #
78
- # text - String text to replace #mention commitids in.
79
- # base_url - The base URL used to construct issue page URLs.
78
+ # text - String text to replace mention commitids in.
79
+ # base_url - The base URL used to construct commit page URLs.
80
80
  # commitid_pattern - Regular expression used to identify commitid in
81
81
  # text
82
82
  #
83
83
  # Returns a string with #commitid replaced with links. All links have a
84
- # 'issue-mention' class name attached for styling.
84
+ # 'commit-mention' class name attached for styling.
85
85
  def mention_link_filter(text, base_url='/', commitid_pattern)
86
86
  self.class.mentioned_commits_in(text, commitid_pattern) do |match, commitid|
87
- link = link_to_mentioned_issue(commitid)
87
+ link = link_to_mentioned_commit(commitid)
88
88
  link ? match.sub("#{commitid}", link) : match
89
89
  end
90
90
  end
91
91
 
92
- def link_to_mentioned_issue(commitid)
92
+ def link_to_mentioned_commit(commitid)
93
93
  result[:mentioned_commitids] |= [commitid]
94
94
 
95
95
  url = base_url.dup
96
96
  url << "/" unless url =~ /[\/~]\z/
97
+ url << commitid
97
98
  shortid = commitid[-7..-1] || commitid
98
99
 
99
- "<a href='#{url << commitid}' class='commit-mention'>" +
100
- "#{shortid}" +
101
- "</a>"
100
+ "<a href='#{url}' class='commit-mention'>#{shortid}</a>"
102
101
  end
103
102
  end
104
103
  end
@@ -3,11 +3,12 @@ require 'html/pipeline'
3
3
  require 'commit_mention_filter'
4
4
 
5
5
  module Jekyll
6
- class IssueMentions < Jekyll::Generator
6
+ class CommitMentions < Jekyll::Generator
7
7
  safe true
8
+ attr_reader :base_url
8
9
 
9
10
  def initialize(config = Hash.new)
10
- @filter = HTML::Pipeline::CommitMentionFilter.new(nil, {:base_url => base_url(config['jekyll-issue-mentions']) })
11
+ validate_config!(config)
11
12
  end
12
13
 
13
14
  def generate(site)
@@ -17,30 +18,34 @@ module Jekyll
17
18
  end
18
19
 
19
20
  def mentionify(page)
20
- return if !page.content.match(@filter.commitid_pattern)
21
- page.content = @filter.mention_link_filter(page.content, @filter.base_url, @filter.commitid_pattern)
21
+ @filter = HTML::Pipeline::CommitMentionFilter.new(page.content, {:base_url => base_url})
22
+ page.content = @filter.call.to_s.
23
+ gsub("&gt;", ">").
24
+ gsub("&lt;", "<").
25
+ gsub("%7B", "{").
26
+ gsub("%20", " ").
27
+ gsub("%7D", "}")
22
28
  end
23
29
 
24
30
  def html_page?(page)
25
31
  page.html? || page.url.end_with?('/')
26
32
  end
27
33
 
28
- def base_url(configs)
34
+ private
35
+ def validate_config!(configs)
36
+ configs = configs['jekyll-commit-mentions']
37
+ base_url = nil
29
38
  case configs
30
- when nil, NilClass
31
- raise ArgumentError.new("Your jekyll-issue-mentions config has to configured.")
32
39
  when String
33
- configs.to_s
40
+ base_url = configs
34
41
  when Hash
35
42
  base_url = configs['base_url']
36
- if base_url.nil?
37
- raise ArgumentError.new("Your jekyll-issue-mentions is missing base_url configuration.")
38
- else
39
- base_url
40
- end
41
- else
42
- raise ArgumentError.new("Your jekyll-issue-mentions config has to either be a string or a hash! It's a #{configs.class} right now.")
43
43
  end
44
+ error_prefix = "jekyll-commit-mentions"
45
+ raise ArgumentError.new("#{error_prefix}.base_url is missing/empty") if (base_url.nil? || base_url.empty?)
46
+
47
+ @base_url = base_url
44
48
  end
49
+
45
50
  end
46
51
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-commit-mentions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - harish shetty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-25 00:00:00.000000000 Z
11
+ date: 2015-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -38,6 +38,40 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.9.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: nokogiri
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '1.4'
48
+ - - "<="
49
+ - !ruby/object:Gem::Version
50
+ version: 1.6.5
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '1.4'
58
+ - - "<="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.6.5
61
+ - !ruby/object:Gem::Dependency
62
+ name: github-markdown
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
41
75
  - !ruby/object:Gem::Dependency
42
76
  name: rake
43
77
  requirement: !ruby/object:Gem::Requirement