Sha256: 3288d32296d2afa5ac1db30119ba216e164ed6ecef199e610b4785199a3c9570

Contents?: true

Size: 1.06 KB

Versions: 2

Compression:

Stored size: 1.06 KB

Contents

require 'warekky'

module Warekky
  module CoreExt
    def self.included(klass)
      klass.extend(ClassMethods)
      unless klass.respond_to?(:parse_without_warekky)
        klass.instance_eval do
          alias :parse_without_warekky :parse
          alias :parse :parse_with_warekky
        end
      end
      unless klass.instance_methods.include?('strftime_without_warekky')
        klass.module_eval do
          alias_method :strftime_without_warekky, :strftime
          alias_method :strftime, :strftime_with_warekky
        end
      end
    end

    module ClassMethods
      def eras
        Warekky.era_group
      end

      def parse_with_warekky(str)
        eras.parse(str, :class => self)
      end
    end

    def strftime_with_warekky(format)
      self.class.eras.strftime(self, format)
    end
    
    def era
      self.class.eras[self]
    end
    
    def self.setup
      [::Time, ::Date].each do |klass|
        klass.send(:include, self)
      end
      ::DateTime.instance_eval do
        alias :parse :parse_with_warekky
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
warekky-0.1.1 lib/warekky/core_ext.rb
warekky-0.1.0 lib/warekky/core_ext.rb