fech 1.6.4 → 1.7

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: ee227cc931bb803209ac3d2d600f6bf3cc405b74
4
- data.tar.gz: daefdd11ced60e5f7e1c579e6c1c4856f5c7caa9
3
+ metadata.gz: f6e04ce5d91ac6847c295b5a406a5655b424a506
4
+ data.tar.gz: 8838778407bd9420407306c2f1e299180986ab42
5
5
  SHA512:
6
- metadata.gz: 962e4a8aa60e569341873070ddcca6fcf320c427809f76a123bb2ad3f74719f584f57913e6272bfa906c60bd933c6c5c6d1c7011f2ac473f37b209b81e180b50
7
- data.tar.gz: b4282e11bb2e57a90b7c599c0a510cdbe3b78d2b94bbdfc8cc27d0bb853e333d63e14dbbca6b1b7f2e7960c1e1c8007d10ceef3240b2df1b63bfd0eff294c346
6
+ metadata.gz: 5b485b90e6e021eeb1c244d7952899b1d2bd6a3eba1487ad150460cd5675b00f7edeb3da6ba25f656fd62ff2e0ebb28454e28f614c533baea13d9fb253a1ce72
7
+ data.tar.gz: 8867088559cead6e584dd72f3c9a574d57dcfcb8b928f7c10e7b6da6769ed61b9a474350fe0bc9dd0e88fa494626f50c0a60b85470b78e6af56b1186bbb0e3bb
data/CHANGELOG CHANGED
@@ -1,3 +1,14 @@
1
+ 1.7 / 2015-03-28
2
+
3
+ * Additions
4
+
5
+ * Support for F3Z and SA3L transactions in F3 filings.
6
+ * Better support for Ruby 2.1.2
7
+
8
+ * Bug fixes
9
+
10
+ * Fixed three canonical slugs in sources/F3.csv
11
+
1
12
  1.6.4 / 2014-03-11
2
13
 
3
14
  * Bug fixes
data/Gemfile.lock CHANGED
@@ -9,40 +9,35 @@ PATH
9
9
  GEM
10
10
  remote: http://rubygems.org/
11
11
  specs:
12
- columnize (0.3.6)
13
- debugger (1.4.0)
14
- columnize (>= 0.3.1)
15
- debugger-linecache (~> 1.1.1)
16
- debugger-ruby_core_source (~> 1.2.0)
17
- debugger-linecache (1.1.2)
18
- debugger-ruby_core_source (>= 1.1.1)
19
- debugger-ruby_core_source (1.2.4)
20
- diff-lcs (1.1.2)
12
+ byebug (4.0.4)
13
+ columnize (= 0.9.0)
14
+ columnize (0.9.0)
15
+ diff-lcs (1.2.5)
21
16
  ensure-encoding (0.1)
22
17
  fastercsv (1.5.5)
23
18
  mocha (0.9.12)
24
19
  people (0.2.1)
25
20
  rake (0.8.7)
26
21
  rdoc (3.9.2)
27
- rspec (2.6.0)
28
- rspec-core (~> 2.6.0)
29
- rspec-expectations (~> 2.6.0)
30
- rspec-mocks (~> 2.6.0)
31
- rspec-core (2.6.4)
32
- rspec-expectations (2.6.0)
33
- diff-lcs (~> 1.1.2)
34
- rspec-mocks (2.6.0)
35
- yard (0.7.2)
22
+ rspec (2.99.0)
23
+ rspec-core (~> 2.99.0)
24
+ rspec-expectations (~> 2.99.0)
25
+ rspec-mocks (~> 2.99.0)
26
+ rspec-core (2.99.2)
27
+ rspec-expectations (2.99.2)
28
+ diff-lcs (>= 1.1.3, < 2.0)
29
+ rspec-mocks (2.99.3)
30
+ yard (0.8.7.6)
36
31
 
37
32
  PLATFORMS
38
33
  ruby
39
34
 
40
35
  DEPENDENCIES
41
36
  bundler
42
- debugger (= 1.4.0)
37
+ byebug
43
38
  fech!
44
39
  mocha
45
40
  rake
46
41
  rdoc
47
- rspec (~> 2.6)
42
+ rspec
48
43
  yard
data/README.rdoc CHANGED
@@ -6,9 +6,9 @@
6
6
 
7
7
  Fech makes it easy to parse electronic campaign finance filings[http://www.fec.gov/finance/disclosure/efile_search.shtml] by candidates, parties and political action committees from the Federal Election Commission. It lets you access filing attributes the same way regardless of filing version, and works as a framework for cleaning and filing data. Fech is an open source project of The New York Times, but contributions from anyone interested in working with F.E.C. filings are greatly appreciated.
8
8
 
9
- Latest version: 1.6.4. For details see the CHANGELOG.
9
+ Latest version: 1.7. For details see the CHANGELOG.
10
10
 
11
- Fech is tested under Ruby versions 1.8.7, 1.9.2, 1.9.3 and 2.0.0.
11
+ Fech works best under Ruby version 2.x, and has been tested under Ruby versions 1.8.7, 1.9.2, 1.9.3 and 2.1.2. It also has been reported to run using Rubinius.
12
12
 
13
13
  == Documentation
14
14
 
@@ -16,6 +16,7 @@ Can be found at Fech's Github page[http://nytimes.github.com/Fech/].
16
16
 
17
17
  == News
18
18
 
19
+ * March 28, 2015: Version 1.7 released. Added support for Schedule SA3L and F3Z transactions, fixed some bugs and updated gems and specs.
19
20
  * March 11, 2014: Version 1.6.4 released. Bugfix for Schedule E transactions to fix office state and district.
20
21
  * Jan. 22, 2014: Version 1.6.3 released. Bugfix to ensure Translator object is available to any Filing object. Thanks to @abstrctn for fix.
21
22
  * Jan. 15, 2014: Version 1.6.2 released. Bugfix to add dissemination date to SE mappings.
@@ -54,7 +55,7 @@ Can be found at Fech's Github page[http://nytimes.github.com/Fech/].
54
55
  Install Fech as a gem:
55
56
 
56
57
  gem install fech
57
-
58
+
58
59
  For use in a Rails 3 application, put the following in your Gemfile:
59
60
 
60
61
  gem 'fech'
data/Rakefile CHANGED
@@ -1,3 +1,6 @@
1
1
  require 'bundler'
2
+ require 'rspec/core/rake_task'
2
3
  Bundler::GemHelper.install_tasks
3
4
  Dir.glob('tasks/*.rake').each { |r| import r }
5
+
6
+ task :default => :spec
data/fech.gemspec CHANGED
@@ -19,24 +19,30 @@ Gem::Specification.new do |s|
19
19
  s.test_files = `git ls-files -- {spec}/*`.split("\n")
20
20
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
21
  s.require_paths = ["lib"]
22
-
22
+
23
23
  s.add_dependency "fastercsv"
24
24
  s.add_dependency "people"
25
25
  s.add_dependency "ensure-encoding"
26
- if RUBY_VERSION < "1.9"
27
- s.add_development_dependency "linecache", "0.43"
28
- s.add_development_dependency "ruby-debug"
29
- s.add_development_dependency "iconv"
30
- end
31
- if RUBY_VERSION >= "2.0"
32
- s.add_development_dependency "debugger", "1.4.0"
33
- end
34
- if RUBY_VERSION >= "1.9" && RUBY_VERSION < '2.0'
35
- s.add_development_dependency "ruby-debug19"
36
- s.add_development_dependency "linecache19"
26
+ if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
27
+ s.add_development_dependency 'rubinius-compiler'
28
+ s.add_development_dependency 'rubinius-debugger'
29
+ s.add_development_dependency 'rubysl'
30
+ s.add_development_dependency 'ffi'
31
+ s.add_development_dependency 'psych'
32
+ else
33
+ if RUBY_VERSION < "1.9"
34
+ s.add_development_dependency "linecache", "0.43"
35
+ s.add_development_dependency "ruby-debug"
36
+ s.add_development_dependency "iconv"
37
+ elsif RUBY_VERSION >= "2.0"
38
+ s.add_development_dependency "byebug"
39
+ elsif RUBY_VERSION >= "1.9" && RUBY_VERSION < '2.0'
40
+ s.add_development_dependency "ruby-debug19"
41
+ s.add_development_dependency "linecache19"
42
+ end
37
43
  end
38
44
  s.add_development_dependency "rake"
39
- s.add_development_dependency "rspec", "~> 2.6"
45
+ s.add_development_dependency "rspec"
40
46
  s.add_development_dependency "mocha"
41
47
  s.add_development_dependency "bundler"
42
48
  s.add_development_dependency "rdoc"
@@ -51,7 +51,7 @@ module Fech
51
51
  {:row => :sc1, :version => /^[3-5]/, :field => [:treasurer, :authorized]},
52
52
  {:row => :sc2, :version => /^[3-5]/, :field => :guarantor},
53
53
  {:row => :sd, :version => /^[3-5]/, :field => :creditor},
54
- {:row => :se, :version => /^[3-5]/, :field => [:payee, :cadidate]},
54
+ {:row => :se, :version => /^[3-5]/, :field => [:payee, :candidate]},
55
55
  {:row => :sf, :version => /^[3-5]/, :field => [:payee, :payee_candidate]},
56
56
  {:row => :f3p, :version => /^[3-5]/, :field => :treasurer},
57
57
  {:row => :f3p31, :version => /^[3-5]/, :field => :contributor},
@@ -130,4 +130,4 @@ module Fech
130
130
 
131
131
  end
132
132
 
133
- end
133
+ end
@@ -1,7 +1,7 @@
1
1
  # Contains helper functions and static variables used by various
2
2
  # Fech classes.
3
3
  module FechUtils
4
-
4
+
5
5
  # All supported row types pointed to regular expressions that will correctly
6
6
  # match that row type in the wild. If multiple matches exist, Fech will match
7
7
  # the longest regex pattern found.
@@ -22,6 +22,7 @@ module FechUtils
22
22
  :f3p31 => /^f3p31/i,
23
23
  :f3ps => /^f3ps/i,
24
24
  :f3x => /(^f3x$)|(^f3x[ant])/i,
25
+ :f3z => /^f3z[t]/i,
25
26
  :f4 => /^f4[na]/i,
26
27
  :f5 => /^f5[na]/i,
27
28
  :f56 => /^f56/i,
@@ -43,6 +44,7 @@ module FechUtils
43
44
  :h5 => /^h5/i,
44
45
  :h6 => /^h6/i,
45
46
  :sa => /^sa/i,
47
+ :sa3l => /^sa3l/i,
46
48
  :sb => /^sb/i,
47
49
  :sc => /^sc[^1-2]/i,
48
50
  :sc1 => /^sc1/i,
@@ -53,7 +55,7 @@ module FechUtils
53
55
  :sl => /^sl/i,
54
56
  :text => /^text/i,
55
57
  }
