contributors_stats 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/.travis.yml +11 -0
  4. data/Gemfile +5 -0
  5. data/LICENSE.md +14 -0
  6. data/README.md +43 -0
  7. data/Rakefile +28 -0
  8. data/contributors_stats.gemspec +24 -0
  9. data/lib/contributors_stats.rb +28 -0
  10. data/lib/contributors_stats/base.rb +29 -0
  11. data/lib/contributors_stats/calculator.rb +50 -0
  12. data/lib/contributors_stats/formatter.rb +57 -0
  13. data/lib/contributors_stats/json_helper.rb +49 -0
  14. data/lib/contributors_stats/reader.rb +52 -0
  15. data/lib/contributors_stats/version.rb +4 -0
  16. data/lib/example_data.rb +58 -0
  17. data/lib/plugins/contributors_stats/formatter/html.rb +26 -0
  18. data/lib/plugins/contributors_stats/reader/gh_org.rb +21 -0
  19. data/lib/plugins/contributors_stats/reader/gh_repo.rb +19 -0
  20. data/lib/plugins/contributors_stats/updater/html.rb +36 -0
  21. data/lib/plugins/contributors_stats/user_data/fetch.rb +16 -0
  22. data/lib/plugins/contributors_stats/user_data/simple.rb +23 -0
  23. data/test/contributors_stats/base_test.rb +36 -0
  24. data/test/contributors_stats/calculator_test.rb +70 -0
  25. data/test/contributors_stats/formatter_test.rb +77 -0
  26. data/test/contributors_stats/json_helper_test.rb +76 -0
  27. data/test/contributors_stats/reader_test.rb +59 -0
  28. data/test/contributors_stats_test.rb +13 -0
  29. data/test/fixtures-gh/orgs/railsinstaller/repos.json +269 -0
  30. data/test/fixtures-gh/repos/mpapis/rubygems-bundler/contributors.json +173 -0
  31. data/test/fixtures-gh/repos/railsinstaller/railsinstaller-nix/contributors.json +40 -0
  32. data/test/fixtures-gh/repos/railsinstaller/railsinstaller-windows/contributors.json +116 -0
  33. data/test/fixtures-gh/repos/railsinstaller/website/contributors.json +192 -0
  34. data/test/fixtures-gh/repos/rvm/pluginator/contributors.json +40 -0
  35. data/test/fixtures-gh/users/acco.json +31 -0
  36. data/test/fixtures-gh/users/alexch.json +31 -0
  37. data/test/fixtures-gh/users/biow0lf.json +31 -0
  38. data/test/fixtures-gh/users/drnic.json +31 -0
  39. data/test/fixtures-gh/users/ebertech.json +31 -0
  40. data/test/fixtures-gh/users/edwardchiu38.json +31 -0
  41. data/test/fixtures-gh/users/emachnic.json +31 -0
  42. data/test/fixtures-gh/users/envygeeks.json +31 -0
  43. data/test/fixtures-gh/users/gpxl.json +31 -0
  44. data/test/fixtures-gh/users/jc00ke.json +31 -0
  45. data/test/fixtures-gh/users/joshbuddy.json +31 -0
  46. data/test/fixtures-gh/users/luigidr.json +31 -0
  47. data/test/fixtures-gh/users/luislavena.json +31 -0
  48. data/test/fixtures-gh/users/metaskills.json +31 -0
  49. data/test/fixtures-gh/users/mpapis.json +31 -0
  50. data/test/fixtures-gh/users/parndt.json +31 -0
  51. data/test/fixtures-gh/users/pw.json +31 -0
  52. data/test/fixtures-gh/users/tjouan.json +31 -0
  53. data/test/fixtures-gh/users/veganstraightedge.json +31 -0
  54. data/test/fixtures-gh/users/wayneeseguin.json +31 -0
  55. data/test/fixtures-gh/users/whitequark.json +31 -0
  56. data/test/plugins/formatter/html_test.rb +28 -0
  57. data/test/plugins/reader/gh_org_test.rb +32 -0
  58. data/test/plugins/reader/gh_repo_test.rb +31 -0
  59. data/test/plugins/updater/html_test.rb +55 -0
  60. data/test/plugins/user_data/fetch_test.rb +16 -0
  61. data/test/plugins/user_data/simple_test.rb +18 -0
  62. data/test/test_helper.rb +27 -0
  63. metadata +229 -0
