sie 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +5 -2
- data/lib/sie/document/renderer.rb +7 -2
- data/lib/sie/document.rb +11 -13
- data/lib/sie/version.rb +1 -1
- data/spec/unit/document/renderer_spec.rb +13 -0
- data/spec/unit/document_spec.rb +12 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MTZiMGU5Y2JlZWE3MjJkMDIxZGQ1NzQwNjlmZDRmZDk1YTYxMTk5Ng==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MTQzMTQ5ZTliZTc5NzA5ZGE5MWViNThkZjE1OTgwMGFkNTI3ODg5Nw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NzRiMTUwZTEyMzhmOTE4YTE2ZGU0Zjg0ZTk1Mzc5MTM0MTI0YjNhODVmMGRm
|
10
|
+
ZTY2ZDFjZjFlM2YxZmQ4NGZkODIzZjhmNTRlNTY2NmMwZmE4NGVlNGM3Nzk0
|
11
|
+
MTYxNGRiNjRkZjE2ZWI4NzJhMTllOGNmMWVmYWRiMWFhYTZjZmI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MmExNTViM2VkY2M1OGExZmM4YjcwNzFhOTliNTQ1OWY5M2IzZjI0NzRlNjUx
|
14
|
+
YTdhZmNlNTlkYTI5OWFhNjNlZjIyYWRjMjhkZGMzNDkxZjc3MGM2MTMzMDdm
|
15
|
+
YWU2OWIwYTkwOGQ5NDU2NDc5N2Y1MDU0ZWY3ZGExMTBiYmZmYTg=
|
data/README.md
CHANGED
@@ -78,8 +78,11 @@ class YourDataSource
|
|
78
78
|
def each_voucher(&block)
|
79
79
|
[
|
80
80
|
{
|
81
|
-
creditor
|
82
|
-
|
81
|
+
# "creditor" and "type" is used to find the series, you can replace
|
82
|
+
# that with "series" if the automatic lookup doesn't work for you.
|
83
|
+
creditor: false, type: :invoice,
|
84
|
+
|
85
|
+
number: 1, booked_on: Date.today, description: "Invoice 1",
|
83
86
|
voucher_lines: [
|
84
87
|
{
|
85
88
|
account_number: 1500, amount: 512.0,
|
@@ -2,10 +2,11 @@ require "stringio"
|
|
2
2
|
|
3
3
|
class Sie::Document::Renderer
|
4
4
|
EMPTY_ARRAY = :empty_array
|
5
|
+
ENCODING = Encoding::CP437
|
5
6
|
|
6
7
|
def initialize
|
7
8
|
@io = StringIO.new
|
8
|
-
@io.set_encoding(
|
9
|
+
@io.set_encoding(ENCODING)
|
9
10
|
end
|
10
11
|
|
11
12
|
def add_line(label, *values)
|
@@ -28,13 +29,17 @@ class Sie::Document::Renderer
|
|
28
29
|
private
|
29
30
|
|
30
31
|
def append(text)
|
31
|
-
io.puts(text)
|
32
|
+
io.puts(encoded(text))
|
32
33
|
end
|
33
34
|
|
34
35
|
def format_values(values)
|
35
36
|
values.map { |value| format_value(value) }
|
36
37
|
end
|
37
38
|
|
39
|
+
def encoded(text)
|
40
|
+
text.encode(ENCODING, :invalid => :replace, :undef => :replace, :replace => "?")
|
41
|
+
end
|
42
|
+
|
38
43
|
def format_value(value)
|
39
44
|
case value
|
40
45
|
when Date
|
data/lib/sie/document.rb
CHANGED
@@ -71,16 +71,18 @@ module Sie
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
-
|
75
74
|
def add_voucher(opts)
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
75
|
+
number = opts.fetch(:number)
|
76
|
+
booked_on = opts.fetch(:booked_on)
|
77
|
+
description = opts.fetch(:description).slice(0, DESCRIPTION_LENGTH_MAX)
|
78
|
+
voucher_lines = opts.fetch(:voucher_lines)
|
79
|
+
voucher_series = opts.fetch(:series) {
|
80
|
+
creditor = opts.fetch(:creditor)
|
81
|
+
type = opts.fetch(:type)
|
82
|
+
VoucherSeries.for(creditor, type)
|
83
|
+
}
|
84
|
+
|
85
|
+
add_line("VER", voucher_series, number, booked_on, description)
|
84
86
|
|
85
87
|
add_array do
|
86
88
|
voucher_lines.each do |line|
|
@@ -112,9 +114,5 @@ module Sie
|
|
112
114
|
def financial_years
|
113
115
|
data_source.financial_years.sort_by { |date_range| date_range.first }.reverse
|
114
116
|
end
|
115
|
-
|
116
|
-
def voucher_series(creditor, type)
|
117
|
-
VoucherSeries.for(creditor, type)
|
118
|
-
end
|
119
117
|
end
|
120
118
|
end
|
data/lib/sie/version.rb
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe Sie::Document::Renderer, "#add_line" do
|
6
|
+
it "replaces input of the wrong encoding with '?'" do
|
7
|
+
renderer = Sie::Document::Renderer.new
|
8
|
+
renderer.add_line "Hello ☃", 1
|
9
|
+
output = renderer.render
|
10
|
+
|
11
|
+
expect(output).to eq "#Hello ? 1\n"
|
12
|
+
end
|
13
|
+
end
|
data/spec/unit/document_spec.rb
CHANGED
@@ -195,6 +195,18 @@ describe Sie::Document, "#render" do
|
|
195
195
|
end
|
196
196
|
end
|
197
197
|
|
198
|
+
context "with a series defined" do
|
199
|
+
let(:vouchers) {
|
200
|
+
[
|
201
|
+
build_voucher(series: "X"),
|
202
|
+
]
|
203
|
+
}
|
204
|
+
|
205
|
+
it "reads the series from the voucher" do
|
206
|
+
expect(indexed_entry("ver", 0).attributes["serie"]).to eq("X")
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
198
210
|
private
|
199
211
|
|
200
212
|
def build_voucher(attributes)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Barsoom AB
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: attr_extras
|
@@ -115,6 +115,7 @@ files:
|
|
115
115
|
- spec/fixtures/sie_file.se
|
116
116
|
- spec/integration/parser_spec.rb
|
117
117
|
- spec/spec_helper.rb
|
118
|
+
- spec/unit/document/renderer_spec.rb
|
118
119
|
- spec/unit/document/voucher_series_spec.rb
|
119
120
|
- spec/unit/document_spec.rb
|
120
121
|
- spec/unit/parser/line_parser_spec.rb
|
@@ -140,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
141
|
version: '0'
|
141
142
|
requirements: []
|
142
143
|
rubyforge_project:
|
143
|
-
rubygems_version: 2.
|
144
|
+
rubygems_version: 2.4.5
|
144
145
|
signing_key:
|
145
146
|
specification_version: 4
|
146
147
|
summary: Parses and generates SIE files (http://sie.se/)
|
@@ -148,6 +149,7 @@ test_files:
|
|
148
149
|
- spec/fixtures/sie_file.se
|
149
150
|
- spec/integration/parser_spec.rb
|
150
151
|
- spec/spec_helper.rb
|
152
|
+
- spec/unit/document/renderer_spec.rb
|
151
153
|
- spec/unit/document/voucher_series_spec.rb
|
152
154
|
- spec/unit/document_spec.rb
|
153
155
|
- spec/unit/parser/line_parser_spec.rb
|