module Mail::Parsers::Ragel::ContentLocationMachine

Attributes

_content_location_eof_actions[RW]
_content_location_index_offsets[RW]
_content_location_indicies[RW]
_content_location_key_spans[RW]
_content_location_trans_actions[RW]
_content_location_trans_keys[RW]
_content_location_trans_targs[RW]
content_location_en_comment_tail[RW]
content_location_en_main[RW]
content_location_error[RW]
content_location_first_final[RW]
content_location_start[RW]

Public Class Methods

parse(data) click to toggle source

line 17 “/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl”

# File lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb, line 356
        def self.parse(data)
          p = 0
          eof = data.length
          stack = []

          actions = []
          data_unpacked = data.bytes.to_a
          
# line 365 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb"
begin
        p ||= 0
        pe ||= data.length
        cs = content_location_start
        top = 0
end

# line 26 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl"
          
# line 375 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb"
begin
        testEof = false
        _slen, _trans, _keys, _inds, _acts, _nacts = nil
        _goto_level = 0
        _resume = 10
        _eof_trans = 15
        _again = 20
        _test_eof = 30
        _out = 40
        while true
        if _goto_level <= 0
        if p == pe
                _goto_level = _test_eof
                next
        end
        if cs == 0
                _goto_level = _out
                next
        end
        end
        if _goto_level <= _resume
        _keys = cs << 1
        _inds = _content_location_index_offsets[cs]
        _slen = _content_location_key_spans[cs]
        _trans = if (   _slen > 0 && 
                        _content_location_trans_keys[_keys] <= ( data_unpacked[p]) && 
                        ( data_unpacked[p]) <= _content_location_trans_keys[_keys + 1] 
                    ) then
                        _content_location_indicies[ _inds + ( data_unpacked[p]) - _content_location_trans_keys[_keys] ] 
                 else 
                        _content_location_indicies[ _inds + _slen ]
                 end
        cs = _content_location_trans_targs[_trans]
        if _content_location_trans_actions[_trans] != 0
        case _content_location_trans_actions[_trans]
        when 4 then
# line 7 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(4, p)             end
        when 7 then
# line 8 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(5, p)             end
        when 3 then
# line 41 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(38, p)            end
        when 13 then
# line 42 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(39, p)            end
        when 11 then
# line 49 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(46, p)            end
        when 1 then
# line 50 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(47, p)            end
        when 2 then
# line 5 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/../../common.rl"
                begin
        begin
                stack[top] = cs
                top+= 1
                cs = 13
                _goto_level = _again
                next
        end
                end
        when 10 then
# line 6 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/../../common.rl"
                begin
        begin
                top -= 1
                cs = stack[top]
                _goto_level = _again
                next
        end
                end
        when 5 then
# line 7 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(4, p)             end
# line 50 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(47, p)            end
        when 6 then
# line 7 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(4, p)             end
# line 5 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/../../common.rl"
                begin
        begin
                stack[top] = cs
                top+= 1
                cs = 13
                _goto_level = _again
                next
        end
                end
        when 8 then
# line 8 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(5, p)             end
# line 5 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/../../common.rl"
                begin
        begin
                stack[top] = cs
                top+= 1
                cs = 13
                _goto_level = _again
                next
        end
                end
        when 9 then
# line 8 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(5, p)             end
# line 6 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/../../common.rl"
                begin
        begin
                top -= 1
                cs = stack[top]
                _goto_level = _again
                next
        end
                end
        when 15 then
# line 42 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(39, p)            end
# line 41 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(38, p)            end
        when 14 then
# line 42 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(39, p)            end
# line 49 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(46, p)            end
        when 12 then
# line 49 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(46, p)            end
# line 5 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/../../common.rl"
                begin
        begin
                stack[top] = cs
                top+= 1
                cs = 13
                _goto_level = _again
                next
        end
                end
        when 17 then
# line 5 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/../../common.rl"
                begin
        begin
                stack[top] = cs
                top+= 1
                cs = 13
                _goto_level = _again
                next
        end
                end
# line 49 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(46, p)            end
        when 16 then
# line 42 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(39, p)            end
# line 49 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(46, p)            end
# line 5 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/../../common.rl"
                begin
        begin
                stack[top] = cs
                top+= 1
                cs = 13
                _goto_level = _again
                next
        end
                end
# line 563 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb"
        end
        end
        end
        if _goto_level <= _again
        if cs == 0
                _goto_level = _out
                next
        end
        p += 1
        if p != pe
                _goto_level = _resume
                next
        end
        end
        if _goto_level <= _test_eof
        if p == eof
          case _content_location_eof_actions[cs]
        when 4 then
# line 7 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(4, p)             end
        when 11 then
# line 49 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl"
                begin
 actions.push(46, p)            end
# line 589 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb"
          end
        end

        end
        if _goto_level <= _out
                break
        end
end
        end

# line 27 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl"

          if p == eof && cs >= 
# line 603 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb"
18
# line 28 "/home/bpot/src/gh/bpot/mail/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl"

            return actions, nil
          else
            return [], "Only able to parse up to #{data[0..p]}"
          end
        end