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

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