## sipscan.lua

    -- another SIP example, shows how an awkward log file format
    -- can be parsed. It also prints out the actual Lua string
    -- pattern generated:
    -- SYNC%s*%[([+%-%d]%d*)%]%s*([+%-%d]%d*)%s*([+%-%d]%d*)

    local sip = require 'pl.sip'
    local stringx = require 'pl.stringx'

    local s = [[
    SYNC [1] 0 547 (14679 sec)
    SYNC [2] 0 555 (14679 sec)
    SYNC [3] 0 563 (14679 sec)
    SYNC [4] 0 571 (14679 sec)
    SYNC [5] -1 580 (14679 sec)
    SYNC [6] 0 587 (14679 sec)
    ]]

    local first = true
    local expected
    local res = {}
    local pat = 'SYNC [$i{seq}] $i{diff} $i{val}'
    print(sip.create_pattern(pat))
    local match = sip.compile(pat)
    for line in stringx.lines(s) do
      if match(line,res) then
        if first then
          expected = res.val
          first = false
        end
        print(res.val,expected - res.val)
        expected = expected + 8
      end
    end

generated by LDoc 1.5.0