Sha256: c128a2888a182fb4548e1fac70d0dac1c84b269b6d161aab759b7fb22d6e99d1

Contents?: true

Size: 1.28 KB

Versions: 82

Compression:

Stored size: 1.28 KB

Contents

module Avo
  module Concerns
    module HandlesFieldArgs
      extend ActiveSupport::Concern

      private

      # Add an instance variable from args
      # That may be a string, boolean, or array
      # Each args should also have a default value
      def add_prop_from_args(args = {}, name: nil, type: :string, default: nil)
        value = default

        if type == :boolean
          case args[name.to_sym]
          when nil
            value = default
          when false
            value = false
          when true
            value = true
          end
        else
          value = args[name.to_sym] unless args.dig(name.to_sym).nil?
        end

        instance_variable_set(:"@#{name}", value)
      end

      def add_boolean_prop(args, name, default = false)
        add_prop_from_args args, name: name, default: default, type: :boolean
      end

      def add_array_prop(args, name, default = [])
        add_prop_from_args args, name: name, default: default, type: :array
      end

      def add_object_prop(args, name, default = {})
        add_prop_from_args args, name: name, default: default, type: :object
      end

      def add_string_prop(args, name, default = nil)
        add_prop_from_args args, name: name, default: default, type: :string
      end
    end
  end
end

Version data entries

82 entries across 82 versions & 1 rubygems

Version Path
avo-2.53.0 lib/avo/concerns/handles_field_args.rb
avo-2.52.0 lib/avo/concerns/handles_field_args.rb
avo-2.49.0 lib/avo/concerns/handles_field_args.rb
avo-2.48.0 lib/avo/concerns/handles_field_args.rb
avo-2.47.0 lib/avo/concerns/handles_field_args.rb
avo-2.46.0 lib/avo/concerns/handles_field_args.rb
avo-2.45.0 lib/avo/concerns/handles_field_args.rb
avo-2.44.0 lib/avo/concerns/handles_field_args.rb
avo-2.43.0 lib/avo/concerns/handles_field_args.rb
avo-2.42.2 lib/avo/concerns/handles_field_args.rb
avo-2.42.1 lib/avo/concerns/handles_field_args.rb
avo-2.42.0 lib/avo/concerns/handles_field_args.rb
avo-2.41.0 lib/avo/concerns/handles_field_args.rb
avo-2.40.0 lib/avo/concerns/handles_field_args.rb
avo-2.39.0 lib/avo/concerns/handles_field_args.rb
avo-2.38.0 lib/avo/concerns/handles_field_args.rb
avo-2.37.2 lib/avo/concerns/handles_field_args.rb
avo-2.37.1 lib/avo/concerns/handles_field_args.rb
avo-2.37.0 lib/avo/concerns/handles_field_args.rb
avo-2.36.3 lib/avo/concerns/handles_field_args.rb