lib/open_ehr/parser/adl.rb in open_ehr-0.9.3 vs lib/open_ehr/parser/adl.rb in open_ehr-0.9.4

- old
+ new

@@ -1,18 +1,56 @@ +include OpenEHR::RM::Support::Identification +include OpenEHR::RM::Common::Resource +include OpenEHR::RM::DataTypes::Text + module OpenEHR module Parser module ADLGrammar class Base < Treetop::Runtime::SyntaxNode end class ArchLanguage < Base - def original_language - lang.value[:original_language] + def value + Language.new(lang.value) end + end - def translations - lang.value[:translations] + + class Language + attr_reader :original_language, :translations + + def initialize(value) + self.original_language = value['original_language'] + self.translations = value['translations'] + end + + def original_language=(original_language) + @original_language = code2lang original_language + end + + def translations=(translations) + if translations.nil? + @translations = nil + else + tr = translations.inject({ }) do |trans, lang| + code, details = lang + td = TranslationDetails.new( + :language => code2lang(details['language']), + :author => details['author'], + :accreditation => details['accreditation'], + :other_details => details['other_details']) + trans.update Hash[code, td] + end + @translations = tr + end + end + + protected + def code2lang(code) + ti, la = code.split '::' + ti = TerminologyID.new(:value => ti) + CodePhrase.new(:code_string => la, :terminology_id => ti) end end end end end