hippo 0.1.0 → 0.1.1
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/CHANGELOG +3 -0
- data/lib/hippo/exceptions.rb +1 -0
- data/lib/hippo/outputters/html.rb +20 -0
- data/lib/hippo/parser/transaction_set.rb +1 -0
- data/lib/hippo/parser.rb +1 -1
- data/lib/hippo/transaction_sets/base.rb +14 -21
- data/lib/hippo/transaction_sets/repeating_component.rb +2 -0
- data/lib/hippo/version.rb +1 -1
- data/test/test_html_outputter.rb +19 -0
- metadata +37 -63
data/CHANGELOG
CHANGED
data/lib/hippo/exceptions.rb
CHANGED
@@ -2,11 +2,31 @@ module Hippo::Outputters
|
|
2
2
|
module HTML
|
3
3
|
module TransactionSet
|
4
4
|
def to_html
|
5
|
+
output = ''
|
6
|
+
initial_call = caller.select{|m| m =~ /#{__FILE__}/}.length == 0
|
7
|
+
|
8
|
+
if initial_call
|
9
|
+
output = %{<fieldset class="hippo-transaction-set"><legend>#{self.class.to_s.sub('Hippo::TransactionSets::','')}</legend>}
|
10
|
+
end
|
11
|
+
|
12
|
+
values.sort.each do |sequence, component|
|
13
|
+
component_definition = self.class.components[sequence]
|
14
|
+
if component_definition.klass.ancestors.include?(Hippo::TransactionSets::Base)
|
15
|
+
output += %Q{<fieldset class="hippo-component"><legend>#{component_definition.klass.to_s.sub('Hippo::TransactionSets::','')} - #{component_definition.options[:name]}</legend>}
|
16
|
+
output += component.to_html
|
17
|
+
output += '</fieldset>'
|
18
|
+
else
|
19
|
+
output += %Q{<span class="hippo-segment-name">#{component_definition.options[:name]}</span><span class="hippo-segment-data">#{component.to_s}</span><br/>}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
output + (initial_call ? '</fieldset>' : '')
|
5
24
|
end
|
6
25
|
end
|
7
26
|
|
8
27
|
module Segment
|
9
28
|
def to_html
|
29
|
+
to_s
|
10
30
|
end
|
11
31
|
end
|
12
32
|
end
|
data/lib/hippo/parser.rb
CHANGED
@@ -43,7 +43,7 @@ module Hippo
|
|
43
43
|
parse_transaction_sets.collect do |transaction|
|
44
44
|
transaction_set_id = transaction[:segments].first.ST01
|
45
45
|
transaction_set = Hippo::TransactionSets.constants.select{|c| c.to_s.end_with?(transaction_set_id) }.first
|
46
|
-
|
46
|
+
|
47
47
|
Hippo::TransactionSets.const_get(transaction_set)::Base.new(separators.merge(transaction))
|
48
48
|
end
|
49
49
|
end
|
@@ -59,41 +59,34 @@ module Hippo::TransactionSets
|
|
59
59
|
else
|
60
60
|
# loops
|
61
61
|
while true do
|
62
|
-
|
63
|
-
starting_index = nil
|
64
|
-
ending_index = nil
|
65
|
-
length = 0
|
62
|
+
initial_segment = segments.first
|
66
63
|
|
67
|
-
|
64
|
+
break unless initial_segment
|
65
|
+
break unless component.valid?(initial_segment)
|
68
66
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
remaining_components = self.class.components.slice(component_index, self.class.components.length - component_index)
|
67
|
+
ending_index = nil
|
68
|
+
starting_index = component.repeating? ? component_index : component_index + 1
|
69
|
+
remaining_components = self.class.components.slice(starting_index, self.class.components.length - starting_index)
|
73
70
|
remaining_components.each do |next_component|
|
74
71
|
break if ending_index
|
75
72
|
|
76
|
-
ending_index = segments.find_index{|segment| segment != segments
|
73
|
+
ending_index = segments.find_index{|segment| segment != segments.first && next_component.valid?(segment)}
|
77
74
|
end
|
78
75
|
|
79
|
-
|
80
|
-
|
76
|
+
child_segments = segments.slice!(0, ending_index || segments.length)
|
77
|
+
values[component.sequence] ||= component.initialize_component(self)
|
81
78
|
if component.repeating?
|
82
|
-
values[component.sequence]
|
83
|
-
values[component.sequence].build do |subcomponent|
|
84
|
-
subcomponent.populate(segments.slice!(starting_index, length))
|
85
|
-
end
|
79
|
+
values[component.sequence].build {|comp| comp.populate(child_segments) }
|
86
80
|
else
|
87
|
-
|
88
|
-
subcomponent.populate(segments.slice!(starting_index, length))
|
89
|
-
|
90
|
-
values[component.sequence] = subcomponent
|
81
|
+
values[component.sequence].populate(child_segments)
|
91
82
|
end
|
92
83
|
end
|
93
84
|
end
|
94
85
|
end
|
95
86
|
|
96
|
-
|
87
|
+
unless segments.empty?
|
88
|
+
raise Hippo::Exceptions::ParseError.new "Remaining Segments for #{self.class.identifier} after parsing was completed. Segments remaining: \n" + segments.map(&:to_s).join("\n")
|
89
|
+
end
|
97
90
|
end
|
98
91
|
|
99
92
|
def values
|
data/lib/hippo/version.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.expand_path('test_helper', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
class TestHTMLOutputter < MiniTest::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@parser = Hippo::Parser.new
|
6
|
+
@sample_835 = @parser.parse_file('samples/005010X221A1_business_scenario_1.edi').first
|
7
|
+
@sample_837 = @parser.parse_file('samples/005010X231A1_01.edi').first
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_segment_to_html_returns_segment_to_s
|
11
|
+
assert_equal @sample_835.BPR.to_s, @sample_835.BPR.to_html
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_transaction_to_html_returns_string
|
15
|
+
File.open('/Users/rjackson/Desktop/sample835.html', 'w') {|f| f.write(@sample_835.to_html) }
|
16
|
+
File.open('/Users/rjackson/Desktop/sample837.html', 'w') {|f| f.write(@sample_837.to_html) }
|
17
|
+
assert_kind_of String, @sample_835.to_html
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,64 +1,46 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: hippo
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 0
|
10
|
-
version: 0.1.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Robert Jackson
|
14
9
|
- Jon Jackson
|
15
10
|
autorequire:
|
16
11
|
bindir: bin
|
17
12
|
cert_chain: []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
dependencies:
|
22
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2012-01-11 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
23
16
|
name: minitest
|
24
|
-
|
25
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &70103895950640 !ruby/object:Gem::Requirement
|
26
18
|
none: false
|
27
|
-
requirements:
|
28
|
-
- -
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
|
31
|
-
segments:
|
32
|
-
- 0
|
33
|
-
version: "0"
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
34
23
|
type: :development
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: rake
|
38
24
|
prerelease: false
|
39
|
-
|
25
|
+
version_requirements: *70103895950640
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: rake
|
28
|
+
requirement: &70103895950140 !ruby/object:Gem::Requirement
|
40
29
|
none: false
|
41
|
-
requirements:
|
30
|
+
requirements:
|
42
31
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
hash: 63
|
45
|
-
segments:
|
46
|
-
- 0
|
47
|
-
- 9
|
48
|
-
- 2
|
32
|
+
- !ruby/object:Gem::Version
|
49
33
|
version: 0.9.2
|
50
34
|
type: :development
|
51
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *70103895950140
|
52
37
|
description: HIPAA Transaction Set Generator/Parser
|
53
|
-
email:
|
38
|
+
email:
|
54
39
|
- robertj@promedicalinc.com
|
55
40
|
executables: []
|
56
|
-
|
57
41
|
extensions: []
|
58
|
-
|
59
42
|
extra_rdoc_files: []
|
60
|
-
|
61
|
-
files:
|
43
|
+
files:
|
62
44
|
- .gitignore
|
63
45
|
- CHANGELOG
|
64
46
|
- Gemfile
|
@@ -276,47 +258,39 @@ files:
|
|
276
258
|
- test/test_helper.rb
|
277
259
|
- test/test_hipaa_835.rb
|
278
260
|
- test/test_hipaa_837.rb
|
261
|
+
- test/test_html_outputter.rb
|
279
262
|
- test/test_parser.rb
|
280
263
|
- test/test_segments_base.rb
|
281
264
|
- test/test_transaction_sets_base.rb
|
282
|
-
has_rdoc: true
|
283
265
|
homepage: http://github.com/promedical/hippo
|
284
266
|
licenses: []
|
285
|
-
|
286
267
|
post_install_message:
|
287
268
|
rdoc_options: []
|
288
|
-
|
289
|
-
require_paths:
|
269
|
+
require_paths:
|
290
270
|
- lib
|
291
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
271
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
292
272
|
none: false
|
293
|
-
requirements:
|
294
|
-
- -
|
295
|
-
- !ruby/object:Gem::Version
|
296
|
-
|
297
|
-
|
298
|
-
- 0
|
299
|
-
version: "0"
|
300
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
273
|
+
requirements:
|
274
|
+
- - ! '>='
|
275
|
+
- !ruby/object:Gem::Version
|
276
|
+
version: '0'
|
277
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
301
278
|
none: false
|
302
|
-
requirements:
|
303
|
-
- -
|
304
|
-
- !ruby/object:Gem::Version
|
305
|
-
|
306
|
-
segments:
|
307
|
-
- 0
|
308
|
-
version: "0"
|
279
|
+
requirements:
|
280
|
+
- - ! '>='
|
281
|
+
- !ruby/object:Gem::Version
|
282
|
+
version: '0'
|
309
283
|
requirements: []
|
310
|
-
|
311
284
|
rubyforge_project: hippo
|
312
|
-
rubygems_version: 1.
|
285
|
+
rubygems_version: 1.8.11
|
313
286
|
signing_key:
|
314
287
|
specification_version: 3
|
315
288
|
summary: HIPAA Transaction Set Generator/Parser
|
316
|
-
test_files:
|
289
|
+
test_files:
|
317
290
|
- test/test_helper.rb
|
318
291
|
- test/test_hipaa_835.rb
|
319
292
|
- test/test_hipaa_837.rb
|
293
|
+
- test/test_html_outputter.rb
|
320
294
|
- test/test_parser.rb
|
321
295
|
- test/test_segments_base.rb
|
322
296
|
- test/test_transaction_sets_base.rb
|