Почему метод ruby ​​gem возвращает переменную неправильного класса

Я использую гем бегемота для разбора файлов X12 на их сегменты и значения. Я использую метод анализатора и ожидал, что он вернет переменные класса: Hippo::TransactionSets::Hippa_837::Base, но возвращаемое значение относится к классу Array. В библиотеке я могу поместить необходимое количество в глобальную переменную и получить к ней доступ таким образом, но я не думаю, что мне нужно это делать. Я попытался создать переменную класса и установить ее значение с возвратом метода парсера, пока не повезло с этим.

begin  
require 'rubygems'
gem 'minitest'
require 'minitest/autorun'
require 'pp'
require 'pry'
require 'hippo'

t = Hippo::Parser.parse_string(File.read('c:/test.edi'))
puts "DONE: "
puts t.class
puts $t.class
gets
puts $t.ST
end   

Выход:

DONE: 
Hippo::TransactionSets::HIPAA_837::Base
Array
ST*837*0021*005010X222A1~

$t — это глобальная переменная, которую я установил в файле библиотеки parser.rb. t оказывается классом массива без методов доступа к сегментам.


person user1137656    schedule 02.10.2012    source источник
comment
Не могли бы вы опубликовать пример кода, иллюстрирующий это?   -  person Daniel Szmulewicz    schedule 02.10.2012
comment
Ruby:begin требует 'rubygems' gem 'minitest' требует 'minitest/autorun' требует 'pp' требует 'pry' требует 'hippo' t = Hippo::Parser.parse_string(File.read('c:/test.edi' )) ставит DONE: ставит t.class ставит $t.class получает ставит ставит $t.ST end   -  person user1137656    schedule 02.10.2012
comment
Что то не получилось, попробую отредактировать пост с исходником и выводом. Спасибо   -  person user1137656    schedule 02.10.2012
comment
Так лучше, мне кажется, что переменная t должна быть классом бегемота, чтобы можно было обращаться к сегментам через его методы.   -  person user1137656    schedule 02.10.2012


Ответы (1)


Вам нужно выполнить итерацию по массиву или выбрать отдельные элементы, а затем вы найдете ожидаемые объекты со всеми методами, связанными с сегментами.

person Daniel Szmulewicz    schedule 03.10.2012