Ignore:
Timestamp:
Jun 30, 2009, 11:59:58 PM (15 years ago)
Author:
KOBAYASHI, Shinji
Message:

refs #49

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ruby/trunk/lib/models/assumed_library_types.rb

    r143 r149  
    165165        month_unknown? or day_unknown?
    166166      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
    167176    end
    168177
     
    187196        end
    188197      end
     198
    189199      def self.valid_iso8601_date?(string)
    190200        begin
     
    353363    end # end of ISO8601_TIME
    354364
    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
    401367      def as_string
    402368        if (!@year.nil? and !@month.nil? and !@day.nil?)
     
    424390        return s
    425391      end
    426 
    427392    end
    428393
     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 
    429441    class ISO8601_TIMEZONE
    430442      attr_accessor :sign, :hour, :minute
     
    444456    end # end of ISO8601_TIMEZONE
    445457
    446     class ISO8601_DURATION < TIME_DEFINITIONS
     458    module ISO8601_DURATION_MODULE
    447459      attr_reader :years, :months, :weeks, :days
    448460      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)?)?$/ =~ str
    452         self.years = $2.to_i
    453         self.months = $4.to_i
    454         self.weeks = $6.to_i
    455         self.days = $8.to_i
    456         self.hours = $11.to_i
    457         self.minutes = $13.to_i
    458         self.seconds = $15.to_i
    459         self.fractional_second = $16.to_f
    460       end
    461461
    462462      def years=(years)
     
    545545        return str
    546546      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
    547561    end # end of ISO8601_DURATION
    548562  end # end of Assumed_Types
Note: See TracChangeset for help on using the changeset viewer.