hulse 0.8 → 0.9

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
  SHA1:
3
- metadata.gz: 9bba650c8b0b6ada1ef76edc9a42070ab12e7890
4
- data.tar.gz: 2047fb904a719d427a8f9e925c3fe70ce754b1b9
3
+ metadata.gz: b4315687d83cb3538a49513cad526082b9fdb392
4
+ data.tar.gz: 7068e30d8ef2225b07adb5ba89398db653105bc6
5
5
  SHA512:
6
- metadata.gz: 623269c8d40b0489316c4053b664656e3aea73b484ffdf082898c0b58960d24e4fbb1c2205809b8e53ed28984cfcf3059273cc95359901235f5817047d8bef05
7
- data.tar.gz: 1e0cd5aaa909e46753edb38c85e404711cceef893d11ddb56fc2ff144e1fa9f890f4d82a868458ddff023cd608a26673e0ee3a0c8693fd0c8930230b7fbac4da
6
+ metadata.gz: 0fc0fa0737da4e7a035ef016ed253ad041e892f98102b70d2c29d3bcdf7fdd74d2bd15e5344e7f5064870554922c826b4910a57b789a12758fbad3e25a0553e7
7
+ data.tar.gz: cf4de0b1e8ff1967d76988419104f75722a1816d80ef2fcb35529a51f62c8e58b4e9fac746744f136e3bef219e12178fdf2ef4a9b75ee948306af48c57086f59
data/hulse.gemspec CHANGED
@@ -25,4 +25,5 @@ Gem::Specification.new do |spec|
25
25
  spec.add_dependency "nokogiri"
26
26
  spec.add_dependency "oj"
27
27
  spec.add_dependency "american_date"
28
+ spec.add_dependency "activesupport"
28
29
  end
data/lib/hulse.rb CHANGED
@@ -10,6 +10,7 @@ require "hulse/house_member"
10
10
  require "hulse/house_floor"
11
11
  require "hulse/senate_vote"
12
12
  require "hulse/senate_member"
13
+ require "active_support/core_ext/integer/inflections"
13
14
 
14
15
  module Hulse
15
16
  class Utils
@@ -26,6 +27,24 @@ module Hulse
26
27
  return [congress, session]
27
28
  end
28
29
 
30
+ def self.bill_url(congress, bill_number)
31
+ bill_title = bill_number.scan(/[A-Z]+/).join.upcase
32
+ if bill_title == 'HR'
33
+ bt = 'house-bill'
34
+ elsif bill_title == 'HRES'
35
+ bt = 'house-resolution'
36
+ elsif bill_title == 'HJRES'
37
+ bt = 'house-joint-resolution'
38
+ elsif bill_title == 'S'
39
+ bt = 'senate-bill'
40
+ elsif bill_title == 'SRES'
41
+ bt = 'senate-resolution'
42
+ elsif bill_title == 'SJRES'
43
+ bt = 'senate-joint-resolution'
44
+ end
45
+ bill_num = bill_number.scan(/\d/).join
46
+ "https://www.congress.gov/bill/#{congress.to_i.ordinalize.to_s}-congress/#{bt}/#{bill_num}"
47
+ end
29
48
 
30
49
  end
31
50
  end
@@ -2,7 +2,7 @@ module Hulse
2
2
  class HouseVote
3
3
 
4
4
  attr_reader :majority, :congress, :session, :chamber, :vote_number, :bill_number, :question, :vote_type, :vote_result, :vote_timestamp, :description,
5
- :party_summary, :vote_count, :members, :amendment_number, :amendment_author
5
+ :party_summary, :vote_count, :members, :amendment_number, :amendment_author, :bill_url
6
6
 
7
7
  def initialize(params={})
8
8
  params.each_pair do |k,v|
@@ -51,6 +51,7 @@ module Hulse
51
51
  chamber: response['vote_metadata']['chamber'],
52
52
  vote_number: response['vote_metadata']['rollcall_num'].to_i,
53
53
  bill_number: response['vote_metadata']['legis_num'],
54
+ bill_url: response['vote_metadata']['legis_num'] ? Hulse::Utils.bill_url(response['vote_metadata']['congress'], response['vote_metadata']['legis_num']) : nil,
54
55
  question: response['vote_metadata']['vote_question'],
