Sha256: 0c7d9d189ff0f1d1c9dbfe4ef32da247e738f2efcdb269987479dc778eedef7d

Contents?: true

Size: 1.18 KB

Versions: 3

Compression:

Stored size: 1.18 KB

Contents

# encoding: UTF-8

module Spontaneous::Field
  class Boolean < Base
    has_editor "Spontaneous.Field.Boolean"

    def self.default_options
      {default: true, true: "Yes", false: "No"}
    end

    def self.export(user)
      super.merge({
        labels: { true: prototype.options[:true], false: prototype.options[:false] }
      })
    end

    def outputs
      [:boolean, :html, :string]
    end

    def value(format = :boolean)
      super(format)
    end

    def checked?
      value(:boolean)
    end

    alias_method :on?, :checked?
    alias_method :enabled?, :checked?

    def preprocess(value)
      case value
      when TrueClass, FalseClass
        value
      when "", nil
        o = self.class.prototype.options
        return o[:default] if o.key?(:default)
        true
      when "1", "true"
        true
      else
        false
      end
    end

    def generate_boolean(state)
      state
    end

    def generate_html(state)
      string_value(state)
    end

    def generate_string(state)
      string_value(state)
    end

    def string_value(state)
      self.class.prototype.options[(state ? :true : :false)]
    end

    self.register(:boolean, :switch)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
spontaneous-0.2.0.beta4 lib/spontaneous/field/boolean.rb
spontaneous-0.2.0.beta3 lib/spontaneous/field/boolean.rb
spontaneous-0.2.0.beta2 lib/spontaneous/field/boolean.rb