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}