Sha256: 2ac224df37bc041d3f2cf23108690e85bd537fd89faf64659c312b4eef1fb29b

Contents?: true

Size: 954 Bytes

Versions: 9

Compression:

Stored size: 954 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

          out = values
          out = values.first unless multiple
          [out, true]
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
ecoportal-api-0.10.8 lib/ecoportal/api/v1/schema_field.rb
ecoportal-api-0.10.7 lib/ecoportal/api/v1/schema_field.rb
ecoportal-api-0.10.6 lib/ecoportal/api/v1/schema_field.rb
ecoportal-api-0.10.5 lib/ecoportal/api/v1/schema_field.rb
ecoportal-api-0.10.4 lib/ecoportal/api/v1/schema_field.rb
ecoportal-api-0.10.3 lib/ecoportal/api/v1/schema_field.rb
ecoportal-api-0.10.2 lib/ecoportal/api/v1/schema_field.rb
ecoportal-api-0.10.1 lib/ecoportal/api/v1/schema_field.rb
ecoportal-api-0.10.0 lib/ecoportal/api/v1/schema_field.rb