html-pipeline-issue_references 1.0.1 → 1.0.2

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
  SHA256:
3
- metadata.gz: fcc78d489bcd6432070f4932732659cdaef48f7c52d133bbd279ad4614a8fcfa
4
- data.tar.gz: 797a1906e28e2020e6fe2181a67d15352793ca6d10bd0aa4f045ab04ed061813
3
+ metadata.gz: 256c8ae3f5a32e2cef21323584e59dea27bbf687c1e52db839e68ed2903208c9
4
+ data.tar.gz: fcac21ffce366794345af4e3a4878a502caff068e3896267630934308eb4882b
5
5
  SHA512:
6
- metadata.gz: ecab36545b858303d02f301dbe019668b7fe89a09d5f3004a5bb0436e936f0ab6cbe7550810d808908df5b914c19cf4750cac79ff9ca90cd9a2b0452299fb502
7
- data.tar.gz: f8c59fdea78193761c8582ed357616d283bc7f87185cedbf0d02f7e8e29572b5541180d97f16b4a26b33181f3da228523e8b560353c374e8fe7563c43fad541e
6
+ metadata.gz: 369778576f6c031fecec86c6c363212c71bb137fe037c0503cb3bf915503caaa818db0e8faa58c84c8f0160c94aae429ca8147d5fa9c28357106c03f7b04a6be
7
+ data.tar.gz: 54b84770620d327944fed9cdfba381ccd0a04552472d6dea23bfca9156b0fdcb74e7ccfd0702bdf852c1225d7f5ba309dcd3b7237b47bff240757fe5fcbda633
@@ -15,6 +15,10 @@ jobs:
15
15
  steps:
16
16
  - checkout
17
17
 
18
+ - run:
19
+ name: install bundler
20
+ command: gem install bundler:2.1.4
21
+
18
22
  - run:
19
23
  name: check dependencies
20
24
  command: |
