Sha256: 53a3b038b0480efa74435fab6ddbf4bd5a4c53670bcdf3c0f7d64049a4bac961

Contents?: true

Size: 985 Bytes

Versions: 6

Compression:

Stored size: 985 Bytes

Contents

module Ecoportal
  module API
    class V1
      class SchemaField < Common::BaseModel
        passthrough :id, :alt_id, :name, :optional, :shared, :multiple, :type, :options

        def parse_text(value)
          values = [*value.to_s.lines].map do |line|
            line = line.chomp
            next if line == ""
            case type
            when "text", "phone_number"
              line
            when "number"
              Float(line) rescue return nil, false
            when "boolean"
              %w[true TRUE True Y y YES X x].include?(line)
            when "select"
              return nil, false unless options.include?(line)
              line
            when "date"
              Date.parse(line) rescue return nil, false
            end
          end.compact
          if multiple
            return values, true
          else
            return values.first, true
          end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ecoportal-api-0.9.7 lib/ecoportal/api/v1/schema_field.rb
ecoportal-api-0.9.6 lib/ecoportal/api/v1/schema_field.rb
ecoportal-api-0.9.5 lib/ecoportal/api/v1/schema_field.rb
ecoportal-api-0.9.4 lib/ecoportal/api/v1/schema_field.rb
ecoportal-api-0.9.3 lib/ecoportal/api/v1/schema_field.rb
ecoportal-api-0.9.2 lib/ecoportal/api/v1/schema_field.rb