pull_request_summarizer 0.1.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 10e54391959b007afde61bb811932d4843d9ca90
4
+ data.tar.gz: eb1b207ddd8a321a2c027fbc0545e40aac31596d
5
+ SHA512:
6
+ metadata.gz: 9dcee3ea694ff92ac36e8d2330a4edb9e8fddadc9522408545ece4c087f889485104ea0a7b10bf48c1de67b8199fd24238b18b5729eef51b96eb86b33761cc7d
7
+ data.tar.gz: a801ffc4742ab3bcca3da8591bfa6d3466140cc60f4f672913be24f9a701a59cfc92e4fde7ea583fbf23c8516fdf5a4355199b0b72ea12f493590d9059526113
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ .rubocop-https---raw-githubusercontent-com-everypolitician-everypolitician-data-master--rubocop-base-yml
data/.rubocop.yml ADDED
@@ -0,0 +1,6 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.1
3
+
4
+ inherit_from:
5
+ - https://raw.githubusercontent.com/everypolitician/everypolitician-data/master/.rubocop_base.yml
6
+ - .rubocop_todo.yml
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,22 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2016-09-12 14:27:30 +0100 using RuboCop version 0.42.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 4
10
+ Metrics/AbcSize:
11
+ Max: 38
12
+
13
+ # Offense count: 35
14
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
15
+ # URISchemes: http, https
16
+ Metrics/LineLength:
17
+ Max: 139
18
+
19
+ # Offense count: 2
20
+ # Configuration parameters: CountComments.
21
+ Metrics/MethodLength:
22
+ Max: 15
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ sudo: false
2
+ language: ruby
3
+ cache: bundler
4
+ rvm:
5
+ - 2.1.10
6
+ - 2.2.5
7
+ - 2.3.1
8
+ before_install: gem install bundler -v 1.12.5
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in pull_request_summarizer.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Chris Mytton
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,44 @@
1
+ # PullRequestSummarizer
2
+
3
+ Produces a summary of an EveryPolitician data pull request like [this one](https://github.com/everypolitician/everypolitician-data/pull/16984#issuecomment-246282991).
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'pull_request_summarizer'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install pull_request_summarizer
20
+
21
+ ## Usage
22
+
23
+ To print a summary of an [everypolitician-data](https://github.com/everypolitician/everypolitician-data) pull request as markdown, use the following:
24
+
25
+ ```ruby
26
+ require 'pull_request_summarizer'
27
+ puts PullRequestSummarizer::Summarizer.new(16984).summarize
28
+ ```
29
+
30
+ Where `16984` is the pull request number in [everypolitician-data](https://github.com/everypolitician/everypolitician-data) that you want the review for.
31
+
32
+ ## Development
33
+
34
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
35
+
36
+ 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`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
37
+
38
+ ## Contributing
39
+
40
+ Bug reports and pull requests are welcome on GitHub at https://github.com/everypolitician/pull_request_summarizer.
41
+
42
+ ## License
43
+
44
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << 'test'
6
+ t.libs << 'lib'
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task default: :test
11
+
12
+ require 'rubocop/rake_task'
13
+ RuboCop::RakeTask.new
data/bin/console ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'pull_request_summarizer'
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
+ require 'pry'
10
+ Pry.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,126 @@
1
+ <% if popolo_files.empty? %>
2
+ No Popolo files were changed in this pull request.
3
+ <% else %>
4
+ <% popolo_files.each do |file| %>
5
+ Summary of changes in `<%= file.path %>`:
6
+
7
+ ## People
8
+
9
+ ### Added
10
+
11
+ <% if file.people_added.any? %>
12
+ <% file.people_added.each do |person| %>
13
+ - `<%= person.id %>` - <%= person.name %>
14
+ <% end %>
15
+ <% else %>
16
+ No people added
17
+ <% end %>
18
+
19
+ ### Removed
20
+
21
+ <% if file.people_removed.any? %>
22
+ <% file.people_removed.each do |person| %>
23
+ - `<%= person.id %>` - <%= person.name %>
24
+ <% end %>
25
+ <% else %>
26
+ No people removed
27
+ <% end %>
28
+
29
+ ### Name Changes
30
+
31
+ <% if file.people_name_changes.any? %>
32
+ <% file.people_name_changes.each do |r| %>
33
+ - `<%= r[:id] %>`: <%= r[:was] %> → <%= r[:now] %>
34
+ <% end %>
35
+ <% else %>
36
+ No name changes
37
+ <% end %>
38
+
39
+ ### Additional Name Changes
40
+
41
+ <% if file.people_additional_name_changes.any? %>
42
+ <% file.people_additional_name_changes.each do |r| %>
43
+ - `<%= r[:id] %>` (<%= r[:name] %>): <% if r[:removed].any? %>Removed: <%= r[:removed].join(" ﹠ ") %>. <% end %><% if r[:added].any? %>Added: <%= r[:added].join(" ﹠ ") %>.<% end %>
44
+ <% end %>
45
+ <% else %>
46
+ No name changes
47
+ <% end %>
48
+
49
+ ### Wikidata Changes
50
+
51
+ <% if file.wikidata_links_changed.any? %>
52
+ <% file.wikidata_links_changed.each do |r| %>
53
+ - `<%= r[:id] %>`: <%= r[:was] %> → <%= r[:now] %>
54
+ <% end %>
55
+ <% else %>
56
+ No changes
57
+ <% end %>
58
+
59
+ ## Organizations
60
+
61
+ ### Added
62
+
63
+ <% if file.organizations_added.any? %>
64
+ <% file.organizations_added.each do |org| %>
65
+ - `<%= org.id %>` - <%= org.name %>
66
+ <% end %>
67
+ <% else %>
68
+ No organizations added
69
+ <% end %>
70
+
71
+ ### Removed
72
+
73
+ <% if file.organizations_removed.any? %>
74
+ <% file.organizations_removed.each do |org| %>
75
+ - `<%= org.id %>` - <%= org.name %>
76
+ <% end %>
77
+ <% else %>
78
+ No organizations removed
79
+ <% end %>
80
+
81
+ ## Terms
82
+
83
+ ### Added
84
+
85
+ <% if file.terms_added.any? %>
86
+ <% file.terms_added.each do |term| %>
87
+ - `<%= term.id %>` - <%= term.name %>
88
+ <% end %>
89
+ <% else %>
90
+ No terms added
91
+ <% end %>
92
+
93
+ ### Removed
94
+
95
+ <% if file.terms_removed.any? %>
96
+ <% file.terms_removed.each do |term| %>
97
+ - `<%= term.id %>` - <%= term.name %>
98
+ <% end %>
99
+ <% else %>
100
+ No terms removed
101
+ <% end %>
102
+
103
+ ## Elections
104
+
105
+ ### Added
106
+
107
+ <% if file.elections_added.any? %>
108
+ <% file.elections_added.each do |election| %>
109
+ - `<%= election.id %>` - <%= election.name %>
110
+ <% end %>
111
+ <% else %>
112
+ No elections added
113
+ <% end %>
114
+
115
+ ### Removed
116
+
117
+ <% if file.elections_removed.any? %>
118
+ <% file.elections_removed.each do |election| %>
119
+ - `<%= election.id %>` - <%= election.name %>
120
+ <% end %>
121
+ <% else %>
122
+ No elections removed
123
+ <% end %>
124
+
125
+ <% end %>
126
+ <% end %>
@@ -0,0 +1,65 @@
1
+ require 'everypolitician/popolo'
2
+
3
+ module PullRequestSummarizer
4
+ class ComparePopolo
5
+ attr_reader :before
6
+ attr_reader :after
7
+ attr_reader :path
8
+
9
+ def self.parse(options)
10
+ before = Everypolitician::Popolo.parse(options[:before])
11
+ after = Everypolitician::Popolo.parse(options[:after])
12
+ new(before: before, after: after, path: options[:path])
13
+ end
14
+
15
+ def initialize(options)
16
+ @before = options[:before]
17
+ @after = options[:after]
18
+ @path = options[:path]
19
+ end
20
+
21
+ def people_name_changes
22
+ Report::PeopleNames.new(before, after).changed
23
+ end
24
+
25
+ def people_additional_name_changes
26
+ Report::PeopleAdditionalNames.new(before, after).changed
27
+ end
28
+
29
+ def people_added
30
+ Report::People.new(before, after).added
31
+ end
32
+
33
+ def people_removed
34
+ Report::People.new(before, after).removed
35
+ end
36
+
37
+ def wikidata_links_changed
38
+ Report::Wikidata.new(before, after).changed
39
+ end
40
+
41
+ def organizations_added
42
+ Report::Organizations.new(before, after).added
43
+ end
44
+
45
+ def organizations_removed
46
+ Report::Organizations.new(before, after).removed
47
+ end
48
+
49
+ def terms_added
50
+ Report::Terms.new(before, after).added
51
+ end
52
+
53
+ def terms_removed
54
+ Report::Terms.new(before, after).removed
55
+ end
56
+
57
+ def elections_added
58
+ Report::Elections.new(before, after).added
59
+ end
60
+
61
+ def elections_removed
62
+ Report::Elections.new(before, after).removed
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,9 @@
1
+ module PullRequestSummarizer
2
+ class FindPopoloFiles
3
+ POPOLO_FILE_REGEX = /ep-popolo-v(\d+\.)?(\d+\.)?\d+\.json$/
4
+
5
+ def self.from(files)
6
+ files.select { |file| file[:filename].match(POPOLO_FILE_REGEX) }
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ module PullRequestSummarizer
2
+ class Report
3
+ class Base
4
+ attr_reader :before, :after
5
+
6
+ def initialize(popolo_before, popolo_after)
7
+ @before = popolo_before
8
+ @after = popolo_after
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,19 @@
1
+ module PullRequestSummarizer
2
+ class Report
3
+ class Elections < Base
4
+ def elections(events)
5
+ events.select do |event|
6
+ event if event.document[:classification] == 'general election'
7
+ end
8
+ end
9
+
10
+ def added
11
+ elections(after.events - before.events)
12
+ end
13
+
14
+ def removed
15
+ elections(before.events - after.events)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ module PullRequestSummarizer
2
+ class Report
3
+ class Organizations < Base
4
+ def added
5
+ after.organizations - before.organizations
6
+ end
7
+
8
+ def removed
9
+ before.organizations - after.organizations
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module PullRequestSummarizer
2
+ class Report
3
+ class People < Base
4
+ def added
5
+ after.persons - before.persons
6
+ end
7
+
8
+ def removed
9
+ before.persons - after.persons
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,25 @@
1
+ require 'pull_request_summarizer/report/people_names'
2
+
3
+ module PullRequestSummarizer
4
+ class Report
5
+ class PeopleAdditionalNames < PeopleNames
6
+ def changed
7
+ all_names = lambda do |p|
8
+ other_names = p.other_names.map { |n| n[:name] } rescue []
9
+ (other_names | [p.name]).to_set
10
+ end
11
+ names_all_pre = Hash[before.persons.map { |p| [p.id, all_names.call(p)] }]
12
+ names_all_post = Hash[after.persons.map { |p| [p.id, all_names.call(p)] }]
13
+ in_both = names_all_pre.keys & names_all_post.keys
14
+ in_both.select { |id| names_all_pre[id] != names_all_post[id] }.map do |id|
15
+ {
16
+ id: id,
17
+ name: before_names[id],
18
+ removed: (names_all_pre[id] - names_all_post[id]).to_a,
19
+ added: (names_all_post[id] - names_all_pre[id]).to_a,
20
+ }
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,24 @@
1
+ module PullRequestSummarizer
2
+ class Report
3
+ class PeopleNames < Base
4
+ def before_names
5
+ @name_hash_pre ||= Hash[before.persons.map { |p| [p.id, p.name] }]
6
+ end
7
+
8
+ def after_names
9
+ @name_hash_post ||= Hash[after.persons.map { |p| [p.id, p.name] }]
10
+ end
11
+
12
+ def changed
13
+ in_both = before_names.keys & after_names.keys
14
+ in_both.select { |id| !before_names[id].casecmp(after_names[id].downcase).zero? }.map do |id|
15
+ {
16
+ id: id,
17
+ was: before_names[id],
18
+ now: after_names[id],
19
+ }
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ module PullRequestSummarizer
2
+ class Report
3
+ class Terms < Base
4
+ def terms(events)
5
+ events.select do |event|
6
+ event if event.document[:classification] == 'legislative period'
7
+ end
8
+ end
9
+
10
+ def added
11
+ terms(after.events - before.events)
12
+ end
13
+
14
+ def removed
15
+ terms(before.events - after.events)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ module PullRequestSummarizer
2
+ class Report
3
+ class Wikidata < Base
4
+ def changed
5
+ prev = Hash[before.persons.map { |p| [p.id, p.wikidata] }]
6
+ post = Hash[after.persons.map { |p| [p.id, p.wikidata] }]
7
+ in_both = prev.keys & post.keys
8
+ in_both.select { |id| prev[id] != post[id] }.map do |id|
9
+ {
10
+ id: id,
11
+ was: prev[id] || 'none',
12
+ now: post[id] || 'none',
13
+ }
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ require 'erb'
2
+
3
+ module PullRequestSummarizer
4
+ class ReviewChanges
5
+ attr_reader :popolo_files
6
+
7
+ def initialize(popolo_before_after)
8
+ @popolo_files = popolo_before_after.map do |opts|
9
+ ComparePopolo.parse(opts)
10
+ end
11
+ end
12
+
13
+ def to_html
14
+ template.result(binding)
15
+ end
16
+
17
+ def template
18
+ @template ||= ERB.new(File.read('comment_template.md.erb'))
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,44 @@
1
+ require 'octokit'
2
+ require 'open-uri'
3
+
4
+ module PullRequestSummarizer
5
+ class Summarizer
6
+ class Error < StandardError; end
7
+
8
+ attr_reader :pull_request_number
9
+
10
+ def initialize(pull_request_number)
11
+ @pull_request_number = pull_request_number
12
+ end
13
+
14
+ def summarize
15
+ pull_request = github.pull_request(everypolitician_data_repo, pull_request_number)
16
+ files = github.pull_request_files(everypolitician_data_repo, pull_request_number)
17
+ popolo_before_after = FindPopoloFiles.from(files).map do |file|
18
+ {
19
+ path: file[:filename],
20
+ before: open(file[:raw_url].sub(pull_request[:head][:sha], pull_request[:base][:sha])).read,
21
+ after: open(file[:raw_url]).read,
22
+ }
23
+ end
24
+
25
+ begin
26
+ ReviewChanges.new(popolo_before_after).to_html
27
+ rescue Octokit::UnprocessableEntity => e
28
+ raise Error, "Unable to review pull request #{pull_request_number}: #{e.message}"
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ def github
35
+ @github ||= Octokit::Client.new.tap do |g|
36
+ g.access_token = ENV['GITHUB_ACCESS_TOKEN']
37
+ end
38
+ end
39
+
40
+ def everypolitician_data_repo
41
+ ENV.fetch('EVERYPOLITICIAN_DATA_REPO', 'everypolitician/everypolitician-data')
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,3 @@
1
+ module PullRequestSummarizer
2
+ VERSION = '0.1.0'.freeze
3
+ end
@@ -0,0 +1,6 @@
1
+ require 'pull_request_summarizer/version'
2
+ Dir["#{__dir__}/pull_request_summarizer/**/*.rb"].each { |f| require f }
3
+
4
+ module PullRequestSummarizer
5
+ # Your code goes here...
6
+ end
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'pull_request_summarizer/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'pull_request_summarizer'
8
+ spec.version = PullRequestSummarizer::VERSION
9
+ spec.authors = ['Chris Mytton']
10
+ spec.email = ['chrismytton@gmail.com']
11
+
12
+ spec.summary = 'Produces a summary of EveryPolitician data pull requests'
13
+ spec.homepage = 'https://github.com/everypolitician/pull_request_summarizer'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = 'exe'
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_runtime_dependency 'everypolitician-popolo'
22
+ spec.add_runtime_dependency 'octokit'
23
+
24
+ spec.add_development_dependency 'bundler', '~> 1.12'
25
+ spec.add_development_dependency 'rake', '~> 10.0'
26
+ spec.add_development_dependency 'minitest', '~> 5.0'
27
+ spec.add_development_dependency 'pry', '~> 0.10'
28
+ spec.add_development_dependency 'rubocop', '~> 0.42'
29
+ end
metadata ADDED
@@ -0,0 +1,168 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pull_request_summarizer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Chris Mytton
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-09-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: everypolitician-popolo
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: octokit
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.12'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.12'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '5.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '5.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.10'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.10'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.42'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.42'
111
+ description:
112
+ email:
113
+ - chrismytton@gmail.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - ".gitignore"
119
+ - ".rubocop.yml"
120
+ - ".rubocop_todo.yml"
121
+ - ".travis.yml"
122
+ - Gemfile
123
+ - LICENSE.txt
124
+ - README.md
125
+ - Rakefile
126
+ - bin/console
127
+ - bin/setup
128
+ - comment_template.md.erb
129
+ - lib/pull_request_summarizer.rb
130
+ - lib/pull_request_summarizer/compare_popolo.rb
131
+ - lib/pull_request_summarizer/find_popolo_files.rb
132
+ - lib/pull_request_summarizer/report/base.rb
133
+ - lib/pull_request_summarizer/report/elections.rb
134
+ - lib/pull_request_summarizer/report/organizations.rb
135
+ - lib/pull_request_summarizer/report/people.rb
136
+ - lib/pull_request_summarizer/report/people_addtional_names.rb
137
+ - lib/pull_request_summarizer/report/people_names.rb
138
+ - lib/pull_request_summarizer/report/terms.rb
139
+ - lib/pull_request_summarizer/report/wikidata.rb
140
+ - lib/pull_request_summarizer/review_changes.rb
141
+ - lib/pull_request_summarizer/summarizer.rb
142
+ - lib/pull_request_summarizer/version.rb
143
+ - pull_request_summarizer.gemspec
144
+ homepage: https://github.com/everypolitician/pull_request_summarizer
145
+ licenses:
146
+ - MIT
147
+ metadata: {}
148
+ post_install_message:
149
+ rdoc_options: []
150
+ require_paths:
151
+ - lib
152
+ required_ruby_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ requirements: []
163
+ rubyforge_project:
164
+ rubygems_version: 2.5.1
165
+ signing_key:
166
+ specification_version: 4
167
+ summary: Produces a summary of EveryPolitician data pull requests
168
+ test_files: []