56
-
58
+
57
59
  # Converts symbols and strings to Regexp objects for use in regex-keyed maps.
58
60
  # Assumes that symbols should be matched literally, strings unanchored.
59
61
  # @param [String,Symbol,Regexp] label the object to convert to a Regexp
@@ -70,7 +72,7 @@ module FechUtils
70
72
  Regexp.new(Regexp.escape(label.to_s), Regexp::IGNORECASE)
71
73
  end
72
74
  end
73
-
74
-
75
+
76
+
75
77
 
76
78
  end
@@ -1,18 +1,21 @@
1
1
  module Fech
2
-
2
+
3
3
  # Helper class to generate mapping hashes from source csv data.
4
4
  # Needed to rebuild rendered_maps.rb with new source data, not used
5
5
  # in main gem.
6
6
  # rake fech:maps
7
7
  class MapGenerator
8
-
8
+
9
9
  attr_accessor :map
10
+ PAPER_FILING_VERSIONS = ["3.1", "3.0", "2.6", "2.4", "2.3", "2.2", "1.0"]
11
+ PAPER_BASE_ROW_TYPES = ["HDR", "F3", "F3X", "SchA", "SchB"]
12
+
10
13
  FILING_VERSIONS = ["8.0", "7.0", "6.4", "6.3", "6.2", "6.1",
11
14
  "5.3", "5.2", "5.1", "5.0", "3"]
12
- BASE_ROW_TYPES = ["HDR", "F1", "F13", "F132", "F133", "F1M", "F1S", "F2", "F24", "F3", "F3L", "F3P", "F3P31", "F3PS",
13
- "F3S", "F3X", "F4", "F5", "F56", "F57", "F6", "F65", "F7", "F76", "F9", "F91", "F92", "F93",
15
+ BASE_ROW_TYPES = ["HDR", "F1", "F13", "F132", "F133", "F1M", "F1S", "F2", "F24", "F3", "F3L", "F3P", "F3P31", "F3PS",
16
+ "F3S", "F3X", "F3Z", "F4", "F5", "F56", "F57", "F6", "F65", "F7", "F76", "F9", "F91", "F92", "F93",
14
17
  "F94", "F99", "H1", "H2", "H3", "H4", "H5", "H6",
15
- "SchA", "SchB", "SchC", "SchC1", "SchC2", "SchD", "SchE", "SchF", "SchL", "TEXT"]
18
+ "SchA", "SchA3L", "SchB", "SchC", "SchC1", "SchC2", "SchD", "SchE", "SchF", "SchL", "TEXT"]
16
19
  ROW_TYPE_MATCHERS = {
17
20
  "HDR" => FechUtils::ROW_TYPES[:hdr],
18
21
  "F1" => FechUtils::ROW_TYPES[:f1],
@@ -30,6 +33,7 @@ module Fech
30
33
  "F3P31" => FechUtils::ROW_TYPES[:f3p31],
31
34
  "F3PS" => FechUtils::ROW_TYPES[:f3ps],
32
35
  "F3X" => FechUtils::ROW_TYPES[:f3x],
36
+ "F3Z" => FechUtils::ROW_TYPES[:f3z],
33
37
  "F4" => FechUtils::ROW_TYPES[:f4],
34
38
  "F5" => FechUtils::ROW_TYPES[:f5],
35
39
  "F56" => FechUtils::ROW_TYPES[:f56],
@@ -51,6 +55,7 @@ module Fech
51
55
  "H5" => FechUtils::ROW_TYPES[:h5],
52
56
  "H6" => FechUtils::ROW_TYPES[:h6],
53
57
  "SchA" => FechUtils::ROW_TYPES[:sa],
58
+ "SchA3L" => FechUtils::ROW_TYPES[:sa3l],
54
59
  "SchB" => FechUtils::ROW_TYPES[:sb],
55
60
  "SchC" => FechUtils::ROW_TYPES[:sc],
56
61
  "SchC1" => FechUtils::ROW_TYPES[:sc1],
@@ -61,15 +66,15 @@ module Fech
61
66
  "SchL" => FechUtils::ROW_TYPES[:sl],
62
67
  "TEXT" => FechUtils::ROW_TYPES[:text],
63
68
  }
64
-
69
+
65
70
  # Goes through all version header summary files and generates
66
71
  # row map files for each type of row inside them.
67
72
  def self.convert_header_file_to_row_files(source_dir)
68
73
  data = {}
69
74
  hybrid_data = {}
70
-
75
+
71
76
  ignored_fields = File.open(ignored_fields_file(source_dir)).readlines.map { |l| l.strip }
72
-
77
+
73
78
  # Create a hash of data with an entry for each row type found in the source
74
79
  # version summary files. Each row has an entry for each version map that
75
80
  # exists for it. If maps for two different versions are identical, they
@@ -101,12 +106,12 @@ module Fech
101
106
  data[row.first][version] = row_version_data
102
107
  data[row.first].each do |k, v|
103
108
  # skip the row we just added
104
-
109
+
105
110
  next if k == version
106
111
  if v == row_version_data
107
112
  # Create the new hybrid entry
108
113
  hybrid_data[row.first]["#{k}|#{version}"] = row_version_data
109
-
114
+
110
115
  # Delete the old entry, and the one for this version only
111
116
  data[row.first].delete(k)
112
117
  data[row.first].delete(version)
@@ -115,7 +120,7 @@ module Fech
115
120
  data[row.first].update(hybrid_data[row.first])
116
121
  end
117
122
  end
118
-
123
+
119
124
  # Go through each row type and create a base map management file that
120
125
  # will serve as a template for organizing which fields are the same
121
126
  # between versions. This file will need to then be arranged by hand to
@@ -126,18 +131,18 @@ module Fech
126
131
  next unless File.exists?(file_path)
127
132
  File.open(file_path, 'w') do |f|
128
133
  f.write('canonical')
129
-
134
+
130
135
  to_transpose = []
131
136
  row_data.sort.reverse.each do |version, version_data|
132
137
  to_transpose << ["^#{version}", version_data.each_with_index.collect {|x, idx| idx+1}].flatten
133
138
  to_transpose << [nil, version_data].flatten
134
139
  end
135
-
140
+
136
141
  # standardize row size
137
142
  max_size = to_transpose.max { |r1, r2| r1.size <=> r2.size }.size
138
143
  to_transpose.each { |r| r[max_size - 1] ||= nil }
139
144
  transposed = to_transpose.transpose
140
-
145
+
141
146
  transposed.each do |transposed_data|
142
147
  transposed_data.collect! {|x| x.to_s.gsub(/\r/, ' ')}
143
148
  canonical = transposed_data[1] # first description
@@ -152,7 +157,7 @@ module Fech
152
157
  end
153
158
 
154
159
  end
155
-
160
+
156
161
  # Generates the mapping for each row type in BASE_ROW_TYPES, writes them out
157
162
  # to file for inclusion in the gem.
158
163
  def self.dump_row_maps_to_ruby(source_dir, file_path)
@@ -194,44 +199,44 @@ module Fech
194
199
  row.each_with_index {|x, ind| version_indexes << ind unless (x.nil? || x.empty?)}.slice!(1)
195
200
  version_indexes.slice!(0, 1)
196
201
  versions.each {|x| data[x] = [] }
197
-
202
+
198
203
  elsif row.first.size > 0
199
204
  canonical = row.first
200
-
205
+
201
206
  versions.zip(version_indexes).each do |version, row_index|
202
207
  index = row[row_index]
203
208
  data[version][index.to_i - 1] = canonical.to_sym if index.to_i > 0
204
209
  end
205
210
  end
206
211
  end
207
-
212
+
208
213
  row_map = {}
209
214
  data.each {|key, value| row_map[key] = value}
210
215
  row_map
211
216
  end
212
-
217
+
213
218
  # Remove both the row type from the beginning of the row,
214
219
  # and any fields marked as "ignore" in sources/headers/ignore.csv
215
220
  def self.remove_ignored_fields(row, ignore)
216
221
  data = row[1..-1].compact # strip off the row type
217
222
  data.reject { |f| ignore.include?(f) }
218
223
  end
219
-
224
+
220
225
  def self.row_map_file(source_dir, row_type)
221
226
  File.join(source_dir, row_type + '.csv')
222
227
  end
223
-
228
+
224
229
  def self.ignored_fields_file(source_dir)
225
230
  File.join(source_dir, 'headers', 'ignore.csv')
226
231
  end
227
-
232
+
228
233
  def self.version_summary_file(source_dir, version)
229
234
  File.join(source_dir, 'headers', version + '.csv')
230
235
  end
231
-
236
+
232
237
  def self.write_row_map_file(source_dir, row_type)
233
238
  File.join(source_dir, 'rows', row_type + '.csv')
234
239
  end
235
-
240
+
236
241
  end
237
242
  end
@@ -50,10 +50,10 @@ module Fech
50
50
  '^3' => [:form_type, :filer_committee_id_number, :committee_name, :street_1, :street_2, :city, :state, :zip_code, nil, :date_signed],
51
51
  },
