%YAML 1.2
---
# See http://www.sublimetext.com/docs/3/syntax.html
name: Pipe Separated Values
scope: text.csv.pipe
variables:
  field_separator: (?:\|)
  record_separator: (?:$\n?)

contexts:
  main:
    - match: '^'
      push: fields

  fields:
    - include: record_separator
    - match: ''
      push:
        - field_or_record_separator
        - field5
        - field_or_record_separator
        - field4
        - field_or_record_separator
        - field3
        - field_or_record_separator
        - field2
        - field_or_record_separator
        - field1

  record_separator_pop:
    - match: (?={{record_separator}})
      pop: true

  record_separator:
    - meta_include_prototype: false
    - match: '{{record_separator}}'
      scope: punctuation.terminator.record.csv
      pop: true

  field_or_record_separator:
    - meta_include_prototype: false
    - include: record_separator_pop
    - match: '{{field_separator}}'
      scope: punctuation.separator.sequence.csv
      pop: true

  field_contents:
    - match: '"'
      scope: punctuation.definition.string.begin.csv
      push: scope:text.csv#double_quoted_string

    - include: record_separator_pop
    - match: (?={{field_separator}})
      pop: true

  field1:
    - match: ''
      set:
        - meta_content_scope: meta.field-1.csv variable.parameter
        - include: field_contents
  field2:
    - match: ''
      set:
        - meta_content_scope: meta.field-2.csv support.function
        - include: field_contents
  field3:
    - match: ''
      set:
        - meta_content_scope: meta.field-3.csv constant.numeric
        - include: field_contents
  field4:
    - match: ''
      set:
        - meta_content_scope: meta.field-4.csv keyword.operator
        - include: field_contents
  field5:
    - match: ''
      set:
        - meta_content_scope: meta.field-5.csv string.unquoted
        - include: field_contents