Changeset 149 for ruby/trunk/lib/models/assumed_library_types.rb
- Timestamp:
- Jun 30, 2009, 11:59:58 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ruby/trunk/lib/models/assumed_library_types.rb
r143 r149 165 165 month_unknown? or day_unknown? 166 166 end 167 168 protected 169 def leapyear?(year) 170 case 171 when year % 400 == 0: true 172 when year % 100 == 0: false 173 else year % 4 == 0 174 end 175 end 167 176 end 168 177 … … 187 196 end 188 197 end 198 189 199 def self.valid_iso8601_date?(string) 190 200 begin … … 353 363 end # end of ISO8601_TIME 354 364 355 class ISO8601_DATE_TIME < ISO8601_DATE 356 include ISO8601_TIME_MODULE, ISO8601_DATE_MODULE 357 def initialize(string) 358 /(\d{4})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?(Z|([+-]\d{2}):?(\d{2}))?)?)?)?/ =~ string 359 if $1.empty? 360 raise ArgumentError, 'format invalid' 361 else 362 self.year = $1.to_i 363 end 364 if $2.nil? 365 self.month = nil 366 else 367 self.month = $2.to_i 368 end 369 if $3.nil? 370 self.day = nil 371 else 372 self.day = $3.to_i 373 end 374 if $5.nil? 375 self.minute = nil 376 else 377 self.minute = $5.to_i 378 end 379 if $6.nil? 380 self.second = nil 381 else 382 self.second = $6.to_i 383 end 384 if $4.nil? 385 self.hour = nil 386 else 387 self.hour = $4.to_i 388 end 389 if $7.nil? or $7.empty? 390 self.fractional_second = nil 391 else 392 self.fractional_second = ("0."+$7).to_f 393 end 394 if $8.nil? 395 self.timezone = nil 396 else 397 self.timezone = $9+$10 398 end 399 end 400 365 module ISO8601_DATE_TIME_MODULE 366 include ISO8601_DATE_MODULE, ISO8601_TIME_MODULE 401 367 def as_string 402 368 if (!@year.nil? and !@month.nil? and !@day.nil?) … … 424 390 return s 425 391 end 426 427 392 end 428 393 394 class ISO8601_DATE_TIME < ISO8601_DATE 395 include ISO8601_DATE_TIME_MODULE 396 def initialize(string) 397 /(\d{4})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?(Z|([+-]\d{2}):?(\d{2}))?)?)?)?/ =~ string 398 if $1.empty? 399 raise ArgumentError, 'format invalid' 400 else 401 self.year = $1.to_i 402 end 403 if $2.nil? 404 self.month = nil 405 else 406 self.month = $2.to_i 407 end 408 if $3.nil? 409 self.day = nil 410 else 411 self.day = $3.to_i 412 end 413 if $5.nil? 414 self.minute = nil 415 else 416 self.minute = $5.to_i 417 end 418 if $6.nil? 419 self.second = nil 420 else 421 self.second = $6.to_i 422 end 423 if $4.nil? 424 self.hour = nil 425 else 426 self.hour = $4.to_i 427 end 428 if $7.nil? or $7.empty? 429 self.fractional_second = nil 430 else 431 self.fractional_second = ("0."+$7).to_f 432 end 433 if $8.nil? 434 self.timezone = nil 435 else 436 self.timezone = $9+$10 437 end 438 end 439 end 440 429 441 class ISO8601_TIMEZONE 430 442 attr_accessor :sign, :hour, :minute … … 444 456 end # end of ISO8601_TIMEZONE 445 457 446 class ISO8601_DURATION < TIME_DEFINITIONS458 module ISO8601_DURATION_MODULE 447 459 attr_reader :years, :months, :weeks, :days 448 460 attr_reader :hours, :minutes, :seconds, :fractional_second 449 450 def initialize(str)451 /^P((\d+)Y)?((\d+)M)?((\d+)W)?((\d)D)?(T((\d+)H)?((\d+)M)?((\d+)(\.\d+)?S)?)?$/ =~ str452 self.years = $2.to_i453 self.months = $4.to_i454 self.weeks = $6.to_i455 self.days = $8.to_i456 self.hours = $11.to_i457 self.minutes = $13.to_i458 self.seconds = $15.to_i459 self.fractional_second = $16.to_f460 end461 461 462 462 def years=(years) … … 545 545 return str 546 546 end 547 end 548 class ISO8601_DURATION < TIME_DEFINITIONS 549 include ISO8601_DURATION_MODULE 550 def initialize(str) 551 /^P((\d+)Y)?((\d+)M)?((\d+)W)?((\d)D)?(T((\d+)H)?((\d+)M)?((\d+)(\.\d+)?S)?)?$/ =~ str 552 self.years = $2.to_i 553 self.months = $4.to_i 554 self.weeks = $6.to_i 555 self.days = $8.to_i 556 self.hours = $11.to_i 557 self.minutes = $13.to_i 558 self.seconds = $15.to_i 559 self.fractional_second = $16.to_f 560 end 547 561 end # end of ISO8601_DURATION 548 562 end # end of Assumed_Types
Note:
See TracChangeset
for help on using the changeset viewer.