52
52
  "^f3[a|n|t]" => {
53
- '^8.1|8.0|7.0|6.4' => [:form_type, :filer_committee_id_number, :committee_name, :change_of_address, :street_1, :street_2, :city, :state, :zip_code, :election_state, :election_district, :report_code, :election_code, :election_date, :state_of_election, :coverage_from_date, :coverage_through_date, :treasurer_last_name, :treasurer_first_name, :treasurer_middle_name, :treasurer_prefix, :treasurer_suffix, :date_signed, :col_a_total_contributions_no_loans, :col_a_total_contributions_refunds, :col_a_net_contributions, :col_a_total_operating_expenditures, :col_a_total_offset_to_operating_expenditures, :col_a_net_operating_expenditures, :col_a_cash_on_hand_close_of_period, :col_a_debts_to, :col_a_debts_by, :col_a_individual_contributions_itemized, :col_a_individual_contributions_unitemized, :col_a_total_individual_contributions, :col_a_political_party_contributions, :col_a_pac_contributions, :col_a_candidate_contributions, :col_a_total_contributions, :col_a_transfers_from_authorized, :col_a_candidate_loans, :col_a_other_loans, :col_a_total_loans, :col_a_offset_to_operating_expenditures, :col_a_other_receipts, :col_a_total_receipts, :col_a_operating_expenditures, :col_a_transfers_to_authorized, :col_a_candidate_loan_repayments, :col_a_other_loan_repayments, :col_a_total_loan_repayments, :col_a_refunds_to_individuals, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_refunds, :col_a_other_disbursements, :col_a_total_disbursements, :col_a_cash_beginning_reporting_period, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_disbursements_period, :col_a_cash_on_hand_close, :col_b_total_contributions_no_loans, :col_b_total_contributions_refunds, :col_b_net_contributions, :col_b_total_operating_expenditures, :col_b_total_offset_to_operating_expenditures, :col_b_net_operating_expenditures, :col_b_individual_contributions_itemized, :col_b_individual_contributions_unitemized, :col_b_total_individual_contributions, :col_b_political_party_contributions, :col_b_pac_contributions, :col_b_candidate_contributions, :col_b_total_contributions, :col_b_transfers_from_authorized, :col_b_candidate_loans, :col_b_other_loans, :col_b_total_loans, :col_b_offset_to_operating_expenditures, :col_b_other_receipts, :col_b_total_receipts, :col_b_operating_expenditures, :col_b_transfers_to_authorized, :col_b_candidate_loan_repayments, :col_b_other_loan_repayments, :col_b_total_loan_repayments, :col_b_refunds_to_individuals, :col_b_refunds_to_party_committees, :col_b_refunds_to_other_committees, :col_b_total_refunds, :col_b_other_disbursements, :col_b_total_disbursements],
54
- '^6.3|6.2|6.1' => [:form_type, :filer_committee_id_number, :committee_name, :change_of_address, :street_1, :street_2, :city, :state, :zip_code, :election_state, :election_district, :election_date, :election_code, nil, :state_of_election, :coverage_from_date, :coverage_through_date, :treasurer_last_name, :treasurer_first_name, :treasurer_middle_name, :treasurer_prefix, :treasurer_suffix, :date_signed, :candidate_id_number, :candidate_last_name, :candidate_first_name, :candidate_middle_name, :candidate_prefix, :candidate_suffix, :report_type, :col_a_total_contributions_no_loans, :col_a_total_contributions_refunds, :col_a_net_contributions, :col_a_total_operating_expenditures, :col_a_total_offset_to_operating_expenditures, :col_a_net_operating_expenditures, :col_a_cash_on_hand_close_of_period, :col_a_debts_to, :col_a_debts_by, :col_a_individual_contributions_itemized, :col_a_individual_contributions_unitemized, :col_a_total_individual_contributions, :col_a_political_party_contributions, :col_a_pac_contributions, :col_a_candidate_contributions, :col_a_total_contributions, :col_a_transfers_from_authorized, :col_a_candidate_loans, :col_a_other_loans, :col_a_total_loans, :col_a_offset_to_operating_expenditures, :col_a_other_receipts, :col_a_total_receipts, :col_a_operating_expenditures, :col_a_transfers_to_authorized, :col_a_candidate_loan_repayments, nil, :col_a_total_loan_repayments, :col_a_refunds_to_individuals, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_refunds, :col_a_other_disbursements, :col_a_total_disbursements, :col_a_cash_beginning_reporting_period, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_disbursements_period, :col_a_cash_on_hand_close, :col_b_total_contributions_no_loans, :col_b_total_contributions_refunds, :col_b_net_contributions, :col_b_total_operating_expenditures, :col_b_total_offset_to_operating_expenditures, :col_b_net_operating_expenditures, :col_b_individual_contributions_itemized, :col_b_individual_contributions_unitemized, :col_b_total_individual_contributions, :col_b_political_party_contributions, :col_b_pac_contributions, :col_b_candidate_contributions, :col_b_total_contributions, :col_b_transfers_from_authorized, :col_b_candidate_loans, :col_b_other_loans, :col_b_total_loans, :col_b_offset_to_operating_expenditures, :col_b_other_receipts, :col_b_total_receipts, :col_b_operating_expenditures, :col_b_transfers_to_authorized, :col_b_candidate_loan_repayments, nil, :col_b_total_loan_repayments, :col_b_refunds_to_individuals, nil, nil, :col_b_total_refunds, :col_b_other_disbursements, :col_b_total_disbursements, :col_b_gross_receipts_authorized_primary, :col_b_aggregate_personal_funds_primary, :col_b_gross_receipts_minus_personal_funds_primary, :col_b_gross_receipts_authorized_general, :col_b_aggregate_personal_funds_general, :col_b_gross_receipts_minus_personal_funds_general],
55
- '^5.3|5.2|5.1|5.0' => [:form_type, :filer_committee_id_number, :committee_name, :street_1, :street_2, :city, :state, :zip_code, :change_of_address, :election_state, :election_district, :report_code, :election_code, :election_date, :state_of_election, :primary_election, :general_election, :special_election, :runoff_election, :coverage_from_date, :coverage_through_date, :col_a_total_contributions_no_loans, :col_a_total_contributions_refunds, :col_a_net_contributions, :col_a_total_operating_expenditures, :col_a_total_offset_to_operating_expenditures, :col_a_net_operating_expenditures, :col_a_cash_on_hand_close_of_period, :col_a_debts_to, :col_a_debts_by, :col_a_individual_contributions_itemized, :col_a_individual_contributions_unitemized, :col_a_total_individual_contributions, :col_a_political_party_contributions, :col_a_pac_contributions, :col_a_candidate_contributions, :col_a_total_contributions, :col_a_transfers_from_authorized, :col_a_candidate_loans, :col_a_other_loans, :col_a_total_loans, :col_a_offset_to_operating_expenditures, :col_a_other_receipts, :col_a_total_receipts, :col_a_operating_expenditures, :col_a_transfers_to_authorized, :col_a_candidate_loan_repayments, nil, :col_a_total_loan_repayments, :col_a_refunds_to_individuals, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_refunds, :col_a_other_disbursements, :col_a_total_disbursements, :col_a_cash_beginning_reporting_period, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_disbursements_period, :col_a_cash_on_hand_close, :col_b_total_contributions_no_loans, :col_b_total_contributions_refunds, :col_b_net_contributions, :col_b_total_operating_expenditures, :col_b_total_offset_to_operating_expenditures, :col_b_net_operating_expenditures, :col_b_individual_contributions_itemized, :col_b_individual_contributions_unitemized, :col_b_total_individual_contributions, :col_b_political_party_contributions, :col_b_pac_contributions, :col_b_candidate_contributions, :col_b_total_contributions, :col_b_transfers_from_authorized, :col_b_candidate_loans, :col_b_other_loans, :col_b_total_loans, :col_b_offset_to_operating_expenditures, :col_b_other_receipts, :col_b_total_receipts, :col_b_operating_expenditures, :col_b_transfers_to_authorized, :col_b_candidate_loan_repayments, nil, :col_b_total_loan_repayments, :col_b_refunds_to_individuals, nil, nil, :col_b_total_refunds, :col_b_other_disbursements, :col_b_total_disbursements, :treasurer_name, :date_signed, :candidate_id_number, :candidate_name, :report_type, :col_b_gross_receipts_authorized_primary, :col_b_aggregate_personal_funds_primary, :col_b_gross_receipts_minus_personal_funds_primary, :col_b_gross_receipts_authorized_general, :col_b_aggregate_personal_funds_general, :col_b_gross_receipts_minus_personal_funds_general],
56
- '^3.0' => [:form_type, :filer_committee_id_number, :committee_name, :street_1, :street_2, :city, :state, :zip_code, :change_of_address, :election_state, :election_district, :report_code, :election_code, :election_date, :state_of_election, :primary_election, :general_election, :special_election, :runoff_election, :coverage_from_date, :coverage_through_date, :col_a_total_contributions_no_loans, :col_a_total_contributions_refunds, :col_a_net_contributions, :col_a_total_operating_expenditures, :col_a_total_offset_to_operating_expenditures, :col_a_net_operating_expenditures, :col_a_cash_on_hand_close_of_period, :col_a_debts_to, :col_a_debts_by, :col_a_individual_contributions_itemized, :col_a_individual_contributions_unitemized, :col_a_total_individual_contributions, :col_a_political_party_contributions, :col_a_pac_contributions, :col_a_candidate_contributions, :col_a_total_contributions, :col_a_transfers_from_authorized, :col_a_candidate_loans, :col_a_other_loans, :col_a_total_loans, :col_a_offset_to_operating_expenditures, :col_a_other_receipts, :col_a_total_receipts, :col_a_operating_expenditures, :col_a_transfers_to_authorized, :col_a_candidate_loan_repayments, :col_a_other_loan_repayments, :col_a_total_loan_repayments, :col_a_refunds_to_individuals, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_refunds, :col_a_other_disbursements, :col_a_total_disbursements, :col_a_cash_beginning_reporting_period, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_disbursements_period, :col_a_cash_on_hand_close, :col_b_total_contributions_no_loans, :col_b_total_contributions_refunds, :col_b_net_contributions, :col_b_total_operating_expenditures, :col_b_total_offset_to_operating_expenditures, :col_b_net_operating_expenditures, :col_b_individual_contributions_itemized, :col_b_individual_contributions_unitemized, :col_b_total_individual_contributions, :col_b_political_party_contributions, :col_b_pac_contributions, :col_b_candidate_contributions, :col_b_total_contributions, :col_b_transfers_from_authorized, :col_b_candidate_loans, :col_b_other_loans, :col_b_total_loans, :col_b_offset_to_operating_expenditures, :col_b_other_receipts, :col_b_total_receipts, :col_b_operating_expenditures, :col_b_transfers_to_authorized, :col_b_candidate_loan_repayments, :col_b_other_loan_repayments, :col_b_total_loan_repayments, :col_b_refunds_to_individuals, :col_b_refunds_to_party_committees, :col_b_refunds_to_other_committees, :col_b_total_refunds, :col_b_other_disbursements, :col_b_total_disbursements, :treasurer_name, :date_signed],
53
+ '^8.1|8.0|7.0|6.4' => [:form_type, :filer_committee_id_number, :committee_name, :change_of_address, :street_1, :street_2, :city, :state, :zip_code, :election_state, :election_district, :report_code, :election_code, :election_date, :state_of_election, :coverage_from_date, :coverage_through_date, :treasurer_last_name, :treasurer_first_name, :treasurer_middle_name, :treasurer_prefix, :treasurer_suffix, :date_signed, :col_a_total_contributions_no_loans, :col_a_total_contributions_refunds, :col_a_net_contributions, :col_a_total_operating_expenditures, :col_a_total_offset_to_operating_expenditures, :col_a_net_operating_expenditures, :col_a_cash_on_hand_close_of_period, :col_a_debts_to, :col_a_debts_by, :col_a_individual_contributions_itemized, :col_a_individual_contributions_unitemized, :col_a_total_individual_contributions, :col_a_political_party_contributions, :col_a_pac_contributions, :col_a_candidate_contributions, :col_a_total_contributions, :col_a_transfers_from_authorized, :col_a_candidate_loans, :col_a_other_loans, :col_a_total_loans, :col_a_offset_to_operating_expenditures, :col_a_other_receipts, :col_a_total_receipts, :col_a_operating_expenditures, :col_a_transfers_to_authorized, :col_a_candidate_loan_repayments, :col_a_other_loan_repayments, :col_a_total_loan_repayments, :col_a_refunds_to_individuals, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_refunds, :col_a_other_disbursements, :col_a_total_disbursements, :col_a_cash_beginning_reporting_period, :col_a_total_receipts_period, :col_a_subtotals, :col_a_total_disbursements_period, :col_a_cash_on_hand_close, :col_b_total_contributions_no_loans, :col_b_total_contributions_refunds, :col_b_net_contributions, :col_b_total_operating_expenditures, :col_b_total_offset_to_operating_expenditures, :col_b_net_operating_expenditures, :col_b_individual_contributions_itemized, :col_b_individual_contributions_unitemized, :col_b_total_individual_contributions, :col_b_political_party_contributions, :col_b_pac_contributions, :col_b_candidate_contributions, :col_b_total_contributions, :col_b_transfers_from_authorized, :col_b_candidate_loans, :col_b_other_loans, :col_b_total_loans, :col_b_offset_to_operating_expenditures, :col_b_other_receipts, :col_b_total_receipts, :col_b_operating_expenditures, :col_b_transfers_to_authorized, :col_b_candidate_loan_repayments, :col_b_other_loan_repayments, :col_b_total_loan_repayments, :col_b_refunds_to_individuals, :col_b_refunds_to_party_committees, :col_b_refunds_to_other_committees, :col_b_total_refunds, :col_b_other_disbursements, :col_b_total_disbursements],
54
+ '^6.3|6.2|6.1' => [:form_type, :filer_committee_id_number, :committee_name, :change_of_address, :street_1, :street_2, :city, :state, :zip_code, :election_state, :election_district, :election_date, :election_code, nil, :state_of_election, :coverage_from_date, :coverage_through_date, :treasurer_last_name, :treasurer_first_name, :treasurer_middle_name, :treasurer_prefix, :treasurer_suffix, :date_signed, :candidate_id_number, :candidate_last_name, :candidate_first_name, :candidate_middle_name, :candidate_prefix, :candidate_suffix, :report_type, :col_a_total_contributions_no_loans, :col_a_total_contributions_refunds, :col_a_net_contributions, :col_a_total_operating_expenditures, :col_a_total_offset_to_operating_expenditures, :col_a_net_operating_expenditures, :col_a_cash_on_hand_close_of_period, :col_a_debts_to, :col_a_debts_by, :col_a_individual_contributions_itemized, :col_a_individual_contributions_unitemized, :col_a_total_individual_contributions, :col_a_political_party_contributions, :col_a_pac_contributions, :col_a_candidate_contributions, :col_a_total_contributions, :col_a_transfers_from_authorized, :col_a_candidate_loans, :col_a_other_loans, :col_a_total_loans, :col_a_offset_to_operating_expenditures, :col_a_other_receipts, :col_a_total_receipts, :col_a_operating_expenditures, :col_a_transfers_to_authorized, :col_a_candidate_loan_repayments, nil, :col_a_total_loan_repayments, :col_a_refunds_to_individuals, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_refunds, :col_a_other_disbursements, :col_a_total_disbursements, :col_a_cash_beginning_reporting_period, :col_a_total_receipts_period, :col_a_subtotals, :col_a_total_disbursements_period, :col_a_cash_on_hand_close, :col_b_total_contributions_no_loans, :col_b_total_contributions_refunds, :col_b_net_contributions, :col_b_total_operating_expenditures, :col_b_total_offset_to_operating_expenditures, :col_b_net_operating_expenditures, :col_b_individual_contributions_itemized, :col_b_individual_contributions_unitemized, :col_b_total_individual_contributions, :col_b_political_party_contributions, :col_b_pac_contributions, :col_b_candidate_contributions, :col_b_total_contributions, :col_b_transfers_from_authorized, :col_b_candidate_loans, :col_b_other_loans, :col_b_total_loans, :col_b_offset_to_operating_expenditures, :col_b_other_receipts, :col_b_total_receipts, :col_b_operating_expenditures, :col_b_transfers_to_authorized, :col_b_candidate_loan_repayments, nil, :col_b_total_loan_repayments, :col_b_refunds_to_individuals, nil, nil, :col_b_total_refunds, :col_b_other_disbursements, :col_b_total_disbursements, :col_b_gross_receipts_authorized_primary, :col_b_aggregate_personal_funds_primary, :col_b_gross_receipts_minus_personal_funds_primary, :col_b_gross_receipts_authorized_general, :col_b_aggregate_personal_funds_general, :col_b_gross_receipts_minus_personal_funds_general],
55
+ '^5.3|5.2|5.1|5.0' => [:form_type, :filer_committee_id_number, :committee_name, :street_1, :street_2, :city, :state, :zip_code, :change_of_address, :election_state, :election_district, :report_code, :election_code, :election_date, :state_of_election, :primary_election, :general_election, :special_election, :runoff_election, :coverage_from_date, :coverage_through_date, :col_a_total_contributions_no_loans, :col_a_total_contributions_refunds, :col_a_net_contributions, :col_a_total_operating_expenditures, :col_a_total_offset_to_operating_expenditures, :col_a_net_operating_expenditures, :col_a_cash_on_hand_close_of_period, :col_a_debts_to, :col_a_debts_by, :col_a_individual_contributions_itemized, :col_a_individual_contributions_unitemized, :col_a_total_individual_contributions, :col_a_political_party_contributions, :col_a_pac_contributions, :col_a_candidate_contributions, :col_a_total_contributions, :col_a_transfers_from_authorized, :col_a_candidate_loans, :col_a_other_loans, :col_a_total_loans, :col_a_offset_to_operating_expenditures, :col_a_other_receipts, :col_a_total_receipts, :col_a_operating_expenditures, :col_a_transfers_to_authorized, :col_a_candidate_loan_repayments, nil, :col_a_total_loan_repayments, :col_a_refunds_to_individuals, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_refunds, :col_a_other_disbursements, :col_a_total_disbursements, :col_a_cash_beginning_reporting_period, :col_a_total_receipts_period, :col_a_subtotals, :col_a_total_disbursements_period, :col_a_cash_on_hand_close, :col_b_total_contributions_no_loans, :col_b_total_contributions_refunds, :col_b_net_contributions, :col_b_total_operating_expenditures, :col_b_total_offset_to_operating_expenditures, :col_b_net_operating_expenditures, :col_b_individual_contributions_itemized, :col_b_individual_contributions_unitemized, :col_b_total_individual_contributions, :col_b_political_party_contributions, :col_b_pac_contributions, :col_b_candidate_contributions, :col_b_total_contributions, :col_b_transfers_from_authorized, :col_b_candidate_loans, :col_b_other_loans, :col_b_total_loans, :col_b_offset_to_operating_expenditures, :col_b_other_receipts, :col_b_total_receipts, :col_b_operating_expenditures, :col_b_transfers_to_authorized, :col_b_candidate_loan_repayments, nil, :col_b_total_loan_repayments, :col_b_refunds_to_individuals, nil, nil, :col_b_total_refunds, :col_b_other_disbursements, :col_b_total_disbursements, :treasurer_name, :date_signed, :candidate_id_number, :candidate_name, :report_type, :col_b_gross_receipts_authorized_primary, :col_b_aggregate_personal_funds_primary, :col_b_gross_receipts_minus_personal_funds_primary, :col_b_gross_receipts_authorized_general, :col_b_aggregate_personal_funds_general, :col_b_gross_receipts_minus_personal_funds_general],
56
+ '^3.0' => [:form_type, :filer_committee_id_number, :committee_name, :street_1, :street_2, :city, :state, :zip_code, :change_of_address, :election_state, :election_district, :report_code, :election_code, :election_date, :state_of_election, :primary_election, :general_election, :special_election, :runoff_election, :coverage_from_date, :coverage_through_date, :col_a_total_contributions_no_loans, :col_a_total_contributions_refunds, :col_a_net_contributions, :col_a_total_operating_expenditures, :col_a_total_offset_to_operating_expenditures, :col_a_net_operating_expenditures, :col_a_cash_on_hand_close_of_period, :col_a_debts_to, :col_a_debts_by, :col_a_individual_contributions_itemized, :col_a_individual_contributions_unitemized, :col_a_total_individual_contributions, :col_a_political_party_contributions, :col_a_pac_contributions, :col_a_candidate_contributions, :col_a_total_contributions, :col_a_transfers_from_authorized, :col_a_candidate_loans, :col_a_other_loans, :col_a_total_loans, :col_a_offset_to_operating_expenditures, :col_a_other_receipts, :col_a_total_receipts, :col_a_operating_expenditures, :col_a_transfers_to_authorized, :col_a_candidate_loan_repayments, :col_a_other_loan_repayments, :col_a_total_loan_repayments, :col_a_refunds_to_individuals, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_refunds, :col_a_other_disbursements, :col_a_total_disbursements, :col_a_cash_beginning_reporting_period, :col_a_total_receipts_period, :col_a_subtotals, :col_a_total_disbursements_period, :col_a_cash_on_hand_close, :col_b_total_contributions_no_loans, :col_b_total_contributions_refunds, :col_b_net_contributions, :col_b_total_operating_expenditures, :col_b_total_offset_to_operating_expenditures, :col_b_net_operating_expenditures, :col_b_individual_contributions_itemized, :col_b_individual_contributions_unitemized, :col_b_total_individual_contributions, :col_b_political_party_contributions, :col_b_pac_contributions, :col_b_candidate_contributions, :col_b_total_contributions, :col_b_transfers_from_authorized, :col_b_candidate_loans, :col_b_other_loans, :col_b_total_loans, :col_b_offset_to_operating_expenditures, :col_b_other_receipts, :col_b_total_receipts, :col_b_operating_expenditures, :col_b_transfers_to_authorized, :col_b_candidate_loan_repayments, :col_b_other_loan_repayments, :col_b_total_loan_repayments, :col_b_refunds_to_individuals, :col_b_refunds_to_party_committees, :col_b_refunds_to_other_committees, :col_b_total_refunds, :col_b_other_disbursements, :col_b_total_disbursements, :treasurer_name, :date_signed],
57
57
  },
58
58
  "^f3l[a|n]" => {
59
59
  '^8.1|8.0|7.0|6.4' => [:form_type, :filer_committee_id_number, :committee_name, :change_of_address, :street_1, :street_2, :city, :state, :zip_code, :election_state, :election_district, :report_code, :election_date, nil, :semi_annual_period, :coverage_from_date, :coverage_through_date, :semi_annual_period_jan_june, :semi_annual_period_jul_dec, :quarterly_monthly_bundled_contributions, :semi_annual_bundled_contributions, :treasurer_last_name, :treasurer_first_name, :treasurer_middle_name, :treasurer_prefix, :treasurer_suffix, :date_signed],
@@ -83,6 +83,9 @@ module Fech
83
83
  '^5.3|5.2|5.1|5.0' => [:form_type, :filer_committee_id_number, :committee_name, :street_1, :street_2, :city, :state, :zip_code, :change_of_address, :qualified_committee, :report_code, :election_code, :date_of_election, :state_of_election, :coverage_from_date, :coverage_through_date, :col_a_cash_on_hand_beginning_period, :col_a_total_receipts, :col_b_cash_on_hand_jan_1, :col_a_total_disbursements, :col_a_cash_on_hand_close_of_period, :col_a_debts_to, :col_a_debts_by, :col_a_individuals_itemized, :col_a_individuals_unitemized, :col_a_individual_contribution_total, :col_a_political_party_committees, :col_a_other_political_committees_pacs, :col_a_total_contributions, :col_a_transfers_from_aff_other_party_cmttees, :col_a_total_loans, :col_a_total_loan_repayments_received, :col_a_offsets_to_expenditures, :col_a_total_contributions_refunds, :col_a_other_federal_receipts, :col_a_transfers_from_nonfederal_h3, :col_a_total_receipts, :col_a_total_federal_receipts, :col_a_shared_operating_expenditures_federal, :col_a_shared_operating_expenditures_nonfederal, :col_a_other_federal_operating_expenditures, :col_a_total_operating_expenditures, :col_a_transfers_to_affiliated, :col_a_contributions_to_candidates, :col_a_independent_expenditures, :col_a_coordinated_expenditures_by_party_committees, :col_a_total_loan_repayments_made, :col_a_loans_made, :col_a_refunds_to_individuals, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_refunds, :col_a_other_disbursements, :col_a_total_disbursements, :col_a_total_federal_disbursements, :col_a_total_contributions, :col_a_total_contributions_refunds, :col_a_net_contributions, :col_a_total_federal_operating_expenditures, :col_a_total_offsets_to_expenditures, :col_a_net_operating_expenditures, nil, :col_b_year, :col_b_total_receipts, :col_b_subtotal, :col_b_total_disbursements, :col_b_cash_on_hand_close_of_period, :col_b_individuals_itemized, :col_b_individuals_unitemized, :col_b_individual_contribution_total, :col_b_political_party_committees, :col_b_other_political_committees_pacs, :col_b_total_contributions, :col_b_transfers_from_aff_other_party_cmttees, :col_b_total_loans, :col_b_total_loan_repayments_received, :col_b_offsets_to_expenditures, :col_b_total_contributions_refunds, :col_b_other_federal_receipts, :col_b_transfers_from_nonfederal_h3, :col_b_total_receipts, :col_b_total_federal_receipts, :col_b_shared_operating_expenditures_federal, :col_b_shared_operating_expenditures_nonfederal, :col_b_other_federal_operating_expenditures, :col_b_total_operating_expenditures, :col_b_transfers_to_affiliated, :col_b_contributions_to_candidates, :col_b_independent_expenditures, :col_b_coordinated_expenditures_by_party_committees, :col_b_total_loan_repayments_made, :col_b_loans_made, :col_b_refunds_to_individuals, :col_b_refunds_to_party_committees, :col_b_refunds_to_other_committees, :col_b_total_refunds, :col_b_other_disbursements, :col_b_total_disbursements, :col_b_total_federal_disbursements, :col_b_total_contributions, :col_b_total_contributions_refunds, :col_b_net_contributions, :col_b_total_federal_operating_expenditures, :col_b_total_offsets_to_expenditures, :col_b_net_operating_expenditures, :treasurer_name, :date_signed, :col_a_levin_funds, :col_a_total_nonfederal_transfers, :col_a_federal_election_activity_federal_share, :col_a_federal_election_activity_levin_share, :col_a_federal_election_activity_all_federal, :col_a_federal_election_activity_total, :col_b_levin_funds, :col_b_total_nonfederal_transfers, :col_b_federal_election_activity_federal_share, :col_b_federal_election_activity_levin_share, :col_b_federal_election_activity_all_federal, :col_b_federal_election_activity_total],
84
84
  '^3' => [:form_type, :filer_committee_id_number, :committee_name, :street_1, :street_2, :col_b_cash_on_hand_jan_1, :state, :zip_code, :change_of_address, :qualified_committee, :report_code, :election_code, :date_of_election, :state_of_election, :coverage_from_date, :coverage_through_date, :col_a_cash_on_hand_beginning_period, :col_a_total_receipts, :col_a_subtotal, :col_a_total_disbursements, :col_a_cash_on_hand_close_of_period, :col_a_debts_to, :col_a_debts_by, :col_a_individuals_itemized, :col_a_individuals_unitemized, :col_a_individual_contribution_total, :col_a_political_party_committees, :col_a_other_political_committees_pacs, :col_a_total_contributions, :col_a_transfers_from_aff_other_party_cmttees, :col_a_total_loans, :col_a_total_loan_repayments_received, :col_a_offsets_to_expenditures, :col_a_total_contributions_refunds, :col_a_other_federal_receipts, :col_a_transfers_from_nonfederal_h3, :col_a_total_receipts, :col_a_total_federal_receipts, :col_a_shared_operating_expenditures_federal, :col_a_shared_operating_expenditures_nonfederal, :col_a_other_federal_operating_expenditures, :col_a_total_operating_expenditures, :col_a_transfers_to_affiliated, :col_a_contributions_to_candidates, :col_a_independent_expenditures, :col_a_coordinated_expenditures_by_party_committees, :col_a_total_loan_repayments_made, :col_a_loans_made, :col_a_refunds_to_individuals, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_refunds, :col_a_other_disbursements, :col_a_total_disbursements, :col_a_total_federal_disbursements, :col_a_total_contributions, :col_a_total_contributions_refunds, :col_a_net_contributions, :col_a_total_federal_operating_expenditures, :col_a_total_offsets_to_expenditures, :col_a_net_operating_expenditures, nil, :col_b_year, :col_b_total_receipts, :col_b_subtotal, :col_b_total_disbursements, :col_b_cash_on_hand_close_of_period, :col_b_individuals_itemized, :col_b_individuals_unitemized, :col_b_individual_contribution_total, :col_b_political_party_committees, :col_b_other_political_committees_pacs, :col_b_total_contributions, :col_b_transfers_from_aff_other_party_cmttees, :col_b_total_loans, :col_b_total_loan_repayments_received, :col_b_offsets_to_expenditures, :col_b_total_contributions_refunds, :col_b_other_federal_receipts, :col_b_transfers_from_nonfederal_h3, :col_b_total_receipts, :col_b_total_federal_receipts, :col_b_shared_operating_expenditures_federal, :col_b_shared_operating_expenditures_nonfederal, :col_b_other_federal_operating_expenditures, :col_b_total_operating_expenditures, :col_b_transfers_to_affiliated, :col_b_contributions_to_candidates, :col_b_independent_expenditures, :col_b_coordinated_expenditures_by_party_committees, :col_b_total_loan_repayments_made, :col_b_loans_made, :col_b_refunds_to_individuals, :col_b_refunds_to_party_committees, :col_b_refunds_to_other_committees, :col_b_total_refunds, :col_b_other_disbursements, :col_b_total_disbursements, :col_b_total_federal_disbursements, :col_b_total_contributions, :col_b_total_contributions_refunds, :col_b_net_contributions, :col_b_total_federal_operating_expenditures, :col_b_total_offsets_to_expenditures, :col_b_net_operating_expenditures, :treasurer_name, :date_signed],
85
85
  },
86
+ "^f3z[t]" => {
87
+ '^8.1|8.0|7.0|6.4' => [:form_type, :filer_committee_id_number, :principal_committee_name, :coverage_from_date, :coverage_through_date, :authorized_committee_id_number, :authorized_committee_name, :col_a_individual_contributions_itemized, :col_a_political_party_contributions, :col_a_pac_contributions, :col_a_candidate_contributions, :col_a_total_contributions, :col_a_transfers_from_authorized, :col_a_candidate_loans, :col_a_other_loans, :col_a_total_loans, :col_a_offset_to_operating_expenditures, :col_a_other_receipts, :col_a_total_receipts, :col_a_operating_expenditures, :col_a_transfers_to_authorized, :col_a_candidate_loan_repayments, :col_a_other_loan_repayments, :col_a_total_loan_repayments, :col_a_refunds_to_individuals, :col_a_refunds_to_party_committees, :col_a_refunds_to_other_committees, :col_a_total_refunds, :col_a_other_disbursements, :col_a_total_disbursements, :col_a_cash_beginning_reporting_period, :col_a_cash_on_hand_close, :col_a_debts_to, :col_a_debts_by, :col_a_net_contributions, :col_a_net_operating_expenditures],
88
+ },
86
89
  "^f4[na]" => {
87
90
  '^8.1|8.0|7.0|6.4|6.3|6.2|6.1' => [:form_type, :filer_committee_id_number, :committee_name, :street_1, :street_2, :city, :state, :zip_code, :committee_type, :committee_type_description, :report_code, :coverage_from_date, :coverage_through_date, :treasurer_last_name, :treasurer_first_name, :treasurer_middle_name, :treasurer_prefix, :treasurer_suffix, :date_signed, :col_a_cash_on_hand_beginning_reporting_period, :col_a_total_receipts, :col_a_subtotal, :col_a_total_disbursements, :col_a_cash_on_hand_close_of_period, :col_a_debts_to, :col_a_debts_by, :col_a_convention_expenditures, :col_a_convention_refunds, :col_a_expenditures_subject_to_limits, :col_a_prior_expenditures_subject_to_limits, :col_a_federal_funds, :col_a_contributions_itemized, :col_a_contributions_unitemized, :col_a_contributions_subtotal, :col_b_transfers_from_affiliated, :col_a_loans_received, :col_a_loan_repayments_received, :col_a_loan_receipts_subtotal, :col_a_convention_refunds_itemized, :col_a_convention_refunds_unitemized, :col_a_convention_refunds_subtotal, :col_a_other_refunds_itemized, :col_a_other_refunds_unitemized, :col_a_other_refunds_subtotal, :col_a_other_income_itemized, :col_a_other_income_unitemized, :col_a_other_income_subtotal, :col_a_total_receipts, :col_a_convention_expenses_itemized, :col_a_convention_expenses_unitemized, :col_a_convention_expenses_subtotal, :col_a_transfers_to_affiliated, :col_a_loans_made, :col_a_loan_repayments_made, :col_a_loan_disbursements_subtotal, :col_a_other_disbursements_itemized, :col_a_other_disbursements_unitemized, :col_a_other_disbursements_subtotal, :col_a_total_disbursements, :col_b_cash_on_hand_beginning_year, :col_b_beginning_year, :col_b_total_receipts, :col_b_subtotal, :col_b_total_disbursements, :col_b_cash_on_hand_close_of_period, :col_b_convention_expenditures, :col_b_convention_refunds, :col_b_expenditures_subject_to_limits, :col_b_prior_expendiutres_subject_to_limits, :col_b_total_expenditures_subject_to_limits, :col_b_federal_funds, :col_b_contributions_subtotal, :col_b_transfers_from_affiliated, :col_b_loan_receipts_subtotal, :col_b_convention_refunds_subtotal, :col_b_other_refunds_subtotal, :col_b_other_income_subtotal, :col_b_total_receipts, :col_b_convention_expenses_subtotal, :col_b_transfers_to_affiliated, :col_b_loan_disbursements_subtotal, :col_b_other_disbursements_subtotal, :col_b_total_disbursements],
88
91
  '^5.3|5.2|5.1|5.0|3' => [:form_type, :filer_committee_id_number, :committee_name, :street_1, :street_2, :city, :state, :zip_code, :committee_type, :committee_type_description, :report_code, :coverage_from_date, :coverage_through_date, :col_a_cash_on_hand_beginning_reporting_period, :col_a_total_receipts, :col_a_subtotal, :col_a_total_disbursements, :col_a_cash_on_hand_close_of_period, :col_a_debts_to, :col_a_debts_by, :col_a_convention_expenditures, :col_a_convention_refunds, :col_a_expenditures_subject_to_limits, :col_a_prior_expenditures_subject_to_limits, :col_a_total_expenditures_subject_to_limits, :col_a_federal_funds, :col_a_contributions_itemized, :col_a_contributions_unitemized, :col_a_contributions_subtotal, :col_b_transfers_from_affiliated, :col_a_loans_received, :col_a_loan_repayments_received, :col_a_loan_receipts_subtotal, :col_a_convention_refunds_itemized, :col_a_convention_refunds_unitemized, :col_a_convention_refunds_subtotal, :col_a_other_refunds_itemized, :col_a_other_refunds_unitemized, :col_a_other_refunds_subtotal, :col_a_other_income_itemized, :col_a_other_income_unitemized, :col_a_other_income_subtotal, :col_a_total_receipts, :col_a_convention_expenses_itemized, :col_a_convention_expenses_unitemized, :col_a_convention_expenses_subtotal, :col_a_transfers_to_affiliated, :col_a_loans_made, :col_a_loan_repayments_made, :col_a_loan_disbursements_subtotal, :col_a_other_disbursements_itemized, :col_a_other_disbursements_unitemized, :col_a_other_disbursements_subtotal, :col_a_total_disbursements, :col_b_cash_on_hand_beginning_year, :col_b_beginning_year, :col_b_total_receipts, :col_b_subtotal, :col_b_total_disbursements, :col_b_cash_on_hand_close_of_period, :col_b_convention_expenditures, :col_b_convention_refunds, :col_b_expenditures_subject_to_limits, :col_b_prior_expendiutres_subject_to_limits, :col_b_total_expenditures_subject_to_limits, :col_b_federal_funds, :col_b_contributions_subtotal, :col_b_transfers_from_affiliated, :col_b_loan_receipts_subtotal, :col_b_convention_refunds_subtotal, :col_b_other_refunds_subtotal, :col_b_other_income_subtotal, :col_b_total_receipts, :col_b_convention_expenses_subtotal, :col_b_transfers_to_affiliated, :col_b_loan_disbursements_subtotal, :col_b_other_disbursements_subtotal, :col_b_total_disbursements, :treasurer_name, :date_signed],
@@ -195,6 +198,10 @@ module Fech
195
198
  '^5.0' => [:form_type, :filer_committee_id_number, :entity_type, :contributor_name, :contributor_street_1, :contributor_street_2, :contributor_city, :contributor_state, :contributor_zip_code, :election_code, :election_other_description, :contributor_employer, :contributor_occupation, :contribution_aggregate, :contribution_date, :contribution_amount, :contribution_purpose_code, :contribution_purpose_descrip, :donor_committee_fec_id, :donor_candidate_fec_id, :donor_candidate_name, :donor_candidate_office, :donor_candidate_state, :donor_candidate_district, :conduit_name, :conduit_street1, :conduit_street2, :conduit_city, :conduit_state, :conduit_zip_code, :memo_code, :memo_text_description, nil, :transaction_id, :back_reference_tran_id_number, :back_reference_sched_name, :reference_code, :increased_limit_code],
196
199
  '^3' => [:form_type, :filer_committee_id_number, :entity_type, :contributor_name, :contributor_street_1, :contributor_street_2, :contributor_city, :contributor_state, :contributor_zip_code, :election_code, :election_other_description, :contributor_employer, :contributor_occupation, :contribution_aggregate, :contribution_date, :contribution_amount, :contribution_purpose_code, :contribution_purpose_descrip, :donor_committee_fec_id, :donor_candidate_fec_id, :donor_candidate_name, :donor_candidate_office, :donor_candidate_state, :donor_candidate_district, :conduit_name, :conduit_street1, :conduit_street2, :conduit_city, :conduit_state, :conduit_zip_code, :memo_code, :memo_text_description, nil, :transaction_id, :back_reference_tran_id_number, :back_reference_sched_name, :reference_code],
197
200
  },
201
+ "^sa3l" => {
202
+ '^8.1|8.0' => [:form_type, :filer_committee_id_number, :transaction_id, :back_reference_tran_id_number, :back_reference_sched_name, :entity_type, :lobbyist_registrant_organization_name, :lobbyist_registrant_last_name, :lobbyist_registrant_first_name, :lobbyist_registrant_middle_name, :lobbyist_registrant_prefix, :lobbyist_registrant_suffix, :lobbyist_registrant_street_1, :lobbyist_registrant_street_2, :lobbyist_registrant_city, :lobbyist_registrant_state, :lobbyist_registrant_zip_code, :election_code, :election_other_description, :contribution_date, :bundled_amount_period, :bundled_amount_semi_annual, :contribution_purpose_descrip, :lobbyist_registrant_employer, :lobbyist_registrant_occupation, :donor_committee_fec_id, :donor_committee_name, :donor_candidate_fec_id, :donor_candidate_last_name, :donor_candidate_first_name, :donor_candidate_middle_name, :donor_candidate_prefix, :donor_candidate_suffix, :donor_candidate_office, :donor_candidate_state, :donor_candidate_district, :conduit_name, :conduit_street1, :conduit_street2, :conduit_city, :conduit_state, :conduit_zip_code, :associated_text_record, :memo_text, :reference_code],
203
+ '^7.0|6.4' => [:form_type, :filer_committee_id_number, :transaction_id, :back_reference_tran_id_number, :back_reference_sched_name, :entity_type, :lobbyist_registrant_organization_name, :lobbyist_registrant_last_name, :lobbyist_registrant_first_name, :lobbyist_registrant_middle_name, :lobbyist_registrant_prefix, :lobbyist_registrant_suffix, :lobbyist_registrant_street_1, :lobbyist_registrant_street_2, :lobbyist_registrant_city, :lobbyist_registrant_state, :lobbyist_registrant_zip_code, :election_code, :election_other_description, :contribution_date, :bundled_amount_period, :bundled_amount_semi_annual, :contribution_purpose_code, :contribution_purpose_descrip, :lobbyist_registrant_employer, :lobbyist_registrant_occupation, :donor_committee_fec_id, :donor_committee_name, :donor_candidate_fec_id, :donor_candidate_last_name, :donor_candidate_first_name, :donor_candidate_middle_name, :donor_candidate_prefix, :donor_candidate_suffix, :donor_candidate_office, :donor_candidate_state, :donor_candidate_district, :conduit_name, :conduit_street1, :conduit_street2, :conduit_city, :conduit_state, :conduit_zip_code, :associated_text_record, :memo_text, :reference_code],
204
+ },
198
205
  "^sb" => {
199
206
  '^8.1|8.0' => [:form_type, :filer_committee_id_number, :transaction_id_number, :back_reference_tran_id_number, :back_reference_sched_name, :entity_type, :payee_organization_name, :payee_last_name, :payee_first_name, :payee_middle_name, :payee_prefix, :payee_suffix, :payee_street_1, :payee_street_2, :payee_city, :payee_state, :payee_zip_code, :election_code, :election_other_description, :expenditure_date, :expenditure_amount, :semi_annual_refunded_bundled_amt, :expenditure_purpose_descrip, :category_code, :beneficiary_committee_fec_id, :beneficiary_committee_name, :beneficiary_candidate_fec_id, :beneficiary_candidate_last_name, :beneficiary_candidate_first_name, :beneficiary_candidate_middle_name, :beneficiary_candidate_prefix, :beneficiary_candidate_suffix, :beneficiary_candidate_office, :beneficiary_candidate_state, :beneficiary_candidate_district, :conduit_name, :conduit_street_1, :conduit_street_2, :conduit_city, :conduit_state, :conduit_zip_code, :memo_code, :memo_text_description, :reference_to_si_or_sl_system_code_that_identifies_the_account],
200
207
  '^7.0|6.4' => [:form_type, :filer_committee_id_number, :transaction_id_number, :back_reference_tran_id_number, :back_reference_sched_name, :entity_type, :payee_organization_name, :payee_last_name, :payee_first_name, :payee_middle_name, :payee_prefix, :payee_suffix, :payee_street_1, :payee_street_2, :payee_city, :payee_state, :payee_zip_code, :election_code, :election_other_description, :expenditure_date, :expenditure_amount, :semi_annual_refunded_bundled_amt, :expenditure_purpose_code, :expenditure_purpose_descrip, :category_code, :beneficiary_committee_fec_id, :beneficiary_committee_name, :beneficiary_candidate_fec_id, :beneficiary_candidate_last_name, :beneficiary_candidate_first_name, :beneficiary_candidate_middle_name, :beneficiary_candidate_prefix, :beneficiary_candidate_suffix, :beneficiary_candidate_office, :beneficiary_candidate_state, :beneficiary_candidate_district, :conduit_name, :conduit_street_1, :conduit_street_2, :conduit_city, :conduit_state, :conduit_zip_code, :memo_code, :memo_text_description, :reference_to_si_or_sl_system_code_that_identifies_the_account],
data/lib/fech/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Fech
2
- VERSION = "1.6.4"
2
+ VERSION = "1.7"
3
3
  end
data/sources/F3.csv CHANGED
@@ -1 +1 @@
1
- canonical,^8.1|8.0|7.0|6.4,,^6.3|6.2|6.1,,^5.3|5.2|5.1|5.0,,^3.0,
1
+ canonical,^8.1|8.0|7.0|6.4,,^6.3|6.2|6.1,,^5.3|5.2|5.1|5.0,,^3.0,
data/sources/F3Z.csv ADDED
@@ -0,0 +1 @@
1
+ canonical,^8.1|8.0|7.0|6.4,
@@ -0,0 +1 @@
1
+ canonical,^8.1|8.0,,^7.0|6.4,
data/spec/filing_spec.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Fech::Filing do
4
-
4
+
5
5
  before do
6
6
  @filing = Fech::Filing.new(723604)
7
7
  @filing.stubs(:file_path).returns(File.join(File.dirname(__FILE__), 'data', '723604.fec'))
@@ -28,9 +28,9 @@ describe Fech::Filing do
28
28
  @filing_f99 = Fech::Filing.new(862554)
29
29
  @filing_f99.stubs(:file_path).returns(File.join(File.dirname(__FILE__), 'data', '862554.fec'))
30
30
  end
31
-
31
+
32
32
  describe "#filing_version" do
33
-
33
+
34
34
  it "should return the correct filing version" do
35
35
  @filing.send(:filing_version).should == "7.0"
36
36
  @filing8.send(:filing_version).should == "8.0"
@@ -39,28 +39,28 @@ describe Fech::Filing do
39
39
  @filing_f3.send(:filing_version).should == "5.00"
40
40
  @filing_special_character.send(:filing_version).should == "8.0"
41
41
  end
42
-
42
+
43
43
  it "should parse the file only once" do
44
44
  @filing.expects(:parse_filing_version).once.returns("7.0")
45
45
  @filing.send(:filing_version)
46
46
  @filing.send(:filing_version)
47
47
  end
48
-
48
+
49
49
  end
50
-
50
+
51
51
  describe ".hash_zip" do
52
-
52
+
53
53
  it "should zip the given keys and values into a hash" do
54
54
  @filing = Fech::Filing.new(723604)
55
55
  keys = [:one,:three,:two]
56
56
  values = [1, 3, 2]
57
57
  @filing.hash_zip(keys, values).should == {:one => 1, :two => 2, :three => 3}
58
58
  end
59
-
59
+
60
60
  end
61
-
61
+
62
62
  describe "#summary" do
63
-
63
+
64
64
  it "should return the mapped summary row" do
65
65
  sum = @filing.summary
66
66
  sum.should be_a_kind_of(Hash)
@@ -78,37 +78,37 @@ describe Fech::Filing do
78
78
  sum_f1m = @filing_f1m.summary
79
79
  sum_f1m[:form_type].should == "F1MA"
80
80
  sum_f7 = @filing_f7.summary
81
- sum_f7[:form_type].should == 'F7N'
81
+ sum_f7[:form_type].should == 'F7N'
82
82
  sum_f13 = @filing_f13.summary
83
83
  sum_f13[:form_type].should == 'F13N'
84
84
  sum_filing_special_character = @filing_special_character.summary
85
85
  sum_filing_special_character[:form_type].should == "F3XN"
86
86
  end
87
87
  end
88
-
88
+
89
89
  describe "#mappings" do
90
-
90
+
91
91
  it "should create a new Mappings instance with correct version" do
92
92
  @filing.send(:mappings).version.should == "7.0"
93
93
  end
94
-
94
+
95
95
  it "should memoize itself" do
96
96
  mapping = Fech::Mappings.new
97
97
  Fech::Mappings.expects(:new).once.returns(mapping)
98
98
  @filing.send(:mappings)
99
99
  @filing.send(:mappings)
100
100
  end
101
-
101
+
102
102
  end
103
-
103
+
104
104
  describe 'miscelleanous filings' do
105
105
  it "should handle invalid encoding" do
106
- @filing_f99.rows_like(/f99/).first.should_not raise_error
106
+ expect{@filing_f99.rows_like(/f99/).first}.to_not raise_error
107
107
  end
108
108
  end
109
-
109
+
110
110
  describe "#rows_like" do
111
-
111
+
112
112
  it "should return only rows matching the specified regex" do
113
113
  @filing.rows_like(/^sa/).size.should == 1
114
114
  @filing.rows_like(/^s/).size.should == 2
@@ -122,60 +122,60 @@ describe Fech::Filing do
122
122
  @filing_f7.rows_like(/^f76/).size.should == 2
123
123
  @filing_special_character.rows_like(/^sa/).size.should == 13
124
124
  end
125
-
125
+
126
126
  it "should return an array if no block is given" do
127
127
  @filing.rows_like(/^s/).class.should == Array
128
128
  end
129
-
129
+
130
130
  it "should return empty array if no matches found" do
131
131
  @filing.rows_like(/^sc/).should == []
132
132
  end
133
-
133
+
134
134
  it "should yield hashes of row values if passed a block" do
135
135
  @filing.rows_like(/^sa/) do |c|
136
136
  c.should be_a_kind_of(Hash)
137
137
  end
138
138
  end
139
-
139
+
140
140
  it "should allow case-insensitive string input" do
141
141
  @filing.rows_like("Sa17a").size.should be > 0
142
142
  end
143
-
143
+
144
144
  end
145
-
145
+
146
146
  describe "#parse_row?" do
147
-
147
+
148
148
  before do
149
149
  f = open(@filing.file_path, 'r')
150
150
  f.readline
151
151
  @row = f.readline.split(@filing.delimiter)
152
152
  f.close
153
153
  end
154
-
154
+
155
155
  it "should return the mapped row" do
156
156
  @filing.send(:parse_row?, @row).should be_a_kind_of(Hash)
157
157
  end
158
-
158
+
159
159
  describe "when :parse_if is specified" do
160
-
160
+
161
161
  it "should return the mapped row if :parse_if matches row type" do
162
162
  @filing.send(:parse_row?, @row, {:parse_if => /^f3p/}).should be_a_kind_of(Hash)
163
163
  end
164
-
164
+
165
165
  it "should return false if row was skipped" do
166
166
  @filing.send(:parse_row?, @row, {:parse_if => /^sa/}).should == false
167
167
  end
168
-
168
+
169
169
  end
170
-
170
+
171
171
  it "should return the raw row data if :raw is true" do
172
172
  @filing.send(:parse_row?, @row, {:raw => true}).class.should == Array
173
173
  end
174
-
174
+
175
175
  end
176
-
176
+
177
177
  describe "#map_for" do
178
-
178
+
179
179
  it "should return the correct map for given row type" do
180
180
  map = @filing.map_for(/sa/)
181
181
  map.class.should == Array
@@ -185,32 +185,32 @@ describe Fech::Filing do
185
185
  map_pac = @filing_pac.map_for(/f3x/)
186
186
  map_pac[15].should == :qualified_committee
187
187
  end
188
-
188
+
189
189
  it "should raise error if no map is found" do
190
190
  lambda { @filing.map_for(/sz/) }.should raise_error
191
191
  lambda { @filing_pac.map_for(/sz/) }.should raise_error
192
192
  end
193
-
193
+
194
194
  end
195
-
195
+
196
196
  describe ".map_for" do
197
-
197
+
198
198
  it "should return the correct map for given row type" do
199
199
  map = Fech::Filing.map_for(/sa/)
200
200
  map.class.should == Array
201
201
  map.first.should == :form_type
202
202
  end
203
-
203
+
204
204
  it "should raise error if no map is found" do
205
205
  lambda { Fech::Filing.map_for(/sz/) }.should raise_error
206
206
  end
207
-
207
+
208
208
  it "should allow choice of version" do
209
209
  v7 = Fech::Filing.map_for(/sa/, :version => 7.0)
210
210
  v6 = Fech::Filing.map_for(/sa/, :version => 6.1)
211
211
  v6.should_not == v7
212
212
  end
213
-
213
+
214
214
  end
215
215
 
216
216
  describe "#translator" do
@@ -244,9 +244,9 @@ describe Fech::Filing do
244
244
  end
245
245
 
246
246
  end
247
-
247
+
248
248
  describe "#map" do
249
-
249
+
250
250
  before do
251
251
  f = open(@filing.file_path, 'r')
252
252
  f.readline
@@ -266,23 +266,23 @@ describe Fech::Filing do
266
266
  @sa11_row = f_pac.readline.split(@filing_pac.delimiter)
267
267
  f_pac.close
268
268
  end
269
-
269
+
270
270
  it "should map the data in row to named values according to row_map" do
271
271
  row_map = @filing.send(:mappings).for_row(@sa_row.first)
272
272
  mapped = @filing.send(:map, @sa_row)
273
273
  mapped.should be_a_kind_of(Hash)
274
-
274
+
275
275
  mapped[:form_type].should == "SA17A"
276
276
  mapped[:contributor_state].should == "SC"
277
277
 
278
278
  row_map_ie = @filing_ie.send(:mappings).for_row(@se_row.first)
279
279
  mapped_ie = @filing_ie.send(:map, @se_row)
280
280
  mapped_ie.should be_a_kind_of(Hash)
281
-
281
+
282
282
  mapped_ie[:form_type].should == "SE"
283
283
  mapped_ie[:candidate_id_number].should == "P00003608"
284
284
  end
285
-
285
+
286
286
  it "should perform conversion translations" do
287
287
  row_map = @filing.send(:mappings).for_row(@sa_row.first)
288
288
  @filing.translate do |t|
@@ -293,7 +293,7 @@ describe Fech::Filing do
293
293
  mapped = @filing.send(:map, @sa_row)
294
294
  mapped[:contribution_date].should == Date.parse("20110322")
295
295
  end
296
-
296
+
297
297
  it "should perform combination translations" do
298
298
  @filing.translate do |t|
299
299
  t.combine(:row => @f3p_row.first, :field => :net_individual_contributions) do |row|
@@ -303,7 +303,7 @@ describe Fech::Filing do
303
303
  mapped = @filing.send(:map, @f3p_row)
304
304
  mapped[:net_individual_contributions].should == mapped[:col_a_17_a_iii_individual_contribution_total].to_f - mapped[:col_a_28_a_individuals].to_f
305
305
  end
306
-
306
+
307
307
  it "should return only field asked for if :include was specified" do
308
308
  fields = [:form_type, :filer_committee_id_number, :transaction_id]
309
309
  mapped = @filing.send(:map, @sa_row, :include => fields)
@@ -312,53 +312,53 @@ describe Fech::Filing do
312
312
  end
313
313
  mapped.size.should == 3
314
314
  end
315
-
315
+
316
316
  end
317
-
317
+
318
318
  describe "amendments" do
319
-
319
+
320
320
  before do
321
321
  @filing = Fech::Filing.new(723604)
322
322
  @filing.stubs(:file_path).returns(File.join(File.dirname(__FILE__), 'data', '723604.fec'))
323
323
  end
324
-
324
+
325
325
  describe "for non-amending filings" do
326
-
326
+
327
327
  describe "#amendment?" do
328
328
  it "should return false" do
329
329
  @filing.stubs(:header).returns({:report_id => nil})
330
330
  @filing.amendment?.should == false
331
331
  end
332
332
  end
333
-
333
+
334
334
  end
335
-
335
+
336
336
  describe "#amends" do
337
-
337
+
338
338
  it "should return nil for filings without a report_id in HDR" do
339
339
  @filing.stubs(:header).returns({:report_id => nil})
340
340
  @filing.amends.should == nil
341
341
  end
342
-
342
+
343
343
  it "should return a filing_id for filings with a report_id in HDR" do
344
344
  @filing.stubs(:header).returns({:report_id => "723603"})
345
345
  @filing.amends.should == "723603"
346
346
  end
347
-
347
+
348
348
  end
349
-
349
+
350
350
  describe "#amendment?" do
351
-
351
+
352
352
  it "should return false for filings without a report_id in HDR" do
353
353
  @filing.stubs(:header).returns({:report_id => nil})
354
354
  @filing.amendment?.should == false
355
355
  end
356
-
356
+
357
357
  it "should return true for filings with a report_id in HDR" do
358
358
  @filing.stubs(:header).returns({:report_id => "723603"})
359
359
  @filing.amendment?.should == true
360
360
  end
361
-
361
+
362
362
  end
363
363
  end
364
364
  end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,4 @@
1
1
  require 'rubygems'
2
- require 'bundler/setup'
3
-
4
- require 'rspec'
5
2
  require 'fech'
6
3
 
7
4
  RSpec.configure do |config|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fech
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.4
4
+ version: '1.7'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Strickland
@@ -11,146 +11,146 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-03-11 00:00:00.000000000 Z
14
+ date: 2015-03-28 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: fastercsv
18
18
  requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
- - - '>='
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - '>='
27
+ - - ">="
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: people
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - '>='
34
+ - - ">="
35
35
  - !ruby/object:Gem::Version
36
36
  version: '0'
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - '>='
41
+ - - ">="
42
42
  - !ruby/object:Gem::Version
43
43
  version: '0'
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: ensure-encoding
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - '>='
48
+ - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: '0'
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - '>='
55
+ - - ">="
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0'
58
58
  - !ruby/object:Gem::Dependency
59
- name: debugger
59
+ name: byebug
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
- - - '='
62
+ - - ">="
63
63
  - !ruby/object:Gem::Version
64
- version: 1.4.0
64
+ version: '0'
65
65
  type: :development
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
- - - '='
69
+ - - ">="
70
70
  - !ruby/object:Gem::Version
71
- version: 1.4.0
71
+ version: '0'
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: rake
74
74
  requirement: !ruby/object:Gem::Requirement
75
75
  requirements:
76
- - - '>='
76
+ - - ">="
77
77
  - !ruby/object:Gem::Version
78
78
  version: '0'
79
79
  type: :development
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
- - - '>='
83
+ - - ">="
84
84
  - !ruby/object:Gem::Version
85
85
  version: '0'
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: rspec
88
88
  requirement: !ruby/object:Gem::Requirement
89
89
  requirements:
90
- - - ~>
90
+ - - ">="
91
91
  - !ruby/object:Gem::Version
92
- version: '2.6'
92
+ version: '0'
93
93
  type: :development
94
94
  prerelease: false
95
95
  version_requirements: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - ~>
97
+ - - ">="
98
98
  - !ruby/object:Gem::Version
99
- version: '2.6'
99
+ version: '0'
100
100
  - !ruby/object:Gem::Dependency
101
101
  name: mocha
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - '>='
104
+ - - ">="
105
105
  - !ruby/object:Gem::Version
106
106
  version: '0'
107
107
  type: :development
108
108
  prerelease: false
109
109
  version_requirements: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - '>='
111
+ - - ">="
112
112
  - !ruby/object:Gem::Version
113
113
  version: '0'
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: bundler
116
116
  requirement: !ruby/object:Gem::Requirement
117
117
  requirements:
118
- - - '>='
118
+ - - ">="
119
119
  - !ruby/object:Gem::Version
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
123
  version_requirements: !ruby/object:Gem::Requirement
124
124
  requirements:
125
- - - '>='
125
+ - - ">="
126
126
  - !ruby/object:Gem::Version
127
127
  version: '0'
128
128
  - !ruby/object:Gem::Dependency
129
129
  name: rdoc
130
130
  requirement: !ruby/object:Gem::Requirement
131
131
  requirements:
132
- - - '>='
132
+ - - ">="
133
133
  - !ruby/object:Gem::Version
134
134
  version: '0'
135
135
  type: :development
136
136
  prerelease: false
137
137
  version_requirements: !ruby/object:Gem::Requirement
138
138
  requirements:
139
- - - '>='
139
+ - - ">="
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0'
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: yard
144
144
  requirement: !ruby/object:Gem::Requirement
145
145
  requirements:
146
- - - '>='
146
+ - - ">="
147
147
  - !ruby/object:Gem::Version
148
148
  version: '0'
149
149
  type: :development
150
150
  prerelease: false
151
151
  version_requirements: !ruby/object:Gem::Requirement
152
152
  requirements:
153
- - - '>='
153
+ - - ">="
154
154
  - !ruby/object:Gem::Version
155
155
  version: '0'
156
156
  description: A Ruby library for interacting with electronic filings from the Federal
@@ -161,8 +161,8 @@ executables: []
161
161
  extensions: []
162
162
  extra_rdoc_files: []
163
163
  files:
164
- - .gitignore
165
- - .rspec
164
+ - ".gitignore"
165
+ - ".rspec"
166
166
  - CHANGELOG
167
167
  - Gemfile
168
168
  - Gemfile.lock
@@ -199,6 +199,7 @@ files:
199
199
  - sources/F3PS.csv
200
200
  - sources/F3S.csv
201
201
  - sources/F3X.csv
202
+ - sources/F3Z.csv
202
203
  - sources/F4.csv
203
204
  - sources/F5.csv
204
205
  - sources/F56.csv
@@ -221,6 +222,7 @@ files:
221
222
  - sources/H6.csv
222
223
  - sources/HDR.csv
223
224
  - sources/SchA.csv
225
+ - sources/SchA3L.csv
224
226
  - sources/SchB.csv
225
227
  - sources/SchC.csv
226
228
  - sources/SchC1.csv
@@ -298,18 +300,19 @@ require_paths:
298
300
  - lib
299
301
  required_ruby_version: !ruby/object:Gem::Requirement
300
302
  requirements:
301
- - - '>='
303
+ - - ">="
302
304
  - !ruby/object:Gem::Version
303
305
  version: '0'
304
306
  required_rubygems_version: !ruby/object:Gem::Requirement
305
307
  requirements:
306
- - - '>='
308
+ - - ">="
307
309
  - !ruby/object:Gem::Version
308
310
  version: '0'
309
311
  requirements: []
310
312
  rubyforge_project: fech
311
- rubygems_version: 2.2.0
313
+ rubygems_version: 2.2.2
312
314
  signing_key:
313
315
  specification_version: 4
314
316
  summary: Ruby library for parsing FEC filings.
315
317
  test_files: []
318
+ has_rdoc: