Changeset 401 for ruby/trunk


Ignore:
Timestamp:
Jan 25, 2010, 5:35:20 PM (14 years ago)
Author:
KOBAYASHI, Shinji
Message:

fixed #71

Location:
ruby/trunk
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • ruby/trunk/lib/open_ehr/am/archetype/constraint_model/primitive.rb

    r400 r401  
    256256            end
    257257          end
     258
     259          class CDuration < CPrimitive
     260            attr_reader :range
     261            attr_accessor :years_allowed, :months_allowed, :weeks_allowed,
     262                          :days_allowed, :hours_allowed, :minutes_allowed,
     263                          :seconds_allowed, :fractional_seconds_allowed
     264
     265            def initialize(args = { })
     266              super
     267              self.fractional_seconds_allowed = args[:fractional_seconds_allowed]
     268              self.seconds_allowed = args[:seconds_allowed]
     269              self.minutes_allowed = args[:minutes_allowed]
     270              self.hours_allowed = args[:hours_allowed]
     271              self.days_allowed = args[:days_allowed]
     272              self.months_allowed = args[:months_allowed]
     273              self.weeks_allowed = args[:weeks_allowed]
     274              self.years_allowed = args[:years_allowed]
     275              self.range = args[:range]
     276            end
     277
     278            def range=(range)
     279              if range.nil? && !(@years_allowed ||
     280                    @months_allowed ||
     281                    @weeks_allowed ||
     282                    @days_allowed ||
     283                    @hours_allowed ||
     284                    @minutes_allowed ||
     285                    @seconds_allowed ||
     286                    @fractional_seconds_allowed)
     287                raise ArgumentError, 'invalid range'
     288              end
     289              @range = range
     290            end
     291          end
    258292        end # of Primitive
    259293      end # of CostraintModel
  • ruby/trunk/lib/open_ehr/assumed_library_types.rb

    r398 r401  
    165165      end
    166166
     167      def to_days
     168        days = nilthenzero(@year)*TimeDefinitions::NOMINAL_DAYS_IN_YEAR +
     169          nilthenzero(@month)*TimeDefinitions::NOMINAL_DAYS_IN_MONTH +
     170          nilthenzero(@day)
     171        return days
     172      end
     173
    167174      def month_unknown?
    168175        @month.nil?
     
    217224
    218225      def <=>(other)
    219         magnitude =
    220           nilthenzero(@year)*TimeDefinitions::NOMINAL_DAYS_IN_YEAR +
    221           nilthenzero(@month)*TimeDefinitions::NOMINAL_DAYS_IN_MONTH +
    222           nilthenzero(@day)
    223         other_magnitude =
    224           nilthenzero(other.year)*TimeDefinitions::NOMINAL_DAYS_IN_YEAR +
    225           nilthenzero(other.month)*TimeDefinitions::NOMINAL_DAYS_IN_MONTH +
    226           nilthenzero(other.day)
    227         magnitude <=> other_magnitude
     226        self.to_days <=> other.to_days
    228227      end
    229228
     
    322321      end
    323322
    324      
     323      def to_second
     324        second = (nilthenzero(@hour)*60 + nilthenzero(@minute))*60 +
     325          nilthenzero(@second) +
     326          nilthenzero(@fractional_second)
     327        return second
     328      end
    325329    end
    326330
     
    357361
    358362      def <=>(other)
    359         magnitude = (nilthenzero(@hour)*60 + nilthenzero(@minute))*60 +
    360           nilthenzero(@second) +
    361           nilthenzero(@fractional_second)
    362         other_magnitude = (nilthenzero(other.hour) * 60 +
    363                            nilthenzero(other.minute)) * 60 +
    364           nilthenzero(other.second) +
    365           nilthenzero(other.fractional_second)
    366         magnitude <=> other_magnitude
     363        self.to_second <=> other.to_second
    367364      end
    368365
     
    480477        end
    481478      end
     479
     480      def <=>(other)
     481        self.magnitude <=> other.magnitude
     482      end
     483
     484      protected
     485      def magnitude
     486        return self.to_days*HOURS_IN_DAY*MINUTES_IN_HOUR*SECONDS_IN_MINUTE +
     487          self.to_second
     488      end
    482489    end
    483490 
Note: See TracChangeset for help on using the changeset viewer.