Namespace

Included Modules

Class/Module Index [+]

Quicksearch

Mail::RFC2822

Public Instance Methods

_nt_ALPHA() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 14
def _nt_ALPHA
  start_index = index
  if node_cache[:ALPHA].has_key?(index)
    cached = node_cache[:ALPHA][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  if has_terminal?('\G[a-zA-Z]', true, index)
    r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
    @index += 1
  else
    r0 = nil
  end

  node_cache[:ALPHA][start_index] = r0

  r0
end
_nt_CFWS() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 304
def _nt_CFWS
  start_index = index
  if node_cache[:CFWS].has_key?(index)
    cached = node_cache[:CFWS][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  s1, i1 = [], index
  loop do
    i2, s2 = index, []
    s3, i3 = [], index
    loop do
      r4 = _nt_FWS
      if r4
        s3 << r4
      else
        break
      end
    end
    r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
    s2 << r3
    if r3
      r5 = _nt_comment
      s2 << r5
    end
    if s2.last
      r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
      r2.extend(CFWS0)
    else
      @index = i2
      r2 = nil
    end
    if r2
      s1 << r2
    else
      break
    end
  end
  r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
  s0 << r1
  if r1
    r7 = _nt_FWS
    if r7
      r6 = r7
    else
      r6 = instantiate_node(SyntaxNode,input, index...index)
    end
    s0 << r6
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(CFWS1)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:CFWS][start_index] = r0

  r0
end
_nt_CR() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 108
def _nt_CR
  start_index = index
  if node_cache[:CR].has_key?(index)
    cached = node_cache[:CR][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  if has_terminal?("\r", false, index)
    r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
    @index += 1
  else
    terminal_parse_failure("\r")
    r0 = nil
  end

  node_cache[:CR][start_index] = r0

  r0
end
_nt_CRLF() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 132
def _nt_CRLF
  start_index = index
  if node_cache[:CRLF].has_key?(index)
    cached = node_cache[:CRLF][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  if has_terminal?("\r\n", false, index)
    r0 = instantiate_node(SyntaxNode,input, index...(index + 2))
    @index += 2
  else
    terminal_parse_failure("\r\n")
    r0 = nil
  end

  node_cache[:CRLF][start_index] = r0

  r0
end
_nt_DIGIT() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 37
def _nt_DIGIT
  start_index = index
  if node_cache[:DIGIT].has_key?(index)
    cached = node_cache[:DIGIT][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  if has_terminal?('\G[0-9]', true, index)
    r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
    @index += 1
  else
    r0 = nil
  end

  node_cache[:DIGIT][start_index] = r0

  r0
end
_nt_DQUOTE() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 60
def _nt_DQUOTE
  start_index = index
  if node_cache[:DQUOTE].has_key?(index)
    cached = node_cache[:DQUOTE][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  if has_terminal?('"', false, index)
    r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
    @index += 1
  else
    terminal_parse_failure('"')
    r0 = nil
  end

  node_cache[:DQUOTE][start_index] = r0

  r0
end
_nt_FWS() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 193
def _nt_FWS
  start_index = index
  if node_cache[:FWS].has_key?(index)
    cached = node_cache[:FWS][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  s2, i2 = [], index
  loop do
    r3 = _nt_WSP
    if r3
      s2 << r3
    else
      break
    end
  end
  r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
  s1 << r2
  if r2
    r4 = _nt_CRLF
    s1 << r4
    if r4
      s5, i5 = [], index
      loop do
        r6 = _nt_WSP
        if r6
          s5 << r6
        else
          break
        end
      end
      if s5.empty?
        @index = i5
        r5 = nil
      else
        r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
      end
      s1 << r5
    end
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(FWS0)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    i7, s7 = index, []
    r8 = _nt_CRLF
    s7 << r8
    if r8
      s9, i9 = [], index
      loop do
        r10 = _nt_WSP
        if r10
          s9 << r10
        else
          break
        end
      end
      if s9.empty?
        @index = i9
        r9 = nil
      else
        r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
      end
      s7 << r9
    end
    if s7.last
      r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
      r7.extend(FWS1)
    else
      @index = i7
      r7 = nil
    end
    if r7
      r0 = r7
    else
      r11 = _nt_obs_FWS
      if r11
        r0 = r11
      else
        @index = i0
        r0 = nil
      end
    end
  end

  node_cache[:FWS][start_index] = r0

  r0
end
_nt_LF() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 84
def _nt_LF
  start_index = index
  if node_cache[:LF].has_key?(index)
    cached = node_cache[:LF][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  if has_terminal?("\n", false, index)
    r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
    @index += 1
  else
    terminal_parse_failure("\n")
    r0 = nil
  end

  node_cache[:LF][start_index] = r0

  r0
end
_nt_NO_WS_CTL() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 371
def _nt_NO_WS_CTL
  start_index = index
  if node_cache[:NO_WS_CTL].has_key?(index)
    cached = node_cache[:NO_WS_CTL][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  if has_terminal?('\G[\x01-\x08]', true, index)
    r1 = true
    @index += 1
  else
    r1 = nil
  end
  if r1
    r0 = r1
  else
    if has_terminal?('\G[\x0B-\x0C]', true, index)
      r2 = true
      @index += 1
    else
      r2 = nil
    end
    if r2
      r0 = r2
    else
      if has_terminal?('\G[\x0E-\x1F]', true, index)
        r3 = true
        @index += 1
      else
        r3 = nil
      end
      if r3
        r0 = r3
      else
        if has_terminal?('\G[\x7f]', true, index)
          r4 = true
          @index += 1
        else
          r4 = nil
        end
        if r4
          r0 = r4
        else
          @index = i0
          r0 = nil
        end
      end
    end
  end

  node_cache[:NO_WS_CTL][start_index] = r0

  r0
end
_nt_WSP() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 156
def _nt_WSP
  start_index = index
  if node_cache[:WSP].has_key?(index)
    cached = node_cache[:WSP][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  if has_terminal?('\G[\x09\x20]', true, index)
    r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
    @index += 1
  else
    r0 = nil
  end

  node_cache[:WSP][start_index] = r0

  r0
end
_nt_addr_spec() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2085
def _nt_addr_spec
  start_index = index
  if node_cache[:addr_spec].has_key?(index)
    cached = node_cache[:addr_spec][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r2 = _nt_local_part
  s1 << r2
  if r2
    if has_terminal?("@", false, index)
      r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
      @index += 1
    else
      terminal_parse_failure("@")
      r3 = nil
    end
    s1 << r3
    if r3
      r4 = _nt_domain
      s1 << r4
    end
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(AddrSpec0)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    r5 = _nt_local_part
    if r5
      r0 = r5
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:addr_spec][start_index] = r0

  r0
end
_nt_address() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2869
def _nt_address
  start_index = index
  if node_cache[:address].has_key?(index)
    cached = node_cache[:address][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_group
  r1.extend(Address0)
  if r1
    r0 = r1
  else
    r2 = _nt_mailbox
    if r2
      r0 = r2
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:address][start_index] = r0

  r0
end
_nt_address_list() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2916
def _nt_address_list
  start_index = index
  if node_cache[:address_list].has_key?(index)
    cached = node_cache[:address_list][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r2 = _nt_address
  if r2
    r1 = r2
  else
    r1 = instantiate_node(SyntaxNode,input, index...index)
  end
  s0 << r1
  if r1
    s3, i3 = [], index
    loop do
      i4, s4 = index, []
      s5, i5 = [], index
      loop do
        r6 = _nt_FWS
        if r6
          s5 << r6
        else
          break
        end
      end
      r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
      s4 << r5
      if r5
        i7 = index
        if has_terminal?(",", false, index)
          r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
          @index += 1
        else
          terminal_parse_failure(",")
          r8 = nil
        end
        if r8
          r7 = r8
        else
          if has_terminal?(";", false, index)
            r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
            @index += 1
          else
            terminal_parse_failure(";")
            r9 = nil
          end
          if r9
            r7 = r9
          else
            @index = i7
            r7 = nil
          end
        end
        s4 << r7
        if r7
          s10, i10 = [], index
          loop do
            r11 = _nt_FWS
            if r11
              s10 << r11
            else
              break
            end
          end
          r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
          s4 << r10
          if r10
            r13 = _nt_address
            if r13
              r12 = r13
            else
              r12 = instantiate_node(SyntaxNode,input, index...index)
            end
            s4 << r12
          end
        end
      end
      if s4.last
        r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
        r4.extend(AddressList0)
      else
        @index = i4
        r4 = nil
      end
      if r4
        s3 << r4
      else
        break
      end
    end
    r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
    s0 << r3
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(AddressList1)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:address_list][start_index] = r0

  r0
end
_nt_angle_addr() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1998
def _nt_angle_addr
  start_index = index
  if node_cache[:angle_addr].has_key?(index)
    cached = node_cache[:angle_addr][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r3 = _nt_CFWS
  if r3
    r2 = r3
  else
    r2 = instantiate_node(SyntaxNode,input, index...index)
  end
  s1 << r2
  if r2
    if has_terminal?("<", false, index)
      r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
      @index += 1
    else
      terminal_parse_failure("<")
      r4 = nil
    end
    s1 << r4
    if r4
      r5 = _nt_addr_spec
      s1 << r5
      if r5
        if has_terminal?(">", false, index)
          r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
          @index += 1
        else
          terminal_parse_failure(">")
          r6 = nil
        end
        s1 << r6
        if r6
          r8 = _nt_CFWS
          if r8
            r7 = r8
          else
            r7 = instantiate_node(SyntaxNode,input, index...index)
          end
          s1 << r7
        end
      end
    end
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(AngleAddr0)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    r9 = _nt_obs_angle_addr
    if r9
      r0 = r9
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:angle_addr][start_index] = r0

  r0
end
_nt_atext() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 770
def _nt_atext
  start_index = index
  if node_cache[:atext].has_key?(index)
    cached = node_cache[:atext][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_ALPHA
  if r1
    r0 = r1
  else
    r2 = _nt_DIGIT
    if r2
      r0 = r2
    else
      if has_terminal?("!", false, index)
        r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
        @index += 1
      else
        terminal_parse_failure("!")
        r3 = nil
      end
      if r3
        r0 = r3
      else
        if has_terminal?("#", false, index)
          r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
          @index += 1
        else
          terminal_parse_failure("#")
          r4 = nil
        end
        if r4
          r0 = r4
        else
          if has_terminal?("$", false, index)
            r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
            @index += 1
          else
            terminal_parse_failure("$")
            r5 = nil
          end
          if r5
            r0 = r5
          else
            if has_terminal?("%", false, index)
              r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
              @index += 1
            else
              terminal_parse_failure("%")
              r6 = nil
            end
            if r6
              r0 = r6
            else
              if has_terminal?("&", false, index)
                r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
                @index += 1
              else
                terminal_parse_failure("&")
                r7 = nil
              end
              if r7
                r0 = r7
              else
                if has_terminal?("'", false, index)
                  r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
                  @index += 1
                else
                  terminal_parse_failure("'")
                  r8 = nil
                end
                if r8
                  r0 = r8
                else
                  if has_terminal?("*", false, index)
                    r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
                    @index += 1
                  else
                    terminal_parse_failure("*")
                    r9 = nil
                  end
                  if r9
                    r0 = r9
                  else
                    if has_terminal?("+", false, index)
                      r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
                      @index += 1
                    else
                      terminal_parse_failure("+")
                      r10 = nil
                    end
                    if r10
                      r0 = r10
                    else
                      if has_terminal?("-", false, index)
                        r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
                        @index += 1
                      else
                        terminal_parse_failure("-")
                        r11 = nil
                      end
                      if r11
                        r0 = r11
                      else
                        if has_terminal?("/", false, index)
                          r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
                          @index += 1
                        else
                          terminal_parse_failure("/")
                          r12 = nil
                        end
                        if r12
                          r0 = r12
                        else
                          if has_terminal?("=", false, index)
                            r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
                            @index += 1
                          else
                            terminal_parse_failure("=")
                            r13 = nil
                          end
                          if r13
                            r0 = r13
                          else
                            if has_terminal?("?", false, index)
                              r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
                              @index += 1
                            else
                              terminal_parse_failure("?")
                              r14 = nil
                            end
                            if r14
                              r0 = r14
                            else
                              if has_terminal?("^", false, index)
                                r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                @index += 1
                              else
                                terminal_parse_failure("^")
                                r15 = nil
                              end
                              if r15
                                r0 = r15
                              else
                                if has_terminal?("_", false, index)
                                  r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                  @index += 1
                                else
                                  terminal_parse_failure("_")
                                  r16 = nil
                                end
                                if r16
                                  r0 = r16
                                else
                                  if has_terminal?("`", false, index)
                                    r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                    @index += 1
                                  else
                                    terminal_parse_failure("`")
                                    r17 = nil
                                  end
                                  if r17
                                    r0 = r17
                                  else
                                    if has_terminal?("{", false, index)
                                      r18 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                      @index += 1
                                    else
                                      terminal_parse_failure("{")
                                      r18 = nil
                                    end
                                    if r18
                                      r0 = r18
                                    else
                                      if has_terminal?("|", false, index)
                                        r19 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                        @index += 1
                                      else
                                        terminal_parse_failure("|")
                                        r19 = nil
                                      end
                                      if r19
                                        r0 = r19
                                      else
                                        if has_terminal?("}", false, index)
                                          r20 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                          @index += 1
                                        else
                                          terminal_parse_failure("}")
                                          r20 = nil
                                        end
                                        if r20
                                          r0 = r20
                                        else
                                          if has_terminal?("~", false, index)
                                            r21 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                            @index += 1
                                          else
                                            terminal_parse_failure("~")
                                            r21 = nil
                                          end
                                          if r21
                                            r0 = r21
                                          else
                                            @index = i0
                                            r0 = nil
                                          end
                                        end
                                      end
                                    end
                                  end
                                end
                              end
                            end
                          end
                        end
                      end
                    end
                  end
                end
              end
            end
          end
        end
      end
    end
  end

  node_cache[:atext][start_index] = r0

  r0
end
_nt_atom() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1062
def _nt_atom
  start_index = index
  if node_cache[:atom].has_key?(index)
    cached = node_cache[:atom][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r2 = _nt_CFWS
  if r2
    r1 = r2
  else
    r1 = instantiate_node(SyntaxNode,input, index...index)
  end
  s0 << r1
  if r1
    s3, i3 = [], index
    loop do
      r4 = _nt_atext
      if r4
        s3 << r4
      else
        break
      end
    end
    if s3.empty?
      @index = i3
      r3 = nil
    else
      r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
    end
    s0 << r3
    if r3
      r6 = _nt_CFWS
      if r6
        r5 = r6
      else
        r5 = instantiate_node(SyntaxNode,input, index...index)
      end
      s0 << r5
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(Atom0)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:atom][start_index] = r0

  r0
end
_nt_ccontent() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 643
def _nt_ccontent
  start_index = index
  if node_cache[:ccontent].has_key?(index)
    cached = node_cache[:ccontent][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_ctext
  if r1
    r0 = r1
  else
    r2 = _nt_quoted_pair
    if r2
      r0 = r2
    else
      r3 = _nt_comment
      if r3
        r0 = r3
      else
        @index = i0
        r0 = nil
      end
    end
  end

  node_cache[:ccontent][start_index] = r0

  r0
end
_nt_comment() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 687
def _nt_comment
  start_index = index
  if node_cache[:comment].has_key?(index)
    cached = node_cache[:comment][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  if has_terminal?("(", false, index)
    r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
    @index += 1
  else
    terminal_parse_failure("(")
    r1 = nil
  end
  s0 << r1
  if r1
    s2, i2 = [], index
    loop do
      i3, s3 = index, []
      r5 = _nt_FWS
      if r5
        r4 = r5
      else
        r4 = instantiate_node(SyntaxNode,input, index...index)
      end
      s3 << r4
      if r4
        r6 = _nt_ccontent
        s3 << r6
      end
      if s3.last
        r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
        r3.extend(Comment0)
      else
        @index = i3
        r3 = nil
      end
      if r3
        s2 << r3
      else
        break
      end
    end
    r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
    s0 << r2
    if r2
      r8 = _nt_FWS
      if r8
        r7 = r8
      else
        r7 = instantiate_node(SyntaxNode,input, index...index)
      end
      s0 << r7
      if r7
        if has_terminal?(")", false, index)
          r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
          @index += 1
        else
          terminal_parse_failure(")")
          r9 = nil
        end
        s0 << r9
      end
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(Comment1)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:comment][start_index] = r0

  r0
end
_nt_ctext() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 588
def _nt_ctext
  start_index = index
  if node_cache[:ctext].has_key?(index)
    cached = node_cache[:ctext][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_NO_WS_CTL
  if r1
    r0 = r1
  else
    if has_terminal?('\G[\x21-\x27]', true, index)
      r2 = true
      @index += 1
    else
      r2 = nil
    end
    if r2
      r0 = r2
    else
      if has_terminal?('\G[\x2a-\x5b]', true, index)
        r3 = true
        @index += 1
      else
        r3 = nil
      end
      if r3
        r0 = r3
      else
        if has_terminal?('\G[\x5d-\x7e]', true, index)
          r4 = true
          @index += 1
        else
          r4 = nil
        end
        if r4
          r0 = r4
        else
          @index = i0
          r0 = nil
        end
      end
    end
  end

  node_cache[:ctext][start_index] = r0

  r0
end
_nt_date() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 3288
def _nt_date
  start_index = index
  if node_cache[:date].has_key?(index)
    cached = node_cache[:date][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r1 = _nt_day
  s0 << r1
  if r1
    r2 = _nt_month
    s0 << r2
    if r2
      r3 = _nt_year
      s0 << r3
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(Date0)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:date][start_index] = r0

  r0
end
_nt_date_time() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 3051
def _nt_date_time
  start_index = index
  if node_cache[:date_time].has_key?(index)
    cached = node_cache[:date_time][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  i2, s2 = index, []
  r3 = _nt_day_of_week
  s2 << r3
  if r3
    if has_terminal?(",", false, index)
      r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
      @index += 1
    else
      terminal_parse_failure(",")
      r4 = nil
    end
    s2 << r4
  end
  if s2.last
    r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
    r2.extend(DateTime0)
  else
    @index = i2
    r2 = nil
  end
  if r2
    r1 = r2
  else
    r1 = instantiate_node(SyntaxNode,input, index...index)
  end
  s0 << r1
  if r1
    r5 = _nt_date
    s0 << r5
    if r5
      r6 = _nt_FWS
      s0 << r6
      if r6
        r7 = _nt_time
        s0 << r7
        if r7
          r9 = _nt_CFWS
          if r9
            r8 = r9
          else
            r8 = instantiate_node(SyntaxNode,input, index...index)
          end
          s0 << r8
        end
      end
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(DateTime1)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:date_time][start_index] = r0

  r0
end
_nt_day() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 3612
def _nt_day
  start_index = index
  if node_cache[:day].has_key?(index)
    cached = node_cache[:day][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r3 = _nt_FWS
  if r3
    r2 = r3
  else
    r2 = instantiate_node(SyntaxNode,input, index...index)
  end
  s1 << r2
  if r2
    r4 = _nt_DIGIT
    s1 << r4
    if r4
      r6 = _nt_DIGIT
      if r6
        r5 = r6
      else
        r5 = instantiate_node(SyntaxNode,input, index...index)
      end
      s1 << r5
    end
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(Day0)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    r7 = _nt_obs_day
    if r7
      r0 = r7
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:day][start_index] = r0

  r0
end
_nt_day_name() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 3177
def _nt_day_name
  start_index = index
  if node_cache[:day_name].has_key?(index)
    cached = node_cache[:day_name][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  if has_terminal?("Mon", false, index)
    r1 = instantiate_node(SyntaxNode,input, index...(index + 3))
    @index += 3
  else
    terminal_parse_failure("Mon")
    r1 = nil
  end
  if r1
    r0 = r1
  else
    if has_terminal?("Tue", false, index)
      r2 = instantiate_node(SyntaxNode,input, index...(index + 3))
      @index += 3
    else
      terminal_parse_failure("Tue")
      r2 = nil
    end
    if r2
      r0 = r2
    else
      if has_terminal?("Wed", false, index)
        r3 = instantiate_node(SyntaxNode,input, index...(index + 3))
        @index += 3
      else
        terminal_parse_failure("Wed")
        r3 = nil
      end
      if r3
        r0 = r3
      else
        if has_terminal?("Thu", false, index)
          r4 = instantiate_node(SyntaxNode,input, index...(index + 3))
          @index += 3
        else
          terminal_parse_failure("Thu")
          r4 = nil
        end
        if r4
          r0 = r4
        else
          if has_terminal?("Fri", false, index)
            r5 = instantiate_node(SyntaxNode,input, index...(index + 3))
            @index += 3
          else
            terminal_parse_failure("Fri")
            r5 = nil
          end
          if r5
            r0 = r5
          else
            if has_terminal?("Sat", false, index)
              r6 = instantiate_node(SyntaxNode,input, index...(index + 3))
              @index += 3
            else
              terminal_parse_failure("Sat")
              r6 = nil
            end
            if r6
              r0 = r6
            else
              if has_terminal?("Sun", false, index)
                r7 = instantiate_node(SyntaxNode,input, index...(index + 3))
                @index += 3
              else
                terminal_parse_failure("Sun")
                r7 = nil
              end
              if r7
                r0 = r7
              else
                @index = i0
                r0 = nil
              end
            end
          end
        end
      end
    end
  end

  node_cache[:day_name][start_index] = r0

  r0
end
_nt_day_of_week() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 3129
def _nt_day_of_week
  start_index = index
  if node_cache[:day_of_week].has_key?(index)
    cached = node_cache[:day_of_week][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r3 = _nt_FWS
  if r3
    r2 = r3
  else
    r2 = instantiate_node(SyntaxNode,input, index...index)
  end
  s1 << r2
  if r2
    r4 = _nt_day_name
    s1 << r4
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(DayOfWeek0)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    r5 = _nt_obs_day_of_week
    if r5
      r0 = r5
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:day_of_week][start_index] = r0

  r0
end
_nt_dcontent() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1916
def _nt_dcontent
  start_index = index
  if node_cache[:dcontent].has_key?(index)
    cached = node_cache[:dcontent][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_dtext
  if r1
    r0 = r1
  else
    r2 = _nt_quoted_pair
    if r2
      r0 = r2
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:dcontent][start_index] = r0

  r0
end
_nt_display_name() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2626
def _nt_display_name
  start_index = index
  if node_cache[:display_name].has_key?(index)
    cached = node_cache[:display_name][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  r0 = _nt_phrase

  node_cache[:display_name][start_index] = r0

  r0
end
_nt_domain() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2173
def _nt_domain
  start_index = index
  if node_cache[:domain].has_key?(index)
    cached = node_cache[:domain][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_dot_atom
  if r1
    r0 = r1
  else
    r2 = _nt_domain_literal
    if r2
      r0 = r2
    else
      r3 = _nt_obs_domain
      if r3
        r0 = r3
      else
        @index = i0
        r0 = nil
      end
    end
  end

  node_cache[:domain][start_index] = r0

  r0
end
_nt_domain_literal() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1815
def _nt_domain_literal
  start_index = index
  if node_cache[:domain_literal].has_key?(index)
    cached = node_cache[:domain_literal][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r2 = _nt_CFWS
  if r2
    r1 = r2
  else
    r1 = instantiate_node(SyntaxNode,input, index...index)
  end
  s0 << r1
  if r1
    if has_terminal?("[", false, index)
      r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
      @index += 1
    else
      terminal_parse_failure("[")
      r3 = nil
    end
    s0 << r3
    if r3
      s4, i4 = [], index
      loop do
        i5, s5 = index, []
        r7 = _nt_FWS
        if r7
          r6 = r7
        else
          r6 = instantiate_node(SyntaxNode,input, index...index)
        end
        s5 << r6
        if r6
          r8 = _nt_dcontent
          s5 << r8
        end
        if s5.last
          r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
          r5.extend(DomainLiteral0)
        else
          @index = i5
          r5 = nil
        end
        if r5
          s4 << r5
        else
          break
        end
      end
      r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
      s0 << r4
      if r4
        r10 = _nt_FWS
        if r10
          r9 = r10
        else
          r9 = instantiate_node(SyntaxNode,input, index...index)
        end
        s0 << r9
        if r9
          if has_terminal?("]", false, index)
            r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
            @index += 1
          else
            terminal_parse_failure("]")
            r11 = nil
          end
          s0 << r11
          if r11
            r13 = _nt_CFWS
            if r13
              r12 = r13
            else
              r12 = instantiate_node(SyntaxNode,input, index...index)
            end
            s0 << r12
          end
        end
      end
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(DomainLiteral1)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:domain_literal][start_index] = r0

  r0
end
_nt_domain_text() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1422
def _nt_domain_text
  start_index = index
  if node_cache[:domain_text].has_key?(index)
    cached = node_cache[:domain_text][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r2 = _nt_DQUOTE
  s1 << r2
  if r2
    s3, i3 = [], index
    loop do
      i4, s4 = index, []
      r6 = _nt_FWS
      if r6
        r5 = r6
      else
        r5 = instantiate_node(SyntaxNode,input, index...index)
      end
      s4 << r5
      if r5
        r7 = _nt_quoted_domain
        s4 << r7
      end
      if s4.last
        r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
        r4.extend(DomainText0)
      else
        @index = i4
        r4 = nil
      end
      if r4
        s3 << r4
      else
        break
      end
    end
    if s3.empty?
      @index = i3
      r3 = nil
    else
      r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
    end
    s1 << r3
    if r3
      r9 = _nt_FWS
      if r9
        r8 = r9
      else
        r8 = instantiate_node(SyntaxNode,input, index...index)
      end
      s1 << r8
      if r8
        r10 = _nt_DQUOTE
        s1 << r10
      end
    end
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(DomainText1)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    s11, i11 = [], index
    loop do
      r12 = _nt_atext
      if r12
        s11 << r12
      else
        break
      end
    end
    if s11.empty?
      @index = i11
      r11 = nil
    else
      r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
    end
    if r11
      r0 = r11
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:domain_text][start_index] = r0

  r0
end
_nt_dot_atom() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1128
def _nt_dot_atom
  start_index = index
  if node_cache[:dot_atom].has_key?(index)
    cached = node_cache[:dot_atom][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r2 = _nt_CFWS
  if r2
    r1 = r2
  else
    r1 = instantiate_node(SyntaxNode,input, index...index)
  end
  s0 << r1
  if r1
    r3 = _nt_dot_atom_text
    s0 << r3
    if r3
      r5 = _nt_CFWS
      if r5
        r4 = r5
      else
        r4 = instantiate_node(SyntaxNode,input, index...index)
      end
      s0 << r4
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(DotAtom0)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:dot_atom][start_index] = r0

  r0
end
_nt_dot_atom_text() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1264
def _nt_dot_atom_text
  start_index = index
  if node_cache[:dot_atom_text].has_key?(index)
    cached = node_cache[:dot_atom_text][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  s0, i0 = [], index
  loop do
    i1, s1 = index, []
    r2 = _nt_domain_text
    s1 << r2
    if r2
      if has_terminal?(".", false, index)
        r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
        @index += 1
      else
        terminal_parse_failure(".")
        r4 = nil
      end
      if r4
        r3 = r4
      else
        r3 = instantiate_node(SyntaxNode,input, index...index)
      end
      s1 << r3
    end
    if s1.last
      r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
      r1.extend(DotAtomText0)
    else
      @index = i1
      r1 = nil
    end
    if r1
      s0 << r1
    else
      break
    end
  end
  if s0.empty?
    @index = i0
    r0 = nil
  else
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
  end

  node_cache[:dot_atom_text][start_index] = r0

  r0
end
_nt_dtext() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1946
def _nt_dtext
  start_index = index
  if node_cache[:dtext].has_key?(index)
    cached = node_cache[:dtext][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_NO_WS_CTL
  if r1
    r0 = r1
  else
    if has_terminal?('\G[\x21-\x5a]', true, index)
      r2 = true
      @index += 1
    else
      r2 = nil
    end
    if r2
      r0 = r2
    else
      if has_terminal?('\G[\x5e-\x7e]', true, index)
        r3 = true
        @index += 1
      else
        r3 = nil
      end
      if r3
        r0 = r3
      else
        @index = i0
        r0 = nil
      end
    end
  end

  node_cache[:dtext][start_index] = r0

  r0
end
_nt_group() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2219
def _nt_group
  start_index = index
  if node_cache[:group].has_key?(index)
    cached = node_cache[:group][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r1 = _nt_display_name
  s0 << r1
  if r1
    if has_terminal?(":", false, index)
      r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
      @index += 1
    else
      terminal_parse_failure(":")
      r2 = nil
    end
    s0 << r2
    if r2
      i4 = index
      r5 = _nt_mailbox_list_group
      if r5
        r4 = r5
      else
        r6 = _nt_CFWS
        if r6
          r4 = r6
        else
          @index = i4
          r4 = nil
        end
      end
      if r4
        r3 = r4
      else
        r3 = instantiate_node(SyntaxNode,input, index...index)
      end
      s0 << r3
      if r3
        if has_terminal?(";", false, index)
          r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
          @index += 1
        else
          terminal_parse_failure(";")
          r7 = nil
        end
        s0 << r7
        if r7
          r9 = _nt_CFWS
          if r9
            r8 = r9
          else
            r8 = instantiate_node(SyntaxNode,input, index...index)
          end
          s0 << r8
        end
      end
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(Group0)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:group][start_index] = r0

  r0
end
_nt_hour() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 3814
def _nt_hour
  start_index = index
  if node_cache[:hour].has_key?(index)
    cached = node_cache[:hour][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r2 = _nt_DIGIT
  s1 << r2
  if r2
    r3 = _nt_DIGIT
    s1 << r3
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(Hour0)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    r4 = _nt_obs_hour
    if r4
      r0 = r4
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:hour][start_index] = r0

  r0
end
_nt_id_left() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4743
def _nt_id_left
  start_index = index
  if node_cache[:id_left].has_key?(index)
    cached = node_cache[:id_left][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_message_id_text
  if r1
    r0 = r1
  else
    r2 = _nt_no_fold_quote
    if r2
      r0 = r2
    else
      r3 = _nt_obs_id_left
      if r3
        r0 = r3
      else
        @index = i0
        r0 = nil
      end
    end
  end

  node_cache[:id_left][start_index] = r0

  r0
end
_nt_id_right() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4778
def _nt_id_right
  start_index = index
  if node_cache[:id_right].has_key?(index)
    cached = node_cache[:id_right][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_msg_id_dot_atom_text
  if r1
    r0 = r1
  else
    r2 = _nt_no_fold_literal
    if r2
      r0 = r2
    else
      r3 = _nt_obs_id_right
      if r3
        r0 = r3
      else
        @index = i0
        r0 = nil
      end
    end
  end

  node_cache[:id_right][start_index] = r0

  r0
end
_nt_item_name() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4412
def _nt_item_name
  start_index = index
  if node_cache[:item_name].has_key?(index)
    cached = node_cache[:item_name][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r1 = _nt_ALPHA
  s0 << r1
  if r1
    s2, i2 = [], index
    loop do
      i3, s3 = index, []
      if has_terminal?("-", false, index)
        r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
        @index += 1
      else
        terminal_parse_failure("-")
        r5 = nil
      end
      if r5
        r4 = r5
      else
        r4 = instantiate_node(SyntaxNode,input, index...index)
      end
      s3 << r4
      if r4
        i6 = index
        r7 = _nt_ALPHA
        if r7
          r6 = r7
        else
          r8 = _nt_DIGIT
          if r8
            r6 = r8
          else
            @index = i6
            r6 = nil
          end
        end
        s3 << r6
      end
      if s3.last
        r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
        r3.extend(ItemName0)
      else
        @index = i3
        r3 = nil
      end
      if r3
        s2 << r3
      else
        break
      end
    end
    r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
    s0 << r2
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(ItemName1)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:item_name][start_index] = r0

  r0
end
_nt_item_value() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4488
def _nt_item_value
  start_index = index
  if node_cache[:item_value].has_key?(index)
    cached = node_cache[:item_value][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  s1, i1 = [], index
  loop do
    r2 = _nt_angle_addr
    if r2
      s1 << r2
    else
      break
    end
  end
  if s1.empty?
    @index = i1
    r1 = nil
  else
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
  end
  if r1
    r0 = r1
  else
    r3 = _nt_addr_spec
    if r3
      r0 = r3
    else
      r4 = _nt_atom
      if r4
        r0 = r4
      else
        r5 = _nt_domain
        if r5
          r0 = r5
        else
          r6 = _nt_msg_id
          if r6
            r0 = r6
          else
            @index = i0
            r0 = nil
          end
        end
      end
    end
  end

  node_cache[:item_value][start_index] = r0

  r0
end
_nt_local_dot_atom() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1180
def _nt_local_dot_atom
  start_index = index
  if node_cache[:local_dot_atom].has_key?(index)
    cached = node_cache[:local_dot_atom][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r2 = _nt_CFWS
  if r2
    r1 = r2
  else
    r1 = instantiate_node(SyntaxNode,input, index...index)
  end
  s0 << r1
  if r1
    r3 = _nt_local_dot_atom_text
    s0 << r3
    if r3
      r5 = _nt_CFWS
      if r5
        r4 = r5
      else
        r4 = instantiate_node(SyntaxNode,input, index...index)
      end
      s0 << r4
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(LocalDotAtom0)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:local_dot_atom][start_index] = r0

  r0
end
_nt_local_dot_atom_text() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1327
def _nt_local_dot_atom_text
  start_index = index
  if node_cache[:local_dot_atom_text].has_key?(index)
    cached = node_cache[:local_dot_atom_text][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  s0, i0 = [], index
  loop do
    i1, s1 = index, []
    s2, i2 = [], index
    loop do
      if has_terminal?(".", false, index)
        r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
        @index += 1
      else
        terminal_parse_failure(".")
        r3 = nil
      end
      if r3
        s2 << r3
      else
        break
      end
    end
    r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
    s1 << r2
    if r2
      r4 = _nt_domain_text
      s1 << r4
      if r4
        s5, i5 = [], index
        loop do
          if has_terminal?(".", false, index)
            r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
            @index += 1
          else
            terminal_parse_failure(".")
            r6 = nil
          end
          if r6
            s5 << r6
          else
            break
          end
        end
        r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
        s1 << r5
      end
    end
    if s1.last
      r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
      r1.extend(LocalDotAtomText0)
    else
      @index = i1
      r1 = nil
    end
    if r1
      s0 << r1
    else
      break
    end
  end
  if s0.empty?
    @index = i0
    r0 = nil
  else
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
  end

  node_cache[:local_dot_atom_text][start_index] = r0

  r0
end
_nt_local_part() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2138
def _nt_local_part
  start_index = index
  if node_cache[:local_part].has_key?(index)
    cached = node_cache[:local_part][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_local_dot_atom
  if r1
    r0 = r1
  else
    r2 = _nt_quoted_string
    if r2
      r0 = r2
    else
      r3 = _nt_obs_local_part
      if r3
        r0 = r3
      else
        @index = i0
        r0 = nil
      end
    end
  end

  node_cache[:local_part][start_index] = r0

  r0
end
_nt_mailbox() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2819
def _nt_mailbox
  start_index = index
  if node_cache[:mailbox].has_key?(index)
    cached = node_cache[:mailbox][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_name_addr
  if r1
    r0 = r1
    r0.extend(Mailbox0)
  else
    r2 = _nt_addr_spec
    if r2
      r0 = r2
      r0.extend(Mailbox0)
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:mailbox][start_index] = r0

  r0
end
_nt_mailbox_list() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2713
def _nt_mailbox_list
  start_index = index
  if node_cache[:mailbox_list].has_key?(index)
    cached = node_cache[:mailbox_list][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r2 = _nt_mailbox
  s1 << r2
  if r2
    s3, i3 = [], index
    loop do
      i4, s4 = index, []
      i5 = index
      if has_terminal?(",", false, index)
        r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
        @index += 1
      else
        terminal_parse_failure(",")
        r6 = nil
      end
      if r6
        r5 = r6
      else
        if has_terminal?(";", false, index)
          r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
          @index += 1
        else
          terminal_parse_failure(";")
          r7 = nil
        end
        if r7
          r5 = r7
        else
          @index = i5
          r5 = nil
        end
      end
      s4 << r5
      if r5
        r8 = _nt_mailbox
        s4 << r8
      end
      if s4.last
        r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
        r4.extend(MailboxList0)
      else
        @index = i4
        r4 = nil
      end
      if r4
        s3 << r4
      else
        break
      end
    end
    r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
    s1 << r3
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(MailboxList1)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    r9 = _nt_obs_mbox_list
    if r9
      r0 = r9
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:mailbox_list][start_index] = r0

  r0
end
_nt_mailbox_list_group() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2302
def _nt_mailbox_list_group
  start_index = index
  if node_cache[:mailbox_list_group].has_key?(index)
    cached = node_cache[:mailbox_list_group][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  r0 = _nt_mailbox_list
  r0.extend(MailboxListGroup0)

  node_cache[:mailbox_list_group][start_index] = r0

  r0
end
_nt_message_id_text() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1225
def _nt_message_id_text
  start_index = index
  if node_cache[:message_id_text].has_key?(index)
    cached = node_cache[:message_id_text][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  s0, i0 = [], index
  loop do
    r1 = _nt_mtext
    if r1
      s0 << r1
    else
      break
    end
  end
  if s0.empty?
    @index = i0
    r0 = nil
  else
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
  end

  node_cache[:message_id_text][start_index] = r0

  r0
end
_nt_message_ids() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4567
def _nt_message_ids
  start_index = index
  if node_cache[:message_ids].has_key?(index)
    cached = node_cache[:message_ids][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r1 = _nt_msg_id
  s0 << r1
  if r1
    s2, i2 = [], index
    loop do
      i3, s3 = index, []
      r4 = _nt_CFWS
      s3 << r4
      if r4
        r5 = _nt_msg_id
        s3 << r5
      end
      if s3.last
        r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
        r3.extend(MessageIds0)
      else
        @index = i3
        r3 = nil
      end
      if r3
        s2 << r3
      else
        break
      end
    end
    r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
    s0 << r2
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(MessageIds1)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:message_ids][start_index] = r0

  r0
end
_nt_minute() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 3867
def _nt_minute
  start_index = index
  if node_cache[:minute].has_key?(index)
    cached = node_cache[:minute][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r2 = _nt_DIGIT
  s1 << r2
  if r2
    r3 = _nt_DIGIT
    s1 << r3
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(Minute0)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    r4 = _nt_obs_minute
    if r4
      r0 = r4
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:minute][start_index] = r0

  r0
end
_nt_month() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 3406
def _nt_month
  start_index = index
  if node_cache[:month].has_key?(index)
    cached = node_cache[:month][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r2 = _nt_FWS
  s1 << r2
  if r2
    r3 = _nt_month_name
    s1 << r3
    if r3
      r4 = _nt_FWS
      s1 << r4
    end
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(Month0)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    r5 = _nt_obs_month
    if r5
      r0 = r5
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:month][start_index] = r0

  r0
end
_nt_month_name() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 3453
def _nt_month_name
  start_index = index
  if node_cache[:month_name].has_key?(index)
    cached = node_cache[:month_name][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  if has_terminal?("Jan", false, index)
    r1 = instantiate_node(SyntaxNode,input, index...(index + 3))
    @index += 3
  else
    terminal_parse_failure("Jan")
    r1 = nil
  end
  if r1
    r0 = r1
  else
    if has_terminal?("Feb", false, index)
      r2 = instantiate_node(SyntaxNode,input, index...(index + 3))
      @index += 3
    else
      terminal_parse_failure("Feb")
      r2 = nil
    end
    if r2
      r0 = r2
    else
      if has_terminal?("Mar", false, index)
        r3 = instantiate_node(SyntaxNode,input, index...(index + 3))
        @index += 3
      else
        terminal_parse_failure("Mar")
        r3 = nil
      end
      if r3
        r0 = r3
      else
        if has_terminal?("Apr", false, index)
          r4 = instantiate_node(SyntaxNode,input, index...(index + 3))
          @index += 3
        else
          terminal_parse_failure("Apr")
          r4 = nil
        end
        if r4
          r0 = r4
        else
          if has_terminal?("May", false, index)
            r5 = instantiate_node(SyntaxNode,input, index...(index + 3))
            @index += 3
          else
            terminal_parse_failure("May")
            r5 = nil
          end
          if r5
            r0 = r5
          else
            if has_terminal?("Jun", false, index)
              r6 = instantiate_node(SyntaxNode,input, index...(index + 3))
              @index += 3
            else
              terminal_parse_failure("Jun")
              r6 = nil
            end
            if r6
              r0 = r6
            else
              if has_terminal?("Jul", false, index)
                r7 = instantiate_node(SyntaxNode,input, index...(index + 3))
                @index += 3
              else
                terminal_parse_failure("Jul")
                r7 = nil
              end
              if r7
                r0 = r7
              else
                if has_terminal?("Aug", false, index)
                  r8 = instantiate_node(SyntaxNode,input, index...(index + 3))
                  @index += 3
                else
                  terminal_parse_failure("Aug")
                  r8 = nil
                end
                if r8
                  r0 = r8
                else
                  if has_terminal?("Sep", false, index)
                    r9 = instantiate_node(SyntaxNode,input, index...(index + 3))
                    @index += 3
                  else
                    terminal_parse_failure("Sep")
                    r9 = nil
                  end
                  if r9
                    r0 = r9
                  else
                    if has_terminal?("Oct", false, index)
                      r10 = instantiate_node(SyntaxNode,input, index...(index + 3))
                      @index += 3
                    else
                      terminal_parse_failure("Oct")
                      r10 = nil
                    end
                    if r10
                      r0 = r10
                    else
                      if has_terminal?("Nov", false, index)
                        r11 = instantiate_node(SyntaxNode,input, index...(index + 3))
                        @index += 3
                      else
                        terminal_parse_failure("Nov")
                        r11 = nil
                      end
                      if r11
                        r0 = r11
                      else
                        if has_terminal?("Dec", false, index)
                          r12 = instantiate_node(SyntaxNode,input, index...(index + 3))
                          @index += 3
                        else
                          terminal_parse_failure("Dec")
                          r12 = nil
                        end
                        if r12
                          r0 = r12
                        else
                          @index = i0
                          r0 = nil
                        end
                      end
                    end
                  end
                end
              end
            end
          end
        end
      end
    end
  end

  node_cache[:month_name][start_index] = r0

  r0
end
_nt_msg_id() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4627
def _nt_msg_id
  start_index = index
  if node_cache[:msg_id].has_key?(index)
    cached = node_cache[:msg_id][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r2 = _nt_CFWS
  if r2
    r1 = r2
  else
    r1 = instantiate_node(SyntaxNode,input, index...index)
  end
  s0 << r1
  if r1
    if has_terminal?("<", false, index)
      r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
      @index += 1
    else
      terminal_parse_failure("<")
      r3 = nil
    end
    s0 << r3
    if r3
      r4 = _nt_msg_id_value
      s0 << r4
      if r4
        if has_terminal?(">", false, index)
          r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
          @index += 1
        else
          terminal_parse_failure(">")
          r5 = nil
        end
        s0 << r5
        if r5
          r7 = _nt_CFWS
          if r7
            r6 = r7
          else
            r6 = instantiate_node(SyntaxNode,input, index...index)
          end
          s0 << r6
        end
      end
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(MsgId0)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:msg_id][start_index] = r0

  r0
end
_nt_msg_id_atext() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4994
def _nt_msg_id_atext
  start_index = index
  if node_cache[:msg_id_atext].has_key?(index)
    cached = node_cache[:msg_id_atext][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_ALPHA
  if r1
    r0 = r1
  else
    r2 = _nt_DIGIT
    if r2
      r0 = r2
    else
      if has_terminal?("!", false, index)
        r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
        @index += 1
      else
        terminal_parse_failure("!")
        r3 = nil
      end
      if r3
        r0 = r3
      else
        if has_terminal?("#", false, index)
          r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
          @index += 1
        else
          terminal_parse_failure("#")
          r4 = nil
        end
        if r4
          r0 = r4
        else
          if has_terminal?("$", false, index)
            r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
            @index += 1
          else
            terminal_parse_failure("$")
            r5 = nil
          end
          if r5
            r0 = r5
          else
            if has_terminal?("%", false, index)
              r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
              @index += 1
            else
              terminal_parse_failure("%")
              r6 = nil
            end
            if r6
              r0 = r6
            else
              if has_terminal?("&", false, index)
                r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
                @index += 1
              else
                terminal_parse_failure("&")
                r7 = nil
              end
              if r7
                r0 = r7
              else
                if has_terminal?("'", false, index)
                  r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
                  @index += 1
                else
                  terminal_parse_failure("'")
                  r8 = nil
                end
                if r8
                  r0 = r8
                else
                  if has_terminal?("*", false, index)
                    r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
                    @index += 1
                  else
                    terminal_parse_failure("*")
                    r9 = nil
                  end
                  if r9
                    r0 = r9
                  else
                    if has_terminal?("+", false, index)
                      r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
                      @index += 1
                    else
                      terminal_parse_failure("+")
                      r10 = nil
                    end
                    if r10
                      r0 = r10
                    else
                      if has_terminal?("-", false, index)
                        r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
                        @index += 1
                      else
                        terminal_parse_failure("-")
                        r11 = nil
                      end
                      if r11
                        r0 = r11
                      else
                        if has_terminal?("/", false, index)
                          r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
                          @index += 1
                        else
                          terminal_parse_failure("/")
                          r12 = nil
                        end
                        if r12
                          r0 = r12
                        else
                          if has_terminal?("=", false, index)
                            r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
                            @index += 1
                          else
                            terminal_parse_failure("=")
                            r13 = nil
                          end
                          if r13
                            r0 = r13
                          else
                            if has_terminal?("?", false, index)
                              r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
                              @index += 1
                            else
                              terminal_parse_failure("?")
                              r14 = nil
                            end
                            if r14
                              r0 = r14
                            else
                              if has_terminal?("^", false, index)
                                r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                @index += 1
                              else
                                terminal_parse_failure("^")
                                r15 = nil
                              end
                              if r15
                                r0 = r15
                              else
                                if has_terminal?("_", false, index)
                                  r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                  @index += 1
                                else
                                  terminal_parse_failure("_")
                                  r16 = nil
                                end
                                if r16
                                  r0 = r16
                                else
                                  if has_terminal?("`", false, index)
                                    r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                    @index += 1
                                  else
                                    terminal_parse_failure("`")
                                    r17 = nil
                                  end
                                  if r17
                                    r0 = r17
                                  else
                                    if has_terminal?("{", false, index)
                                      r18 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                      @index += 1
                                    else
                                      terminal_parse_failure("{")
                                      r18 = nil
                                    end
                                    if r18
                                      r0 = r18
                                    else
                                      if has_terminal?("|", false, index)
                                        r19 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                        @index += 1
                                      else
                                        terminal_parse_failure("|")
                                        r19 = nil
                                      end
                                      if r19
                                        r0 = r19
                                      else
                                        if has_terminal?("}", false, index)
                                          r20 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                          @index += 1
                                        else
                                          terminal_parse_failure("}")
                                          r20 = nil
                                        end
                                        if r20
                                          r0 = r20
                                        else
                                          if has_terminal?("~", false, index)
                                            r21 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                            @index += 1
                                          else
                                            terminal_parse_failure("~")
                                            r21 = nil
                                          end
                                          if r21
                                            r0 = r21
                                          else
                                            if has_terminal?("@", false, index)
                                              r22 = instantiate_node(SyntaxNode,input, index...(index + 1))
                                              @index += 1
                                            else
                                              terminal_parse_failure("@")
                                              r22 = nil
                                            end
                                            if r22
                                              r0 = r22
                                            else
                                              @index = i0
                                              r0 = nil
                                            end
                                          end
                                        end
                                      end
                                    end
                                  end
                                end
                              end
                            end
                          end
                        end
                      end
                    end
                  end
                end
              end
            end
          end
        end
      end
    end
  end

  node_cache[:msg_id_atext][start_index] = r0

  r0
end
_nt_msg_id_domain_text() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4892
def _nt_msg_id_domain_text
  start_index = index
  if node_cache[:msg_id_domain_text].has_key?(index)
    cached = node_cache[:msg_id_domain_text][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r2 = _nt_DQUOTE
  s1 << r2
  if r2
    s3, i3 = [], index
    loop do
      i4, s4 = index, []
      r6 = _nt_FWS
      if r6
        r5 = r6
      else
        r5 = instantiate_node(SyntaxNode,input, index...index)
      end
      s4 << r5
      if r5
        r7 = _nt_quoted_domain
        s4 << r7
      end
      if s4.last
        r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
        r4.extend(MsgIdDomainText0)
      else
        @index = i4
        r4 = nil
      end
      if r4
        s3 << r4
      else
        break
      end
    end
    if s3.empty?
      @index = i3
      r3 = nil
    else
      r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
    end
    s1 << r3
    if r3
      r9 = _nt_FWS
      if r9
        r8 = r9
      else
        r8 = instantiate_node(SyntaxNode,input, index...index)
      end
      s1 << r8
      if r8
        r10 = _nt_DQUOTE
        s1 << r10
      end
    end
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(MsgIdDomainText1)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    s11, i11 = [], index
    loop do
      r12 = _nt_msg_id_atext
      if r12
        s11 << r12
      else
        break
      end
    end
    if s11.empty?
      @index = i11
      r11 = nil
    else
      r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
    end
    if r11
      r0 = r11
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:msg_id_domain_text][start_index] = r0

  r0
end
_nt_msg_id_dot_atom_text() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4820
def _nt_msg_id_dot_atom_text
  start_index = index
  if node_cache[:msg_id_dot_atom_text].has_key?(index)
    cached = node_cache[:msg_id_dot_atom_text][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  s0, i0 = [], index
  loop do
    i1, s1 = index, []
    r2 = _nt_msg_id_domain_text
    s1 << r2
    if r2
      if has_terminal?(".", false, index)
        r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
        @index += 1
      else
        terminal_parse_failure(".")
        r4 = nil
      end
      if r4
        r3 = r4
      else
        r3 = instantiate_node(SyntaxNode,input, index...index)
      end
      s1 << r3
    end
    if s1.last
      r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
      r1.extend(MsgIdDotAtomText0)
    else
      @index = i1
      r1 = nil
    end
    if r1
      s0 << r1
    else
      break
    end
  end
  if s0.empty?
    @index = i0
    r0 = nil
  else
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
  end

  node_cache[:msg_id_dot_atom_text][start_index] = r0

  r0
end
_nt_msg_id_value() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4702
def _nt_msg_id_value
  start_index = index
  if node_cache[:msg_id_value].has_key?(index)
    cached = node_cache[:msg_id_value][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r1 = _nt_id_left
  s0 << r1
  if r1
    if has_terminal?("@", false, index)
      r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
      @index += 1
    else
      terminal_parse_failure("@")
      r2 = nil
    end
    s0 << r2
    if r2
      r3 = _nt_id_right
      s0 << r3
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(MsgIdValue0)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:msg_id_value][start_index] = r0

  r0
end
_nt_mtext() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1009
def _nt_mtext
  start_index = index
  if node_cache[:mtext].has_key?(index)
    cached = node_cache[:mtext][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  s0, i0 = [], index
  loop do
    i1 = index
    r2 = _nt_atext
    if r2
      r1 = r2
    else
      if has_terminal?(".", false, index)
        r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
        @index += 1
      else
        terminal_parse_failure(".")
        r3 = nil
      end
      if r3
        r1 = r3
      else
        @index = i1
        r1 = nil
      end
    end
    if r1
      s0 << r1
    else
      break
    end
  end
  if s0.empty?
    @index = i0
    r0 = nil
  else
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
  end

  node_cache[:mtext][start_index] = r0

  r0
end
_nt_name_addr() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2654
def _nt_name_addr
  start_index = index
  if node_cache[:name_addr].has_key?(index)
    cached = node_cache[:name_addr][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r2 = _nt_display_name
  s1 << r2
  if r2
    r3 = _nt_angle_addr
    s1 << r3
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(NameAddr0)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    r4 = _nt_angle_addr
    if r4
      r0 = r4
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:name_addr][start_index] = r0

  r0
end
_nt_name_val_list() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4277
def _nt_name_val_list
  start_index = index
  if node_cache[:name_val_list].has_key?(index)
    cached = node_cache[:name_val_list][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r2 = _nt_CFWS
  if r2
    r1 = r2
  else
    r1 = instantiate_node(SyntaxNode,input, index...index)
  end
  s0 << r1
  if r1
    i4, s4 = index, []
    r5 = _nt_name_val_pair
    s4 << r5
    if r5
      s6, i6 = [], index
      loop do
        i7, s7 = index, []
        r8 = _nt_CFWS
        s7 << r8
        if r8
          r9 = _nt_name_val_pair
          s7 << r9
        end
        if s7.last
          r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
          r7.extend(NameValList0)
        else
          @index = i7
          r7 = nil
        end
        if r7
          s6 << r7
        else
          break
        end
      end
      r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
      s4 << r6
    end
    if s4.last
      r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
      r4.extend(NameValList1)
    else
      @index = i4
      r4 = nil
    end
    if r4
      r3 = r4
    else
      r3 = instantiate_node(SyntaxNode,input, index...index)
    end
    s0 << r3
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(NameValList2)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:name_val_list][start_index] = r0

  r0
end
_nt_name_val_pair() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4367
def _nt_name_val_pair
  start_index = index
  if node_cache[:name_val_pair].has_key?(index)
    cached = node_cache[:name_val_pair][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r1 = _nt_item_name
  s0 << r1
  if r1
    r2 = _nt_CFWS
    s0 << r2
    if r2
      r3 = _nt_item_value
      s0 << r3
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(NameValPair0)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:name_val_pair][start_index] = r0

  r0
end
_nt_no_fold_literal() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 5318
def _nt_no_fold_literal
  start_index = index
  if node_cache[:no_fold_literal].has_key?(index)
    cached = node_cache[:no_fold_literal][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  if has_terminal?("[", false, index)
    r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
    @index += 1
  else
    terminal_parse_failure("[")
    r1 = nil
  end
  s0 << r1
  if r1
    s2, i2 = [], index
    loop do
      i3 = index
      r4 = _nt_dtext
      if r4
        r3 = r4
      else
        r5 = _nt_quoted_pair
        if r5
          r3 = r5
        else
          @index = i3
          r3 = nil
        end
      end
      if r3
        s2 << r3
      else
        break
      end
    end
    if s2.empty?
      @index = i2
      r2 = nil
    else
      r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
    end
    s0 << r2
    if r2
      if has_terminal?("]", false, index)
        r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
        @index += 1
      else
        terminal_parse_failure("]")
        r6 = nil
      end
      s0 << r6
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(NoFoldLiteral0)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:no_fold_literal][start_index] = r0

  r0
end
_nt_no_fold_quote() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 5254
def _nt_no_fold_quote
  start_index = index
  if node_cache[:no_fold_quote].has_key?(index)
    cached = node_cache[:no_fold_quote][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r1 = _nt_DQUOTE
  s0 << r1
  if r1
    s2, i2 = [], index
    loop do
      i3 = index
      r4 = _nt_qtext
      if r4
        r3 = r4
      else
        r5 = _nt_quoted_pair
        if r5
          r3 = r5
        else
          @index = i3
          r3 = nil
        end
      end
      if r3
        s2 << r3
      else
        break
      end
    end
    if s2.empty?
      @index = i2
      r2 = nil
    else
      r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
    end
    s0 << r2
    if r2
      r6 = _nt_DQUOTE
      s0 << r6
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(NoFoldQuote0)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:no_fold_quote][start_index] = r0

  r0
end
_nt_path() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4104
def _nt_path
  start_index = index
  if node_cache[:path].has_key?(index)
    cached = node_cache[:path][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r3 = _nt_CFWS
  if r3
    r2 = r3
  else
    r2 = instantiate_node(SyntaxNode,input, index...index)
  end
  s1 << r2
  if r2
    if has_terminal?("<", false, index)
      r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
      @index += 1
    else
      terminal_parse_failure("<")
      r4 = nil
    end
    s1 << r4
    if r4
      i5 = index
      r7 = _nt_CFWS
      if r7
        r6 = r7
      else
        r6 = instantiate_node(SyntaxNode,input, index...index)
      end
      if r6
        r5 = r6
      else
        r8 = _nt_addr_spec
        if r8
          r5 = r8
        else
          @index = i5
          r5 = nil
        end
      end
      s1 << r5
      if r5
        if has_terminal?(">", false, index)
          r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
          @index += 1
        else
          terminal_parse_failure(">")
          r9 = nil
        end
        s1 << r9
        if r9
          r11 = _nt_CFWS
          if r11
            r10 = r11
          else
            r10 = instantiate_node(SyntaxNode,input, index...index)
          end
          s1 << r10
        end
      end
    end
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(Path0)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    r12 = _nt_obs_path
    if r12
      r0 = r12
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:path][start_index] = r0

  r0
end
_nt_phrase() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1644
def _nt_phrase
  start_index = index
  if node_cache[:phrase].has_key?(index)
    cached = node_cache[:phrase][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_obs_phrase
  if r1
    r0 = r1
  else
    s2, i2 = [], index
    loop do
      r3 = _nt_word
      if r3
        s2 << r3
      else
        break
      end
    end
    if s2.empty?
      @index = i2
      r2 = nil
    else
      r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
    end
    if r2
      r0 = r2
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:phrase][start_index] = r0

  r0
end
_nt_phrase_list() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1734
def _nt_phrase_list
  start_index = index
  if node_cache[:phrase_list].has_key?(index)
    cached = node_cache[:phrase_list][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r1 = _nt_phrase
  s0 << r1
  if r1
    s2, i2 = [], index
    loop do
      i3, s3 = index, []
      if has_terminal?(",", false, index)
        r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
        @index += 1
      else
        terminal_parse_failure(",")
        r4 = nil
      end
      s3 << r4
      if r4
        s5, i5 = [], index
        loop do
          r6 = _nt_FWS
          if r6
            s5 << r6
          else
            break
          end
        end
        r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
        s3 << r5
        if r5
          r7 = _nt_phrase
          s3 << r7
        end
      end
      if s3.last
        r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
        r3.extend(PhraseList0)
      else
        @index = i3
        r3 = nil
      end
      if r3
        s2 << r3
      else
        break
      end
    end
    r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
    s0 << r2
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(PhraseList1)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:phrase_list][start_index] = r0

  r0
end
_nt_qcontent() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2431
def _nt_qcontent
  start_index = index
  if node_cache[:qcontent].has_key?(index)
    cached = node_cache[:qcontent][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_qtext
  if r1
    r0 = r1
  else
    r2 = _nt_quoted_pair
    if r2
      r0 = r2
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:qcontent][start_index] = r0

  r0
end
_nt_qdcontent() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1579
def _nt_qdcontent
  start_index = index
  if node_cache[:qdcontent].has_key?(index)
    cached = node_cache[:qdcontent][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_NO_WS_CTL
  if r1
    r0 = r1
  else
    if has_terminal?('\G[\x21]', true, index)
      r2 = true
      @index += 1
    else
      r2 = nil
    end
    if r2
      r0 = r2
    else
      if has_terminal?('\G[\x23-\x45]', true, index)
        r3 = true
        @index += 1
      else
        r3 = nil
      end
      if r3
        r0 = r3
      else
        if has_terminal?('\G[\x47-\x5b]', true, index)
          r4 = true
          @index += 1
        else
          r4 = nil
        end
        if r4
          r0 = r4
        else
          if has_terminal?('\G[\x5d-\x7e]', true, index)
            r5 = true
            @index += 1
          else
            r5 = nil
          end
          if r5
            r0 = r5
          else
            @index = i0
            r0 = nil
          end
        end
      end
    end
  end

  node_cache[:qdcontent][start_index] = r0

  r0
end
_nt_qtext() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2516
def _nt_qtext
  start_index = index
  if node_cache[:qtext].has_key?(index)
    cached = node_cache[:qtext][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_NO_WS_CTL
  if r1
    r0 = r1
  else
    if has_terminal?('\G[\x21]', true, index)
      r2 = true
      @index += 1
    else
      r2 = nil
    end
    if r2
      r0 = r2
    else
      if has_terminal?('\G[\x23-\x5b]', true, index)
        r3 = true
        @index += 1
      else
        r3 = nil
      end
      if r3
        r0 = r3
      else
        if has_terminal?('\G[\x5d-\x7e]', true, index)
          r4 = true
          @index += 1
        else
          r4 = nil
        end
        if r4
          r0 = r4
        else
          @index = i0
          r0 = nil
        end
      end
    end
  end

  node_cache[:qtext][start_index] = r0

  r0
end
_nt_quoted_domain() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1530
def _nt_quoted_domain
  start_index = index
  if node_cache[:quoted_domain].has_key?(index)
    cached = node_cache[:quoted_domain][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_qdcontent
  if r1
    r0 = r1
  else
    i2, s2 = index, []
    if has_terminal?("\\", false, index)
      r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
      @index += 1
    else
      terminal_parse_failure("\\")
      r3 = nil
    end
    s2 << r3
    if r3
      r4 = _nt_text
      s2 << r4
    end
    if s2.last
      r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
      r2.extend(QuotedDomain0)
    else
      @index = i2
      r2 = nil
    end
    if r2
      r0 = r2
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:quoted_domain][start_index] = r0

  r0
end
_nt_quoted_pair() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2467
def _nt_quoted_pair
  start_index = index
  if node_cache[:quoted_pair].has_key?(index)
    cached = node_cache[:quoted_pair][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  if has_terminal?("\\", false, index)
    r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
    @index += 1
  else
    terminal_parse_failure("\\")
    r2 = nil
  end
  s1 << r2
  if r2
    r3 = _nt_text
    s1 << r3
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(QuotedPair0)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    r4 = _nt_obs_qp
    if r4
      r0 = r4
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:quoted_pair][start_index] = r0

  r0
end
_nt_quoted_string() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2342
def _nt_quoted_string
  start_index = index
  if node_cache[:quoted_string].has_key?(index)
    cached = node_cache[:quoted_string][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r2 = _nt_CFWS
  if r2
    r1 = r2
  else
    r1 = instantiate_node(SyntaxNode,input, index...index)
  end
  s0 << r1
  if r1
    r3 = _nt_DQUOTE
    s0 << r3
    if r3
      s4, i4 = [], index
      loop do
        i5, s5 = index, []
        r7 = _nt_FWS
        if r7
          r6 = r7
        else
          r6 = instantiate_node(SyntaxNode,input, index...index)
        end
        s5 << r6
        if r6
          r8 = _nt_qcontent
          s5 << r8
        end
        if s5.last
          r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
          r5.extend(QuotedString0)
        else
          @index = i5
          r5 = nil
        end
        if r5
          s4 << r5
        else
          break
        end
      end
      r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
      s0 << r4
      if r4
        r10 = _nt_FWS
        if r10
          r9 = r10
        else
          r9 = instantiate_node(SyntaxNode,input, index...index)
        end
        s0 << r9
        if r9
          r11 = _nt_DQUOTE
          s0 << r11
          if r11
            r13 = _nt_CFWS
            if r13
              r12 = r13
            else
              r12 = instantiate_node(SyntaxNode,input, index...index)
            end
            s0 << r12
          end
        end
      end
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(QuotedString1)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:quoted_string][start_index] = r0

  r0
end
_nt_received() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4212
def _nt_received
  start_index = index
  if node_cache[:received].has_key?(index)
    cached = node_cache[:received][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r1 = _nt_name_val_list
  s0 << r1
  if r1
    if has_terminal?(";", false, index)
      r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
      @index += 1
    else
      terminal_parse_failure(";")
      r2 = nil
    end
    s0 << r2
    if r2
      r3 = _nt_date_time
      s0 << r3
      if r3
        r4 = _nt_CRLF
        s0 << r4
      end
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(Received0)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:received][start_index] = r0

  r0
end
_nt_return() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 4070
def _nt_return
  start_index = index
  if node_cache[:return].has_key?(index)
    cached = node_cache[:return][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r1 = _nt_path
  s0 << r1
  if r1
    r2 = _nt_CRLF
    s0 << r2
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(Return0)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:return][start_index] = r0

  r0
end
_nt_second() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 3920
def _nt_second
  start_index = index
  if node_cache[:second].has_key?(index)
    cached = node_cache[:second][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r2 = _nt_DIGIT
  s1 << r2
  if r2
    r3 = _nt_DIGIT
    s1 << r3
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(Second0)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    r4 = _nt_obs_second
    if r4
      r0 = r4
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:second][start_index] = r0

  r0
end
_nt_specials() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 431
def _nt_specials
  start_index = index
  if node_cache[:specials].has_key?(index)
    cached = node_cache[:specials][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  if has_terminal?("(", false, index)
    r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
    @index += 1
  else
    terminal_parse_failure("(")
    r1 = nil
  end
  if r1
    r0 = r1
  else
    if has_terminal?(")", false, index)
      r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
      @index += 1
    else
      terminal_parse_failure(")")
      r2 = nil
    end
    if r2
      r0 = r2
    else
      if has_terminal?("<", false, index)
        r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
        @index += 1
      else
        terminal_parse_failure("<")
        r3 = nil
      end
      if r3
        r0 = r3
      else
        if has_terminal?(">", false, index)
          r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
          @index += 1
        else
          terminal_parse_failure(">")
          r4 = nil
        end
        if r4
          r0 = r4
        else
          if has_terminal?("[", false, index)
            r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
            @index += 1
          else
            terminal_parse_failure("[")
            r5 = nil
          end
          if r5
            r0 = r5
          else
            if has_terminal?("]", false, index)
              r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
              @index += 1
            else
              terminal_parse_failure("]")
              r6 = nil
            end
            if r6
              r0 = r6
            else
              if has_terminal?(":", false, index)
                r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
                @index += 1
              else
                terminal_parse_failure(":")
                r7 = nil
              end
              if r7
                r0 = r7
              else
                if has_terminal?(";", false, index)
                  r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
                  @index += 1
                else
                  terminal_parse_failure(";")
                  r8 = nil
                end
                if r8
                  r0 = r8
                else
                  if has_terminal?("@", false, index)
                    r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
                    @index += 1
                  else
                    terminal_parse_failure("@")
                    r9 = nil
                  end
                  if r9
                    r0 = r9
                  else
                    if has_terminal?('\', false, index)
                      r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
                      @index += 1
                    else
                      terminal_parse_failure('\')
                      r10 = nil
                    end
                    if r10
                      r0 = r10
                    else
                      if has_terminal?(",", false, index)
                        r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
                        @index += 1
                      else
                        terminal_parse_failure(",")
                        r11 = nil
                      end
                      if r11
                        r0 = r11
                      else
                        if has_terminal?(".", false, index)
                          r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
                          @index += 1
                        else
                          terminal_parse_failure(".")
                          r12 = nil
                        end
                        if r12
                          r0 = r12
                        else
                          r13 = _nt_DQUOTE
                          if r13
                            r0 = r13
                          else
                            @index = i0
                            r0 = nil
                          end
                        end
                      end
                    end
                  end
                end
              end
            end
          end
        end
      end
    end
  end

  node_cache[:specials][start_index] = r0

  r0
end
_nt_text() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 2571
def _nt_text
  start_index = index
  if node_cache[:text].has_key?(index)
    cached = node_cache[:text][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  if has_terminal?('\G[\x01-\x09]', true, index)
    r1 = true
    @index += 1
  else
    r1 = nil
  end
  if r1
    r0 = r1
  else
    if has_terminal?('\G[\x0b-\x0c]', true, index)
      r2 = true
      @index += 1
    else
      r2 = nil
    end
    if r2
      r0 = r2
    else
      if has_terminal?('\G[\x0e-\x7e]', true, index)
        r3 = true
        @index += 1
      else
        r3 = nil
      end
      if r3
        r0 = r3
      else
        r4 = _nt_obs_text
        if r4
          r0 = r4
        else
          @index = i0
          r0 = nil
        end
      end
    end
  end

  node_cache[:text][start_index] = r0

  r0
end
_nt_time() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 3683
def _nt_time
  start_index = index
  if node_cache[:time].has_key?(index)
    cached = node_cache[:time][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r1 = _nt_time_of_day
  s0 << r1
  if r1
    r2 = _nt_FWS
    s0 << r2
    if r2
      r3 = _nt_zone
      s0 << r3
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(Time0)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:time][start_index] = r0

  r0
end
_nt_time_of_day() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 3735
def _nt_time_of_day
  start_index = index
  if node_cache[:time_of_day].has_key?(index)
    cached = node_cache[:time_of_day][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0, s0 = index, []
  r1 = _nt_hour
  s0 << r1
  if r1
    if has_terminal?(":", false, index)
      r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
      @index += 1
    else
      terminal_parse_failure(":")
      r2 = nil
    end
    s0 << r2
    if r2
      r3 = _nt_minute
      s0 << r3
      if r3
        i5, s5 = index, []
        if has_terminal?(":", false, index)
          r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
          @index += 1
        else
          terminal_parse_failure(":")
          r6 = nil
        end
        s5 << r6
        if r6
          r7 = _nt_second
          s5 << r7
        end
        if s5.last
          r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
          r5.extend(TimeOfDay0)
        else
          @index = i5
          r5 = nil
        end
        if r5
          r4 = r5
        else
          r4 = instantiate_node(SyntaxNode,input, index...index)
        end
        s0 << r4
      end
    end
  end
  if s0.last
    r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
    r0.extend(TimeOfDay1)
  else
    @index = i0
    r0 = nil
  end

  node_cache[:time_of_day][start_index] = r0

  r0
end
_nt_word() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 1688
def _nt_word
  start_index = index
  if node_cache[:word].has_key?(index)
    cached = node_cache[:word][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  r1 = _nt_atom
  if r1
    r0 = r1
  else
    r2 = _nt_quoted_string
    if r2
      r0 = r2
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:word][start_index] = r0

  r0
end
_nt_year() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 3341
def _nt_year
  start_index = index
  if node_cache[:year].has_key?(index)
    cached = node_cache[:year][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  r2 = _nt_DIGIT
  s1 << r2
  if r2
    r3 = _nt_DIGIT
    s1 << r3
    if r3
      r4 = _nt_DIGIT
      s1 << r4
      if r4
        r5 = _nt_DIGIT
        s1 << r5
      end
    end
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(Year0)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    r6 = _nt_obs_year
    if r6
      r0 = r6
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:year][start_index] = r0

  r0
end
_nt_zone() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 3981
def _nt_zone
  start_index = index
  if node_cache[:zone].has_key?(index)
    cached = node_cache[:zone][index]
    if cached
      cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
      @index = cached.interval.end
    end
    return cached
  end

  i0 = index
  i1, s1 = index, []
  i2 = index
  if has_terminal?("+", false, index)
    r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
    @index += 1
  else
    terminal_parse_failure("+")
    r3 = nil
  end
  if r3
    r2 = r3
  else
    if has_terminal?("-", false, index)
      r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
      @index += 1
    else
      terminal_parse_failure("-")
      r4 = nil
    end
    if r4
      r2 = r4
    else
      @index = i2
      r2 = nil
    end
  end
  s1 << r2
  if r2
    r5 = _nt_DIGIT
    s1 << r5
    if r5
      r6 = _nt_DIGIT
      s1 << r6
      if r6
        r7 = _nt_DIGIT
        s1 << r7
        if r7
          r8 = _nt_DIGIT
          s1 << r8
        end
      end
    end
  end
  if s1.last
    r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
    r1.extend(Zone0)
  else
    @index = i1
    r1 = nil
  end
  if r1
    r0 = r1
  else
    r9 = _nt_obs_zone
    if r9
      r0 = r9
    else
      @index = i0
      r0 = nil
    end
  end

  node_cache[:zone][start_index] = r0

  r0
end
root() click to toggle source
# File lib/mail/parsers/rfc2822.rb, line 8
def root
  @root ||= :ALPHA
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.