@@ -0,0 +1,31 @@
1
+ {
2
+ "login": "pw",
3
+ "id": 89371,
4
+ "avatar_url": "https://secure.gravatar.com/avatar/362640695ed8e256d4b45d2a40519326?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png",
5
+ "gravatar_id": "362640695ed8e256d4b45d2a40519326",
6
+ "url": "users/pw.json",
7
+ "html_url": "https://github.com/pw",
8
+ "followers_url": "users/pw/followers.json",
9
+ "following_url": "users/pw/following{/other_user}.json",
10
+ "gists_url": "users/pw/gists{/gist_id}.json",
11
+ "starred_url": "users/pw/starred{/owner}{/repo}.json",
12
+ "subscriptions_url": "users/pw/subscriptions.json",
13
+ "organizations_url": "users/pw/orgs.json",
14
+ "repos_url": "users/pw/repos.json",
15
+ "events_url": "users/pw/events{/privacy}.json",
16
+ "received_events_url": "users/pw/received_events.json",
17
+ "type": "User",
18
+ "name": "Patrick White",
19
+ "company": null,
20
+ "blog": "http://pwhite.org",
21
+ "location": "Sheridan, WY/Pocatello, ID",
22
+ "email": "p@pwhite.org",
23
+ "hireable": false,
24
+ "bio": null,
25
+ "public_repos": 8,
26
+ "followers": 3,
27
+ "following": 14,
28
+ "created_at": "2009-05-28T00:05:00Z",
29
+ "updated_at": "2013-05-15T21:25:43Z",
30
+ "public_gists": 0
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "login": "tjouan",
3
+ "id": 61271,
4
+ "avatar_url": "https://secure.gravatar.com/avatar/a0b419452eceda9515088289b3a66e14?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png",
5
+ "gravatar_id": "a0b419452eceda9515088289b3a66e14",
6
+ "url": "users/tjouan.json",
7
+ "html_url": "https://github.com/tjouan",
8
+ "followers_url": "users/tjouan/followers.json",
9
+ "following_url": "users/tjouan/following{/other_user}.json",
10
+ "gists_url": "users/tjouan/gists{/gist_id}.json",
11
+ "starred_url": "users/tjouan/starred{/owner}{/repo}.json",
12
+ "subscriptions_url": "users/tjouan/subscriptions.json",
13
+ "organizations_url": "users/tjouan/orgs.json",
14
+ "repos_url": "users/tjouan/repos.json",
15
+ "events_url": "users/tjouan/events{/privacy}.json",
16
+ "received_events_url": "users/tjouan/received_events.json",
17
+ "type": "User",
18
+ "name": "Thibault Jouan",
19
+ "company": null,
20
+ "blog": "http://a13.fr/",
21
+ "location": "Caen, France",
22
+ "email": null,
23
+ "hireable": false,
24
+ "bio": null,
25
+ "public_repos": 12,
26
+ "followers": 0,
27
+ "following": 0,
28
+ "created_at": "2009-03-08T13:33:05Z",
29
+ "updated_at": "2013-05-05T16:32:16Z",
30
+ "public_gists": 0
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "login": "veganstraightedge",
3
+ "id": 4361,
4
+ "avatar_url": "https://secure.gravatar.com/avatar/317259b800623d76bba3e7a4fbbbf70a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png",
5
+ "gravatar_id": "317259b800623d76bba3e7a4fbbbf70a",
6
+ "url": "users/veganstraightedge.json",
7
+ "html_url": "https://github.com/veganstraightedge",
8
+ "followers_url": "users/veganstraightedge/followers.json",
9
+ "following_url": "users/veganstraightedge/following{/other_user}.json",
10
+ "gists_url": "users/veganstraightedge/gists{/gist_id}.json",
11
+ "starred_url": "users/veganstraightedge/starred{/owner}{/repo}.json",
12
+ "subscriptions_url": "users/veganstraightedge/subscriptions.json",
13
+ "organizations_url": "users/veganstraightedge/orgs.json",
14
+ "repos_url": "users/veganstraightedge/repos.json",
15
+ "events_url": "users/veganstraightedge/events{/privacy}.json",
16
+ "received_events_url": "users/veganstraightedge/received_events.json",
17
+ "type": "User",
18
+ "name": "Shane Becker",
19
+ "company": "Less Than Three",
20
+ "blog": "http://iamshane.com",
21
+ "location": "Los Angeles, CA",
22
+ "email": "veganstraightedge@gmail.com",
23
+ "hireable": false,
24
+ "bio": null,
25
+ "public_repos": 27,
26
+ "followers": 56,
27
+ "following": 0,
28
+ "created_at": "2008-04-02T21:39:03Z",
29
+ "updated_at": "2013-05-15T17:51:06Z",
30
+ "public_gists": 44
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "login": "wayneeseguin",
3
+ "id": 18,
4
+ "avatar_url": "https://secure.gravatar.com/avatar/b9b5ff40232c1dfd61238c2a90467f84?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png",
5
+ "gravatar_id": "b9b5ff40232c1dfd61238c2a90467f84",
6
+ "url": "users/wayneeseguin.json",
7
+ "html_url": "https://github.com/wayneeseguin",
8
+ "followers_url": "users/wayneeseguin/followers.json",
9
+ "following_url": "users/wayneeseguin/following{/other_user}.json",
10
+ "gists_url": "users/wayneeseguin/gists{/gist_id}.json",
11
+ "starred_url": "users/wayneeseguin/starred{/owner}{/repo}.json",
12
+ "subscriptions_url": "users/wayneeseguin/subscriptions.json",
13
+ "organizations_url": "users/wayneeseguin/orgs.json",
14
+ "repos_url": "users/wayneeseguin/repos.json",
15
+ "events_url": "users/wayneeseguin/events{/privacy}.json",
16
+ "received_events_url": "users/wayneeseguin/received_events.json",
17
+ "type": "User",
18
+ "name": "Wayne E. Seguin",
19
+ "company": "http://engineyard.com/",
20
+ "blog": "http://beginrescueend.com/",
21
+ "location": "Buffalo, NY",
22
+ "email": "wayneeseguin@gmail.com",
23
+ "hireable": false,
24
+ "bio": "Wayne E. Seguin has been [Working With Ruby and Rails](http://workingwithrails.com/person/7192-wayne-e-seguin) for over six years now and [comes well recommended](http://workingwithrails.com/recommendation/for/person/7192-wayne-e-seguin) . Wayne has a Masters degree in Mathematics and a Bachelors degree in Computer Science. Wayne's hobbies include spending time with his children, hacking, Magic the Gathering and Disc Golf. Wayne loves to contribute to Open Source projects and also has several of his own which can be found on github. Wayne is also a co-founder of the [Western New York Ruby Users Group (WNYRUG)](http://www.meetup.com/Western-New-York-Ruby/). \r\n\r\nWayne is an active member of the Ruby community with such projects as [Ruby enVironment Manager](http://rvm.beginrescueend.com/), [RailsInstaller](http://railsinstaller.org/) and [BDSM](http://bdsm.beginrescuend.com/).\r\n",
25
+ "public_repos": 67,
26
+ "followers": 445,
27
+ "following": 15,
28
+ "created_at": "2008-01-13T06:02:21Z",
29
+ "updated_at": "2013-05-15T21:09:18Z",
30
+ "public_gists": 90
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "login": "whitequark",
3
+ "id": 54771,
4
+ "avatar_url": "https://secure.gravatar.com/avatar/89d887b50262bbe10225d36d974fdb0c?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png",
5
+ "gravatar_id": "89d887b50262bbe10225d36d974fdb0c",
6
+ "url": "users/whitequark.json",
7
+ "html_url": "https://github.com/whitequark",
8
+ "followers_url": "users/whitequark/followers.json",
9
+ "following_url": "users/whitequark/following{/other_user}.json",
10
+ "gists_url": "users/whitequark/gists{/gist_id}.json",
11
+ "starred_url": "users/whitequark/starred{/owner}{/repo}.json",
12
+ "subscriptions_url": "users/whitequark/subscriptions.json",
13
+ "organizations_url": "users/whitequark/orgs.json",
14
+ "repos_url": "users/whitequark/repos.json",
15
+ "events_url": "users/whitequark/events{/privacy}.json",
16
+ "received_events_url": "users/whitequark/received_events.json",
17
+ "type": "User",
18
+ "name": "Peter Zotov",
19
+ "company": "Evil Martians",
20
+ "blog": "http://whitequark.org",
21
+ "location": "Moscow, Russia",
22
+ "email": "whitequark@whitequark.org",
23
+ "hireable": false,
24
+ "bio": "",
25
+ "public_repos": 46,
26
+ "followers": 83,
27
+ "following": 0,
28
+ "created_at": "2009-02-15T18:56:56Z",
29
+ "updated_at": "2013-05-15T22:03:00Z",
30
+ "public_gists": 28
31
+ }
@@ -0,0 +1,28 @@
1
+ require 'test_helper'
2
+ require 'plugins/contributors_stats/formatter/html'
3
+
4
+ describe ContributorsStats::Formatter::Html do
5
+ before do
6
+ @user1_data = {
7
+ 'avatar_url' => 'avatar_url1',
8
+ 'name' => 'name1',
9
+ 'url' => 'url1',
10
+ 'html_url' => 'html_url1',
11
+ 'contributions' => 'contributions1',
12
+ }
13
+ end
14
+
15
+ it "formats output - default template" do
16
+ expected = %Q{<a href="html_url1" title="user1 - contributions1"><img src="avatar_url1" alt="user1 - contributions1"/></a>}
17
+ html = ContributorsStats::Formatter::Html.new
18
+ html.format("user1", @user1_data).must_equal(expected)
19
+ end
20
+
21
+ it "formats output - custom template" do
22
+ login = "user1"
23
+ template = %q{%Q{<span>login: #{login}, avatar_url: #{data['avatar_url']}, name: #{data['name']}, url: #{data['url']}, html_url: #{data['html_url']}, contributors: #{data['contributors']}</spam>}}
24
+ expected = %Q{<span>login: #{login}, avatar_url: #{@user1_data['avatar_url']}, name: #{@user1_data['name']}, url: #{@user1_data['url']}, html_url: #{@user1_data['html_url']}, contributors: #{@user1_data['contributors']}</spam>}
25
+ html = ContributorsStats::Formatter::Html.new(template: template)
26
+ html.format(login, @user1_data).must_equal(expected)
27
+ end
28
+ end
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+ require 'plugins/contributors_stats/reader/gh_org'
3
+
4
+ describe ContributorsStats::Reader::GhOrg do
5
+ before do
6
+ @tester = ContributorsStats::Reader::GhOrg
7
+ @tester.send(:configure_path, File.expand_path("../../../fixtures-gh", __FILE__), ".json")
8
+ end
9
+
10
+ it "loads organisation" do
11
+ railsinstaller_user_names = %w{
12
+ acco alexch drnic edwardchiu38 emachnic gpxl jc00ke luigidr
13
+ luislavena metaskills mpapis veganstraightedge wayneeseguin
14
+ }
15
+ result = @tester.load("railsinstaller")
16
+ result.size.must_equal(18)
17
+ result.map(&:class).uniq.must_equal([Hash])
18
+ result.map{|user| user["login"]}.uniq.sort.must_equal(railsinstaller_user_names)
19
+ end
20
+
21
+ it "loads organisation with block" do
22
+ railsinstaller_repo_names = %w{
23
+ railsinstaller/railsinstaller-nix railsinstaller/railsinstaller-windows railsinstaller/website
24
+ }
25
+ counter = []
26
+ @tester.load("railsinstaller") do |data, name|
27
+ counter << name
28
+ end
29
+ counter.sort.must_equal(railsinstaller_repo_names)
30
+ end
31
+
32
+ end
@@ -0,0 +1,31 @@
1
+ require 'test_helper'
2
+ require 'plugins/contributors_stats/reader/gh_repo'
3
+
4
+ describe ContributorsStats::Reader::GhRepo do
5
+ before do
6
+ @tester = ContributorsStats::Reader::GhRepo
7
+ @tester.send(:configure_path, File.expand_path("../../../fixtures-gh", __FILE__), ".json")
8
+ end
9
+
10
+ it "loads repository" do
11
+ railsinstaller_user_names = %w{
12
+ acco alexch drnic edwardchiu38 emachnic gpxl jc00ke mpapis veganstraightedge wayneeseguin
13
+ }
14
+ result = @tester.load("railsinstaller/website")
15
+ result.size.must_equal(10)
16
+ result.map(&:class).uniq.must_equal([Hash])
17
+ result.map{|user| user["login"]}.uniq.sort.must_equal(railsinstaller_user_names)
18
+ end
19
+
20
+ it "loads repository with block" do
21
+ railsinstaller_repo_names = %w{
22
+ railsinstaller/website
23
+ }
24
+ counter = []
25
+ @tester.load("railsinstaller/website") do |data, name|
26
+ counter << name
27
+ end
28
+ counter.sort.must_equal(railsinstaller_repo_names)
29
+ end
30
+
31
+ end
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+ require 'plugins/contributors_stats/updater/html'
3
+
4
+ def response(text)
5
+ %Q{<body><span class="contributors">
6
+ #{text}
7
+ </span></body>}
8
+ end
9
+
10
+ describe ContributorsStats::Updater::Html do
11
+ before do
12
+ @tester = ContributorsStats::Updater::Html
13
+ @simple_content = %q{<body><span class="contributors"></span></body>}
14
+ end
15
+
16
+ it "responds to html files" do
17
+ @tester.handles?("/path/to/a/file.html").must_equal(true)
18
+ end
19
+
20
+ it "responds to html.erb files" do
21
+ @tester.handles?("/path/to/a/file.html.erb").must_equal(true)
22
+ end
23
+
24
+ it "does not respond to java files" do
25
+ @tester.handles?("/path/to/a/file.java").must_equal(false)
26
+ end
27
+
28
+ it "uses default options" do
29
+ tester = @tester.new("", [])
30
+ tester.search.must_equal(@tester::DEFAULT_SEARCH)
31
+ tester.replace.must_equal(@tester::DEFAULT_REPLACE)
32
+ end
33
+
34
+ it "uses given search option" do
35
+ tester = @tester.new("", [], search: "search_me1")
36
+ tester.search.must_equal("search_me1")
37
+ end
38
+
39
+ it "uses given replace option" do
40
+ tester = @tester.new("", [], replace: "replace_me1")
41
+ tester.replace.must_equal("replace_me1")
42
+ end
43
+
44
+ it "returns empty template for empty data" do
45
+ result = @tester.update(@simple_content, [])
46
+ result.must_equal(response(""))
47
+ end
48
+
49
+ it "returns new content for some data" do
50
+ example_data = %q{<img url="far far away"/>}
51
+ result = @tester.update(@simple_content, [example_data])
52
+ result.must_equal(response(example_data))
53
+ end
54
+
55
+ end
@@ -0,0 +1,16 @@
1
+ require 'test_helper'
2
+ require 'plugins/contributors_stats/user_data/fetch'
3
+
4
+ describe ContributorsStats::UserData::Fetch do
5
+ before do
6
+ @tester = ContributorsStats::UserData::Fetch
7
+ @tester.send(:configure_path, File.expand_path("../../../fixtures-gh", __FILE__), ".json")
8
+ end
9
+
10
+ it "loads user data" do
11
+ result = @tester.load("mpapis", {"url" => "users/mpapis.json"}, 20)
12
+ result.keys.size.must_equal(30)
13
+ result["name"].must_equal("Michal Papis")
14
+ end
15
+
16
+ end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+ require 'plugins/contributors_stats/user_data/simple'
3
+
4
+ describe ContributorsStats::UserData::Simple do
5
+ before do
6
+ @tester = ContributorsStats::UserData::Simple
7
+ end
8
+
9
+ it "loads user data" do
10
+ result = @tester.load("mpapis", {
11
+ "url" => "users/mpapis.json",
12
+ "avatar_url" => "https://secure.gravatar.com/avatar/3ec52ed58eb92026d86e62c39bdb7589?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"
13
+ }, 20)
14
+ result.keys.size.must_equal(5)
15
+ result["name"].must_equal("mpapis")
16
+ end
17
+
18
+ end
@@ -0,0 +1,27 @@
1
+ require "coveralls"
2
+ require "simplecov"
3
+
4
+ SimpleCov.start do
5
+ formatter SimpleCov::Formatter::MultiFormatter[
6
+ SimpleCov::Formatter::HTMLFormatter,
7
+ Coveralls::SimpleCov::Formatter,
8
+ ]
9
+ command_name "Unit Tests"
10
+ add_filter "/test/"
11
+ add_filter "/lib/example_data.rb"
12
+ end
13
+
14
+ Coveralls.noisy = true
15
+
16
+ require 'minitest/autorun'
17
+
18
+ # Autoload all lib/**/*.rb files so simplecov does not misses anything
19
+ Dir[File.expand_path("../../lib/**/*.rb", __FILE__)].each{|f| require f }
20
+
21
+ class ContributorsStats::ArrayLoggerExample
22
+ attr_reader :data
23
+ def info(msg)
24
+ @data ||= []
25
+ @data << msg
26
+ end
27
+ end
metadata ADDED
@@ -0,0 +1,229 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: contributors_stats
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Michal Papis
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-05-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pluginator
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: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
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: simplecov
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: coveralls
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: yard
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: redcarpet
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description:
98
+ email: mpapis@gmail.com
99
+ executables: []
100
+ extensions: []
101
+ extra_rdoc_files: []
102
+ files:
103
+ - .gitignore
104
+ - .travis.yml
105
+ - Gemfile
106
+ - LICENSE.md
107
+ - README.md
108
+ - Rakefile
109
+ - contributors_stats.gemspec
110
+ - lib/contributors_stats.rb
111
+ - lib/contributors_stats/base.rb
112
+ - lib/contributors_stats/calculator.rb
113
+ - lib/contributors_stats/formatter.rb
114
+ - lib/contributors_stats/json_helper.rb
115
+ - lib/contributors_stats/reader.rb
116
+ - lib/contributors_stats/version.rb
117
+ - lib/example_data.rb
118
+ - lib/plugins/contributors_stats/formatter/html.rb
119
+ - lib/plugins/contributors_stats/reader/gh_org.rb
120
+ - lib/plugins/contributors_stats/reader/gh_repo.rb
121
+ - lib/plugins/contributors_stats/updater/html.rb
122
+ - lib/plugins/contributors_stats/user_data/fetch.rb
123
+ - lib/plugins/contributors_stats/user_data/simple.rb
124
+ - test/contributors_stats/base_test.rb
125
+ - test/contributors_stats/calculator_test.rb
126
+ - test/contributors_stats/formatter_test.rb
127
+ - test/contributors_stats/json_helper_test.rb
128
+ - test/contributors_stats/reader_test.rb
129
+ - test/contributors_stats_test.rb
130
+ - test/fixtures-gh/orgs/railsinstaller/repos.json
131
+ - test/fixtures-gh/repos/mpapis/rubygems-bundler/contributors.json
132
+ - test/fixtures-gh/repos/railsinstaller/railsinstaller-nix/contributors.json
133
+ - test/fixtures-gh/repos/railsinstaller/railsinstaller-windows/contributors.json
134
+ - test/fixtures-gh/repos/railsinstaller/website/contributors.json
135
+ - test/fixtures-gh/repos/rvm/pluginator/contributors.json
136
+ - test/fixtures-gh/users/acco.json
137
+ - test/fixtures-gh/users/alexch.json
138
+ - test/fixtures-gh/users/biow0lf.json
139
+ - test/fixtures-gh/users/drnic.json
140
+ - test/fixtures-gh/users/ebertech.json
141
+ - test/fixtures-gh/users/edwardchiu38.json
142
+ - test/fixtures-gh/users/emachnic.json
143
+ - test/fixtures-gh/users/envygeeks.json
144
+ - test/fixtures-gh/users/gpxl.json
145
+ - test/fixtures-gh/users/jc00ke.json
146
+ - test/fixtures-gh/users/joshbuddy.json
147
+ - test/fixtures-gh/users/luigidr.json
148
+ - test/fixtures-gh/users/luislavena.json
149
+ - test/fixtures-gh/users/metaskills.json
150
+ - test/fixtures-gh/users/mpapis.json
151
+ - test/fixtures-gh/users/parndt.json
152
+ - test/fixtures-gh/users/pw.json
153
+ - test/fixtures-gh/users/tjouan.json
154
+ - test/fixtures-gh/users/veganstraightedge.json
155
+ - test/fixtures-gh/users/wayneeseguin.json
156
+ - test/fixtures-gh/users/whitequark.json
157
+ - test/plugins/formatter/html_test.rb
158
+ - test/plugins/reader/gh_org_test.rb
159
+ - test/plugins/reader/gh_repo_test.rb
160
+ - test/plugins/updater/html_test.rb
161
+ - test/plugins/user_data/fetch_test.rb
162
+ - test/plugins/user_data/simple_test.rb
163
+ - test/test_helper.rb
164
+ homepage: https://github.com/mpapis/contributors_stats
165
+ licenses:
166
+ - Apache
167
+ metadata: {}
168
+ post_install_message:
169
+ rdoc_options: []
170
+ require_paths:
171
+ - lib
172
+ required_ruby_version: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - '>='
175
+ - !ruby/object:Gem::Version
176
+ version: 2.0.0
177
+ required_rubygems_version: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ requirements: []
183
+ rubyforge_project:
184
+ rubygems_version: 2.0.3
185
+ signing_key:
186
+ specification_version: 4
187
+ summary: Calculate statics for multiple project contributoions.
188
+ test_files:
189
+ - test/contributors_stats/base_test.rb
190
+ - test/contributors_stats/calculator_test.rb
191
+ - test/contributors_stats/formatter_test.rb
192
+ - test/contributors_stats/json_helper_test.rb
193
+ - test/contributors_stats/reader_test.rb
194
+ - test/contributors_stats_test.rb
195
+ - test/fixtures-gh/orgs/railsinstaller/repos.json
196
+ - test/fixtures-gh/repos/mpapis/rubygems-bundler/contributors.json
197
+ - test/fixtures-gh/repos/railsinstaller/railsinstaller-nix/contributors.json
198
+ - test/fixtures-gh/repos/railsinstaller/railsinstaller-windows/contributors.json
199
+ - test/fixtures-gh/repos/railsinstaller/website/contributors.json
200
+ - test/fixtures-gh/repos/rvm/pluginator/contributors.json
201
+ - test/fixtures-gh/users/acco.json
202
+ - test/fixtures-gh/users/alexch.json
203
+ - test/fixtures-gh/users/biow0lf.json
204
+ - test/fixtures-gh/users/drnic.json
205
+ - test/fixtures-gh/users/ebertech.json
206
+ - test/fixtures-gh/users/edwardchiu38.json
207
+ - test/fixtures-gh/users/emachnic.json
208
+ - test/fixtures-gh/users/envygeeks.json
209
+ - test/fixtures-gh/users/gpxl.json
210
+ - test/fixtures-gh/users/jc00ke.json
211
+ - test/fixtures-gh/users/joshbuddy.json
212
+ - test/fixtures-gh/users/luigidr.json
213
+ - test/fixtures-gh/users/luislavena.json
214
+ - test/fixtures-gh/users/metaskills.json
215
+ - test/fixtures-gh/users/mpapis.json
216
+ - test/fixtures-gh/users/parndt.json
217
+ - test/fixtures-gh/users/pw.json
218
+ - test/fixtures-gh/users/tjouan.json
219
+ - test/fixtures-gh/users/veganstraightedge.json
220
+ - test/fixtures-gh/users/wayneeseguin.json
221
+ - test/fixtures-gh/users/whitequark.json
222
+ - test/plugins/formatter/html_test.rb
223
+ - test/plugins/reader/gh_org_test.rb
224
+ - test/plugins/reader/gh_repo_test.rb
225
+ - test/plugins/updater/html_test.rb
226
+ - test/plugins/user_data/fetch_test.rb
227
+ - test/plugins/user_data/simple_test.rb
228
+ - test/test_helper.rb
229
+ has_rdoc: