hdo-storting-importer 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -1
- data/features/support/env.rb +4 -0
- data/hdo-storting-importer.gemspec +1 -0
- data/lib/hdo/storting_importer/promise.rb +14 -41
- data/lib/hdo/storting_importer/schema/promise.json +3 -1
- data/lib/hdo/storting_importer/version.rb +1 -1
- data/spec/hdo/storting_importer/promise_spec.rb +3 -38
- data/spec/spec_helper.rb +5 -1
- metadata +18 -2
data/.gitignore
CHANGED
data/features/support/env.rb
CHANGED
@@ -16,45 +16,21 @@ module Hdo
|
|
16
16
|
schema_path StortingImporter.lib.join("hdo/storting_importer/schema/promise.json").to_s
|
17
17
|
|
18
18
|
def self.example
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
new(
|
20
|
+
"1",
|
21
|
+
"H",
|
22
|
+
"Stille strengere krav til orden og oppførsel for å hindre at uro ødelegger undervisningen.",
|
23
|
+
true,
|
24
|
+
["GRUNNSKOLE"],
|
25
|
+
"PP",
|
26
|
+
8
|
27
|
+
)
|
23
28
|
end
|
24
29
|
|
25
30
|
def self.json_example
|
26
31
|
Util.json_pretty example
|
27
32
|
end
|
28
33
|
|
29
|
-
def self.from_csv(str)
|
30
|
-
# cleanup
|
31
|
-
str.gsub!(/\bFrp\b/, "FrP")
|
32
|
-
str.gsub!(/\bKrf\b/, "KrF")
|
33
|
-
str.gsub!(/\bSP\b/, "Sp")
|
34
|
-
|
35
|
-
rows = CSV.parse(
|
36
|
-
str,
|
37
|
-
headers: [:party, :body, :general, :categories, :source, :page],
|
38
|
-
col_sep: ";",
|
39
|
-
skip_blanks: true,
|
40
|
-
return_headers: false,
|
41
|
-
)
|
42
|
-
|
43
|
-
rows.map do |e|
|
44
|
-
pr = e.to_hash
|
45
|
-
next if pr[:party].to_s.strip == "Parti" # header row
|
46
|
-
|
47
|
-
new(
|
48
|
-
pr[:party].to_s.strip,
|
49
|
-
pr[:body].to_s.strip,
|
50
|
-
pr[:general].to_s.downcase == 'ja',
|
51
|
-
pr[:categories].to_s.split(","),
|
52
|
-
pr[:source].to_s.strip,
|
53
|
-
pr[:page].to_s.strip
|
54
|
-
)
|
55
|
-
end.compact
|
56
|
-
end
|
57
|
-
|
58
34
|
# doesn't really belong here - data source?
|
59
35
|
def self.from_fusion_table(table_id, api_key)
|
60
36
|
table = FusionTable.new(api_key)
|
@@ -75,32 +51,31 @@ module Hdo
|
|
75
51
|
end
|
76
52
|
|
77
53
|
def self.from_hash(hash)
|
78
|
-
pr = new hash['
|
54
|
+
pr = new hash['externalId'],
|
55
|
+
hash['party'],
|
79
56
|
hash['body'],
|
80
57
|
hash['general'],
|
81
58
|
hash['categories'],
|
82
59
|
hash['source'],
|
83
60
|
hash['page']
|
84
61
|
|
85
|
-
pr.external_id = hash['externalId']
|
86
|
-
|
87
62
|
pr
|
88
63
|
end
|
89
64
|
|
90
|
-
def initialize(party, body, general, categories, source, page)
|
65
|
+
def initialize(external_id, party, body, general, categories, source, page)
|
66
|
+
@external_id = external_id
|
91
67
|
@party = strip_if_string(party)
|
92
68
|
@body = strip_if_string(body)
|
93
69
|
@general = general
|
94
70
|
@categories = clean_categories(categories)
|
95
71
|
@source = strip_if_string(source)
|
96
72
|
@page = page
|
97
|
-
|
98
|
-
@external_id = nil
|
99
73
|
end
|
100
74
|
|
101
75
|
def to_hash
|
102
76
|
h = {
|
103
77
|
'kind' => self.class.kind,
|
78
|
+
'externalId' => @external_id,
|
104
79
|
'party' => @party,
|
105
80
|
'general' => @general,
|
106
81
|
'categories' => @categories,
|
@@ -109,8 +84,6 @@ module Hdo
|
|
109
84
|
'body' => @body
|
110
85
|
}
|
111
86
|
|
112
|
-
h["externalId"] = @external_id if @external_id
|
113
|
-
|
114
87
|
h
|
115
88
|
end
|
116
89
|
|
@@ -8,34 +8,6 @@ module Hdo
|
|
8
8
|
it_behaves_like 'type with JSON schema'
|
9
9
|
it_behaves_like 'type with #short_inspect'
|
10
10
|
|
11
|
-
it 'builds promises from CSV' do
|
12
|
-
csv = <<-CSV
|
13
|
-
Parti;Løftetekst;Generell;Emner;Kilde;Side
|
14
|
-
A;Ha et inntektspolitisk samarbeid og en økonomisk politikk som sikrer arbeid til alle. ;Ja;LØNN , SYSSELSETTING;PP;10
|
15
|
-
A;Følge handlingsregelen for en forsvarlig bruk av oljepenger.;Ja;FINANSER;PP;10
|
16
|
-
A;Bruke penger slik at det bidrar til å utjevne svingninger i økonomien.;Ja;FINANSER;PP;10
|
17
|
-
A;Sette ned et utvalg som skal gjennomgå årsakene til finanskrisen.;Nei;FINANSER;PP;10
|
18
|
-
A;Gjennomføre de tiltak som er nødvendig for å sikre et stabilt og fungerende finansmarked.;Ja;FINANSER;PP;10
|
19
|
-
A;Stille etiske krav til forvaltning av statlig kapital. ;Ja;FINANSER;PP;10
|
20
|
-
A;Holde de samlede skattene og avgiftene på samme nivå som i dag.;Nei;SKATTER;PP;10
|
21
|
-
A;Ha en grundig evaluering av skattereformen av 2006, med særlig blikk på fordelingsvirkningene. ;Ja;SKATTER;PP;10
|
22
|
-
A;Opprettholde formueskatten, men gjøre den mer rettferdig.;Ja;SKATTER;PP;10
|
23
|
-
CSV
|
24
|
-
|
25
|
-
|
26
|
-
promises = Promise.from_csv(csv)
|
27
|
-
|
28
|
-
promises.size.should == 9
|
29
|
-
|
30
|
-
prom = promises.first
|
31
|
-
prom.party.should == 'A'
|
32
|
-
prom.body.should == 'Ha et inntektspolitisk samarbeid og en økonomisk politikk som sikrer arbeid til alle.'
|
33
|
-
prom.general.should be_true
|
34
|
-
prom.categories.should == %w[LØNN SYSSELSETTING]
|
35
|
-
prom.source.should == "PP"
|
36
|
-
prom.page.should == '10'
|
37
|
-
end
|
38
|
-
|
39
11
|
it 'serializes to JSON' do
|
40
12
|
Promise.example.to_json.should be_json <<-JSON
|
41
13
|
{
|
@@ -51,25 +23,18 @@ module Hdo
|
|
51
23
|
JSON
|
52
24
|
end
|
53
25
|
|
54
|
-
it 'deserializes from JSON with externalId missing' do
|
55
|
-
pr = Promise.example
|
56
|
-
pr.external_id = nil
|
57
|
-
|
58
|
-
Promise.from_json(pr.to_json).should be_kind_of(Promise)
|
59
|
-
end
|
60
|
-
|
61
26
|
it 'strips trailing space from the body' do
|
62
|
-
promise = Promise.new("Party", "Body ", true, ["æøå"], "PP", 8)
|
27
|
+
promise = Promise.new("1", "Party", "Body ", true, ["æøå"], "PP", 8)
|
63
28
|
promise.body.should == "Body"
|
64
29
|
end
|
65
30
|
|
66
31
|
it 'correctly upcases non-ASCII category names' do
|
67
|
-
promise = Promise.new("Party", "Body", true, ["æøå"], "PP", 8)
|
32
|
+
promise = Promise.new("1", "Party", "Body", true, ["æøå"], "PP", 8)
|
68
33
|
promise.categories.should == ["ÆØÅ"]
|
69
34
|
end
|
70
35
|
|
71
36
|
it 'ignores empty categories' do
|
72
|
-
promise = Promise.new("Party", "Body", true, ["FOO", ""], "PP", 8)
|
37
|
+
promise = Promise.new("1", "Party", "Body", true, ["FOO", ""], "PP", 8)
|
73
38
|
promise.categories.should == ["FOO"]
|
74
39
|
end
|
75
40
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
require 'rspec'
|
2
|
-
require 'hdo/storting_importer'
|
3
2
|
require 'pry'
|
4
3
|
require 'pp'
|
5
4
|
|
5
|
+
require 'simplecov'
|
6
|
+
SimpleCov.start
|
7
|
+
SimpleCov.command_name 'spec'
|
8
|
+
|
9
|
+
require 'hdo/storting_importer'
|
6
10
|
Dir[File.expand_path("../support/**/*.rb", __FILE__)].each do |f|
|
7
11
|
require f
|
8
12
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hdo-storting-importer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: builder
|
@@ -219,6 +219,22 @@ dependencies:
|
|
219
219
|
- - ! '>='
|
220
220
|
- !ruby/object:Gem::Version
|
221
221
|
version: '0'
|
222
|
+
- !ruby/object:Gem::Dependency
|
223
|
+
name: simplecov
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
225
|
+
none: false
|
226
|
+
requirements:
|
227
|
+
- - ! '>='
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
none: false
|
234
|
+
requirements:
|
235
|
+
- - ! '>='
|
236
|
+
- !ruby/object:Gem::Version
|
237
|
+
version: '0'
|
222
238
|
description: Gem to process data from data.stortinget.no
|
223
239
|
email:
|
224
240
|
- jari.bakken@gmail.com
|