source: ruby/trunk/lib/models/assumed_library_types.rb@ 69

Last change on this file since 69 was 69, checked in by KOBAYASHI, Shinji, 16 years ago

worked on #36

File size: 2.3 KB
Line 
1module OpenEHR
2 module Assumed_Library_Types
3 class Any < Object
4
5 end # of Any
6 class Interval < Any
7 attr_reader :lower, :lower_included, :lower_unbounded
8 attr_reader :upper, :upper_included, :upper_unbounded
9 def initialize(lower, upper,
10 lower_included = nil, upper_included = nil)
11 check_lower_upper(lower, upper)
12 set_lower_included(lower_included)
13 set_upper_included(upper_included)
14 end
15
16 def set_lower(lower)
17 check_lower_upper(lower, @upper)
18 end
19
20 def set_upper(upper)
21 check_lower_upper(@lower, upper)
22 end
23
24 def set_lower_included(lower_included)
25 if (lower == nil) && (lower_included != nil)
26 raise ArgumentError, "lower is not set"
27 end
28 @lower_included = lower_included
29 end
30
31 def set_upper_included(upper_included)
32 @upper_included = upper_included
33 if (upper == nil) && (upper_included != nil)
34 raise ArgumentError, "upper is not set"
35 end
36 end
37
38 def has?(value)
39 if ((@lower < value) && (value < @upper) ||
40 (@lower_included == true) && (@lower == value) ||
41 (@upper_included == true) && (@upper == value))
42 true
43 else
44 false
45 end
46 end
47
48 private
49
50 def check_lower_upper(lower, upper)
51 if (lower == nil) && (upper == nil)
52 raise ArgumentError, "Either lower or upper must be assigned"
53 end
54 if (lower == nil) && (upper != nil)
55 @lower_unbounded = true
56 elsif (lower != nil) && (upper == nil)
57 @upper_unbounded = true
58 elsif lower > upper
59 raise ArgumentError, "Upper must be larger than lower."
60 end
61 @lower = lower
62 @upper = upper
63 end
64 end # end of Interval
65
66 class TIME_DEFINITIONS < Any
67 DAYS_IN_LEAP_YEAR = 366
68 DAYS_IN_WEEK = 7
69 DAYS_IN_YEAR = 365
70 HOURS_IN_DAY = 24
71 MAX_DAYS_IN_MONTH = 31
72 MAX_DAYS_IN_YEAR = 366
73 MINUTES_IN_HOUR = 60
74 MONTH_IN_YEAR = 12
75 NOMINAL_DAYS_IN_MONTH = 30.42
76 NOMINAL_DAYS_IN_YEAR = 365.24
77 SECONDS_IN_MINUTE = 60
78 end # end of TIME_DEFINITIONS
79
80 class ISO_8601_DATE < TIME_DEFINITIONS
81
82 end # end of ISO_8601_DATE
83 end # end of Assumed_Types
84end # end of OpenEHR
Note: See TracBrowser for help on using the repository browser.