This is an automated email from the ASF dual-hosted git repository.

mlibbey pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new 82076d5b53 Doc: mention elif, nested conditionals (#12869)
82076d5b53 is described below

commit 82076d5b53f9d553ed2d141c77638f88bab07003
Author: mlibbey <[email protected]>
AuthorDate: Sat Feb 21 09:16:48 2026 -0800

    Doc: mention elif, nested conditionals (#12869)
    
    Missed some documentation when adding elif and nested conditionals.
---
 doc/admin-guide/configuration/hrw4u.en.rst | 34 ++++++++++++++++++++++++------
 1 file changed, 27 insertions(+), 7 deletions(-)

diff --git a/doc/admin-guide/configuration/hrw4u.en.rst 
b/doc/admin-guide/configuration/hrw4u.en.rst
index e2a054383e..c401dafc4e 100644
--- a/doc/admin-guide/configuration/hrw4u.en.rst
+++ b/doc/admin-guide/configuration/hrw4u.en.rst
@@ -134,11 +134,12 @@ For people using IDEs, the package also provides an LSP 
for this language, named
 Syntax Differences
 ==================
 
-The basic structure is a `section` name defining the part of the transaction 
to run in
-followed by conditionals and operators. It uses `if () {} else {}` conditional 
syntax
-with `&& , || and ==`, with conditions and operators generally following 
function() or
-object.style grammar. Operator lines are terminated with `;` (whitespace is 
still not
-significant). For instance:
+The basic structure consists of a `section` name defining the part of the 
transaction to run,
+followed by conditionals and operators. It uses `if ... {...} elif ... {...} 
else {...}` conditional syntax
+with `&& , || and ==`. Conditionals support parenthesized grouping for complex 
expressions (`if (...) {...}`)
+and can be nested up to a maximum depth of 10 levels. Conditions and operators 
generally follow
+function() or object.style grammar. Operator lines are terminated with `;` and 
whitespace is still
+insignificant. For instance:
 
 .. code-block:: none
 
@@ -148,13 +149,31 @@ significant). For instance:
    }
 
    REMAP {
-     if inbound.status == 403 || access("/etc/lock") {
+     if inbound.status == 403 {
        inbound.req.X-Fail = "1";
+     } elif inbound.status == 404 {
+       inbound.req.X-NotFound = "1";
      } else {
        no-op();
      }
    }
 
+   READ_RESPONSE {
+     if inbound.status > 399 {
+       if inbound.status < 500 {
+         # Client error - check specific cases
+         if inbound.status == 404 {
+           counter("errors.not_found");
+         } elif inbound.status == 403 {
+           counter("errors.forbidden");
+         }
+       } else {
+         # Server error
+         counter("errors.server");
+       }
+     }
+   }
+
 There is no `cond` or `set-header` syntax — those are implied by context.
 
 Header Presence
@@ -199,7 +218,8 @@ Syntax               Free-form                     
Structured `if (...) { ... }`
 Conditions           `cond %{...}`                 Implicit in `if (...)`
 Operators            Raw text (`set-header`)       Structured assignments or 
statements
 Grouping             `GROUP` / `GROUP:END`         Use `()` inside `if` 
expressions
-Else branches        `else` with indented ops      `else { ... }` with full 
block
+Else branches        `else` with indented ops      `elif ... { ... }` and 
`else { ... }`
+                                                   with full blocks
 Debugging            Manual with logs              Built-in debug tracing 
(`--debug`)
 Quotes               Quoted strings optional       Quoted strings required / 
encouraged
 Validation           Runtime                       Static during parsing and 
symbol resolution

Reply via email to