Sha256: 0a1a66b1286f11dd352c2e69763596cbcded9f703b1aad280ac1160c412ed7cf

Contents?: true

Size: 1.27 KB

Versions: 11

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

module Katalyst
  module Tables
    module Collection
      module Query
        class ArrayValueParser < ValueParser
          def initialize(...)
            super

            @value = []
          end

          # @param query [StringScanner]
          def parse(query)
            @query = query

            query.scan(/#{'\['}\s*/)

            until query.eos?
              @value_start = query.charpos
              break unless take_quoted_value || take_unquoted_value
              break unless take_delimiter
            end

            query.scan(/\s*#{'\]'}?/)

            @end = query.charpos

            self
          end

          def take_delimiter
            query.scan(/\s*#{','}\s*/)
          end

          def value
            @value.map(&:value)
          end

          def value=(value)
            @value << Value.new(value, @value_start, @query.charpos)
          end

          def value_at(position)
            @value.detect { |v| v.range.cover?(position) }&.value
          end

          class Value
            attr_accessor :range, :value

            def initialize(value, start, fin)
              @value = value
              @range = (start..fin)
            end
          end
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
katalyst-tables-3.8.0 app/models/concerns/katalyst/tables/collection/query/array_value_parser.rb
katalyst-tables-3.7.0 app/models/concerns/katalyst/tables/collection/query/array_value_parser.rb
katalyst-tables-3.6.2 app/models/concerns/katalyst/tables/collection/query/array_value_parser.rb
katalyst-tables-3.6.1 app/models/concerns/katalyst/tables/collection/query/array_value_parser.rb
katalyst-tables-3.6.0 app/models/concerns/katalyst/tables/collection/query/array_value_parser.rb
katalyst-tables-3.5.5 app/models/concerns/katalyst/tables/collection/query/array_value_parser.rb
katalyst-tables-3.5.4 app/models/concerns/katalyst/tables/collection/query/array_value_parser.rb
katalyst-tables-3.5.3 app/models/concerns/katalyst/tables/collection/query/array_value_parser.rb
katalyst-tables-3.5.2 app/models/concerns/katalyst/tables/collection/query/array_value_parser.rb
katalyst-tables-3.5.1 app/models/concerns/katalyst/tables/collection/query/array_value_parser.rb
katalyst-tables-3.5.0 app/models/concerns/katalyst/tables/collection/query/array_value_parser.rb