Sha256: b9c8d309e56a866a510170fe5866bc667b75ab7c6d463ec4355fb565da97e3f2

Contents?: true

Size: 964 Bytes

Versions: 7

Compression:

Stored size: 964 Bytes

Contents

module PushType
  module Fields
    module Base

      attr_reader :name      

      def initialize(name, opts = {})
        @name = name.to_s
        @opts = [defaults, self.class.options, opts].compact.inject(&:merge)
      end

      def kind
        self.class.kind
      end

      def json_key
        name.to_sym
      end

      def param
        json_key
      end

      def multiple?
        false
      end

      def template
        @opts[:template]
      end

      def label
        @opts[:label]
      end

      def html_options
        @opts[:html_options]
      end

      def form_helper
        @opts[:form_helper]
      end

      def to_json(val)
        val
      end

      def from_json(val)
        val
      end

      private

      def defaults
        {
          template:     'default',
          label:        name.humanize,
          form_helper:  :text_field,
          html_options: {}
        }
      end

    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
push_type_core-0.5.3 lib/push_type/fields/base.rb
push_type_core-0.5.2 lib/push_type/fields/base.rb
push_type_core-0.5.1 lib/push_type/fields/base.rb
push_type_core-0.5.0 lib/push_type/fields/base.rb
push_type_core-0.5.0.alpha.5 lib/push_type/fields/base.rb
push_type_core-0.5.0.alpha.4 lib/push_type/fields/base.rb
push_type_core-0.5.0.alpha.3 lib/push_type/fields/base.rb