55
56
  amendment_number: response['vote_metadata']['amendment_num'],
56
57
  amendment_author: response['vote_metadata']['amendment_author'],
@@ -3,7 +3,7 @@ module Hulse
3
3
 
4
4
  attr_reader :congress, :session, :year, :vote_number, :vote_timestamp, :updated_at, :vote_question_text, :vote_document_text,
5
5
  :vote_result_text, :question, :vote_title, :majority_requirement, :vote_result, :document, :amendment, :vote_count, :tie_breaker, :members,
6
- :vote_date, :issue
6
+ :vote_date, :issue, :bill_url, :nomination_url
7
7
 
8
8
  def initialize(params={})
9
9
  params.each_pair do |k,v|
@@ -60,5 +60,22 @@ module Hulse
60
60
  votes.map{|v| self.new(congress: congress, session: session, year: year, vote_number: v['vote_number'], vote_date: Date.strptime(v['vote_date']+"-#{year}", "%d-%b-%Y"), issue: v['issue'],
61
61
  question: v['question'], vote_result: v['result'], vote_count: v['vote_tally'].inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}, vote_title: v['title'])}
62
62
  end
63
+
64
+ def is_nomination_vote?
65
+ document[:document_type] == 'PN' ? true : false
66
+ end
67
+
68
+ def nomination_url
69
+ "https://www.congress.gov/nomination/#{congress.to_i.ordinalize.to_s}-congress/#{document[:document_number].to_s}" if document[:document_type] == 'PN'
70
+ end
71
+
72
+ def bill_url
73
+ if document[:document_name] and document[:document_type] != 'PN'
74
+ Hulse::Utils.bill_url(congress, document[:document_name].gsub('.',''))
75
+ else
76
+ nil
77
+ end
78
+ end
79
+
63
80
  end
64
81
  end
data/lib/hulse/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Hulse
2
- VERSION = "0.8"
2
+ VERSION = "0.9"
3
3
  end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+ require_relative '../lib/hulse'
3
+
4
+ module Hulse
5
+ class HouseVoteTest < Minitest::Test
6
+
7
+ def setup
8
+ @hv = HouseVote.find(2015,582)
9
+ @sv = HouseVote.find(2015,581)
10
+ end
11
+
12
+ def test_bill_url
13
+ assert_equal @hv.bill_url, "https://www.congress.gov/bill/114th-congress/house-bill/1853"
14
+ assert_equal @sv.bill_url, nil
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,22 @@
1
+ require 'test_helper'
2
+ require_relative '../lib/hulse'
3
+
4
+ module Hulse
5
+ class SenateVoteTest < Minitest::Test
6
+
7
+ def setup
8
+ @sv = SenateVote.find(2015,291)
9
+ @nv = SenateVote.find(2015,274)
10
+ end
11
+
12
+ def test_bill_url
13
+ assert_equal @sv.bill_url, "https://www.congress.gov/bill/114th-congress/senate-bill/754"
14
+ assert_equal @nv.bill_url, nil
15
+ end
16
+
17
+ def test_nomination
18
+ assert_equal @nv.is_nomination_vote?, true
19
+ end
20
+
21
+ end
22
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hulse
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.8'
4
+ version: '0.9'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Derek Willis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-24 00:00:00.000000000 Z
11
+ date: 2015-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: activesupport
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  description: Turns House and Senate votes and members into Ruby objects for your legislative
112
126
  pleasure.
113
127
  email:
@@ -131,6 +145,8 @@ files:
131
145
  - lib/hulse/senate_member.rb
132
146
  - lib/hulse/senate_vote.rb
133
147
  - lib/hulse/version.rb
148
+ - test/house_vote_test.rb
149
+ - test/senate_vote_test.rb
134
150
  - test/test_helper.rb
135
151
  - test/utils_test.rb
136
152
  homepage: ''
@@ -159,6 +175,8 @@ specification_version: 4
159
175
  summary: Hulse is a Ruby gem for accessing House and Senate roll call votes and member
160
176
  data from the official sources on house.gov and senate.gov
161
177
  test_files:
178
+ - test/house_vote_test.rb
179
+ - test/senate_vote_test.rb
162
180
  - test/test_helper.rb
163
181
  - test/utils_test.rb
164
182
  has_rdoc: