Sha256: 50f99fb4d4acb18b230b6cfa49877fee1ee29e8c9f014e1e2170cd2609941694

Contents?: true

Size: 1.1 KB

Versions: 9

Compression:

Stored size: 1.1 KB

Contents

module Scrivito

#
# This class represents an attribute definition.
#
# @api public
#
class AttributeDefinition
  #
  # @!attribute [r] name
  #   @api public
  #   @return [String] the name of the attribute.
  #
  # @!attribute [r] type
  #   @api public
  #   @return [String] the type of the attribute.
  #
  attr_reader :name, :type

  def initialize(name, type, options = {})
    @name, @type, @options = name.to_s, type.to_s, options.with_indifferent_access
    assert_valid_options
  end

  #
  # Allowed values for an attribute.
  #
  # @api public
  # @return [Array<String>] allowed values if +type+ is +enum+ or +multienum+ or an empty array
  #   otherwise. If no values have been specified, an empty array is returned.
  #
  def values
    if type == 'enum' || type == 'multienum'
      @options[:values] || []
    else
      []
    end
  end

  def widgetlist?
    type == 'widgetlist'
  end

  private

  def assert_valid_options
    if (values = @options[:values]) && values.include?('')
      raise ScrivitoError, %{Empty string is not allowed as value for #{type} attribute "#{name}".}
    end
  end
end

end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
scrivito_sdk-1.0.0 lib/scrivito/attribute_definition.rb
scrivito_sdk-1.0.0.rc4 lib/scrivito/attribute_definition.rb
scrivito_sdk-1.0.0.rc3 lib/scrivito/attribute_definition.rb
scrivito_sdk-1.0.0.rc2 lib/scrivito/attribute_definition.rb
scrivito_sdk-1.0.0.rc1 lib/scrivito/attribute_definition.rb
scrivito_sdk-0.90.0 lib/scrivito/attribute_definition.rb
scrivito_sdk-0.90.0.rc3 lib/scrivito/attribute_definition.rb
scrivito_sdk-0.90.0.rc2 lib/scrivito/attribute_definition.rb
scrivito_sdk-0.90.0.rc1 lib/scrivito/attribute_definition.rb