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
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
[4]60 class DV_Multimedia < DV_Encapsulated
61
62 end
[130]63
[4]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.