edifact_parser 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
File without changes
File without changes
@@ -30,38 +30,38 @@ module EdifactParser
30
30
  ##### State transition tables begin ###
31
31
 
32
32
  racc_action_table = [
33
- 7, 27, 26, 4, 22, 17, 18, 17, 18, 27,
34
- 26, 7, 7, 7, 8, 19 ]
33
+ 7, 28, 27, 4, 20, 18, 19, 20, 18, 19,
34
+ 28, 27, 7, 7, 7, 8, 21 ]
35
35
 
36
36
  racc_action_check = [
37
- 0, 15, 15, 0, 11, 11, 11, 6, 6, 16,
38
- 16, 3, 10, 2, 1, 8 ]
37
+ 0, 16, 16, 0, 11, 11, 11, 6, 6, 6,
38
+ 17, 17, 3, 10, 2, 1, 8 ]
39
39
 
40
40
  racc_action_pointer = [
41
- -2, 14, 11, 9, nil, nil, 0, nil, 15, nil,
42
- 10, -2, nil, nil, nil, -2, 6, nil, nil, nil,
43
- nil, nil, nil, nil, nil, nil, nil, nil, nil ]
41
+ -2, 15, 12, 10, nil, nil, 1, nil, 16, nil,
42
+ 11, -2, nil, nil, nil, nil, -2, 7, nil, nil,
43
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil ]
44
44
 
45
45
  racc_action_default = [
46
- -23, -23, -1, -23, -3, -5, -23, -13, -23, -4,
47
- -2, -23, -8, -9, -10, -11, -12, -20, -21, 29,
48
- -6, -7, -22, -14, -16, -17, -18, -19, -15 ]
46
+ -24, -24, -1, -24, -3, -5, -24, -14, -24, -4,
47
+ -2, -24, -7, -9, -10, -11, -12, -13, -21, -22,
48
+ -23, 30, -6, -8, -15, -17, -18, -19, -20, -16 ]
49
49
 
50
50
  racc_goto_table = [
51
- 9, 12, 2, 23, 28, 10, 21, 11, 9, 20,
52
- 3, 1 ]
51
+ 9, 12, 13, 24, 29, 11, 22, 23, 9, 2,
52
+ 3, 1, 10 ]
53
53
 
54
54
  racc_goto_check = [
55
- 4, 8, 2, 13, 13, 2, 8, 6, 4, 7,
56
- 3, 1 ]
55
+ 4, 7, 8, 13, 13, 6, 7, 8, 4, 2,
56
+ 3, 1, 2 ]
57
57
 
58
58
  racc_goto_pointer = [
59
- nil, 11, 2, 10, -2, nil, 1, -2, -5, nil,
60
- nil, nil, nil, -12, nil, nil ]
59
+ nil, 11, 9, 10, -2, nil, -1, -5, -4, nil,
60
+ nil, nil, nil, -13, nil, nil ]
61
61
 
62
62
  racc_goto_default = [
63
- nil, nil, nil, nil, 5, 6, nil, nil, nil, 13,
64
- 14, 15, 16, nil, 24, 25 ]
63
+ nil, nil, nil, nil, 5, 6, nil, nil, nil, 14,
64
+ 15, 16, 17, nil, 25, 26 ]
65
65
 
66
66
  racc_reduce_table = [
67
67
  0, 0, :racc_error,
@@ -71,26 +71,27 @@ racc_reduce_table = [
71
71
  2, 11, :_reduce_none,
72
72
  1, 11, :_reduce_none,
73
73
  3, 13, :_reduce_none,
74
+ 2, 13, :_reduce_none,
74
75
  2, 15, :_reduce_none,
75
76
  1, 15, :_reduce_none,
76
77
  1, 17, :_reduce_none,
77
78
  1, 17, :_reduce_none,
78
79
  1, 17, :_reduce_none,
79
80
  1, 17, :_reduce_none,
80
- 1, 14, :_reduce_13,
81
+ 1, 14, :_reduce_14,
81
82
  2, 18, :_reduce_none,
82
83
  2, 19, :_reduce_none,
83
84
  1, 22, :_reduce_none,
84
85
  1, 22, :_reduce_none,
85
- 1, 24, :_reduce_18,
86
- 1, 23, :_reduce_19,
87
- 1, 20, :_reduce_20,
88
- 1, 21, :_reduce_21,
89
- 1, 16, :_reduce_22 ]
86
+ 1, 24, :_reduce_19,
87
+ 1, 23, :_reduce_20,
88
+ 1, 20, :_reduce_21,
89
+ 1, 21, :_reduce_22,
90
+ 1, 16, :_reduce_23 ]
90
91
 
91
- racc_reduce_n = 23
92
+ racc_reduce_n = 24
92
93
 
93
- racc_shift_n = 29
94
+ racc_shift_n = 30
94
95
 
