source: ruby/trunk/lib/models/rm/data_types/encapsulated.rb@ 133

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

refs #51

File size: 2.8 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
[4]7module OpenEHR
8 module RM
9 module Data_Types
10 module Encapsulated
11 class DV_Encapsulated < OpenEHR::RM::Data_Types::Basic::Data_Value
[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
48 open('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/
[4]61 class DV_Multimedia < DV_Encapsulated
[133]62 def initialize(charset, language, size, media_type, uri=nil,
63 data=nil, compression_algorithm=nil,
64 integrity_check=nil, integrity_check_algorithm=nil,
65 alternate_text=nil)
66
67 end
[4]68
69 end
[130]70
[4]71 class DV_Parsable < DV_Encapsulated
72 attr_reader :value, :formalism
[133]73 def initialize(charset, language, size, formalism, value)
74 super(charset, language, size)
75 self.formalism = formalism
76 self.value = value
77 end
78
79 def value=(value)
80 raise ArgumentError, 'value must not be nil' if value.nil?
[4]81 @value = value
82 end
[133]83
84 def formalism=(formalism)
85 if formalism.nil?
[4]86 raise ArgumentError, "formalism must not be nil"
87 elsif formalism.empty?
88 raise ArgumentError, "formalism must nto be empty"
89 end
[133]90 @formalism = formalism
[4]91 end
92 end
93 end # of Encapsulated
94 end # of Data_Types
95 end # of RM
96end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.