Annotation of parser3/tests/467.html, revision 1.1

1.1     ! moko        1: # ^sse[$.event $.id $.retry $.comment $.data] sends one server-sent event with ^response:send[]
        !             2: @main[]
        !             3: $response:charset[windows-1251]
        !             4: $response:content-type[ $.value[text/html] $.charset[windows-1251] ]
        !             5: $response:x-test[sent with the first event]
        !             6: ^sse[ $.retry(3000) ]
        !             7: ^sse[ $.comment[keep-alive^#0Asecond comment line] ]
        !             8: ^sse[ $.id[1] $.data[привет ^taint[<tag>] <tag>] ]
        !             9: ^sse[ $.event[update ] $.id[2] $.data[first line^#0Asecond line^#0D^#0Athird line^#0D] ]
        !            10: ^sse[ $.event[json] $.data[^json:string[ $.text[привет] $.login[user] ]] ]
        !            11: ^sse[ $.data[] ]
        !            12: ^try{ ^sse[ $.event[bad^#0Aname] $.data[not sent] ] }{ $exception.handled(true) ^sse[ $.event[error] $.data[$exception.comment] ] }
        !            13: 
        !            14: @sse[event][msg;type]
        !            15: $result[]
        !            16: $type[$response:content-type]
        !            17: ^if($type.value ne "text/event-stream" || $type.charset ne "utf-8" || $response:charset ne "utf-8"){
        !            18:        $response:content-type[ $.value[text/event-stream] $.charset[utf-8] ]
        !            19:        $response:charset[utf-8]
        !            20:        $response:cache-control[no-cache]
        !            21: }
        !            22: $msg[^array::create[]]
        !            23: ^if(def $event.comment){ ^sse_lines[$msg;;$event.comment] }
        !            24: ^if(def $event.event){ ^sse_line[$msg;event;$event.event] }
        !            25: ^if(def $event.id){ ^sse_line[$msg;id;$event.id] }
        !            26: ^if(def $event.retry){ ^sse_line[$msg;retry;$event.retry] }
        !            27: ^if(^event.contains[data]){ ^sse_lines[$msg;data;$event.data] }
        !            28: # the empty line ends the event, as-is to avoid optimization
        !            29: ^response:send[^msg.foreach[;line]{${line}^taint[as-is][^#0A]}^taint[as-is][^#0A]]
        !            30: 
        !            31: @sse_lines[msg;name;text]
        !            32: ^text.match[(*ANYCRLF)^^(.*)][gm]{^msg.append[${name}: $match.1]}
        !            33: 
        !            34: @sse_line[msg;name;value]
        !            35: ^if(^value.pos[^#0A] >= 0 || ^value.pos[^#0D] >= 0){ ^throw[sse;;$name must be a single line] }
        !            36: ^msg.append[${name}: $value]

E-mail: