def params.step

bend-kit-multipart@0.3.0.0 · multipart.bend:66

import bend-kit-multipart@0.3.0.0/multipart.bend as Multipart
import Base

66def params.step(st: PS, k: Cls, +c: U32) -> PS:
67  PS{mode, key, val, acc} = st
68  match mode:
69    case PKey{}:
70      match k:
71        case CEq{}:
72          PS{PStart{}, key, SNil{}, acc}
73        case CSemi{}:
74          PS{PKey{}, SNil{}, SNil{}, acc}
75        case CSp{}:
76          PS{PKey{}, key, val, acc}
77        case _:
78          PS{PKey{}, SCon{Char.to_lower(Chr{c}), key}, val, acc}
79    case PStart{}:
80      match k:
81        case CQuote{}:
82          PS{PQuo{}, key, SNil{}, acc}
83        case CSp{}:
84          PS{PStart{}, key, val, acc}
85        case CSemi{}:
86          PS{PKey{}, SNil{}, SNil{}, params.emit(key, SNil{}, acc)}
87        case _:
88          PS{PTok{}, key, SCon{Chr{c}, SNil{}}, acc}
89    case PQuo{}:
90      match k:
91        case CSlash{}:
92          PS{PEsc{}, key, val, acc}
93        case CQuote{}:
94          PS{PSkip{}, SNil{}, SNil{}, params.emit(key, val, acc)}
95        case _:
96          PS{PQuo{}, key, SCon{Chr{c}, val}, acc}
97    case PEsc{}:
98      PS{PQuo{}, key, SCon{Chr{c}, val}, acc}
99    case PTok{}:
100      match k:
101        case CSemi{}:
102          PS{PKey{}, SNil{}, SNil{}, params.emit(key, String.trim_start(val), acc)}
103        case _:
104          PS{PTok{}, key, SCon{Chr{c}, val}, acc}
105    case PSkip{}:
106      match k:
107        case CSemi{}:
108          PS{PKey{}, SNil{}, SNil{}, acc}
109        case _:
110          PS{PSkip{}, key, val, acc}

Uses (9)

Used by (1)