@@ -0,0 +1,22 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.4
3
+ Exclude:
4
+ - 'bin/**/*'
5
+ - 'vendor/**/*'
6
+ - 'config.ru'
7
+
8
+ Style/HashEachMethods:
9
+ Enabled: true
10
+
11
+ Style/HashTransformKeys:
12
+ Enabled: true
13
+
14
+ Style/HashTransformValues:
15
+ Enabled: true
16
+
17
+ Layout/LineLength:
18
+ Max: 100
19
+
20
+ Style/ClassAndModuleChildren:
21
+ Exclude:
22
+ - 'test/**/*.rb'
@@ -0,0 +1,11 @@
1
+ # Contributions Welcome!
2
+
3
+ Hi there! We're thrilled that you'd like to contribute to this project. Before you do, would you mind reading [this license agreement](LICENSE.txt)? If you open a PR, we'll assume you agree to it. If you have any hesitation or disagreement, please do open a PR still, but note your concerns as well.
4
+
5
+ Once done, follow these steps:
6
+
7
+ 1. Fork this repository
8
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
9
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
10
+ 4. Push to the branch (`git push origin my-new-feature`)
11
+ 5. Create a Pull Request
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in html-pipeline-issue_references.gemspec
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rspec configuration
4
+ minitest_opts = {
5
+ cmd: 'rake test',
6
+ autorun: false,
7
+ all_on_start: true
8
+ }
9
+
10
+ rubocop_opts = {
11
+ all_on_start: true,
12
+ cli: ['--display-cop-names']
13
+ }
14
+
15
+ group :rails, halt_on_fail: true do
16
+ guard :minitest, minitest_opts do
17
+ directories %w[test lib]
18
+ watch %r{^test/(.+)_test\.rb$}
19
+ watch(%r{^lib/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
20
+ end
21
+
22
+ guard :rubocop, rubocop_opts do
23
+ directories %w[test lib]
24
+ watch(%r{^test/.+\.rb$})
25
+ watch(%r{^lib/(.+)\.rb$})
26
+ end
27
+ end
data/README.md CHANGED
@@ -52,10 +52,15 @@ Fixes <a href='https://github.com/rails/rails/issues/123' class='issue-reference
52
52
  ```
53
53
 
54
54
  ## Development
55
+ After checking out the repo, run `bundle install` to install dependencies.
55
56
 
56
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
57
+ To install this gem onto your local machine, run `bundle exec rake install`.
57
58
 
58
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
59
+ To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
60
+
61
+ ## Testing
62
+ Before beginning testing, be sure to run `bundle install && npm install`
63
+ Ruby unit tests can be run with `bundle exec rake test`.
59
64
 
60
65
  ## Contributing
61
66
 
@@ -65,7 +70,3 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
65
70
  4. Push to the branch (`git push origin my-new-feature`)
66
71
  5. Create a new Pull Request
67
72
 
68
- ## Updating RubyGems
69
- 1. Ensure you have the desired branch `git checkout master && git fetch origin && git pull`
70
- 2. Create an annotated tag `git tag -a v1.0.1 -m "msg with the tag"`
71
- 3. Push tag to Github `github push --tags`
data/Rakefile CHANGED
@@ -1,10 +1,16 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ # frozen_string_literal: true
3
2
 
3
+ require 'bundler/gem_tasks'
4
+ require 'rake/testtask'
5
+ require 'rubocop/rake_task'
6
+
7
+ task default: :test
4
8
  Rake::TestTask.new do |t|
5
- t.libs << "test"
9
+ t.libs << 'test'
6
10
  t.test_files = FileList['test/**/*_test.rb']
7
11
  t.verbose = true
8
12
  end
9
13
 
10
- task default: :test
14
+ RuboCop::RakeTask.new
15
+
16
+ Rake::Task['test'].enhance ['rubocop']
@@ -1,5 +1,6 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'html/pipeline/issue_references/version'
5
6
 
@@ -8,17 +9,23 @@ Gem::Specification.new do |spec|
8
9
  spec.version = HTML::Pipeline::IssueReferences::VERSION
9
10
  spec.authors = ['Codetree', 'Derrick Reimer']
10
11
  spec.email = ['support@codetree.com', 'derrickreimer@gmail.com']
11
- spec.summary = %q{An HTML::Pipeline filter for auto-linking GitHub issue references}
12
+ spec.summary = 'An HTML::Pipeline filter for auto-linking GitHub issue references'
12
13
  spec.description = spec.summary
13
14
  spec.homepage = 'https://github.com/codetree/html-pipeline-issue_references'
14
15
  spec.license = 'MIT'
15
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+
17
19
  spec.require_paths = ['lib']
20
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
21
 
19
- spec.add_dependency 'html-pipeline', '~> 2.0'
22
+ spec.add_dependency 'html-pipeline', '~> 2.12'
20
23
 
21
- spec.add_development_dependency 'bundler', '~> 1.8'
22
- spec.add_development_dependency 'rake', '~> 10.0'
23
- spec.add_development_dependency 'minitest', '~> 5.0'
24
+ spec.add_development_dependency 'bundler', '~> 2.1', '>= 2.1.4'
25
+ spec.add_development_dependency 'guard', '~> 2.16'
26
+ spec.add_development_dependency 'guard-minitest', '~> 2.4'
27
+ spec.add_development_dependency 'guard-rubocop', '~> 1.3'
28
+ spec.add_development_dependency 'minitest', '~> 5.14'
29
+ spec.add_development_dependency 'rake', '~> 13.0'
30
+ spec.add_development_dependency 'rubocop', '~> 0.80.1'
24
31
  end
@@ -1,10 +1,13 @@
1
- require "html/pipeline"
2
- require "set"
1
+ # frozen_string_literal: true
2
+
3
+ require 'html/pipeline'
4
+ require 'set'
3
5
 
4
6
  module HTML
5
7
  class Pipeline
8
+ # identify github issue references using a customizable filter pattern
6
9
  class IssueReferenceFilter < Filter
7
- REPOSITORY_NAME = /[a-z0-9][a-z0-9\-]*\/[a-z0-9][a-z0-9\-_]*/ix
10
+ REPOSITORY_NAME = %r{[a-z0-9][a-z0-9\-]*/[a-z0-9][a-z0-9\-_]*}ix.freeze
8
11
 
9
12
  # Match references of the form:
10
13
  #
@@ -25,17 +28,17 @@ module HTML
25
28
  [^0-9a-zA-Z_.]| # non-word character except dot
26
29
  $ # end of line
27
30
  )
28
- /ix
31
+ /ix.freeze
29
32
 
30
33
  # Match references of the form:
31
34
  #
32
35
  # - https://github.com/codetree/feedback/issues/123
33
36
  # - https://github.com/codetree/feedback/pulls/123
34
- URL_PATTERN = /
37
+ URL_PATTERN = %r{
35
38
  (?:^|\W) # beginning of string or non-word char
36
- https:\/\/github.com\/
39
+ https://github.com/
37
40
  (#{REPOSITORY_NAME}) # repository name
38
- \/(?:issues|pulls)\/
41
+ /(?:issues|pulls)/
39
42
  (\d+) # issue number
40
43
  (?=
41
44
  \.+[ \t\W]| # dots followed by space or non-word character
@@ -43,15 +46,15 @@ module HTML
43
46
  [^0-9a-zA-Z_.]| # non-word character except dot
44
47
  $ # end of line
45
48
  )
46
- /ix
49
+ }ix.freeze
47
50
 
48
51
  # Don't look for mentions in text nodes that are children of these elements
49
- IGNORE_PARENTS = %w(pre code a style).to_set
52
+ IGNORE_PARENTS = %w[pre code a style].to_set
50
53
 
51
54
  def self.issue_references_in(text)
52
55
  text.gsub SHORT_PATTERN do |match|
53
- repository = $2
54
- number = $3
56
+ repository = Regexp.last_match(2)
57
+ number = Regexp.last_match(3)
55
58
  yield match, repository, number
56
59
  end
57
60
  end
@@ -64,15 +67,17 @@ module HTML
64
67
  doc.search('.//text()').each do |node|
65
68
  content = node.to_html
66
69
  next if has_ancestor?(node, IGNORE_PARENTS)
70
+
67
71
  html = issue_reference_filter(content, base_url, default_repo)
68
72
  next if html == content
73
+
69
74
  node.replace(html)
70
75
  end
71
76
 
72
77
  doc
73
78
  end
74
79
 
75
- def issue_reference_filter(text, base_url = '/', default_repo = nil)
80
+ def issue_reference_filter(text, _base_url = '/', default_repo = nil)
76
81
  self.class.issue_references_in(text) do |match, referenced_repo, number|
77
82
  repo = referenced_repo || default_repo
78
83
  repo ? link_to_issue(repo, number, default_repo) : match
@@ -84,7 +89,7 @@ module HTML
84
89
  content = "#{repo}#{content}" if repo != default_repo
85
90
 
86
91
  url = base_url.dup
87
- url << "/" unless url =~ /[\/~]\z/
92
+ url << '/' unless url =~ %r{[/~]\z}
88
93
  url << "#{repo}/issues/#{number}"
89
94
 
90
95
  "<a href='#{url}' class='issue-reference'>#{content}</a>"
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module HTML
2
4
  class Pipeline
3
5
  class IssueReferences
4
- VERSION = "1.0.1".freeze
6
+ VERSION = '1.0.2'
5
7
  end
6
8
  end
7
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html-pipeline-issue_references
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Codetree
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-01-15 00:00:00.000000000 Z
12
+ date: 2020-04-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: html-pipeline
@@ -17,56 +17,118 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '2.0'
20
+ version: '2.12'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '2.0'
27
+ version: '2.12'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: bundler
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '1.8'
34
+ version: '2.1'
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: 2.1.4
35
38
  type: :development
36
39
  prerelease: false
37
40
  version_requirements: !ruby/object:Gem::Requirement
38
41
  requirements:
39
42
  - - "~>"
40
43
  - !ruby/object:Gem::Version
41
- version: '1.8'
44
+ version: '2.1'
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 2.1.4
42
48
  - !ruby/object:Gem::Dependency
43
- name: rake
49
+ name: guard
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.16'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.16'
62
+ - !ruby/object:Gem::Dependency
63
+ name: guard-minitest
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.4'
69
+ type: :development
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.4'
76
+ - !ruby/object:Gem::Dependency
77
+ name: guard-rubocop
44
78
  requirement: !ruby/object:Gem::Requirement
45
79
  requirements:
46
80
  - - "~>"
47
81
  - !ruby/object:Gem::Version
48
- version: '10.0'
82
+ version: '1.3'
49
83
  type: :development
50
84
  prerelease: false
51
85
  version_requirements: !ruby/object:Gem::Requirement
52
86
  requirements:
53
87
  - - "~>"
54
88
  - !ruby/object:Gem::Version
55
- version: '10.0'
89
+ version: '1.3'
56
90
  - !ruby/object:Gem::Dependency
57
91
  name: minitest
58
92
  requirement: !ruby/object:Gem::Requirement
59
93
  requirements:
60
94
  - - "~>"
61
95
  - !ruby/object:Gem::Version
62
- version: '5.0'
96
+ version: '5.14'
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '5.14'
104
+ - !ruby/object:Gem::Dependency
105
+ name: rake
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '13.0'
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '13.0'
118
+ - !ruby/object:Gem::Dependency
119
+ name: rubocop
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.80.1
63
125
  type: :development
64
126
  prerelease: false
65
127
  version_requirements: !ruby/object:Gem::Requirement
66
128
  requirements:
67
129
  - - "~>"
68
130
  - !ruby/object:Gem::Version
69
- version: '5.0'
131
+ version: 0.80.1
70
132
  description: An HTML::Pipeline filter for auto-linking GitHub issue references
71
133
  email:
72
134
  - support@codetree.com
@@ -78,13 +140,14 @@ files:
78
140
  - ".circleci/config.yml"
79
141
  - ".circleci/setup-rubygems.sh"
80
142
  - ".gitignore"
143
+ - ".rubocop.yml"
81
144
  - ".travis.yml"
145
+ - CONTRIBUTING.md
82
146
  - Gemfile
147
+ - Guardfile
83
148
  - LICENSE.txt
84
149
  - README.md
85
150
  - Rakefile
86
- - bin/console
87
- - bin/setup
88
151
  - html-pipeline-issue_references.gemspec
89
152
  - lib/html/pipeline/issue_reference_filter.rb
90
153
  - lib/html/pipeline/issue_references/version.rb
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "html/pipeline/issue_references"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start
data/bin/setup DELETED
@@ -1,7 +0,0 @@
1
- #!/bin/bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
-
5
- bundle install
6
-
7
- # Do any other automated setup that you need to do here