source: ruby/branches/0.5/lib/open_ehr/rm/data_types/uri.rb@ 240

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

completed uri package

File size: 1.6 KB
Line 
1# This module is implemented from this UML:
2#http://www.openehr.org/uml/release-1.0.1/Browsable/_9_0_76d0249_1109701308832_384250_6986Report.html
3# Ticket refs #46
4
5require 'uri'
6
7module URI
8 class EHR < ::URI::Generic
9 COMPONENT = [
10 :scheme, :path, :fragment, :query
11 ].freeze
12
13 def self.build(args)
14 tmp = Util::make_components_hash(self, args)
15 super(tmp)
16 end
17
18 def initialize(*arg)
19 super(*arg)
20 end
21
22 def self.use_registry
23 true
24 end
25 end
26 @@schemes['EHR'] = EHR
27end
28
29module OpenEHR
30 module RM
31 module DataTypes
32 module Uri
33 class DvUri < OpenEHR::RM::DataTypes::Basic::DataValue
34 def initialize(args = {})
35 self.value = args[:value]
36 end
37
38 def value
39 @value.to_s
40 end
41
42 def fragment_id
43 @value.fragment
44 end
45
46 def path
47 @value.path
48 end
49
50 def query
51 @value.query
52 end
53
54 def scheme
55 @value.scheme
56 end
57
58 def value=(value)
59 raise ArgumentError, "value is empty" if value.nil?
60 parse(value)
61 end
62
63 private
64
65 def parse(value)
66 @value = ::URI.parse(value)
67 end
68 end
69
70 class DvEhrUri < DvUri
71 def initialize(value)
72 super(value)
73 end
74
75 def value=(value)
76 raise ArgumentError, "scheme must be ehr" if !(value =~ /^ehr/i)
77 @value = parse(value)
78 end
79 end # of DV_EHR_URI
80 end # of URI
81 end # of DataTypes
82 end # of RM
83end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.