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

Last change on this file since 230 was 230, checked in by KOBAYASHI, Shinji, 11 years ago

move from test to rspec

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#require 'uri/generic'
7module URI
8  class Ehr < ::URI::Generic
9    COMPONENT = [
10      :scheme, :path, :fragment, :query
11    ].freeze
12    def self.build(args)
13      tmp = Util::make_components_hash(self, args)
14      super(tmp)
15    end
16    def initialize(*arg)
17      super(*arg)
18    end
19    def self.use_registry
20      true
21    end
22  end
23  @@schemes['EHR'] = Ehr
24end
25
26module OpenEHR
27  module RM
28    module DataTypes
29      module Uri
30        class DvUri < OpenEHR::RM::DataTypes::Basic::DataValue
31          def initialize(args ={})
32            self.value = args[:value]
33          end
34          def fragment_id
35            @value.fragment
36          end
37          def path
38            @value.path
39          end
40          def query
41            @value.query
42          end
43          def scheme
44            @value.scheme
45          end
46          def value=(value)
47            raise ArgumentError, "value is empty" if value.nil?
48            parse(value)
49          end
50          def value
51            @value.to_s
52          end
53          private
54          def parse(value)
55            @value = ::URI.parse(value)
56          end
57        end
58
59        class DvEhrUri < DvUri
60          def initialize(value)
61            super(value)
62          end
63          def value=(value)
64            raise ArgumentError, "scheme must be ehr" if !(value =~ /^ehr/i)
65            parse(value)
66          end
67        end # of DV_EHR_URI
68      end # of URI
69    end # of DataTypes
70  end # of RM
71end # of OpenEHR
Note: See TracBrowser for help on using the repository browser.