bisac 0.8.1 → 0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/README +3 -2
- data/Rakefile +1 -1
- data/lib/bisac.rb +1 -0
- data/lib/bisac/po.rb +2 -14
- data/lib/bisac/po_line_item.rb +1 -14
- data/lib/bisac/poa.rb +52 -48
- data/lib/bisac/poa_line_item.rb +21 -0
- data/lib/bisac/utils.rb +28 -0
- data/specs/data/valid_poa.txt +51 -77
- data/specs/poa_line_item_spec.rb +7 -2
- data/specs/poa_spec.rb +10 -0
- metadata +4 -3
data/README
CHANGED
@@ -20,5 +20,6 @@ claiming otherwise.
|
|
20
20
|
|
21
21
|
= Links
|
22
22
|
|
23
|
-
- http://
|
24
|
-
- http://www.
|
23
|
+
- Project source: http://github.com/yob/bisac/tree/master
|
24
|
+
- Standards body: http://www.bisg.org/bisac/
|
25
|
+
- Partial specs: http://www.anchordistributors.com/EDIInfo.aspx
|
data/Rakefile
CHANGED
data/lib/bisac.rb
CHANGED
data/lib/bisac/po.rb
CHANGED
@@ -26,6 +26,7 @@ module Bisac
|
|
26
26
|
# ...
|
27
27
|
# end
|
28
28
|
class PO
|
29
|
+
include Bisac::Utils
|
29
30
|
|
30
31
|
attr_accessor :source_san, :source_suffix, :source_name
|
31
32
|
attr_accessor :date, :filename, :format_version
|
@@ -176,7 +177,7 @@ module Bisac
|
|
176
177
|
line[40,5] = "00001" # number of '10'-'19' records
|
177
178
|
line[55,5] = (@items.size * 3).to_s.rjust(5,"0") # number of '40'-'49' records
|
178
179
|
line[60,5] = "00000" # number of '50'-'59' records
|
179
|
-
line[
|
180
|
+
line[65,5] = "00000" # number of '60'-'69' records
|
180
181
|
lines << line
|
181
182
|
|
182
183
|
lines.join("\n")
|
@@ -184,19 +185,6 @@ module Bisac
|
|
184
185
|
|
185
186
|
private
|
186
187
|
|
187
|
-
def yes_no(bool)
|
188
|
-
bool ? "Y" : "N"
|
189
|
-
end
|
190
|
-
|
191
|
-
def pad_trunc(str, len, pad = " ")
|
192
|
-
str = str.to_s
|
193
|
-
if str.size > len
|
194
|
-
str[0,len]
|
195
|
-
else
|
196
|
-
str.ljust(len, pad)
|
197
|
-
end
|
198
|
-
end
|
199
|
-
|
200
188
|
def self.build_message(data)
|
201
189
|
raise Bisac::InvalidFileError, 'File appears to be too short' unless data.size >= 3
|
202
190
|
raise Bisac::InvalidFileError, 'Missing header information' unless data[0][0,2].eql?("00")
|
data/lib/bisac/po_line_item.rb
CHANGED
@@ -5,6 +5,7 @@ module Bisac
|
|
5
5
|
# represents a single line on the purchase order. Has attributes like
|
6
6
|
# price, qty and description
|
7
7
|
class POLineItem
|
8
|
+
include Bisac::Utils
|
8
9
|
|
9
10
|
attr_accessor :sequence_number, :po_number, :line_item_number
|
10
11
|
attr_accessor :qty, :catalogue_code, :price
|
@@ -97,19 +98,5 @@ module Bisac
|
|
97
98
|
lines.join("\n")
|
98
99
|
end
|
99
100
|
|
100
|
-
private
|
101
|
-
|
102
|
-
def yes_no(bool)
|
103
|
-
bool ? "Y" : "N"
|
104
|
-
end
|
105
|
-
|
106
|
-
def pad_trunc(str, len, pad = " ")
|
107
|
-
str = str.to_s
|
108
|
-
if str.size > len
|
109
|
-
str[0,len]
|
110
|
-
else
|
111
|
-
str.ljust(len, pad)
|
112
|
-
end
|
113
|
-
end
|
114
101
|
end
|
115
102
|
end
|
data/lib/bisac/poa.rb
CHANGED
@@ -19,6 +19,7 @@ module Bisac
|
|
19
19
|
# ...
|
20
20
|
# end
|
21
21
|
class POA
|
22
|
+
include Bisac::Utils
|
22
23
|
|
23
24
|
# file header attributes
|
24
25
|
attr_accessor :source_san, :source_suffix, :source_name
|
@@ -37,14 +38,9 @@ module Bisac
|
|
37
38
|
# creates a new Bisac::POA object
|
38
39
|
def initialize
|
39
40
|
@items = []
|
40
|
-
|
41
|
-
# default values
|
42
|
-
@cancellation_date = "000000"
|
43
|
-
@do_not_ship_before = "000000"
|
44
|
-
@backorder = true
|
45
41
|
end
|
46
42
|
|
47
|
-
# return all
|
43
|
+
# return all POAs from a BISAC file
|
48
44
|
def self.parse_file(input, &block)
|
49
45
|
raise ArgumentError, 'no file provided' if input.nil?
|
50
46
|
raise ArgumentError, 'Invalid file' unless File.file?(input)
|
@@ -53,7 +49,7 @@ module Bisac
|
|
53
49
|
end
|
54
50
|
end
|
55
51
|
|
56
|
-
# return all
|
52
|
+
# return all POAs from a BISAC string
|
57
53
|
def self.parse_string(input, &block)
|
58
54
|
raise ArgumentError, 'no data provided' if input.nil?
|
59
55
|
data = []
|
@@ -61,8 +57,8 @@ module Bisac
|
|
61
57
|
data << l
|
62
58
|
|
63
59
|
# yield each message found in the string. A line starting with
|
64
|
-
#
|
65
|
-
if data.last[0,2] == "
|
60
|
+
# 91 is the footer to a POA
|
61
|
+
if data.last[0,2] == "91"
|
66
62
|
msg = Bisac::POA.new
|
67
63
|
msg.build_message(data)
|
68
64
|
yield msg
|
@@ -79,16 +75,27 @@ module Bisac
|
|
79
75
|
end
|
80
76
|
end
|
81
77
|
|
82
|
-
|
83
|
-
|
78
|
+
# total number of units ordered by the customer
|
79
|
+
#
|
80
|
+
def total_order_qty
|
81
|
+
@items.collect { |i| i.order_qty }.inject { |sum, x| sum ? sum+x : x}
|
82
|
+
end
|
83
|
+
|
84
|
+
# total number of units to ship
|
85
|
+
#
|
86
|
+
def total_shippable_qty
|
87
|
+
@items.collect { |i| i.shippable_qty }.inject { |sum, x| sum ? sum+x : x}
|
84
88
|
end
|
85
89
|
|
90
|
+
# convert this POA into a standards compliant string, ready for sending
|
91
|
+
# to customers.
|
92
|
+
#
|
86
93
|
def to_s
|
87
94
|
lines = []
|
88
95
|
|
89
96
|
# file header
|
90
97
|
line = " " * 80
|
91
|
-
line[0,2] = "
|
98
|
+
line[0,2] = "02" # line type
|
92
99
|
line[2,5] = "00001" # line counter
|
93
100
|
line[7,7] = pad_trunc(@source_san, 7)
|
94
101
|
line[14,5] = pad_trunc(@source_suffix, 5)
|
@@ -98,59 +105,56 @@ module Bisac
|
|
98
105
|
line[60,3] = pad_trunc(@format_version, 3)
|
99
106
|
line[63,7] = pad_trunc(@destination_san, 7)
|
100
107
|
line[70,5] = pad_trunc(@destination_suffix, 5)
|
108
|
+
line[75,1] = pad_trunc(@ack_type, 1)
|
101
109
|
lines << line
|
102
110
|
|
103
111
|
# po header
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
lines
|
119
|
-
|
120
|
-
lines.last << yes_no(@special_instructions)
|
121
|
-
lines.last << pad_trunc("",5) # TODO
|
122
|
-
lines.last << pad_trunc(@do_not_ship_before,6)
|
123
|
-
|
124
|
-
sequence = 3
|
112
|
+
line = " " * 80
|
113
|
+
line[0,2] = "11" # line type
|
114
|
+
line[2,5] = "00002" # line counter
|
115
|
+
line[7,13] = pad_trunc(@supplier_poa_number, 13)
|
116
|
+
line[20,13] = pad_trunc(@po_number, 13)
|
117
|
+
line[33,7] = pad_trunc(@customer_san, 7)
|
118
|
+
line[40,5] = pad_trunc(@customer_suffice, 5)
|
119
|
+
line[45,7] = pad_trunc(@supplier_san, 7)
|
120
|
+
line[52,5] = pad_trunc(@supplier_suffice, 5)
|
121
|
+
line[57,6] = pad_trunc(@poa_date, 6)
|
122
|
+
line[63,3] = pad_trunc(@currency, 3)
|
123
|
+
line[66,6] = pad_trunc(@po_date, 6)
|
124
|
+
line[72,6] = pad_trunc(@po_cancel_date, 6)
|
125
|
+
line[78,2] = pad_trunc(@po_type, 2)
|
126
|
+
lines << line
|
127
|
+
|
125
128
|
@items.each_with_index do |item, idx|
|
126
129
|
item.line_item_number = idx + 1
|
127
|
-
item.sequence_number =
|
128
|
-
lines
|
129
|
-
sequence += 3
|
130
|
+
item.sequence_number = lines.size + 1
|
131
|
+
lines << item.to_s
|
130
132
|
end
|
131
133
|
|
132
|
-
#
|
134
|
+
# POA control
|
133
135
|
line = " " * 80
|
134
|
-
line[0,2] = "
|
136
|
+
line[0,2] = "59"
|
135
137
|
line[2,5] = (lines.size + 1).to_s.rjust(5,"0") # line counter
|
136
|
-
line[
|
137
|
-
line[20,5] = "
|
138
|
-
line[25,10] =
|
139
|
-
line[35,10] =
|
138
|
+
line[7,13] = pad_trunc(@supplier_poa_number, 13)
|
139
|
+
line[20,5] = (lines.size).to_s.rjust(5,"0") # number of lines to this point
|
140
|
+
line[25,10] = (lines.size - 2).to_s.rjust(10,"0") # number of line items in file
|
141
|
+
line[35,10] = total_shippable_qty.to_s.rjust(10,"0")
|
140
142
|
lines << line
|
141
143
|
|
142
144
|
# file trailer
|
143
145
|
line = " " * 80
|
144
|
-
line[0,2] = "
|
146
|
+
line[0,2] = "91"
|
145
147
|
line[2,5] = (lines.size+1).to_s.rjust(5,"0") # line counter
|
146
148
|
line[7,20] = @items.size.to_s.rjust(13,"0")
|
147
|
-
line[20,5] = "00001" # total '
|
148
|
-
line[25,10] =
|
149
|
+
line[20,5] = "00001" # total '11' (POA) records
|
150
|
+
line[25,10] = total_shippable_qty.to_s.rjust(10,"0")
|
149
151
|
line[35,5] = "00001" # number of '00'-'09' records
|
150
152
|
line[40,5] = "00001" # number of '10'-'19' records
|
151
|
-
line[
|
152
|
-
line[
|
153
|
-
line[
|
153
|
+
line[45,5] = "00000" # number of '20'-'29' records
|
154
|
+
line[50,5] = "00000" # number of '30'-'39' records
|
155
|
+
line[55,5] = (@items.size).to_s.rjust(5,"0") # number of '40'-'49' records
|
156
|
+
line[60,5] = "00001" # number of '50'-'59' records
|
157
|
+
line[65,5] = "00001" # number of '60'-'99' records
|
154
158
|
lines << line
|
155
159
|
|
156
160
|
lines.join("\n")
|
data/lib/bisac/poa_line_item.rb
CHANGED
@@ -3,7 +3,9 @@ require 'bigdecimal'
|
|
3
3
|
module Bisac
|
4
4
|
|
5
5
|
# represents a single line on the purchase order ack
|
6
|
+
#
|
6
7
|
class POALineItem
|
8
|
+
include Bisac::Utils
|
7
9
|
|
8
10
|
attr_accessor :sequence_number, :supplier_poa_number
|
9
11
|
attr_accessor :line_item_number, :order_qty, :unit_price, :nett_price
|
@@ -63,6 +65,25 @@ module Bisac
|
|
63
65
|
end
|
64
66
|
end
|
65
67
|
|
68
|
+
def to_s
|
69
|
+
line = " " * 93
|
70
|
+
line[0,2] = "40" # line type
|
71
|
+
line[2,5] = @sequence_number.to_s.rjust(5,"0") # line counter
|
72
|
+
line[7,13] = pad_trunc(@supplier_poa_number, 13)
|
73
|
+
line[20,10] = rpad_trunc(@line_item_number, 10, "0")
|
74
|
+
line[30,10] = pad_trunc(isbn10, 10)
|
75
|
+
line[40,5] = rpad_trunc(@order_qty, 5, "0")
|
76
|
+
line[45,8] = rpad_trunc(@unit_price.to_i, 8, "0")
|
77
|
+
line[53,9] = rpad_trunc(@nett_price.to_i, 9, "0")
|
78
|
+
line[62,1] = pad_trunc(@list_nett_indicator, 1)
|
79
|
+
line[63,1] = rpad_trunc(@special_price, 1, "0")
|
80
|
+
line[64,5] = rpad_trunc(@discount.to_i, 5, "0")
|
81
|
+
line[69,5] = rpad_trunc(@shippable_qty, 5, "0")
|
82
|
+
line[74,2] = rpad_trunc(@status, 2, "0")
|
83
|
+
line[80,13] = pad_trunc(isbn, 13)
|
84
|
+
line
|
85
|
+
end
|
86
|
+
|
66
87
|
def status_text
|
67
88
|
case self.status
|
68
89
|
when 1 then "Accepted: Title Shipped As Ordered"
|
data/lib/bisac/utils.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Bisac
|
2
|
+
module Utils
|
3
|
+
|
4
|
+
private
|
5
|
+
|
6
|
+
def yes_no(bool)
|
7
|
+
bool ? "Y" : "N"
|
8
|
+
end
|
9
|
+
|
10
|
+
def pad_trunc(str, len, pad = " ")
|
11
|
+
str = str.to_s
|
12
|
+
if str.size > len
|
13
|
+
str[0,len]
|
14
|
+
else
|
15
|
+
str.ljust(len, pad)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def rpad_trunc(str, len, pad = " ")
|
20
|
+
str = str.to_s
|
21
|
+
if str.size > len
|
22
|
+
str[0,len]
|
23
|
+
else
|
24
|
+
str.rjust(len, pad)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/specs/data/valid_poa.txt
CHANGED
@@ -4,80 +4,54 @@
|
|
4
4
|
40000040000000019629000000000207148483010000400000000000000000 000000000401 9780714848303
|
5
5
|
40000050000000019629000000000307459426440000100000000000000000 000000000101 9780745942643
|
6
6
|
40000060000000019629000000000407459466310000600000000000000000 000000000007 9780745946634
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
40000580000000019629000000004018598552450000100000000000000000 000000000007 9781859855249
|
59
|
-
4100059000000001962900000 000000
|
60
|
-
40000600000000019629000000004118598562760000500000000000000000 000000000007 9781859856277
|
61
|
-
4100061000000001962900000 000000
|
62
|
-
40000620000000019629000000004218598562840000500000000000000000 000000000007 9781859856284
|
63
|
-
4100063000000001962900000 000000
|
64
|
-
40000640000000019629000000004318598563060000100000000000000000 000000000101 9781859856307
|
65
|
-
40000650000000019629000000004418598563220000300000000000000000 000000000301 9781859856321
|
66
|
-
40000660000000019629000000004518598566320000200000000000000000 000000000007 9781859856635
|
67
|
-
4100067000000001962900000 000000
|
68
|
-
40000680000000019629000000004618598566400000200000000000000000 000000000007 9781859856642
|
69
|
-
4100069000000001962900000 000000
|
70
|
-
400007000000000196290000000047185985673X0000300000000000000000 000000000301 9781859856734
|
71
|
-
40000710000000019629000000004818598569690000100000000000000000 000000000007 9781859856963
|
72
|
-
4100072000000001962900000 000000
|
73
|
-
40000730000000019629000000004918598576120000100000000000000000 000000000007 9781859857618
|
74
|
-
4100074000000001962900000 000000
|
75
|
-
40000750000000019629000000005018598576710000900000000000000000 000000000905 9781859857670
|
76
|
-
4100076000000001962900009 000000
|
77
|
-
400007700000000196290000000051185985768X0001100000000000000000 000000001105 9781859857687
|
78
|
-
4100078000000001962900011 000000
|
79
|
-
40000790000000019629000000005218942229620000400000000000000000 000000000008 9781894222969
|
80
|
-
40000800000000019629000000005319052793450000100000000000000000 000000000007 9781905279340
|
81
|
-
4100081000000001962900000 000000
|
82
|
-
590008200000000196290008100000000530000000104
|
83
|
-
9100083000000000005300001000000010400000000000000000000000000000000000
|
7
|
+
40000070000000019629000000000507459493040000200000000000000000 000000000201 9780745949307
|
8
|
+
40000080000000019629000000000607459493550000200000000000000000 000000000007 9780745949352
|
9
|
+
40000090000000019629000000000707459493630000100000000000000000 000000000007 9780745949369
|
10
|
+
40000100000000019629000000000807459496650000100000000000000000 000000000101 9780745949666
|
11
|
+
40000110000000019629000000000907459496810000100000000000000000 000000000007 9780745949680
|
12
|
+
40000120000000019629000000001007459497970000300000000000000000 000000000301 9780745949796
|
13
|
+
40000130000000019629000000001107459499670000300000000000000000 000000000301 9780745949963
|
14
|
+
40000140000000019629000000001207459522240000100000000000000000 000000000101 9780745952222
|
15
|
+
40000150000000019629000000001307459523480000200000000000000000 000000000007 9780745952345
|
16
|
+
400001600000000196290000000014074595278X0000100000000000000000 000000000101 9780745952789
|
17
|
+
40000170000000019629000000001507459531900000100000000000000000 000000000105 9780745953199
|
18
|
+
40000180000000019629000000001607459600490000200000000000000000 000000000201 9780745960043
|
19
|
+
400001900000000196290000000017074596012X0000200000000000000000 000000000007 9780745960128
|
20
|
+
40000200000000019629000000001807459601620000700000000000000000 000000000701 9780745960166
|
21
|
+
40000210000000019629000000001907459607070000100000000000000000 000000000101 9780745960708
|
22
|
+
40000220000000019629000000002007459608470000200000000000000000 000000000201 9780745960845
|
23
|
+
40000230000000019629000000002107459608630000500000000000000000 000000000110 9780745960869
|
24
|
+
40000240000000019629000000002207459609520000100000000000000000 000000000007 9780745960951
|
25
|
+
40000250000000019629000000002307459610450000600000000000000000 000000000605 9780745961040
|
26
|
+
40000260000000019629000000002407459610530000200000000000000000 000000000201 9780745961057
|
27
|
+
40000270000000019629000000002507459610880000500000000000000000 000000000501 9780745961088
|
28
|
+
40000280000000019629000000002607459612230000700000000000000000 000000001409 9780745961224
|
29
|
+
40000290000000019629000000002707459690460000400000000000000000 000000000007 9780745969046
|
30
|
+
40000300000000019629000000002807624166960000200000000000000000 000000000201 9780762416691
|
31
|
+
40000310000000019629000000002908979349380000200000000000000000 000000000201 9780897934930
|
32
|
+
40000320000000019629000000003015925825400000700000000000000000 000000000701 9781592582549
|
33
|
+
40000330000000019629000000003118453930070000400000000000000000 000000000401 9781845393007
|
34
|
+
400003400000000196290000000032184666411X0000100000000000000000 000000000101 9781846664113
|
35
|
+
40000350000000019629000000003318516848240000600000000000000000 000000000007 9781851684823
|
36
|
+
40000360000000019629000000003418542483400000100000000000000000 000000000007 9781854248343
|
37
|
+
400003700000000196290000000035185424874X0000100000000000000000 000000000116 9781854248749
|
38
|
+
40000380000000019629000000003618589426160000200000000000000000 000000000007 9781858942612
|
39
|
+
40000390000000019629000000003718589426240000200000000000000000 000000000007 9781858942629
|
40
|
+
400004000000000196290000000038185985334X0000600000000000000000 000000000007 9781859853344
|
41
|
+
40000410000000019629000000003918598549310000200000000000000000 000000000201 9781859854938
|
42
|
+
40000420000000019629000000004018598552450000100000000000000000 000000000007 9781859855249
|
43
|
+
40000430000000019629000000004118598562760000500000000000000000 000000000007 9781859856277
|
44
|
+
40000440000000019629000000004218598562840000500000000000000000 000000000007 9781859856284
|
45
|
+
40000450000000019629000000004318598563060000100000000000000000 000000000101 9781859856307
|
46
|
+
40000460000000019629000000004418598563220000300000000000000000 000000000301 9781859856321
|
47
|
+
40000470000000019629000000004518598566320000200000000000000000 000000000007 9781859856635
|
48
|
+
40000480000000019629000000004618598566400000200000000000000000 000000000007 9781859856642
|
49
|
+
400004900000000196290000000047185985673X0000300000000000000000 000000000301 9781859856734
|
50
|
+
40000500000000019629000000004818598569690000100000000000000000 000000000007 9781859856963
|
51
|
+
40000510000000019629000000004918598576120000100000000000000000 000000000007 9781859857618
|
52
|
+
40000520000000019629000000005018598576710000900000000000000000 000000000905 9781859857670
|
53
|
+
400005300000000196290000000051185985768X0001100000000000000000 000000001105 9781859857687
|
54
|
+
40000540000000019629000000005218942229620000400000000000000000 000000000008 9781894222969
|
55
|
+
40000550000000019629000000005319052793450000100000000000000000 000000000007 9781905279340
|
56
|
+
590005600000000196290005500000000530000000104
|
57
|
+
9100057000000000005300001000000010400001000010000000000000530000100001
|
data/specs/poa_line_item_spec.rb
CHANGED
@@ -27,10 +27,15 @@ context "A new bisac purchase order line item object" do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
specify "Should prefer the ISBN13 over ISBN10 when available" do
|
30
|
-
item = Bisac::
|
31
|
-
item.should be_a_kind_of(Bisac::
|
30
|
+
item = Bisac::POALineItem.load_from_string(@valid_isbn13_row)
|
31
|
+
item.should be_a_kind_of(Bisac::POALineItem)
|
32
32
|
|
33
33
|
item.isbn.should eql("9780711226067")
|
34
34
|
end
|
35
35
|
|
36
|
+
specify "Should correctly convert into a string" do
|
37
|
+
item = Bisac::POALineItem.load_from_string(@valid_isbn13_row)
|
38
|
+
item.to_s.should eql(@valid_isbn13_row)
|
39
|
+
end
|
40
|
+
|
36
41
|
end
|
data/specs/poa_spec.rb
CHANGED
@@ -67,4 +67,14 @@ context "A BISAC POA object" do
|
|
67
67
|
specify "Should raise an appropriate exception when an invalid file is loaded" do
|
68
68
|
lambda { msg = Bisac::POA.parse_file(@invalid_file_onix) }.should raise_error(Bisac::InvalidFileError)
|
69
69
|
end
|
70
|
+
|
71
|
+
specify "Should correctly convert into a string" do
|
72
|
+
original = File.read(@valid_file).split("\n")
|
73
|
+
Bisac::POA.parse_file(@valid_file) do |msg|
|
74
|
+
msg.to_s.split("\n").size.should eql(57)
|
75
|
+
msg.to_s.split("\n").each_with_index do |line, idx|
|
76
|
+
line.strip.should eql(original[idx].strip)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
70
80
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bisac
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: "0.9"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Healy
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-11-24 00:00:00 +11:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -41,6 +41,7 @@ files:
|
|
41
41
|
- lib/bisac/product.rb
|
42
42
|
- lib/bisac/poa.rb
|
43
43
|
- lib/bisac/poa_line_item.rb
|
44
|
+
- lib/bisac/utils.rb
|
44
45
|
- specs/data
|
45
46
|
- specs/data/bisac_multi_po.txt
|
46
47
|
- specs/data/bisac_po.txt
|
@@ -84,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
85
|
requirements: []
|
85
86
|
|
86
87
|
rubyforge_project: rbook
|
87
|
-
rubygems_version: 1.
|
88
|
+
rubygems_version: 1.3.1
|
88
89
|
signing_key:
|
89
90
|
specification_version: 2
|
90
91
|
summary: A library for manipulating BISAC files
|