source: ruby/branches/0.5/lib/open_ehr/rm/data_types/encapsulated.rb@ 241

Last change on this file since 241 was 241, checked in by KOBAYASHI, Shinji, 15 years ago

change test/unit to rspec

File size: 2.9 KB
RevLine 
[130]1# OpenEHR::RM::Data_Types::Encapsulated
2# http://www.openehr.org/svn/specification/TAGS/Release-1.0.2/publishing/architecture/computable/UML/uml_start_view.html
3# refs #51
4require 'rubygems'
5require 'locale/info'
6
[216]7module OpenEHR
[4]8 module RM
[167]9 module DataTypes
[4]10 module Encapsulated
[216]11 class DvEncapsulated < OpenEHR::RM::DataTypes::Basic::DataValue
[236]12 attr_reader :language, :charset
13
14 def initialize(args = {})
15 super(args)
16 self.charset = args[:charset]
17 self.language = args[:language]
[131]18 end
[130]19
[236]20 def size
21 @value.size
[4]22 end
[130]23
24 def language=(language)
[237]25 if !language.nil? &&
[131]26 !Locale::Info.language_code?(language.code_string)
[130]27 raise ArgumentError, 'invalid language code'
28 end
29 @language = language
30 end
31
32 def charset=(charset)
[237]33 if !charset.nil? && !charset_valid?(charset.code_string)
[130]34 raise ArgumentError, 'invalid charset'
35 end
[131]36 @charset = charset
[130]37 end
38
[4]39 private
[130]40
41 def charset_valid?(charset)
[131]42 result = false
[174]43 open('lib/open_ehr/rm/data_types/charset.lst') do |file|
[130]44 while line = file.gets
[131]45 if charset == line.chomp
46 result = true
47 break
[130]48 end
49 end
50 end
[131]51 return result
[130]52 end
[4]53 end
[130]54
[133]55# media type http://www.iana.org/assignments/media-types/text/
[167]56 class DvMultimedia < DvEncapsulated
[134]57 attr_reader :media_type
58 attr_accessor :uri, :data, :compression_algorithm,
59 :integrity_check, :integrity_check_algorithm, :alternate_text
[241]60
61 def initialize(args = {})
62 super(args)
63 self.media_type = args[:media_type]
64 self.uri = args[:uri]
65 self.data = args[:data]
66 self.compression_algorithm = args[:compression_algorithm]
67 self.integrity_check = args[:integrity_check]
68 self.integrity_check_algorithm = args[:integrity_check_algorithm]
69 self.alternate_text = args[:alternate_text]
[133]70 end
[241]71
[134]72 def media_type=(media_type)
73 if media_type.code_string.nil?
74 raise ArgumentError, 'media_type should not be nil'
75 end
76 @media_type = media_type
77 end
[4]78 end
[130]79
[167]80 class DvParsable < DvEncapsulated
[238]81 attr_reader :formalism
[133]82
[237]83 def initialize(args = {})
84 super(args)
85 self.formalism = args[:formalism]
[4]86 end
[133]87
88 def formalism=(formalism)
[238]89 if formalism.nil? || formalism.empty?
90 raise ArgumentError, 'formalism is mandatory'
[4]91 end
[133]92 @formalism = formalism
[4]93 end
94 end
95 end # of Encapsulated
[167]96 end # of DataTypes
[4]97 end # of RM
98end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.