danger-prose 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: baec8d353bfa0f99782d3fa6774635e2415726a1
4
+ data.tar.gz: bc3d97b3f5800b04dab5103c20c3e1423ae91b65
5
+ SHA512:
6
+ metadata.gz: fee815fd988fbfd0a085c06a9d65fcda49d7275829175662f09104279fe2a0f0814e259ac780ed717bb00717e3839665353446cf06757be99736ef3526ca4377
7
+ data.tar.gz: 5bed58cfa62e809440227c39e7fa19946c8d1fe4a7dfdfa1167e7a454dd388c5f6059085cb2bce06096ecc0ad00c98e759974ffe5e547e4bbf4eac8047cc69db
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ .DS_Store
2
+ pkg
3
+ .bundle/
4
+ .idea/
5
+ .tm_properties
6
+ vendor
data/.travis.yml ADDED
@@ -0,0 +1,13 @@
1
+ language: ruby
2
+ cache:
3
+ directories:
4
+ - bundle
5
+
6
+ rvm:
7
+ - 2.0
8
+ - 2.1.3
9
+ - 2.3.1
10
+
11
+ script:
12
+ - bundle exec rake spec
13
+ # - bundle exec danger plugin lint
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in danger-proselint.gemspec
4
+ gemspec
5
+
6
+ group :development do
7
+ gem 'mocha'
8
+ gem 'bacon'
9
+ gem 'mocha-on-bacon'
10
+ gem 'prettybacon'
11
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,113 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ danger-prose (0.0.1)
5
+ danger
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ addressable (2.4.0)
11
+ bacon (1.2.0)
12
+ claide (1.0.0)
13
+ coderay (1.1.1)
14
+ colored (1.2)
15
+ cork (0.1.0)
16
+ colored (~> 1.2)
17
+ danger (0.8.3)
18
+ claide (~> 1.0)
19
+ colored (~> 1.2)
20
+ cork (~> 0.1)
21
+ faraday (~> 0)
22
+ git (~> 1)
23
+ octokit (~> 4.2)
24
+ redcarpet (~> 3.3)
25
+ terminal-table (~> 1)
26
+ diff-lcs (1.2.5)
27
+ faraday (0.9.2)
28
+ multipart-post (>= 1.2, < 3)
29
+ ffi (1.9.10)
30
+ formatador (0.2.5)
31
+ git (1.3.0)
32
+ guard (2.14.0)
33
+ formatador (>= 0.2.4)
34
+ listen (>= 2.7, < 4.0)
35
+ lumberjack (~> 1.0)
36
+ nenv (~> 0.1)
37
+ notiffany (~> 0.0)
38
+ pry (>= 0.9.12)
39
+ shellany (~> 0.0)
40
+ thor (>= 0.18.1)
41
+ guard-compat (1.2.1)
42
+ guard-rspec (4.7.2)
43
+ guard (~> 2.1)
44
+ guard-compat (~> 1.1)
45
+ rspec (>= 2.99.0, < 4.0)
46
+ listen (3.0.7)
47
+ rb-fsevent (>= 0.9.3)
48
+ rb-inotify (>= 0.9.7)
49
+ lumberjack (1.0.10)
50
+ metaclass (0.0.4)
51
+ method_source (0.8.2)
52
+ mocha (1.1.0)
53
+ metaclass (~> 0.0.1)
54
+ mocha-on-bacon (0.2.2)
55
+ mocha (>= 0.13.0)
56
+ multipart-post (2.0.0)
57
+ nenv (0.3.0)
58
+ notiffany (0.1.0)
59
+ nenv (~> 0.1)
60
+ shellany (~> 0.0)
61
+ octokit (4.3.0)
62
+ sawyer (~> 0.7.0, >= 0.5.3)
63
+ prettybacon (0.0.2)
64
+ bacon (~> 1.2)
65
+ pry (0.10.3)
66
+ coderay (~> 1.1.0)
67
+ method_source (~> 0.8.1)
68
+ slop (~> 3.4)
69
+ rake (10.5.0)
70
+ rb-fsevent (0.9.7)
71
+ rb-inotify (0.9.7)
72
+ ffi (>= 0.5.0)
73
+ redcarpet (3.3.4)
74
+ rspec (3.4.0)
75
+ rspec-core (~> 3.4.0)
76
+ rspec-expectations (~> 3.4.0)
77
+ rspec-mocks (~> 3.4.0)
78
+ rspec-core (3.4.4)
79
+ rspec-support (~> 3.4.0)
80
+ rspec-expectations (3.4.0)
81
+ diff-lcs (>= 1.2.0, < 2.0)
82
+ rspec-support (~> 3.4.0)
83
+ rspec-mocks (3.4.1)
84
+ diff-lcs (>= 1.2.0, < 2.0)
85
+ rspec-support (~> 3.4.0)
86
+ rspec-support (3.4.1)
87
+ sawyer (0.7.0)
88
+ addressable (>= 2.3.5, < 2.5)
89
+ faraday (~> 0.8, < 0.10)
90
+ shellany (0.0.1)
91
+ slop (3.6.0)
92
+ terminal-table (1.6.0)
93
+ thor (0.19.1)
94
+
95
+ PLATFORMS
96
+ ruby
97
+
98
+ DEPENDENCIES
99
+ bacon
100
+ bundler (~> 1.3)
101
+ danger-prose!
102
+ guard (~> 2.14)
103
+ guard-rspec (~> 4.7)
104
+ listen (= 3.0.7)
105
+ mocha
106
+ mocha-on-bacon
107
+ prettybacon
108
+ pry
109
+ rake (~> 10.0)
110
+ rspec (~> 3.4)
111
+
112
+ BUNDLED WITH
113
+ 1.12.5
data/Guardfile ADDED
@@ -0,0 +1,21 @@
1
+ # A guardfile for making Danger Plugins
2
+ # For more info see https://github.com/guard/guard#readme
3
+
4
+ # To run, use `bundle exec guard`.
5
+
6
+ guard :rspec, cmd: "bundle exec rspec" do
7
+ require "guard/rspec/dsl"
8
+ dsl = Guard::RSpec::Dsl.new(self)
9
+
10
+ # Feel free to open issues for suggestions and improvements
11
+
12
+ # RSpec files
13
+ rspec = dsl.rspec
14
+ watch(rspec.spec_helper) { rspec.spec_dir }
15
+ watch(rspec.spec_support) { rspec.spec_dir }
16
+ watch(rspec.spec_files)
17
+
18
+ # Ruby files
19
+ ruby = dsl.ruby
20
+ dsl.watch_spec_files_for(ruby.lib_files)
21
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2016 David Grandinetti <dbgrandi@gmail.com>
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,21 @@
1
+ # danger-proselint
2
+
3
+ A description of danger-proselint.
4
+
5
+ ## Installation
6
+
7
+ $ gem install danger-proselint
8
+
9
+ ## Usage
10
+
11
+ Add it to your Dangerfile
12
+
13
+ ``` ruby
14
+ # Look through all changed Markdown files
15
+ markdown_files = (modified_files + added_files).select do |line|
16
+ line.start_with?("_posts") && (line.end_with?(".markdown") || line.end_with?(".md"))
17
+ end
18
+
19
+ # will check any .markdown files in this PR with proselint
20
+ proselint.lint_files markdown_files
21
+ ```
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ require 'bundler/gem_tasks'
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
7
+
8
+ task :spec do
9
+ Rake::Task['specs'].invoke
10
+ end
11
+
12
+ task :default => :spec
13
+
@@ -0,0 +1,42 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'danger-prose'
8
+ spec.version = DangerProse::VERSION
9
+ spec.authors = ['David Grandinetti', 'Orta Therox']
10
+ spec.email = ['dbgrandi@gmail.com', 'orta.therox@gmail.com']
11
+ spec.description = %q{A danger plugin for working with bodies of markdown prose.}
12
+ spec.summary = %q{A danger plugin for working with bodies of markdown prose.}
13
+ spec.homepage = 'https://github.com/dbgrandi/danger-prose'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ['lib']
19
+
20
+ spec.add_dependency 'danger'
21
+
22
+ # General ruby development
23
+ spec.add_development_dependency 'bundler', '~> 1.3'
24
+ spec.add_development_dependency 'rake', '~> 10.0'
25
+
26
+ # Testing support
27
+ spec.add_development_dependency "rspec", '~> 3.4'
28
+
29
+ # Makes testing easy via `bundle exec guard`
30
+ spec.add_development_dependency "guard", '~> 2.14'
31
+ spec.add_development_dependency "guard-rspec", '~> 4.7'
32
+
33
+ # If you want to work on older builds of ruby
34
+ spec.add_development_dependency "listen", '3.0.7'
35
+
36
+ # This gives you the chance to run a REPL inside your test
37
+ # via
38
+ # binding.pry
39
+ # This will stop test execution and let you inspect the results
40
+ spec.add_development_dependency "pry"
41
+
42
+ end
@@ -0,0 +1,85 @@
1
+ module Danger
2
+
3
+ # Lint markdown files inside your projects.
4
+ # This is done using the [proselint](http://proselint.com) python egg.
5
+ # Results are passed out as a table in markdown.
6
+ #
7
+ # @example Specifying custom CocoaPods installation options
8
+ #
9
+ # # Runs a linter with comma style disabled
10
+ # proselint.disable_linters = [“misc.scare_quotes”, "misc.tense_present"]
11
+ # proselint.lint_files “_posts/*.md”
12
+ #
13
+ # # Runs a linter with all styles, on modified and added markpown files in this PR
14
+ # proselint.lint_files
15
+ #
16
+ # @see artsy/artsy.github.io
17
+ # @tags blogging, blog, writing, jekyll, middleman, hugo, metalsmith, gatsby, express
18
+ #
19
+ class DangerProse < Plugin
20
+
21
+ # Allows you to disable a collection of linters from being ran.
22
+ # You can get a list of [them here](https://github.com/amperser/proselint#checks)
23
+ attr_accessor :disable_linters
24
+
25
+ # Lints the globbed files, will only fail if `proselint` cannot be installed correctly.
26
+ # Generates a `markdown` list of warnings for the prose in a corpus of .markdown and .md files.
27
+ #
28
+ # @param [String] files
29
+ # A globbed string which should return the files that you want to lint, defaults to nil.
30
+ # if nil, modified and added files from the diff will be used.
31
+ # @return [void]
32
+ #
33
+ def lint_files(files=nil)
34
+ # Installs a prose checker if needed
35
+ system "pip install --user proselint" unless proselint_installed?
36
+
37
+ # Check that this is in the user's PATH after installing
38
+ unless proselint_installed?
39
+ fail "proselint is not in the user's PATH, or it failed to install"
40
+ return
41
+ end
42
+
43
+ # Either use files provided, or use the modified + added
44
+ markdown_files = files ? Dir.glob(files) : (modified_files + added_files)
45
+ markdown_files.select! do |line| (line.end_with?(".markdown") || line.end_with?(".md")) end
46
+
47
+ # TODO create the disabled linters JSON in ~/.proselintrc
48
+ # using @disable_linter
49
+
50
+ # Convert paths to proselint results
51
+ require 'json'
52
+ result_jsons = Hash[markdown_files.uniq.collect { |v| [v, JSON.parse(`proselint #{v} --json`.strip) ] }]
53
+ proses = result_jsons.select { |path, prose| prose['data']['errors'].count }
54
+
55
+ # Get some metadata about the local setup
56
+ current_branch = env.request_source.pr_json["head"]["ref"]
57
+ current_slug = env.ci_source.repo_slug
58
+
59
+ # We got some error reports back from proselint
60
+ if proses.count > 0
61
+ message = "### Proselint found issues\n\n"
62
+ proses.each do |path, prose|
63
+ github_loc = "/#{current_slug}/tree/#{current_branch}/#{path}"
64
+ message << "#### [#{path}](#{github_loc})\n\n"
65
+
66
+ message << "Line | Message | Severity |\n"
67
+ message << "| --- | ----- | ----- |\n"
68
+
69
+ prose["data"]["errors"].each do |error|
70
+ message << "#{error['line']} | #{error['message']} | #{error['severity']}\n"
71
+ end
72
+ end
73
+
74
+ markdown message
75
+ end
76
+ end
77
+
78
+ # Determine if proselint is currently installed in the system paths.
79
+ # @return [Bool]
80
+ #
81
+ def proselint_installed?
82
+ `which proselint`.strip.empty? == false
83
+ end
84
+ end
85
+ end
data/lib/version.rb ADDED
@@ -0,0 +1,3 @@
1
+ module DangerProse
2
+ VERSION = "1.0.0".freeze
3
+ end
@@ -0,0 +1,58 @@
1
+ require File.expand_path('../spec_helper', __FILE__)
2
+
3
+ module Danger
4
+ describe Prose do
5
+ it 'is a plugin' do
6
+ expect(Danger::DangerProse < Danger::Plugin).to be_truthy
7
+ end
8
+
9
+ describe 'with Dangerfile' do
10
+ before do
11
+ @dangerfile = testing_dangerfile
12
+ @prose = testing_dangerfile.prose
13
+ end
14
+
15
+ it "handles proselint not being installed" do
16
+ allow(@prose).to receive(:`).with("which proselint").and_return("")
17
+ expect(@prose.proselint_installed?).to be_falsy
18
+ end
19
+
20
+ it "handles proselint being installed" do
21
+ allow(@prose).to receive(:`).with("which proselint").and_return("/bin/thing/proselint")
22
+ expect(@prose.proselint_installed?).to be_truthy
23
+ end
24
+
25
+ describe :lint_files do
26
+ it "handles a known JSON report from proselint" do
27
+ # So it doesn't try to install on your computer
28
+ allow(@prose).to receive(:`).with("which proselint").and_return("/bin/thing/proselint")
29
+
30
+ # Proselint returns JSON data, which is nice 👍
31
+ errors = '[{"start": 1441, "replacements": null, "end": 1445, "severity": "warning", "extent": 4, "column": 1, "message": "!!! is hyperbolic.", "line": 46, "check": "hyperbolic.misc"}]'
32
+ proselint_response = '{"status" : "success", "data" : { "errors" : ' + errors + '}}'
33
+
34
+ # This is where we generate our JSON
35
+ allow(@prose).to receive(:`).with("proselint spec/fixtures/blog_post.md --json").and_return(proselint_response)
36
+
37
+ # it's worth noting - you can call anything on your plugin that a Dangerfile responds to
38
+ # The request source's PR JSON typically looks like
39
+ # https://raw.githubusercontent.com/danger/danger/bffc246a11dac883d76fc6636319bd6c2acd58a3/spec/fixtures/pr_response.json
40
+ @prose.env.request_source.pr_json = { "head" => { "ref" => "my_fake_branch" }}
41
+
42
+ # Do it
43
+ @prose.lint_files("spec/fixtures/*.md")
44
+
45
+ output = @prose.status_report[:markdowns].first
46
+
47
+ # A title
48
+ expect(output).to include("Proselint found issues")
49
+ # A warning
50
+ expect(output).to include("!!! is hyperbolic. | warning")
51
+ # A link to the file inside the fixtures dir
52
+ expect(output).to include("[spec/fixtures/blog_post.md](/artsy/eigen/tree/my_fake_branch/spec/fixtures/blog_post.md)")
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+
@@ -0,0 +1 @@
1
+ This post intentional left blank-ish.
@@ -0,0 +1,41 @@
1
+ ROOT = Pathname.new(File.expand_path('../../', __FILE__))
2
+ $:.unshift((ROOT + 'lib').to_s)
3
+ $:.unshift((ROOT + 'spec').to_s)
4
+
5
+ RSpec.configure do |config|
6
+ # Use color in STDOUT
7
+ config.color = true
8
+ end
9
+
10
+ require 'bundler/setup'
11
+ require 'pry'
12
+
13
+ require 'danger'
14
+ require 'cork'
15
+ require 'danger_plugin'
16
+
17
+ # These functions are a subset of https://github.com/danger/danger/blob/master/spec/spec_helper.rb
18
+ # If you are expanding these files, see if it's already been done ^.
19
+
20
+ # A silent version of the user interface
21
+ def testing_ui
22
+ Cork::Board.new(silent: true)
23
+ end
24
+
25
+ # Example environment (ENV) that would come from
26
+ # running a PR on TravisCI
27
+ def testing_env
28
+ {
29
+ "HAS_JOSH_K_SEAL_OF_APPROVAL" => "true",
30
+ "TRAVIS_PULL_REQUEST" => "800",
31
+ "TRAVIS_REPO_SLUG" => "artsy/eigen",
32
+ "TRAVIS_COMMIT_RANGE" => "759adcbd0d8f...13c4dc8bb61d",
33
+ "DANGER_GITHUB_API_TOKEN" => "123sbdq54erfsd3422gdfio"
34
+ }
35
+ end
36
+
37
+ # A stubbed out Dangerfile for use in tests
38
+ def testing_dangerfile
39
+ env = Danger::EnvironmentManager.new(testing_env)
40
+ Danger::Dangerfile.new(env, testing_ui)
41
+ end
metadata ADDED
@@ -0,0 +1,176 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: danger-prose
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - David Grandinetti
8
+ - Orta Therox
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2016-06-26 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: danger
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: bundler
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '1.3'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '1.3'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '10.0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '10.0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rspec
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '3.4'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '3.4'
70
+ - !ruby/object:Gem::Dependency
71
+ name: guard
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '2.14'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '2.14'
84
+ - !ruby/object:Gem::Dependency
85
+ name: guard-rspec
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '4.7'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '4.7'
98
+ - !ruby/object:Gem::Dependency
99
+ name: listen
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '='
103
+ - !ruby/object:Gem::Version
104
+ version: 3.0.7
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '='
110
+ - !ruby/object:Gem::Version
111
+ version: 3.0.7
112
+ - !ruby/object:Gem::Dependency
113
+ name: pry
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ description: A danger plugin for working with bodies of markdown prose.
127
+ email:
128
+ - dbgrandi@gmail.com
129
+ - orta.therox@gmail.com
130
+ executables: []
131
+ extensions: []
132
+ extra_rdoc_files: []
133
+ files:
134
+ - ".gitignore"
135
+ - ".travis.yml"
136
+ - Gemfile
137
+ - Gemfile.lock
138
+ - Guardfile
139
+ - LICENSE.txt
140
+ - README.md
141
+ - Rakefile
142
+ - danger-prose.gemspec
143
+ - lib/danger_plugin.rb
144
+ - lib/version.rb
145
+ - spec/danger_plugin_spec.rb
146
+ - spec/fixtures/blog_post.md
147
+ - spec/spec_helper.rb
148
+ homepage: https://github.com/dbgrandi/danger-prose
149
+ licenses:
150
+ - MIT
151
+ metadata: {}
152
+ post_install_message:
153
+ rdoc_options: []
154
+ require_paths:
155
+ - lib
156
+ required_ruby_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ required_rubygems_version: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ requirements: []
167
+ rubyforge_project:
168
+ rubygems_version: 2.2.2
169
+ signing_key:
170
+ specification_version: 4
171
+ summary: A danger plugin for working with bodies of markdown prose.
172
+ test_files:
173
+ - spec/danger_plugin_spec.rb
174
+ - spec/fixtures/blog_post.md
175
+ - spec/spec_helper.rb
176
+ has_rdoc: