diff --git a/kiss/src/kiss/Helpers.hx b/kiss/src/kiss/Helpers.hx index 152455d2..f9342c07 100644 --- a/kiss/src/kiss/Helpers.hx +++ b/kiss/src/kiss/Helpers.hx @@ -259,6 +259,7 @@ class Helpers { ReaderExpDef: ReaderExpDef }, Operand: { + toDynamic: Operand.toDynamic, fromDynamic: Operand.fromDynamic } }); diff --git a/kiss/src/kiss/KissInterp.hx b/kiss/src/kiss/KissInterp.hx index 0df24bbd..d8bd75d9 100644 --- a/kiss/src/kiss/KissInterp.hx +++ b/kiss/src/kiss/KissInterp.hx @@ -20,6 +20,13 @@ class KissInterp extends Interp { this.nullForUnknownVar = nullForUnknownVar; variables.set("Prelude", Prelude); + variables.set("kiss", { + Operand: { + fromDynamic: Operand.fromDynamic, + toDynamic: Operand.toDynamic + } + }); + trace(variables["kiss"]); variables.set("Lambda", Lambda); variables.set("Std", Std); variables.set("Keep", ExtraElementHandling.Keep); diff --git a/kiss/src/kiss/Macros.hx b/kiss/src/kiss/Macros.hx index 9e07afa5..f746698f 100644 --- a/kiss/src/kiss/Macros.hx +++ b/kiss/src/kiss/Macros.hx @@ -192,7 +192,11 @@ class Macros { conditionInterp.variables.set(flag, value); } try { - var conditionHScript = parser.parseString(Prelude.convertToHScript(conditionStr)); + var hscriptStr = Prelude.convertToHScript(conditionStr); + #if test + Prelude.print(hscriptStr); + #end + var conditionHScript = parser.parseString(hscriptStr); return if (Prelude.truthy(conditionInterp.execute(conditionHScript))) { thenExp; } else { diff --git a/kiss/src/kiss/Operand.hx b/kiss/src/kiss/Operand.hx index de20482b..cb55f0b7 100644 --- a/kiss/src/kiss/Operand.hx +++ b/kiss/src/kiss/Operand.hx @@ -25,7 +25,7 @@ abstract Operand(Either) from Either to Either days] +(defun run [] (day 1 (let [p (SummingTuples.pairWithSum 2020 [1721 979 366 299 675 1456])] (assert (and (has p 1721) (has p 299)) "pairWithSum is broken")) diff --git a/projects/aoc/src/year2020/Toboggan.hx b/projects/aoc/src/year2020/Toboggan.hx index a83045b2..c10a3017 100644 --- a/projects/aoc/src/year2020/Toboggan.hx +++ b/projects/aoc/src/year2020/Toboggan.hx @@ -1,7 +1,6 @@ package year2020; import kiss.Prelude; -import year2020.Util; @:build(kiss.Kiss.build()) class Toboggan {} diff --git a/projects/aoc/src/year2020/Util.hx b/projects/aoc/src/year2020/Util.hx deleted file mode 100644 index 0b56fc76..00000000 --- a/projects/aoc/src/year2020/Util.hx +++ /dev/null @@ -1,9 +0,0 @@ -package year2020; - -import sys.io.File; -import kiss.Prelude; - -using StringTools; - -@:build(kiss.Kiss.build()) -class Util {} diff --git a/projects/aoc/src/year2020/Util.kiss b/projects/aoc/src/year2020/Util.kiss deleted file mode 100644 index dd16a5ba..00000000 --- a/projects/aoc/src/year2020/Util.kiss +++ /dev/null @@ -1,24 +0,0 @@ -(defun readLines [file] - (.filter - (.map - // TODO implement escape sequences in kiss string literals - (.split (.replace (File.getContent file) #|"\r"|# "") #|"\n"|#) - StringTools.trim) - (lambda [l] (< 0 l.length)))) - -(defun readParagraphLines [file] - (.filter - (for paragraph - (.split - (.replace (File.getContent file) #|"\r"|# "") - #|"\n\n"|#) - (.filter - (paragraph.split #|"\n"|#) - (lambda [line] (< 0 line.length)))) - (lambda [lines] (< 0 lines.length)))) - -// TODO won't need to specify type here if last is not a quickNth -(defun :kiss.List readInts [file] (let [lines (readLines file)] (lines.map Std.parseInt))) - -(defun countChar [char str] - (count (str.split "") (lambda [c] ?(= c char)))) \ No newline at end of file diff --git a/projects/aoc/test.sh b/projects/aoc/test.sh index ca626ddd..442465e7 100755 --- a/projects/aoc/test.sh +++ b/projects/aoc/test.sh @@ -1,5 +1,15 @@ #! /bin/bash -DAYS=${1:-all} -YEARS=${2:-all} -haxe -D test -lib kiss -cp src --run Main $DAYS $YEARS \ No newline at end of file +DAYS=${1:-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} +YEARS=${2:-2018,2019,2020} +DEFINITIONS="-D test" +IFS=',' read -ra SPLIT_DAYS <<< "$DAYS" +for day in "${SPLIT_DAYS[@]}"; do + DEFINITIONS="$DEFINITIONS -D day$day" +done +IFS=',' read -ra SPLIT_YEARS <<< "$YEARS" +for year in "${SPLIT_YEARS[@]}"; do + DEFINITIONS="$DEFINITIONS -D year$year" +done +echo $DEFINITIONS +haxe -D test -D days=$DAYS -D years=$YEARS $DEFINITIONS build.hxml \ No newline at end of file