Changeset 70 for ruby/trunk/lib/models/assumed_library_types.rb
- Timestamp:
- Jun 29, 2008, 10:52:16 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ruby/trunk/lib/models/assumed_library_types.rb
r69 r70 1 require 'date' 2 1 3 module OpenEHR 2 4 module Assumed_Library_Types … … 76 78 NOMINAL_DAYS_IN_YEAR = 365.24 77 79 SECONDS_IN_MINUTE = 60 80 81 def self.valid_year?(year) 82 year >= 0 83 end 84 85 def self.valid_day?(y, m, d) 86 Date.valid_date?(y,m,d) and valid_year? y 87 end 88 89 def self.valid_hour?(h,m,s) 90 valid_minute?(m) and valid_second?(s) and ((h >= 0 and h < HOURS_IN_DAY) or (h == HOURS_IN_DAY and m == 0 and s == 0)) 91 end 92 def self.valid_minute?(m) 93 m >= 0 and m < MINUTES_IN_HOUR 94 end 95 def self.valid_second?(s) 96 s >= 0 and s < SECONDS_IN_MINUTE 97 end 98 def self.valid_month?(m) 99 m >= 1 and m <= MONTH_IN_YEAR 100 end 78 101 end # end of TIME_DEFINITIONS 79 102 80 class ISO_8601_DATE < TIME_DEFINITIONS 81 103 class ISO8601_DATE < TIME_DEFINITIONS 104 attr_reader :year, :month, :day 105 def initialize(year = nil, month = nil, day = nil) 106 @year = @month = @day = nil 107 if !year.nil? 108 self.year = year 109 end 110 if !month.nil? 111 self.month = month 112 end 113 if !day.nil? 114 self.day = day 115 end 116 end 117 def year=(year) 118 raise ArgumentError, "Year is not valid" if !ISO8601_DATE.valid_year?(year) 119 @year = year 120 end 121 def month=(month) 122 raise ArgumentError, "Month is not valid" if !ISO8601_DATE.valid_month?(month) 123 @month = month 124 end 125 def day=(day) 126 raise ArgumentError, "Day is not valid" if !ISO8601_DATE.valid_day?(@year, @month, day) 127 @day = day 128 end 129 def as_string 130 if (!@year.nil? and !@month.nil? and !@day.nil?) 131 Date.new(@year, @month, @day).to_s 132 elsif (!@year.nil? and !@month.nil? and @day.nil?) 133 Date.new(@year, @month).to_s[0,7] 134 elsif (!@year.nil? and @month.nil? and @day.nil?) 135 Date.new(@year).to_s[0,4] 136 end 137 end 138 def month_unknown? 139 @month.nil? 140 end 141 def day_unknown? 142 @day.nil? 143 end 144 def is_extended? 145 true 146 end 147 def is_partial? 148 month_unknown? or day_unknown? 149 end 150 def valid_iso8601_date(string) 151 begin 152 date = Date.parse(string) 153 rescue 154 return false 155 end 156 true 157 end 82 158 end # end of ISO_8601_DATE 83 159 end # end of Assumed_Types
Note:
See TracChangeset
for help on using the changeset viewer.