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

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

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 37 38 39 401x 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 3x 3x 1x 1x  
import {IStatement} from "./_statement";
import {verNotLang, str, seq, alt, opt, per, plus, optPrio, altPrio} from "../combi";
import {Source, Color} from "../expressions";
import {LanguageVersion} 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 inputOpt = seq("INPUT", opt(alt(eq, onOff)));
    const inverseOpt = seq("INVERSE", opt(alt(eq, onOff)));
    const lineFormat = seq("LINE FORMAT",
                           per(inputOpt, inverseOpt, "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 verNotLang(LanguageVersion.Cloud, ret);
  }
 
}