From 28ac7bbbeffe0101569e1cf45afedddefca1ad55 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sun, 28 Aug 2016 07:47:56 +0200 Subject: [PATCH] extend the syntax used to define switches for a runnable, close #91 --- src/ce_main.pas | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/ce_main.pas b/src/ce_main.pas index 02d83363..faf4dcb8 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -2523,6 +2523,7 @@ var firstLineFlags: string = ''; asObj: boolean = false; hasMain: THasMain; + rng: TStringRange = (ptr:nil; pos:0; len: 0); begin result := false; @@ -2532,10 +2533,16 @@ begin if fDoc.Lines.Count = 0 then exit; firstlineFlags := fDoc.Lines[0]; - i := firstlineFlags.length; - if (i > 18) and (firstlineFlags.upperCase[1..17] = '#!RUNNABLE-FLAGS:') then + rng.init(firstLineFlags); + if rng.startsWith('#!') then begin - firstlineFlags := fSymStringExpander.expand(firstlineFlags[18..i]); + rng.popFront; + rng.popFront; + rng.popWhile([' ', #9]); + rng.popUntil([' ', #9, ':']); + rng.popWhile([' ', #9, ':']); + firstlineFlags := rng.takeUntil(#0).yield; + firstlineFlags := fSymStringExpander.expand(firstlineFlags); lst := TStringList.Create; CommandToList(firstlineFlags, lst); for i:= lst.Count-1 downto 0 do