Sha256: 7bd8b40a832a2cdf4920d8c911a2d98d2d8d59a066ab1dc9c80b79591d94f9e7

Contents?: true

Size: 1.07 KB

Versions: 7

Compression:

Stored size: 1.07 KB

Contents

module EfoNelfo

  class PostType
    include EfoNelfo::Property

    attr_reader :post_type

    @modules = []

    class << self
      def inherited(klass)
        @modules << klass
      end

      def for(type, version=nil)
        @modules.select { |mod| mod.can_parse?(type, version) }.first
      end

      def can_parse?(post_type, check_version=nil)
        if check_version
          self::POST_TYPES.keys.include?(post_type) && check_version == version
        else
          self::POST_TYPES.keys.include?(post_type)
        end
      end

      # Extracts version number from class namespace.
      # Example: EfoNelfo::V41::Some::Class.version  # => "4.1"
      def version
        (self.to_s.match(/::V(?<version>\d+)::/)[:version].to_f / 10).to_s
      end

    end

    def initialize(*args)
      initialize_attributes *args
      @post_type = self.class::POST_TYPES.keys.first
      @version   = self.class.version
    end

    # This is for adding posttypes
    def add(something)
    end

    def post_type_human
      self.class::POST_TYPES[post_type]
    end

  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
efo_nelfo-0.0.7 lib/efo_nelfo/post_type.rb
efo_nelfo-0.0.6 lib/efo_nelfo/post_type.rb
efo_nelfo-0.0.5 lib/efo_nelfo/post_type.rb
efo_nelfo-0.0.4 lib/efo_nelfo/post_type.rb
efo_nelfo-0.0.3 lib/efo_nelfo/post_type.rb
efo_nelfo-0.0.2 lib/efo_nelfo/post_type.rb
efo_nelfo-0.0.1 lib/efo_nelfo/post_type.rb