Sha256: cedc6d7544530810089eaa6f84d7a4041cde21141bfdc12e80a0dd78435d56c9

Contents?: true

Size: 997 Bytes

Versions: 5

Compression:

Stored size: 997 Bytes

Contents

module DateBook
  module ActsAsSchedule
    def acts_as_schedule(options = {})
      include InstanceMethods
    end

    module InstanceMethods
      def duration_attributes
        OpenStruct.new count: duration_count, unit: duration_unit
      end

      def duration_attributes=(value)
        if value.is_a? Hash
          self.duration = value['count'].to_i.send(value['unit'].to_sym).to_i
        end
        super value
      end

      def duration_count
        duration / 1.send(duration_unit.singularize.to_sym).to_i
      end

      def duration_unit
        return 'seconds' if duration == 0
        DateBook.configuration.duration_units.select { |x| is_unit? x }.first || 'seconds'
      end

      def human_date
        I18n.localize date, format: :human_date
      end

      def human_time
        I18n.localize time, format: :human_time
      end

      private

      def is_unit?(unit)
        duration % 1.send(unit.singularize.to_sym).to_i == 0
      end
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
date_book-0.0.6 lib/date_book/concerns/acts_as_schedule.rb
date_book-0.0.5 lib/date_book/concerns/acts_as_schedule.rb
date_book-0.0.3 lib/date_book/concerns/acts_as_schedule.rb
date_book-0.0.2 lib/date_book/concerns/acts_as_schedule.rb
date_book-0.0.1 lib/date_book/concerns/acts_as_schedule.rb