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

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

move from Test:Unit to RSpec

File size: 3.6 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
[132]12 attr_reader :language, :charset, :size
13 def initialize(charset, language, size)
[131]14 self.charset = charset
15 self.language = language
[132]16 self.size = size
[131]17 end
[130]18
[132]19 def size=(size)
20 if size < 0
21 raise ArgumentError, "negative size"
22 end
23 @size = size
[4]24 end
[130]25
26 def language=(language)
[131]27 if language.nil? ||
28 !Locale::Info.language_code?(language.code_string)
[130]29 raise ArgumentError, 'invalid language code'
30 end
31 @language = language
32 end
33
34 def charset=(charset)
[131]35 if charset.nil? || !charset_valid?(charset.code_string)
[130]36 raise ArgumentError, 'invalid charset'
37 end
[131]38 @charset = charset
[130]39 end
40
[4]41 private
42 def size_positive
43 raise ArgumentError, "size must be positive" if size < 0
44 end
[130]45
46 def charset_valid?(charset)
[131]47 result = false
[174]48 open('lib/open_ehr/rm/data_types/charset.lst') do |file|
[130]49 while line = file.gets
[131]50 if charset == line.chomp
51 result = true
52 break
[130]53 end
54 end
55 end
[131]56 return result
[130]57 end
[4]58 end
[130]59
[133]60# media type http://www.iana.org/assignments/media-types/text/
[167]61 class DvMultimedia < DvEncapsulated
[134]62 attr_reader :media_type
63 attr_accessor :uri, :data, :compression_algorithm,
64 :integrity_check, :integrity_check_algorithm, :alternate_text
[133]65 def initialize(charset, language, size, media_type, uri=nil,
66 data=nil, compression_algorithm=nil,
67 integrity_check=nil, integrity_check_algorithm=nil,
68 alternate_text=nil)
[134]69 super(charset, language, size)
70 self.media_type = media_type
71 @uri = uri
72 @data = data
73 @compression_algorithm = compression_algorithm
74 @integrity_check = integrity_check
75 @integrity_check_algorithm = integrity_check_algorithm
76 @alternate_text = alternate_text
[133]77 end
[134]78 def media_type=(media_type)
79 if media_type.code_string.nil?
80 raise ArgumentError, 'media_type should not be nil'
81 end
82 @media_type = media_type
83 end
[4]84 end
[130]85
[167]86 class DvParsable < DvEncapsulated
[4]87 attr_reader :value, :formalism
[133]88 def initialize(charset, language, size, formalism, value)
89 super(charset, language, size)
90 self.formalism = formalism
91 self.value = value
92 end
93
94 def value=(value)
95 raise ArgumentError, 'value must not be nil' if value.nil?
[4]96 @value = value
97 end
[133]98
99 def formalism=(formalism)
100 if formalism.nil?
[4]101 raise ArgumentError, "formalism must not be nil"
102 elsif formalism.empty?
103 raise ArgumentError, "formalism must nto be empty"
104 end
[133]105 @formalism = formalism
[4]106 end
107 end
108 end # of Encapsulated
[167]109 end # of DataTypes
[4]110 end # of RM
111end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.