html-pipeline-issue_references 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
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