Mercurial > hg > nginx
view docs/xsls/changes.xsls @ 8808:5b0c229ba5fe quic
QUIC: fixed padding calculation.
Sometimes, QUIC packets need to be of certain (or minimal) size. This is
achieved by adding PADDING frames. It is possible, that adding padding will
affect header size, thus forcing us to recalculate padding size once more.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Mon, 05 Jul 2021 13:17:10 +0300 |
parents | 529f10f7757c |
children | e79c7521aaf4 |
line wrap: on
line source
X:stylesheet { X:output method="text"; X:param lang="'en'"; X:param configuration="'../xml/change_log_conf.xml'"; X:var conf = "document($configuration)/configuration"; X:var start = "$conf/start"; X:var indent = "$conf/indent"; X:var max = "$conf/length"; X:var br = {<br>} X:template = "/" { !! "change_log"; } X:template = "change_log" { !! "changes"; } X:template = "changes" { X:text { } !{substring(concat($conf/changes[@lang=$lang]/title, //change_log/@title, ' ', @ver, ' '), 1, $conf/changes[@lang=$lang]/length)} X:if "$lang='ru'" { !{substring(@date, 9, 2)} X:text {.} !{substring(@date, 6, 2)} X:text {.} !{substring(@date, 1, 4)} } X:if "$lang='en'" { !{substring(@date, 9, 2)} !{$conf/changes[@lang=$lang]/month[number(substring(current()/@date, 6, 2))]} !{substring(@date, 1, 4)} } X:text { } !! "change"; X:text { } } X:template = "change" { X:var prefix = "$conf/changes[@lang=$lang]/*[local-name(.)=current()/@type]" X:var postfix = { X:if "$prefix" { X:text {: } } } !! "para[@lang=$lang]" (prefix = "concat($start, $prefix, $postfix)"); } X:template para(prefix) = "para" { X:var text = { !!; } X:text { } !wrap(text = "normalize-space($text)", prefix = { X:if "position() = 1" { !{$prefix} } else { !{$indent} } }) } X:template wrap(text, prefix) { X:if "$text" { X:var offset = { X:choose { X:when "starts-with($text, concat($br, ' '))" { !{string-length($br) + 2} } X:when "starts-with($text, $br)" { !{string-length($br) + 1} } X:otherwise { 1 } } } X:var length = { !length(text = "substring($text, $offset)", prefix = "string-length($prefix)", length = "$max") } !{$prefix} !{normalize-space(translate(substring($text, $offset, $length), ' ', ' '))} X:text { } !wrap(text = "substring($text, $length + $offset)", prefix = "$indent") } } X:template length(text, prefix, length) { X:var break = "substring-before(substring($text, 1, $length - $prefix + string-length($br)), $br)" X:choose { X:when "$break" { !{string-length($break)} } X:when "$length = 0" { !{$max - $prefix} } X:when "string-length($text) + $prefix <= $length" { !{$length - $prefix} } X:when "substring($text, $length - $prefix + 1, 1) = ' '" { !{$length - $prefix + 1} } X:otherwise { !length(text = "$text", prefix = "$prefix", length = "$length - 1") } } } X:template = "at" {@} X:template = "br" { !{$br} } X:template = "nobr" { !{translate(., ' ', ' ')} } }