pd_x12 1.4.8 → 1.5.0
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.
- checksums.yaml +6 -14
- data/README.md +3 -37
- data/lib/x12.rb +5 -0
- data/lib/x12/base.rb +5 -5
- data/lib/x12/composite.rb +1 -1
- data/lib/x12/empty.rb +3 -3
- data/lib/x12/field.rb +3 -3
- data/lib/x12/parser.rb +1 -16
- data/lib/x12/segment.rb +2 -2
- data/lib/x12/table.rb +3 -3
- data/lib/x12/version.rb +1 -1
- data/lib/x12/xmldefinitions.rb +8 -10
- data/test/tc_parse_835.rb +84 -21
- data/x12.gemspec +5 -2
- metadata +23 -14
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
MjhlZTcwYzk1YjNlM2U0NDhjZWI2ZDFmN2ZmYTNiNzFmYjQwM2QwOTBmNjcw
|
10
|
-
N2IzYmQ5NWJiMzBmNjJhYTJkZGIzZDBmYzA0MjBmY2IxMWI0NDY2NDliMWZl
|
11
|
-
YTc4YjU4NzExZWU5MmY2ZDI0ZDA4YmRmMjBhNDc0M2Y2ZTQ4OTE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
OTkxN2JhZjIzY2VhZTc3ZmE0NTcyN2FmNDgwYjFiYjRiYmJjMDVjZTE3NTZi
|
14
|
-
YTU5MjA0ZmMyYTJhNDgyNmZkNGU1MjZhYWY1NTM3ZDA4YWM2NTQzMzNlZDRk
|
15
|
-
MzAxZWY1ZGJiYjI5OTc5OWVkYmQ1MzgzMDY1NmJlOWU2YzEwOTk=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7b0f3d7a04edbab0899aea20b8f9d05c89aaae44
|
4
|
+
data.tar.gz: b3bc5db7d9d6d92e19ff123cdb10bd603948aa8b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 032582d5dfa38690ace90a558fc5d6ccab0db407fda69c093dafeb0a7316706cd2356f653ac25a065d764327a0b590f46edec64168ee52d5d267102c1d396bfa
|
7
|
+
data.tar.gz: 895464a84395e3733b5f2068a68afc6e5c0e03d33a26719b0a0d9769160156d4fea530bdda7229bf4cd11cc473dc6986399d8605ea99804124c74fe34444c251
|
data/README.md
CHANGED
@@ -57,6 +57,9 @@ The authors of the project were inspired by the following works:
|
|
57
57
|
|
58
58
|
|
59
59
|
# Change Log
|
60
|
+
11/8/14 - release 1.5.0
|
61
|
+
* converted from ReXML to LibXML for speed improvement on XML parsing
|
62
|
+
|
60
63
|
9/14/13 - release 1.4.7
|
61
64
|
* Added 276 / 277 transaction messages
|
62
65
|
* Fixed issue with 835.xml file
|
@@ -74,40 +77,3 @@ The authors of the project were inspired by the following works:
|
|
74
77
|
* Renamed the gem to be all lower case so Rails and other frameworks autoload the project as a gem
|
75
78
|
* Added an each method to segments to simplify looping through repeating segments
|
76
79
|
|
77
|
-
1/26/13 - relesase 1.3.6
|
78
|
-
* changed the referencing of the misc directory so that local copies of the xml definitions are not required
|
79
|
-
* added an init.rb file in the root
|
80
|
-
|
81
|
-
12/2/12 - release 1.3.2
|
82
|
-
* Added the 835 transaction
|
83
|
-
|
84
|
-
12/1/12 - release 1.3.1
|
85
|
-
* Added the 837p transaction
|
86
|
-
|
87
|
-
11/23/12 - release 1.3.0
|
88
|
-
* Updated to work with Ruby version >= 1.9.1
|
89
|
-
* includes bundle gem_tasks
|
90
|
-
* In misc/T105.xml escaped ampersand in Dun & Bradstreet
|
91
|
-
|
92
|
-
4/18/12 - Release 1.2.0
|
93
|
-
* Works with Ruby version >= 1.8.6
|
94
|
-
* All the gem info has been changed to use bundler
|
95
|
-
* Everything has been renamed to be lower case and work on case sensitive systems
|
96
|
-
* Stopped including REXML, which was causing problems with Rails 3 and mailer
|
97
|
-
* To use version 1.2.0, install with "$gem install sx12"
|
98
|
-
|
99
|
-
5/15/09 - Release 1.1.0
|
100
|
-
* Ported X12 definitions and definition parser from proprietary d12 language to XML.
|
101
|
-
* Added X12 definitions for 270 message and all its dependent segments and validation tables.
|
102
|
-
|
103
|
-
3/19/09 - Release 0.1.0
|
104
|
-
* Implemented field constants.
|
105
|
-
* Implemented separate definition files for segments and validation tables.
|
106
|
-
|
107
|
-
11/15/08 - Release 0.0.5, first public one
|
108
|
-
* Added comments.
|
109
|
-
* Added examples.
|
110
|
-
* Wrote README
|
111
|
-
|
112
|
-
4/10/08 - Release 0.0.1
|
113
|
-
* Internal release for testing
|
data/lib/x12.rb
CHANGED
@@ -25,6 +25,9 @@
|
|
25
25
|
#
|
26
26
|
# Package implementing direct manipulation of X12 structures using Ruby syntax.
|
27
27
|
|
28
|
+
require "libxml"
|
29
|
+
require 'pp'
|
30
|
+
|
28
31
|
require "x12/version"
|
29
32
|
require 'x12/base'
|
30
33
|
require 'x12/empty'
|
@@ -37,6 +40,8 @@ require 'x12/xmldefinitions'
|
|
37
40
|
require 'x12/parser'
|
38
41
|
|
39
42
|
module X12
|
43
|
+
include LibXML
|
44
|
+
|
40
45
|
EMPTY = Empty.new()
|
41
46
|
TEST_REPEAT = 100
|
42
47
|
|
data/lib/x12/base.rb
CHANGED
@@ -23,16 +23,16 @@
|
|
23
23
|
#
|
24
24
|
module X12
|
25
25
|
|
26
|
-
# $Id: Base.rb 70 2009-03-26 19:25:39Z ikk $
|
27
26
|
#
|
28
27
|
# Base class for Segment, Composite, and Loop. Contains setable
|
29
28
|
# segment_separator, field_separator, and composite_separator fields.
|
30
|
-
|
29
|
+
#
|
30
|
+
|
31
31
|
class Base
|
32
32
|
|
33
|
-
attr_reader
|
34
|
-
|
35
|
-
|
33
|
+
attr_reader :name, :repeats
|
34
|
+
attr_accessor :segment_separator, :field_separator, :composite_separator, :next_repeat, :parsed_str, :nodes
|
35
|
+
|
36
36
|
|
37
37
|
# Creates a new base element with a given name, array of sub-elements, and array of repeats if any.
|
38
38
|
def initialize(name, arr, repeats = nil)
|
data/lib/x12/composite.rb
CHANGED
data/lib/x12/empty.rb
CHANGED
@@ -22,11 +22,11 @@
|
|
22
22
|
#++
|
23
23
|
#
|
24
24
|
module X12
|
25
|
-
|
26
|
-
# $Id: Empty.rb 35 2008-11-13 18:33:44Z ikk $
|
25
|
+
|
27
26
|
#
|
28
27
|
# Class indicating the absense of any X12 element, be it loop, segment, or anything else like that.
|
29
|
-
|
28
|
+
#
|
29
|
+
|
30
30
|
class Empty < Base
|
31
31
|
|
32
32
|
# Create a new empty
|
data/lib/x12/field.rb
CHANGED
@@ -22,11 +22,11 @@
|
|
22
22
|
#++
|
23
23
|
#
|
24
24
|
module X12
|
25
|
-
|
26
|
-
# $Id: Field.rb 90 2009-05-13 19:51:27Z ikk $
|
25
|
+
|
27
26
|
#
|
28
27
|
# Class to represent a segment field. Please note, it's not a descendant of Base.
|
29
|
-
|
28
|
+
#
|
29
|
+
|
30
30
|
class Field
|
31
31
|
attr_reader :name, :type, :required, :min_length, :max_length, :validation
|
32
32
|
attr_writer :content
|
data/lib/x12/parser.rb
CHANGED
@@ -22,8 +22,6 @@
|
|
22
22
|
#++
|
23
23
|
#
|
24
24
|
|
25
|
-
require "rexml/document"
|
26
|
-
require 'pp'
|
27
25
|
|
28
26
|
module X12
|
29
27
|
|
@@ -34,20 +32,7 @@ module X12
|
|
34
32
|
class Parser
|
35
33
|
|
36
34
|
# These constitute prohibited file names under Microsoft
|
37
|
-
MS_DEVICES = [
|
38
|
-
'CON',
|
39
|
-
'PRN',
|
40
|
-
'AUX',
|
41
|
-
'CLOCK$',
|
42
|
-
'NUL',
|
43
|
-
'COM1',
|
44
|
-
'LPT1',
|
45
|
-
'LPT2',
|
46
|
-
'LPT3',
|
47
|
-
'COM2',
|
48
|
-
'COM3',
|
49
|
-
'COM4',
|
50
|
-
]
|
35
|
+
MS_DEVICES = ['CON', 'PRN', 'AUX', 'CLOCK$', 'NUL', 'COM1', 'LPT1', 'LPT2', 'LPT3', 'COM2', 'COM3', 'COM4']
|
51
36
|
|
52
37
|
# Creates a parser out of a definition
|
53
38
|
def initialize(file_name)
|
data/lib/x12/segment.rb
CHANGED
data/lib/x12/table.rb
CHANGED
data/lib/x12/version.rb
CHANGED
data/lib/x12/xmldefinitions.rb
CHANGED
@@ -22,20 +22,18 @@
|
|
22
22
|
#++
|
23
23
|
#
|
24
24
|
|
25
|
-
require "rexml/document"
|
26
25
|
|
27
26
|
module X12
|
28
|
-
|
29
|
-
# $Id: XMLDefinitions.rb 90 2009-05-13 19:51:27Z ikk $
|
30
27
|
#
|
31
28
|
# A class for parsing X12 message definition expressed in XML format.
|
32
|
-
|
29
|
+
#
|
30
|
+
|
33
31
|
class XMLDefinitions < Hash
|
34
32
|
|
35
33
|
# Parse definitions out of XML file
|
36
34
|
def initialize(str)
|
37
|
-
doc =
|
38
|
-
definitions = doc.root.name =~ /^Definition$/i ? doc.root.
|
35
|
+
doc = LibXML::XML::Document.string(str)
|
36
|
+
definitions = doc.root.name =~ /^Definition$/i ? doc.root.find('*').to_a : [doc.root]
|
39
37
|
|
40
38
|
definitions.each { |element|
|
41
39
|
#puts element.name
|
@@ -130,7 +128,7 @@ module X12
|
|
130
128
|
def parse_table(e)
|
131
129
|
name, min, max, type, required, validation = parse_attributes(e)
|
132
130
|
|
133
|
-
content = e.
|
131
|
+
content = e.find("Entry").inject({}) {|t, entry|
|
134
132
|
t[entry.attributes["name"]] = entry.attributes["value"]
|
135
133
|
t
|
136
134
|
}
|
@@ -140,7 +138,7 @@ module X12
|
|
140
138
|
def parse_segment(e)
|
141
139
|
name, min, max, type, required, validation = parse_attributes(e)
|
142
140
|
|
143
|
-
fields = e.
|
141
|
+
fields = e.find("Field").inject([]) {|f, field|
|
144
142
|
f << parse_field(field)
|
145
143
|
}
|
146
144
|
Segment.new(name, fields, Range.new(min, max))
|
@@ -149,7 +147,7 @@ module X12
|
|
149
147
|
def parse_composite(e)
|
150
148
|
name, min, max, type, required, validation = parse_attributes(e)
|
151
149
|
|
152
|
-
fields = e.
|
150
|
+
fields = e.find("Field").inject([]) {|f, field|
|
153
151
|
f << parse_field(field)
|
154
152
|
}
|
155
153
|
Composite.new(name, fields)
|
@@ -158,7 +156,7 @@ module X12
|
|
158
156
|
def parse_loop(e)
|
159
157
|
name, min, max, type, required, validation = parse_attributes(e)
|
160
158
|
|
161
|
-
components = e.
|
159
|
+
components = e.find('*').to_a.inject([]){|r, element|
|
162
160
|
r << case element.name
|
163
161
|
when /loop/i
|
164
162
|
parse_loop(element)
|
data/test/tc_parse_835.rb
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
# This file is part of the X12Parser library that provides tools to
|
3
3
|
# manipulate X12 messages using Ruby native syntax.
|
4
4
|
#
|
5
|
-
# http://x12parser.rubyforge.org
|
6
|
-
#
|
5
|
+
# http://x12parser.rubyforge.org
|
6
|
+
#
|
7
7
|
# Copyright (C) 2012 P&D Technical Solutions, LLC.
|
8
8
|
#
|
9
9
|
# This library is free software; you can redistribute it and/or
|
@@ -75,21 +75,74 @@ SE*45*0001~
|
|
75
75
|
GE*1*45920001~
|
76
76
|
IEA*1*000004592~"
|
77
77
|
|
78
|
-
|
79
|
-
|
78
|
+
MESSAGE1 = "ISA*00* *00* *ZZ*5010TEST *ZZ*835RECVR *110930*1105*^*00501*000004592*0*T*:~
|
79
|
+
GS*HP*330897513*835RECVR*20140514*1605*188915716*X*005010X221A1~
|
80
|
+
ST*835*0001~
|
81
|
+
BPR*I*280.56*C*ACH*CCP*01*011900445*DA*0000009046*1066033492**01*031201360*DA*7869322623*20140519~
|
82
|
+
TRN*1*814133500000415*1066033492~
|
83
|
+
REF*EV*330897513~
|
84
|
+
DTM*405*20140514~
|
85
|
+
N1*PR*AETNA~
|
86
|
+
N3*151 FARMINGTON AVENUE~
|
87
|
+
N4*HARTFORD*CT*06156~
|
88
|
+
PER*BL*PROVIDER SERVICE~
|
89
|
+
N1*PE*SERVICES OF INTEREST*XX*1457686560~
|
90
|
+
N3*77 WILLIAM ST~
|
91
|
+
N4*SOUTH RIVER*NJ*088821072~
|
92
|
+
REF*PQ*149850620~
|
93
|
+
REF*TJ*263895688~
|
94
|
+
CLP*687400A140313*22*-150*-45**13*E7TWCV68K0000*11*1~
|
95
|
+
NM1*QC*1*BETTY*ELIZABETH****MI*W193272207~
|
96
|
+
NM1*82*1*HURTEM*DEBBIE****XX*1457686560~
|
97
|
+
REF*1L*0701087-022-00002-UA~
|
98
|
+
REF*CE*AETNA~
|
99
|
+
DTM*050*20140314~
|
100
|
+
DTM*232*20140308~
|
101
|
+
DTM*233*20140308~
|
102
|
+
PER*CX**TE*8886323862~
|
103
|
+
SVC*HC:90834*-150*-45**1~
|
104
|
+
DTM*472*20140308~
|
105
|
+
CAS*CO*45*-90~
|
106
|
+
CAS*PR*3*-15~
|
107
|
+
CLP*652000A140307*22*-150*-45**13*ECABDCJH40000*11*1~
|
108
|
+
NM1*QC*1*VANDERBROOK*JOHN~
|
109
|
+
NM1*IL*1*KRAFT*FRANK****MI*W142202122~
|
110
|
+
NM1*74*1**FRANCES*G~
|
111
|
+
NM1*82*1*HOMLEY*MEGAN****XX*1457686560~
|
112
|
+
REF*1L*0701087-022-00003-UA~
|
113
|
+
REF*CE*AETNA~
|
114
|
+
DTM*050*20140310~
|
115
|
+
DTM*232*20140306~
|
116
|
+
DTM*233*20140306~
|
117
|
+
PER*CX**TE*8886323862~
|
118
|
+
SVC*HC:90834*-150*-45**1~
|
119
|
+
DTM*472*20140306~
|
120
|
+
CAS*CO*45*-90~
|
121
|
+
CAS*PR*3*-15~
|
122
|
+
AMT*B6*60~
|
123
|
+
SE*44*0001~
|
124
|
+
GE*7*188915716~
|
125
|
+
IEA*1*188915716~"
|
126
|
+
|
127
|
+
def setup
|
80
128
|
# readable format
|
81
129
|
@message = MESSAGE
|
82
130
|
# make the result usable in the tests
|
83
131
|
@message.gsub!(/\n/,'')
|
84
|
-
|
85
|
-
@parser = X12::Parser.new('835.xml')
|
86
|
-
@r = @parser.parse('835', @message)
|
132
|
+
|
133
|
+
@parser = X12::Parser.new('835.xml')
|
134
|
+
@r = @parser.parse('835', @message)
|
135
|
+
|
136
|
+
# second message for testing negatives
|
137
|
+
@message1 = MESSAGE1
|
138
|
+
@message1.gsub!(/\n/,'')
|
139
|
+
@r1 = @parser.parse('835', @message1)
|
87
140
|
end
|
88
|
-
|
141
|
+
|
89
142
|
def teardown
|
90
143
|
#nothing
|
91
144
|
end
|
92
|
-
|
145
|
+
|
93
146
|
def test_ISA_IEA
|
94
147
|
assert_equal('ISA*00* *00* *ZZ*5010TEST *ZZ*835RECVR *110930*1105*^*00501*000004592*0*T*:~', @r.ISA.to_s)
|
95
148
|
assert_equal('5010TEST ', @r.ISA.InterchangeSenderId)
|
@@ -101,17 +154,17 @@ IEA*1*000004592~"
|
|
101
154
|
assert_equal("45920001", @r.GS.GroupControlNumber)
|
102
155
|
assert_equal(@r.GS.GroupControlNumber, @r.GE.GroupControlNumber)
|
103
156
|
end
|
104
|
-
|
157
|
+
|
105
158
|
def test_segment_each0
|
106
159
|
assert_equal(3, @r.L1000A.PER.size)
|
107
|
-
|
160
|
+
|
108
161
|
# loop through the PER segment and find the CX record
|
109
162
|
@r.L1000A.PER.each do |per|
|
110
163
|
if per.ContactFunctionCode == "CX"
|
111
164
|
assert_equal("TE", per.CommunicationNumberQualifier1)
|
112
165
|
end
|
113
|
-
end
|
114
|
-
|
166
|
+
end
|
167
|
+
|
115
168
|
#loop through the PER segment anf find the BL record
|
116
169
|
@r.L1000A.PER.each do |per|
|
117
170
|
if per.ContactFunctionCode == "BL"
|
@@ -119,27 +172,37 @@ IEA*1*000004592~"
|
|
119
172
|
assert_equal("TECHNICAL CONTACT", per.Name)
|
120
173
|
assert_equal("EM", per.CommunicationNumberQualifier2)
|
121
174
|
assert_equal("PAYER@PAYER.COM", per.CommunicationNumber2)
|
122
|
-
|
175
|
+
|
123
176
|
end
|
124
|
-
end
|
125
|
-
|
177
|
+
end
|
178
|
+
|
126
179
|
#loop through and find the IC record
|
127
180
|
@r.L1000A.PER.each do |per|
|
128
181
|
if per.ContactFunctionCode == "IC"
|
129
182
|
assert_equal("UR", per.CommunicationNumberQualifier1)
|
130
183
|
assert_equal("WWW.PAYER.COM", per.CommunicationNumber1)
|
131
184
|
end
|
132
|
-
end
|
133
|
-
|
185
|
+
end
|
186
|
+
|
134
187
|
end
|
135
|
-
|
188
|
+
|
136
189
|
def test_L2000_loop
|
137
190
|
assert_equal("1", @r.L2000.LX.AssignedNumber)
|
138
191
|
assert_equal("CLP*EDI DENIAL*1*1088*0*1088*HM*CLAIMNUMBER1*21~", @r.L2000.L2100[0].CLP.to_s)
|
139
192
|
assert_equal("CLP*EDI PAID*1*100*57.44*30*12*CLAIMNUMBER2*11~", @r.L2000[0].L2100[1].CLP.to_s)
|
140
193
|
end
|
141
|
-
|
142
|
-
|
194
|
+
|
195
|
+
|
196
|
+
def test_negative
|
197
|
+
# puts @r1.L2000[0].L2100[1].CLP.inspect
|
198
|
+
assert_equal("-150", @r1.L2000[0].L2100[1].CLP.MonetaryAmount1)
|
199
|
+
m1 = @r1.L2000[0].L2100[1].CLP.MonetaryAmount1
|
200
|
+
assert_equal(-150, m1.to_i)
|
201
|
+
|
202
|
+
assert_equal("-45", @r1.L2000[0].L2100[1].CLP.MonetaryAmount2)
|
203
|
+
assert_equal(-45, @r1.L2000[0].L2100[1].CLP.MonetaryAmount2.to_i)
|
204
|
+
end
|
205
|
+
|
143
206
|
def test_timing
|
144
207
|
start = Time::now
|
145
208
|
X12::TEST_REPEAT.times do
|
data/x12.gemspec
CHANGED
@@ -4,8 +4,8 @@ require File.expand_path('../lib/x12/version', __FILE__)
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.name = "pd_x12"
|
6
6
|
gem.version = X12::VERSION
|
7
|
-
gem.authors = ["
|
8
|
-
gem.email = ["
|
7
|
+
gem.authors = ["Marty Petersen"]
|
8
|
+
gem.email = ["themooseman@comcast.net"]
|
9
9
|
gem.description = %q{A gem to handle parsing and generation of ANSI X12 documents. Currently tested with Ruby >= 1.9.2. Gem supports X12 EDI transactions 270, 997, 837p and 835. Anyone wanting to create additional XML files for other transactions welcomed. }
|
10
10
|
gem.summary = %q{A gem to handle parsing and generation of ANSI X12 documents}
|
11
11
|
gem.homepage = "https://github.com/mjpete3/x12"
|
@@ -15,4 +15,7 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
16
16
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
17
17
|
gem.require_paths = ["lib"]
|
18
|
+
|
19
|
+
gem.add_dependency 'libxml-ruby'
|
20
|
+
|
18
21
|
end
|
metadata
CHANGED
@@ -1,31 +1,40 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pd_x12
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- App Design, Inc.
|
8
|
-
- Sean Walberg
|
9
7
|
- Marty Petersen
|
10
|
-
- William Bajzek
|
11
8
|
autorequire:
|
12
9
|
bindir: bin
|
13
10
|
cert_chain: []
|
14
|
-
date: 2014-
|
15
|
-
dependencies:
|
16
|
-
|
11
|
+
date: 2014-11-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: libxml-ruby
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: 'A gem to handle parsing and generation of ANSI X12 documents. Currently
|
17
28
|
tested with Ruby >= 1.9.2. Gem supports X12 EDI transactions 270, 997, 837p and
|
18
29
|
835. Anyone wanting to create additional XML files for other transactions welcomed. '
|
19
30
|
email:
|
20
|
-
- info@appdesign.com
|
21
|
-
- sean@ertw.com
|
22
31
|
- themooseman@comcast.net
|
23
32
|
executables: []
|
24
33
|
extensions: []
|
25
34
|
extra_rdoc_files: []
|
26
35
|
files:
|
27
|
-
- .gitignore
|
28
|
-
- .project
|
36
|
+
- ".gitignore"
|
37
|
+
- ".project"
|
29
38
|
- Gemfile
|
30
39
|
- LICENSE
|
31
40
|
- README.md
|
@@ -1896,17 +1905,17 @@ require_paths:
|
|
1896
1905
|
- lib
|
1897
1906
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1898
1907
|
requirements:
|
1899
|
-
- -
|
1908
|
+
- - ">="
|
1900
1909
|
- !ruby/object:Gem::Version
|
1901
1910
|
version: '0'
|
1902
1911
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1903
1912
|
requirements:
|
1904
|
-
- -
|
1913
|
+
- - ">="
|
1905
1914
|
- !ruby/object:Gem::Version
|
1906
1915
|
version: '0'
|
1907
1916
|
requirements: []
|
1908
1917
|
rubyforge_project:
|
1909
|
-
rubygems_version: 2.
|
1918
|
+
rubygems_version: 2.2.2
|
1910
1919
|
signing_key:
|
1911
1920
|
specification_version: 4
|
1912
1921
|
summary: A gem to handle parsing and generation of ANSI X12 documents
|