All files / src/abap/2_statements/statements modify_line.ts

100% Statements 37/37
100% Branches 1/1
100% Functions 1/1
100% Lines 37/37

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 27 28 29 30 31 32 33 34 35 36 371x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 1x 1x
import {IStatement} from "./_statement";
import {verNot, str, seq, alt, opt, per, plus, optPrio, altPrio} from "../combi";
import {Source, Color} from "../expressions";
import {Version} from "../../../version";
import {IStatementRunnable} from "../statement_runnable";
 
export class ModifyLine implements IStatement {
 
  public getMatcher(): IStatementRunnable {
    const onOff = alt("ON", "OFF");
    const eq = seq("=", Source);
 
    const form = seq(alt("INVERSE", "INPUT", "COLOR", "HOTSPOT"), opt(alt(eq, onOff)));
 
    const from = seq("FROM", Source);
    const value = seq("FIELD VALUE", plus(seq(Source, optPrio(from))));
    const format = seq("FIELD FORMAT", Source, opt(form));
    const lineValue = seq("LINE VALUE FROM", Source);
    const index = seq("INDEX", Source);
    const page = seq("OF PAGE", Source);
    const ocp = str("OF CURRENT PAGE");
    const intensified = seq("INTENSIFIED", onOff);
    const intensifiedOpt = seq("INTENSIFIED", opt(onOff));
    const lineFormat = seq("LINE FORMAT",
                           per("INPUT OFF", "INVERSE", "RESET", intensifiedOpt, Color));
 
    const options = per(index, value, format, page, lineFormat, lineValue, ocp, intensified, Color);
 
    const ret = seq("MODIFY",
                    altPrio("CURRENT LINE",
                            seq("LINE", Source)),
                    opt(options));
 
    return verNot(Version.Cloud, ret);
  }
 
}