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
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))