Sha256: ee56d1a9034ce1589780cb41d741c424cafcb09b405a84b1608c067990a9121d

Contents?: true

Size: 1.56 KB

Versions: 18

Compression:

Stored size: 1.56 KB

Contents

module Frodo
  module Properties
    # Defines the String Frodo type.
    class String < Frodo::Property
      # Returns the property value, properly typecast
      # @return [String,nil]
      def value
        if (@value.nil? || @value.empty?) && allows_nil?
          nil
        else
          encode_value(@value)
        end
      end

      # Sets the property value
      # @params new_value [to_s,nil]
      def value=(new_value)
        validate(new_value)
        @value = new_value.nil? ? nil : encode_value(new_value.to_s)
      end

      # Value to be used in URLs.
      # @return [String]
      def url_value
        "'#{value}'"
      end

      # The Frodo type name
      def type
        'Edm.String'
      end

      # Is the property value Unicode encoded
      def is_unicode?
        options[:unicode]
      end

      # Does the property have a default value
      def has_default_value?
        not(options[:default_value].nil?)
      end

      # The default value for the property
      def default_value
        options[:default_value]
      end

      private

      def default_options
        super.merge({
          unicode: true,
          default_value: nil
        })
      end

      def validate(new_value)
        if new_value.nil? && !allows_nil?
          validation_error 'This property does not allow for nil values to be set'
        end
      end

      def encode_value(new_value)
        if options[:unicode]
          new_value.encode(Encoding::UTF_8)
        else
          new_value.encode(Encoding::ASCII)
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
frodo-0.12.8 lib/frodo/properties/string.rb
frodo-0.12.7 lib/frodo/properties/string.rb
frodo-0.12.6 lib/frodo/properties/string.rb
frodo-0.12.5 lib/frodo/properties/string.rb
frodo-0.12.4 lib/frodo/properties/string.rb
frodo-0.12.2 lib/frodo/properties/string.rb
frodo-0.12.1 lib/frodo/properties/string.rb
frodo-0.12.0 lib/frodo/properties/string.rb
frodo-0.11.0 lib/frodo/properties/string.rb
frodo-0.10.8 lib/frodo/properties/string.rb
frodo-0.10.7 lib/frodo/properties/string.rb
frodo-0.10.6 lib/frodo/properties/string.rb
frodo-0.10.5 lib/frodo/properties/string.rb
frodo-0.10.4 lib/frodo/properties/string.rb
frodo-0.10.3 lib/frodo/properties/string.rb
frodo-0.10.2 lib/frodo/properties/string.rb
frodo-0.10.1 lib/frodo/properties/string.rb
frodo-0.10.0 lib/frodo/properties/string.rb