95
96
  racc_token_table = {
96
97
  false => 0,
@@ -180,40 +181,42 @@ Racc_debug_parser = true
180
181
 
181
182
  # reduce 12 omitted
182
183
 
183
- def _reduce_13(val, _values, result)
184
+ # reduce 13 omitted
185
+
186
+ def _reduce_14(val, _values, result)
184
187
  @handler.start_segment; @handler.qualifier val[0]
185
188
  result
186
189
  end
187
190
 
188
- # reduce 14 omitted
189
-
190
191
  # reduce 15 omitted
191
192
 
192
193
  # reduce 16 omitted
193
194
 
194
195
  # reduce 17 omitted
195
196
 
196
- def _reduce_18(val, _values, result)
197
+ # reduce 18 omitted
198
+
199
+ def _reduce_19(val, _values, result)
197
200
  @handler.scalar val[0]
198
201
  result
199
202
  end
200
203
 
201
- def _reduce_19(val, _values, result)
204
+ def _reduce_20(val, _values, result)
202
205
  @handler.scalar val[0].gsub("?", "")
203
206
  result
204
207
  end
205
208
 
206
- def _reduce_20(val, _values, result)
209
+ def _reduce_21(val, _values, result)
207
210
  @handler.end_element; @handler.start_element
208
211
  result
209
212
  end
210
213
 
211
- def _reduce_21(val, _values, result)
214
+ def _reduce_22(val, _values, result)
212
215
  @handler.colon
213
216
  result
214
217
  end
215
218
 
216
- def _reduce_22(val, _values, result)
219
+ def _reduce_23(val, _values, result)
217
220
  @handler.end_element; @handler.end_segment
218
221
  result
219
222
  end
File without changes
@@ -2,8 +2,23 @@ require 'strscan'
2
2
 
3
3
  module EdifactParser
4
4
  class Tokenizer
5
+ QUALIFIERS = [
6
+ 'UNB', 'UNH', 'UNZ', 'UNT', 'UNS', 'IFI', 'IFT', 'ODI', 'TVL', 'APD',
7
+ 'ADR', 'AGR', 'AJT', 'ALC', 'ALI', 'APP', 'APR', 'ARD', 'ARR', 'ASI', 'ATT', 'AUT',
8
+ 'BAS', 'BGM', 'BII', 'BUS', 'CAV', 'CCD', 'CCI', 'CDI', 'CDS', 'CDV', 'CED', 'CIN',
9
+ 'CLA', 'CLI', 'CMP', 'CNI', 'CNT', 'COD', 'COM', 'COT', 'CPI', 'CPS', 'CPT', 'CST',
10
+ 'CTA', 'CUX', 'DAM', 'DFN', 'DGS', 'DII', 'DIM', 'DLI', 'DLM', 'DMS', 'DOC', 'DRD',
11
+ 'DSG', 'DSI', 'DTM', 'EDT', 'EFI', 'ELM', 'ELU', 'ELV', 'EMP', 'EQA', 'EQD', 'EQN',
12
+ 'ERC', 'ERP', 'EVE', 'FCA', 'FII', 'FNS', 'FNT', 'FOR', 'FSQ', 'FTX', 'GDS', 'GEI',
13
+ 'GID', 'GIN', 'GIR', 'GOR', 'GRU', 'HAN', 'HYN', 'ICD', 'IDE', 'IFD', 'IHC', 'IMD',
14
+ 'IND', 'INP', 'INV', 'IRQ', 'LAN', 'LIN', 'LOC', 'MEA', 'MEM', 'MKS', 'MOA', 'MSG',
15
+ 'MTD', 'NAD', 'NAT', 'PAC', 'PAI', 'PAS', 'PCC', 'PCD', 'PCI', 'PDI', 'PER', 'PGI',
16
+ 'PIA', 'PNA', 'POC', 'PRC', 'PRI', 'PRV', 'PSD', 'PTY', 'PYT', 'QRS', 'QTY', 'QUA',
17
+ 'QVR', 'RCS', 'REL', 'RFF', 'RJL', 'RNG', 'ROD', 'RSL', 'RTE', 'SAL', 'SCC', 'SCD',
18
+ 'SEG', 'SEL', 'SEQ', 'SFI', 'SGP', 'SGU', 'SPR', 'SPS', 'STA', 'STC', 'STG', 'STS',
19
+ 'TAX', 'TCC', 'TDT', 'TEM', 'TMD', 'TMP', 'TOD', 'TPL', 'TRU', 'TSR', 'VLI' ]
20
+
5
21
  OPTIONAL_BEGIN = /^UNA:\+\.\?\s'/
6
- QUALIFIER = /(^|(?<='))(UNB|UNH|BGM|DTM|PAI|ALI|IMD|FTX|LOC|GIS|DGS|GIR|RFF|MEA|QTY|MOA|RTE|NAD|DOC|CTA|COM|TAX|PCD|CUX|TDT|TSR|PII|TOD|PAC|EQD|SEL|ALC|RNG|INP|LIN|PRI|UNS|UNT|UNZ|CNT)/
7
22
  STRING = /[A-Za-z0-9\s\.]*(\?')*[A-Za-z0-9\s\.]*(\?\+)*[A-Za-z0-9\s\.]*(\?:)*[A-Za-z0-9\s\.]*/
8
23
  SPACE = /\s+/
9
24
  NUMBER = /[0-9]+(?=[\+:'])/
@@ -14,6 +29,7 @@ module EdifactParser
14
29
 
15
30
  def initialize(io)
16
31
  @ss = StringScanner.new io.read
32
+ @qualifiers = qualifier_regex
17
33
  end
18
34
 
19
35
  def next_token
@@ -27,7 +43,7 @@ module EdifactParser
27
43
 
28
44
  case
29
45
  when text = @ss.scan(OPTIONAL_BEGIN) then [:OPTIONAL_BEGIN, text]
30
- when text = @ss.scan(QUALIFIER) then [:QUALIFIER, text]
46
+ when text = @ss.scan(@qualifiers) then [:QUALIFIER, text]
31
47
  when text = @ss.scan(SEGMENT_END) then [:SEGMENT_END, text]
32
48
  when text = @ss.scan(PLUS) then [:PLUS, text]
33
49
  when text = @ss.scan(COLON) then [:COLON, text]
@@ -38,5 +54,18 @@ module EdifactParser
38
54
  [x, x]
39
55
  end
40
56
  end
57
+
58
+ private
59
+
60
+ def qualifier_regex
61
+ reg_ex_string = ""
62
+
63
+ QUALIFIERS.each do |qual|
64
+ reg_ex_string += "#{qual}|"
65
+ end
66
+
67
+ /(^|(?<='))(#{reg_ex_string[0, reg_ex_string.length-1]})/
68
+ end
69
+
41
70
  end
42
- end
71
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: edifact_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
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: 2013-01-26 00:00:00.000000000 Z
12
+ date: 2013-01-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: racc