[4] | 1 | module OpenEHR
|
---|
| 2 | module Assumed_Library_Types
|
---|
[69] | 3 | class Any < Object
|
---|
| 4 |
|
---|
| 5 | end # of Any
|
---|
| 6 | class Interval < Any
|
---|
[4] | 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
|
---|
[21] | 15 |
|
---|
[4] | 16 | def set_lower(lower)
|
---|
| 17 | check_lower_upper(lower, @upper)
|
---|
| 18 | end
|
---|
[21] | 19 |
|
---|
[4] | 20 | def set_upper(upper)
|
---|
| 21 | check_lower_upper(@lower, upper)
|
---|
| 22 | end
|
---|
[21] | 23 |
|
---|
[4] | 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
|
---|
[21] | 30 |
|
---|
[4] | 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
|
---|
[21] | 37 |
|
---|
[4] | 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
|
---|
[21] | 47 |
|
---|
[4] | 48 | private
|
---|
[21] | 49 |
|
---|
[4] | 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
|
---|
[69] | 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
|
---|
| 84 | end # end of OpenEHR
|
---|