def fetch.char

yaml-for-bend@0.1.1.0 · scan.bend:1445

import yaml-for-bend@0.1.1.0/scan.bend as Scan
import Base
import yaml-for-bend@0.1.1.0/token.bend as T

1445# The token a character starts.
1446def fetch.char(c: Char, +c1: Char, +flow: Bool, +st: Sc) -> Step:
1447  match c:
1448    case '[':
1449      flow.start(st, T.FSeqStart{})
1450    case '{':
1451      flow.start(st, T.FMapStart{})
1452    case ']':
1453      flow.end(st, T.FSeqEnd{})
1454    case '}':
1455      flow.end(st, T.FMapEnd{})
1456    case ',':
1457      flow.entry(st)
1458    case '-':
1459      when(Step, is_blankz(c1), u => block.entry(st), u => when(Step, Bool.and(flow, is_flow.ind(c1)), u => cannot(st), u => plain(st)))
1460    case '?':
1461      when(Step, Bool.or(is_blankz(c1), Bool.and(flow, is_flow.ind(c1))), u => key(st), u => plain(st))
1462    case ':':
1463      when(Step, Bool.or(is_blankz(c1), Bool.and(flow, Bool.or(is_flow.ind(c1), json.before(sc.out(st))))), u => value(st), u => plain(st))
1464    case '*':
1465      anchor(st, False{})
1466    case '&':
1467      anchor(st, True{})
1468    case '!':
1469      tag(st)
1470    case '|':
1471      when(Step, flow, u => cannot(st), u => block.scalar(st, False{}))
1472    case '>':
1473      when(Step, flow, u => cannot(st), u => block.scalar(st, True{}))
1474    case '\'':
1475      quoted(st, False{})
1476    case '"':
1477      quoted(st, True{})
1478    case _:
1479      when(Step, is_plain.start(c), u => plain(st), u => cannot(st))

Uses (28)

Used by (1)