Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 1x 1x | import {IStatement} from "./_statement"; import {seq, alt, per, altPrio, opt, plus, optPrio} from "../combi"; import {Target, Dynamic, ComponentChain, SourceFieldSymbol} from "../expressions"; import {IStatementRunnable} from "../statement_runnable"; export class Sort implements IStatement { public getMatcher(): IStatementRunnable { const order = altPrio("ASCENDING", "DESCENDING"); const sel = alt(ComponentChain, Dynamic, SourceFieldSymbol); const text = "AS TEXT"; const fields = plus(seq(sel, optPrio(text), optPrio(order), optPrio(text))); const by = seq("BY", fields); const normal = seq(Target, opt(per(order, by, "STABLE", text))); const target = altPrio(text, normal); return seq("SORT", target); } } |