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

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

refs #51

File size: 2.4 KB
Line 
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
7module OpenEHR
8 module RM
9 module Data_Types
10 module Encapsulated
11 class DV_Encapsulated < OpenEHR::RM::Data_Types::Basic::Data_Value
12 attr_reader :language, :charset, :size
13 def initialize(charset, language, size)
14 self.charset = charset
15 self.language = language
16 self.size = size
17 end
18
19 def size=(size)
20 if size < 0
21 raise ArgumentError, "negative size"
22 end
23 @size = size
24 end
25
26 def language=(language)
27 if language.nil? ||
28 !Locale::Info.language_code?(language.code_string)
29 raise ArgumentError, 'invalid language code'
30 end
31 @language = language
32 end
33
34 def charset=(charset)
35 if charset.nil? || !charset_valid?(charset.code_string)
36 raise ArgumentError, 'invalid charset'
37 end
38 @charset = charset
39 end
40
41 private
42 def size_positive
43 raise ArgumentError, "size must be positive" if size < 0
44 end
45
46 def charset_valid?(charset)
47 result = false
48 open('rm/data_types/charset.lst') do |file|
49 while line = file.gets
50 if charset == line.chomp
51 result = true
52 break
53 end
54 end
55 end
56 return result
57 end
58 end
59
60 class DV_Multimedia < DV_Encapsulated
61
62 end
63
64 class DV_Parsable < DV_Encapsulated
65 attr_reader :value, :formalism
66 def initialize(value, formalism, charset = nil, language = nil)
67 @value = value
68 size_positive
69 formalism_validity(formalism)
70 @formalism = formalism
71 @charset, @language = charset, language
72 end
73 private
74 def formalism_validity(formalism)
75 if formalism.nil
76 raise ArgumentError, "formalism must not be nil"
77 elsif formalism.empty?
78 raise ArgumentError, "formalism must nto be empty"
79 end
80 end
81 end
82 end # of Encapsulated
83 end # of Data_Types
84 end # of RM
85end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.