From 429c2b59f95dd8c5f674dd1edf99b8d08b5b9db9 Mon Sep 17 00:00:00 2001 From: giles Date: Sun, 12 Apr 2026 22:51:20 +0000 Subject: [PATCH] Hyperscript test generator: repeat loop fix, assert= arg order, quote handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Don't insert 'then' inside for-in loop bodies or after 'repeat N times' (fixes repeat from 1/30 → 5/30) - Allow HS sources ending with " when they don't contain embedded HTML (fixes set from 6/25 → 10/25, enables 18 previously-skipped tests) - Fix assert= argument order: (actual expected), not (expected actual) (error messages now correctly report Expected/Got) 395 → 402/831 (+7) Co-Authored-By: Claude Opus 4.6 (1M context) --- shared/static/wasm/sx/hs-parser.sx | 26 +- shared/static/wasm/sx/hs-parser.sxbc | 4 +- spec/tests/test-hyperscript-behavioral.sx | 1031 +++++++++++---------- tests/playwright/generate-sx-tests.py | 42 +- 4 files changed, 562 insertions(+), 541 deletions(-) diff --git a/shared/static/wasm/sx/hs-parser.sx b/shared/static/wasm/sx/hs-parser.sx index bfe28b30..b61639d5 100644 --- a/shared/static/wasm/sx/hs-parser.sx +++ b/shared/static/wasm/sx/hs-parser.sx @@ -1553,20 +1553,18 @@ cl-collect (fn (acc) - (do - (match-kw "then") - (let - ((cmd (parse-cmd))) - (if - (nil? cmd) - acc - (let - ((acc2 (append acc (list cmd)))) - (cond - ((match-kw "then") (cl-collect acc2)) - ((and (not (at-end?)) (= (tp-type) "keyword") (cmd-kw? (tp-val))) - (cl-collect acc2)) - (true acc2)))))))) + (let + ((cmd (parse-cmd))) + (if + (nil? cmd) + acc + (let + ((acc2 (append acc (list cmd)))) + (cond + ((match-kw "then") (cl-collect acc2)) + ((and (not (at-end?)) (= (tp-type) "keyword") (cmd-kw? (tp-val))) + (cl-collect acc2)) + (true acc2))))))) (let ((cmds (cl-collect (list)))) (cond diff --git a/shared/static/wasm/sx/hs-parser.sxbc b/shared/static/wasm/sx/hs-parser.sxbc index 7027fa60..bfdeb86c 100644 --- a/shared/static/wasm/sx/hs-parser.sxbc +++ b/shared/static/wasm/sx/hs-parser.sxbc @@ -1,3 +1,3 @@ -(sxbc 1 "50a6d0a0eb0f1019" +(sxbc 1 "919466450a51fa00" (code - :constants ("hs-parse" {:upvalue-count 0 :arity 2 :constants (0 "len" {:upvalue-count 3 :arity 0 :constants ("<" "nth") :bytecode (18 0 18 1 52 0 0 2 33 11 0 18 2 18 0 52 1 0 2 32 1 0 2 50)} {:upvalue-count 1 :arity 0 :constants ("get" "type" "eof") :bytecode (18 0 48 0 17 0 16 0 33 12 0 16 0 1 1 0 52 0 0 2 32 3 0 1 2 0 50)} {:upvalue-count 1 :arity 0 :constants ("get" "value") :bytecode (18 0 48 0 17 0 16 0 33 12 0 16 0 1 1 0 52 0 0 2 32 1 0 2 50)} {:upvalue-count 2 :arity 0 :constants ("nth" "+" 1) :bytecode (18 0 18 1 52 0 0 2 17 0 18 1 1 2 0 52 1 0 2 19 1 5 16 0 50)} {:upvalue-count 3 :arity 0 :constants (">=" "=" "eof") :bytecode (18 0 18 1 52 0 0 2 6 34 12 0 5 18 2 48 0 1 2 0 52 1 0 2 50)} {:upvalue-count 3 :arity 1 :constants ("=" "keyword") :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 33 11 0 5 18 1 48 0 16 0 52 0 0 2 33 9 0 18 2 48 0 5 3 32 1 0 2 50)} {:upvalue-count 2 :arity 1 :constants ("error" "str" "Expected '" "' at position ") :bytecode (18 0 16 0 48 1 33 4 0 3 32 18 0 1 2 0 16 0 1 3 0 18 1 52 1 0 4 52 0 0 1 50)} {:upvalue-count 0 :arity 1 :constants ("len" ">=" 3 "=" "substring" "-" 2 "ms" "parse-number" 0 "nth" 1 "s" "*" 1000) :bytecode (16 0 52 0 0 1 17 1 16 1 1 2 0 52 1 0 2 6 33 25 0 5 16 0 16 1 1 6 0 52 5 0 2 16 1 52 4 0 3 1 7 0 52 3 0 2 33 25 0 16 0 1 9 0 16 1 1 6 0 52 5 0 2 52 4 0 3 52 8 0 1 32 77 0 16 1 1 6 0 52 1 0 2 6 33 23 0 5 16 0 16 1 1 11 0 52 5 0 2 52 10 0 2 1 12 0 52 3 0 2 33 32 0 1 14 0 16 0 1 9 0 16 1 1 11 0 52 5 0 2 52 4 0 3 52 8 0 1 52 13 0 2 32 6 0 16 0 52 8 0 1 50)} {:upvalue-count 4 :arity 1 :constants ("=" "ident" "keyword" "list" . "attr" attr "class" "get" "value") :bytecode (18 0 48 0 17 1 18 1 48 0 17 2 16 1 1 1 0 52 0 0 2 6 34 10 0 5 16 1 1 2 0 52 0 0 2 33 23 0 18 2 48 0 5 18 3 1 4 0 16 0 16 2 52 3 0 3 49 1 32 76 0 16 1 1 5 0 52 0 0 2 33 19 0 18 2 48 0 5 1 6 0 16 2 16 0 52 3 0 3 32 45 0 16 1 1 7 0 52 0 0 2 33 31 0 18 2 48 0 1 9 0 52 8 0 2 17 3 18 3 1 4 0 16 0 16 3 52 3 0 3 49 1 32 2 0 16 0 50)} {:upvalue-count 6 :arity 1 :constants ("=" "class" "not" "list" "make-symbol" "." "paren-open" method-call) :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 33 9 0 5 18 1 48 0 52 2 0 1 33 33 0 18 2 48 0 17 1 18 3 48 0 5 18 4 1 5 0 52 4 0 1 16 0 16 1 52 3 0 3 49 1 32 40 0 18 0 48 0 1 6 0 52 0 0 2 33 24 0 18 5 48 0 17 1 18 4 1 7 0 16 0 16 1 52 3 0 3 49 1 32 2 0 16 0 50)} {:upvalue-count 3 :arity 1 :constants ("=" "selector" "list" me "class" "str" "." "id" "#" "*") :bytecode (18 0 48 0 17 1 18 1 48 0 17 2 16 1 1 1 0 52 0 0 2 33 23 0 18 2 48 0 5 16 0 16 2 1 3 0 52 2 0 1 52 2 0 3 32 100 0 16 1 1 4 0 52 0 0 2 33 30 0 18 2 48 0 5 16 0 1 6 0 16 2 52 5 0 2 1 3 0 52 2 0 1 52 2 0 3 32 58 0 16 1 1 7 0 52 0 0 2 33 30 0 18 2 48 0 5 16 0 1 8 0 16 2 52 5 0 2 1 3 0 52 2 0 1 52 2 0 3 32 16 0 16 0 1 9 0 1 3 0 52 2 0 1 52 2 0 3 50)} {:upvalue-count 5 :arity 1 :constants ("=" "selector" "class" "str" "." "id" "#" "*" "in" "list") :bytecode (18 0 48 0 17 1 18 1 48 0 17 2 16 1 1 1 0 52 0 0 2 33 10 0 18 2 48 0 5 16 2 32 61 0 16 1 1 2 0 52 0 0 2 33 17 0 18 2 48 0 5 1 4 0 16 2 52 3 0 2 32 32 0 16 1 1 5 0 52 0 0 2 33 17 0 18 2 48 0 5 1 6 0 16 2 52 3 0 2 32 3 0 1 7 0 17 3 18 3 1 8 0 48 1 33 15 0 16 0 16 3 18 4 48 0 52 9 0 3 32 8 0 16 0 16 3 52 9 0 2 50)} {:upvalue-count 16 :arity 0 :constants ("=" "number" "string" "template" "list" template "keyword" "true" "false" "null" "nil" null-literal "undefined" "beep" "op" "!" beep! "not" not "no" no "eval" "paren-open" sx-eval "the" "me" me "I" "it" "result" it "event" event "target" "make-symbol" "." "detail" "my" "its" "closest" closest "next" next "previous" previous "first" first "last" last "id" query "str" "#" "selector" "attr" attr "style" style "local" local "class" "ident" ref "paren-close" "brace-open" {:upvalue-count 6 :arity 1 :constants ("=" "brace-close" "string" "local" "true" "false" "null" "list" ref "colon" "comma" "cons") :bytecode (18 0 48 0 6 34 12 0 5 18 1 48 0 1 1 0 52 0 0 2 33 28 0 18 1 48 0 1 1 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 16 0 32 203 0 18 1 48 0 1 2 0 52 0 0 2 33 16 0 18 3 48 0 17 1 18 2 48 0 5 16 1 32 13 0 18 3 48 0 17 1 18 2 48 0 5 16 1 17 1 18 1 48 0 1 3 0 52 0 0 2 33 71 0 18 3 48 0 17 2 18 2 48 0 5 16 2 1 4 0 52 0 0 2 33 4 0 3 32 41 0 16 2 1 5 0 52 0 0 2 33 4 0 4 32 25 0 16 2 1 6 0 52 0 0 2 33 4 0 2 32 9 0 1 8 0 16 2 52 7 0 2 32 30 0 18 1 48 0 1 9 0 52 0 0 2 33 12 0 18 2 48 0 5 18 4 48 0 32 4 0 18 4 48 0 17 2 18 1 48 0 1 10 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 5 16 1 16 2 52 7 0 2 16 0 52 11 0 2 49 1 50)} object-literal "\\" {:upvalue-count 6 :arity 1 :constants ("=" "op" "-" "<" "+" 1 "len" "get" "nth" "value" ">" "ident" "comma" "append") :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 2 0 52 0 0 2 33 76 0 18 2 1 5 0 52 4 0 2 18 3 52 6 0 1 52 3 0 2 6 33 30 0 5 18 3 18 2 1 5 0 52 4 0 2 52 8 0 2 1 9 0 52 7 0 2 1 10 0 52 0 0 2 33 15 0 18 4 48 0 5 18 4 48 0 5 16 0 32 2 0 16 0 32 65 0 18 0 48 0 1 11 0 52 0 0 2 33 49 0 18 1 48 0 17 1 18 4 48 0 5 18 0 48 0 1 12 0 52 0 0 2 33 7 0 18 4 48 0 32 1 0 2 5 18 5 16 0 16 1 52 13 0 2 49 1 32 2 0 16 0 50)} block-literal "bracket-open" "-" - 0 "component" component "some" ">" "len" "+" 1 "get" "nth" "value" "in" "with" some "every" every) :bytecode (18 0 48 0 17 0 18 1 48 0 17 1 16 0 1 1 0 52 0 0 2 33 14 0 18 2 48 0 5 18 3 16 1 49 1 32 66 7 16 0 1 2 0 52 0 0 2 33 10 0 18 2 48 0 5 16 1 32 44 7 16 0 1 3 0 52 0 0 2 33 17 0 18 2 48 0 5 1 5 0 16 1 52 4 0 2 32 15 7 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 7 0 52 0 0 2 33 9 0 18 2 48 0 5 3 32 236 6 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 8 0 52 0 0 2 33 9 0 18 2 48 0 5 4 32 201 6 16 0 1 6 0 52 0 0 2 6 33 24 0 5 16 1 1 9 0 52 0 0 2 6 34 10 0 5 16 1 1 10 0 52 0 0 2 33 15 0 18 2 48 0 5 1 11 0 52 4 0 1 32 146 6 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 12 0 52 0 0 2 33 15 0 18 2 48 0 5 1 11 0 52 4 0 1 32 105 6 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 13 0 52 0 0 2 33 58 0 18 2 48 0 5 18 0 48 0 1 14 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 15 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 1 16 0 18 4 48 0 52 4 0 2 32 21 6 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 17 0 52 0 0 2 33 19 0 18 2 48 0 5 1 18 0 18 4 48 0 52 4 0 2 32 232 5 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 19 0 52 0 0 2 33 19 0 18 2 48 0 5 1 20 0 18 4 48 0 52 4 0 2 32 187 5 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 21 0 52 0 0 2 33 47 0 18 2 48 0 5 18 0 48 0 1 22 0 52 0 0 2 33 14 0 1 23 0 18 5 48 0 52 4 0 2 32 11 0 1 23 0 18 4 48 0 52 4 0 2 32 114 5 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 24 0 52 0 0 2 33 12 0 18 2 48 0 5 18 6 49 0 32 76 5 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 25 0 52 0 0 2 33 15 0 18 2 48 0 5 1 26 0 52 4 0 1 32 35 5 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 27 0 52 0 0 2 33 15 0 18 2 48 0 5 1 26 0 52 4 0 1 32 250 4 16 0 1 6 0 52 0 0 2 6 33 24 0 5 16 1 1 28 0 52 0 0 2 6 34 10 0 5 16 1 1 29 0 52 0 0 2 33 15 0 18 2 48 0 5 1 30 0 52 4 0 1 32 195 4 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 31 0 52 0 0 2 33 15 0 18 2 48 0 5 1 32 0 52 4 0 1 32 154 4 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 33 0 52 0 0 2 33 29 0 18 2 48 0 5 1 35 0 52 34 0 1 1 32 0 52 4 0 1 1 33 0 52 4 0 3 32 99 4 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 36 0 52 0 0 2 33 29 0 18 2 48 0 5 1 35 0 52 34 0 1 1 32 0 52 4 0 1 1 36 0 52 4 0 3 32 44 4 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 37 0 52 0 0 2 33 19 0 18 2 48 0 5 18 7 1 26 0 52 4 0 1 49 1 32 255 3 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 38 0 52 0 0 2 33 19 0 18 2 48 0 5 18 7 1 30 0 52 4 0 1 49 1 32 210 3 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 39 0 52 0 0 2 33 15 0 18 2 48 0 5 18 8 1 40 0 49 1 32 169 3 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 41 0 52 0 0 2 33 15 0 18 2 48 0 5 18 8 1 42 0 49 1 32 128 3 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 43 0 52 0 0 2 33 15 0 18 2 48 0 5 18 8 1 44 0 49 1 32 87 3 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 45 0 52 0 0 2 33 15 0 18 2 48 0 5 18 9 1 46 0 49 1 32 46 3 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 47 0 52 0 0 2 33 15 0 18 2 48 0 5 18 9 1 48 0 49 1 32 5 3 16 0 1 49 0 52 0 0 2 33 24 0 18 2 48 0 5 1 50 0 1 52 0 16 1 52 51 0 2 52 4 0 2 32 225 2 16 0 1 53 0 52 0 0 2 33 17 0 18 2 48 0 5 1 50 0 16 1 52 4 0 2 32 196 2 16 0 1 54 0 52 0 0 2 33 24 0 18 2 48 0 5 1 55 0 16 1 1 26 0 52 4 0 1 52 4 0 3 32 160 2 16 0 1 56 0 52 0 0 2 33 24 0 18 2 48 0 5 1 57 0 16 1 1 26 0 52 4 0 1 52 4 0 3 32 124 2 16 0 1 58 0 52 0 0 2 33 17 0 18 2 48 0 5 1 59 0 16 1 52 4 0 2 32 95 2 16 0 1 60 0 52 0 0 2 33 24 0 18 2 48 0 5 1 50 0 1 35 0 16 1 52 51 0 2 52 4 0 2 32 59 2 16 0 1 61 0 52 0 0 2 33 17 0 18 2 48 0 5 1 62 0 16 1 52 4 0 2 32 30 2 16 0 1 22 0 52 0 0 2 33 39 0 18 2 48 0 5 18 4 48 0 17 2 18 0 48 0 1 63 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 16 2 32 235 1 16 0 1 64 0 52 0 0 2 33 41 0 18 2 48 0 5 51 65 0 0 10 0 0 0 2 0 1 0 4 1 2 17 2 5 1 66 0 16 2 52 4 0 0 48 1 52 4 0 2 32 182 1 16 0 1 14 0 52 0 0 2 6 33 10 0 5 16 1 1 67 0 52 0 0 2 33 49 0 18 2 48 0 5 51 68 0 0 0 0 1 0 11 0 12 0 2 1 3 17 3 5 16 3 52 4 0 0 48 1 17 4 1 69 0 16 4 18 4 48 0 52 4 0 3 32 107 1 16 0 1 70 0 52 0 0 2 33 12 0 18 2 48 0 5 18 13 49 0 32 83 1 16 0 1 14 0 52 0 0 2 6 33 10 0 5 16 1 1 71 0 52 0 0 2 33 26 0 18 2 48 0 5 18 14 48 0 17 4 1 72 0 1 73 0 16 4 52 4 0 3 32 31 1 16 0 1 74 0 52 0 0 2 33 17 0 18 2 48 0 5 1 75 0 16 1 52 4 0 2 32 2 1 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 76 0 52 0 0 2 33 149 0 18 2 48 0 5 18 0 48 0 1 61 0 52 0 0 2 6 33 54 0 5 18 12 52 78 0 1 18 11 1 80 0 52 79 0 2 52 77 0 2 6 33 30 0 5 18 12 18 11 1 80 0 52 79 0 2 52 82 0 2 1 83 0 52 81 0 2 1 84 0 52 0 0 2 33 51 0 18 1 48 0 17 4 18 2 48 0 5 18 15 1 84 0 48 1 5 18 4 48 0 17 5 18 15 1 85 0 48 1 5 1 86 0 16 4 16 5 18 4 48 0 52 4 0 4 32 18 0 1 18 0 1 20 0 18 4 48 0 52 4 0 2 52 4 0 2 32 83 0 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 87 0 52 0 0 2 33 56 0 18 2 48 0 5 18 1 48 0 17 4 18 2 48 0 5 18 15 1 84 0 48 1 5 18 4 48 0 17 5 18 15 1 85 0 48 1 5 1 88 0 16 4 16 5 18 4 48 0 52 4 0 4 32 1 0 2 50)} {:upvalue-count 8 :arity 1 :constants ("=" "op" "'s" "class" "paren-open" "list" call "bracket-open" ".." "bracket-close" array-slice array-index) :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 2 0 52 0 0 2 33 14 0 18 2 48 0 5 18 3 16 0 49 1 32 74 1 18 0 48 0 1 3 0 52 0 0 2 33 9 0 18 4 16 0 49 1 32 51 1 18 0 48 0 1 4 0 52 0 0 2 33 20 0 18 5 48 0 17 1 1 6 0 16 0 16 1 52 5 0 3 32 17 1 18 0 48 0 1 7 0 52 0 0 2 33 1 1 18 2 48 0 5 18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 8 0 52 0 0 2 33 53 0 18 2 48 0 5 18 6 48 0 17 1 18 0 48 0 1 9 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 7 1 10 0 16 0 2 16 1 52 5 0 4 49 1 32 166 0 18 6 48 0 17 1 18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 8 0 52 0 0 2 33 92 0 18 2 48 0 5 18 0 48 0 1 9 0 52 0 0 2 33 24 0 18 2 48 0 5 18 7 1 10 0 16 0 16 1 2 52 5 0 4 49 1 32 46 0 18 6 48 0 17 2 18 0 48 0 1 9 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 7 1 10 0 16 0 16 1 16 2 52 5 0 4 49 1 32 38 0 18 0 48 0 1 9 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 7 1 11 0 16 0 16 1 52 5 0 3 49 1 32 2 0 16 0 50)} {:upvalue-count 7 :arity 1 :constants ("=" "op" "==" "!=" "<" ">" "<=" ">=" "===" "!==" "list" = strict-eq not "keyword" "is" "not" "empty" empty? "in" not-in? "between" "and" and >= <= "really" "equal" "to" "a" "an" "!" type-check-strict type-check "less" "than" "or" < "greater" > in? "ident" "hs-keyword?" prop-is "am" "exists" exists? "starts" "with" starts-with? "ends" ends-with? "matches" matches? "contains" contains? "as" "colon" as "str" ":" "of" "list?" "first" ref "make-symbol" "." "nth" 1 of "does" "exist" "match" "contain" "include" "includes" "equals" "precedes" precedes? "follows" follows?) :bytecode (18 0 48 0 17 1 18 1 48 0 17 2 16 1 1 1 0 52 0 0 2 6 33 108 0 5 16 2 1 2 0 52 0 0 2 6 34 94 0 5 16 2 1 3 0 52 0 0 2 6 34 80 0 5 16 2 1 4 0 52 0 0 2 6 34 66 0 5 16 2 1 5 0 52 0 0 2 6 34 52 0 5 16 2 1 6 0 52 0 0 2 6 34 38 0 5 16 2 1 7 0 52 0 0 2 6 34 24 0 5 16 2 1 8 0 52 0 0 2 6 34 10 0 5 16 2 1 9 0 52 0 0 2 33 109 0 18 2 48 0 5 18 3 48 0 17 3 16 2 1 2 0 52 0 0 2 33 14 0 1 11 0 16 0 16 3 52 10 0 3 32 69 0 16 2 1 8 0 52 0 0 2 33 14 0 1 12 0 16 0 16 3 52 10 0 3 32 43 0 16 2 1 9 0 52 0 0 2 33 21 0 1 13 0 1 12 0 16 0 16 3 52 10 0 3 52 10 0 2 32 10 0 16 2 16 0 16 3 52 10 0 3 32 13 9 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 15 0 52 0 0 2 33 173 3 18 2 48 0 5 18 4 1 16 0 48 1 33 127 1 18 4 1 17 0 48 1 33 19 0 1 13 0 1 18 0 16 0 52 10 0 2 52 10 0 2 32 95 1 18 4 1 19 0 48 1 33 16 0 1 20 0 16 0 18 3 48 0 52 10 0 3 32 69 1 18 4 1 21 0 48 1 33 59 0 18 5 48 0 17 3 18 4 1 22 0 48 1 5 18 5 48 0 17 4 1 13 0 1 23 0 1 24 0 16 0 16 3 52 10 0 3 1 25 0 16 0 16 4 52 10 0 3 52 10 0 3 52 10 0 2 32 0 1 18 4 1 26 0 48 1 33 39 0 18 4 1 27 0 48 1 5 18 4 1 28 0 48 1 5 1 13 0 1 12 0 16 0 18 3 48 0 52 10 0 3 52 10 0 2 32 207 0 18 4 1 27 0 48 1 33 31 0 18 4 1 28 0 48 1 5 1 13 0 1 11 0 16 0 18 3 48 0 52 10 0 3 52 10 0 2 32 166 0 18 1 48 0 1 29 0 52 0 0 2 6 34 12 0 5 18 1 48 0 1 30 0 52 0 0 2 6 33 7 0 5 18 2 48 0 5 3 33 101 0 18 1 48 0 17 3 18 2 48 0 5 18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 31 0 52 0 0 2 17 4 16 4 33 7 0 18 2 48 0 32 1 0 2 5 16 4 33 21 0 1 13 0 1 32 0 16 0 16 3 52 10 0 3 52 10 0 2 32 18 0 1 13 0 1 33 0 16 0 16 3 52 10 0 3 52 10 0 2 32 24 0 18 3 48 0 17 3 1 13 0 1 11 0 16 0 16 3 52 10 0 3 52 10 0 2 32 28 2 18 4 1 17 0 48 1 33 12 0 1 18 0 16 0 52 10 0 2 32 6 2 18 4 1 34 0 48 1 33 66 0 18 4 1 35 0 48 1 5 18 4 1 36 0 48 1 33 32 0 18 4 1 27 0 48 1 5 18 4 1 28 0 48 1 5 1 25 0 16 0 18 3 48 0 52 10 0 3 32 13 0 1 37 0 16 0 18 3 48 0 52 10 0 3 32 186 1 18 4 1 38 0 48 1 33 66 0 18 4 1 35 0 48 1 5 18 4 1 36 0 48 1 33 32 0 18 4 1 27 0 48 1 5 18 4 1 28 0 48 1 5 1 24 0 16 0 18 3 48 0 52 10 0 3 32 13 0 1 39 0 16 0 18 3 48 0 52 10 0 3 32 110 1 18 4 1 21 0 48 1 33 52 0 18 5 48 0 17 3 18 4 1 22 0 48 1 5 18 5 48 0 17 4 1 23 0 1 24 0 16 0 16 3 52 10 0 3 1 25 0 16 0 16 4 52 10 0 3 52 10 0 3 32 48 1 18 4 1 19 0 48 1 33 16 0 1 40 0 16 0 18 3 48 0 52 10 0 3 32 22 1 18 4 1 26 0 48 1 33 32 0 18 4 1 27 0 48 1 5 18 4 1 28 0 48 1 5 1 12 0 16 0 18 3 48 0 52 10 0 3 32 236 0 18 4 1 27 0 48 1 33 24 0 18 4 1 28 0 48 1 5 1 11 0 16 0 18 3 48 0 52 10 0 3 32 202 0 18 1 48 0 1 29 0 52 0 0 2 6 34 12 0 5 18 1 48 0 1 30 0 52 0 0 2 6 33 7 0 5 18 2 48 0 5 3 33 87 0 18 1 48 0 17 3 18 2 48 0 5 18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 31 0 52 0 0 2 17 4 16 4 33 7 0 18 2 48 0 32 1 0 2 5 16 4 33 14 0 1 32 0 16 0 16 3 52 10 0 3 32 11 0 1 33 0 16 0 16 3 52 10 0 3 32 74 0 18 0 48 0 1 41 0 52 0 0 2 6 33 14 0 5 20 42 0 18 1 48 0 48 1 52 16 0 1 33 25 0 18 1 48 0 17 3 18 2 48 0 5 1 43 0 16 0 16 3 52 10 0 3 32 17 0 18 3 48 0 17 3 1 11 0 16 0 16 3 52 10 0 3 32 70 5 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 44 0 52 0 0 2 33 165 0 18 2 48 0 5 18 4 1 16 0 48 1 33 82 0 18 4 1 19 0 48 1 33 16 0 1 20 0 16 0 18 3 48 0 52 10 0 3 32 53 0 18 4 1 17 0 48 1 33 19 0 1 13 0 1 18 0 16 0 52 10 0 2 52 10 0 2 32 24 0 18 3 48 0 17 3 1 13 0 1 11 0 16 0 16 3 52 10 0 3 52 10 0 2 32 65 0 18 4 1 19 0 48 1 33 16 0 1 40 0 16 0 18 3 48 0 52 10 0 3 32 39 0 18 4 1 17 0 48 1 33 12 0 1 18 0 16 0 52 10 0 2 32 17 0 18 3 48 0 17 3 1 11 0 16 0 16 3 52 10 0 3 32 135 4 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 45 0 52 0 0 2 33 17 0 18 2 48 0 5 1 46 0 16 0 52 10 0 2 32 92 4 16 1 1 14 0 52 0 0 2 6 34 10 0 5 16 1 1 41 0 52 0 0 2 6 33 10 0 5 16 2 1 47 0 52 0 0 2 33 29 0 18 2 48 0 5 18 4 1 48 0 48 1 5 1 49 0 16 0 18 3 48 0 52 10 0 3 32 23 4 16 1 1 14 0 52 0 0 2 6 34 10 0 5 16 1 1 41 0 52 0 0 2 6 33 10 0 5 16 2 1 50 0 52 0 0 2 33 29 0 18 2 48 0 5 18 4 1 48 0 48 1 5 1 51 0 16 0 18 3 48 0 52 10 0 3 32 210 3 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 52 0 52 0 0 2 33 21 0 18 2 48 0 5 1 53 0 16 0 18 3 48 0 52 10 0 3 32 163 3 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 54 0 52 0 0 2 33 21 0 18 2 48 0 5 1 55 0 16 0 18 3 48 0 52 10 0 3 32 116 3 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 56 0 52 0 0 2 33 135 0 18 2 48 0 5 18 1 48 0 1 29 0 52 0 0 2 6 34 12 0 5 18 1 48 0 1 30 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 1 48 0 17 3 18 2 48 0 5 18 0 48 0 1 57 0 52 0 0 2 6 33 9 0 5 18 6 48 0 52 16 0 1 33 39 0 18 2 48 0 5 18 1 48 0 17 4 18 2 48 0 5 1 58 0 16 0 16 3 1 60 0 16 4 52 59 0 3 52 10 0 3 32 11 0 1 58 0 16 0 16 3 52 10 0 3 32 211 2 16 1 1 57 0 52 0 0 2 33 92 0 18 2 48 0 5 18 1 48 0 17 3 18 2 48 0 5 18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 31 0 52 0 0 2 17 4 16 4 33 7 0 18 2 48 0 32 1 0 2 5 16 4 33 14 0 1 32 0 16 0 16 3 52 10 0 3 32 11 0 1 33 0 16 0 16 3 52 10 0 3 32 107 2 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 61 0 52 0 0 2 33 77 0 18 2 48 0 5 18 3 48 0 17 3 16 0 52 62 0 1 6 33 14 0 5 16 0 52 63 0 1 1 64 0 52 0 0 2 33 25 0 1 66 0 52 65 0 1 16 3 16 0 1 68 0 52 67 0 2 52 10 0 3 32 11 0 1 69 0 16 0 16 3 52 10 0 3 32 4 2 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 19 0 52 0 0 2 33 21 0 18 2 48 0 5 1 40 0 16 0 18 3 48 0 52 10 0 3 32 213 1 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 70 0 52 0 0 2 33 170 0 18 2 48 0 5 18 4 1 16 0 48 1 5 18 4 1 71 0 48 1 33 19 0 1 13 0 1 46 0 16 0 52 10 0 2 52 10 0 2 32 125 0 18 4 1 72 0 48 1 33 23 0 1 13 0 1 53 0 16 0 18 3 48 0 52 10 0 3 52 10 0 2 32 92 0 18 4 1 73 0 48 1 6 34 8 0 5 18 4 1 54 0 48 1 33 23 0 1 13 0 1 55 0 16 0 18 3 48 0 52 10 0 3 52 10 0 2 32 47 0 18 4 1 74 0 48 1 6 34 8 0 5 18 4 1 75 0 48 1 33 23 0 1 13 0 1 55 0 16 0 18 3 48 0 52 10 0 3 52 10 0 2 32 2 0 16 0 32 17 1 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 76 0 52 0 0 2 33 21 0 18 2 48 0 5 1 11 0 16 0 18 3 48 0 52 10 0 3 32 226 0 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 26 0 52 0 0 2 33 29 0 18 2 48 0 5 18 4 1 76 0 48 1 5 1 12 0 16 0 18 3 48 0 52 10 0 3 32 171 0 16 1 1 14 0 52 0 0 2 6 33 38 0 5 16 2 1 73 0 52 0 0 2 6 34 24 0 5 16 2 1 74 0 52 0 0 2 6 34 10 0 5 16 2 1 75 0 52 0 0 2 33 21 0 18 2 48 0 5 1 55 0 16 0 18 3 48 0 52 10 0 3 32 96 0 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 77 0 52 0 0 2 33 21 0 18 2 48 0 5 1 78 0 16 0 18 5 48 0 52 10 0 3 32 49 0 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 79 0 52 0 0 2 33 21 0 18 2 48 0 5 1 80 0 16 0 18 5 48 0 52 10 0 3 32 2 0 16 0 50)} {:upvalue-count 6 :arity 1 :constants ("where" "list" coll-where "sorted" "by" "descending" "not" "ascending" coll-sorted-desc coll-sorted "mapped" "to" coll-mapped "split" coll-split "joined" coll-joined) :bytecode (18 0 1 0 0 48 1 33 36 0 18 1 18 2 18 3 18 4 48 0 48 1 48 1 48 1 17 1 18 5 1 2 0 16 0 16 1 52 1 0 3 49 1 32 11 1 18 0 1 3 0 48 1 33 93 0 18 0 1 4 0 48 1 5 18 1 18 2 18 3 18 4 48 0 48 1 48 1 48 1 17 1 18 0 1 5 0 48 1 17 2 16 2 52 6 0 1 33 10 0 18 0 1 7 0 48 1 32 1 0 2 5 18 5 16 2 33 14 0 1 8 0 16 0 16 1 52 1 0 3 32 11 0 1 9 0 16 0 16 1 52 1 0 3 49 1 32 164 0 18 0 1 10 0 48 1 33 44 0 18 0 1 11 0 48 1 5 18 1 18 2 18 3 18 4 48 0 48 1 48 1 48 1 17 1 18 5 1 12 0 16 0 16 1 52 1 0 3 49 1 32 110 0 18 0 1 13 0 48 1 33 44 0 18 0 1 4 0 48 1 5 18 1 18 2 18 3 18 4 48 0 48 1 48 1 48 1 17 1 18 5 1 14 0 16 0 16 1 52 1 0 3 49 1 32 56 0 18 0 1 15 0 48 1 33 44 0 18 0 1 4 0 48 1 5 18 1 18 2 18 3 18 4 48 0 48 1 48 1 48 1 17 1 18 5 1 16 0 16 0 16 1 52 1 0 3 49 1 32 2 0 16 0 50)} {:upvalue-count 7 :arity 1 :constants ("and" "list" and "or" or) :bytecode (18 0 1 0 0 48 1 33 40 0 18 1 18 2 18 3 18 4 18 5 48 0 48 1 48 1 48 1 48 1 17 1 18 6 1 2 0 16 0 16 1 52 1 0 3 49 1 32 52 0 18 0 1 3 0 48 1 33 40 0 18 1 18 2 18 3 18 4 18 5 48 0 48 1 48 1 48 1 48 1 17 1 18 6 1 4 0 16 0 16 1 52 1 0 3 49 1 32 2 0 16 0 50)} {:upvalue-count 9 :arity 0 :constants ("nil?" "number?" "=" "ident" "list" string-postfix "not" "then" "end" "else" "otherwise" "op" "%") :bytecode (18 0 48 0 17 0 16 0 52 0 0 1 33 4 0 2 32 242 0 16 0 52 1 0 1 6 33 12 0 5 18 1 48 0 1 3 0 52 2 0 2 33 27 0 18 2 48 0 17 1 18 3 48 0 5 1 5 0 16 0 16 1 52 4 0 3 17 0 32 1 0 2 5 18 4 16 0 48 1 17 1 18 5 16 1 48 1 17 2 18 6 16 2 48 1 17 3 18 7 16 3 48 1 17 4 18 8 16 4 48 1 17 5 16 5 6 33 112 0 5 18 1 48 0 1 3 0 52 2 0 2 6 33 64 0 5 18 2 48 0 1 7 0 52 2 0 2 6 34 44 0 5 18 2 48 0 1 8 0 52 2 0 2 6 34 28 0 5 18 2 48 0 1 9 0 52 2 0 2 6 34 12 0 5 18 2 48 0 1 10 0 52 2 0 2 52 6 0 1 6 34 28 0 5 18 1 48 0 1 11 0 52 2 0 2 6 33 12 0 5 18 2 48 0 1 12 0 52 2 0 2 33 25 0 18 2 48 0 17 6 18 3 48 0 5 1 5 0 16 5 16 6 52 4 0 3 32 2 0 16 5 50)} {:upvalue-count 2 :arity 2 :constants () :bytecode (18 0 16 0 48 1 33 7 0 18 1 49 0 32 2 0 16 1 50)} {:upvalue-count 3 :arity 0 :constants ("=" "class" "get" "value" "list" {:upvalue-count 4 :arity 0 :constants ("=" "class" "append" "list" "get" "value") :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 31 0 18 1 18 2 48 0 1 5 0 52 4 0 2 52 3 0 1 52 2 0 2 19 1 5 18 3 49 0 32 1 0 2 50)} "to" me "empty?" add-class "cons" multi-add-class) :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 101 0 18 1 48 0 1 3 0 52 2 0 2 17 0 52 4 0 0 17 1 51 5 0 0 0 1 1 0 1 1 2 17 2 5 16 2 48 0 5 18 2 1 6 0 1 7 0 52 4 0 1 48 2 17 3 16 1 52 8 0 1 33 14 0 1 9 0 16 0 16 3 52 4 0 3 32 21 0 1 11 0 16 3 16 0 16 1 52 10 0 2 52 10 0 2 52 10 0 2 32 1 0 2 50)} {:upvalue-count 5 :arity 0 :constants ("=" "class" "get" "value" "list" {:upvalue-count 4 :arity 0 :constants ("=" "class" "append" "list" "get" "value") :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 31 0 18 1 18 2 48 0 1 5 0 52 4 0 2 52 3 0 1 52 2 0 2 19 1 5 18 3 49 0 32 1 0 2 50)} "from" "empty?" remove-class "cons" multi-remove-class "bracket-open" "[" "attr" "]" remove-attr "{" {:upvalue-count 4 :arity 0 :constants ("not" "=" "}" ";" "append" "list" "get" "value") :bytecode (18 0 48 0 1 2 0 52 1 0 2 52 0 0 1 33 76 0 18 0 48 0 1 3 0 52 1 0 2 33 7 0 18 1 48 0 32 1 0 2 5 18 0 48 0 1 2 0 52 1 0 2 52 0 0 1 33 31 0 18 2 18 1 48 0 1 7 0 52 6 0 2 52 5 0 1 52 4 0 2 19 2 5 18 3 49 0 32 1 0 2 32 1 0 2 50)} "}" remove-css remove-element) :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 105 0 18 1 48 0 1 3 0 52 2 0 2 17 0 52 4 0 0 17 1 51 5 0 0 0 1 1 0 1 1 2 17 2 5 16 2 48 0 5 18 2 1 6 0 48 1 33 7 0 18 3 48 0 32 1 0 2 17 3 16 1 52 7 0 1 33 14 0 1 8 0 16 0 16 3 52 4 0 3 32 21 0 1 10 0 16 3 16 0 16 1 52 9 0 2 52 9 0 2 52 9 0 2 32 209 0 18 0 48 0 1 11 0 52 0 0 2 6 33 12 0 5 18 4 48 0 1 12 0 52 0 0 2 33 78 0 18 1 48 0 5 18 0 48 0 1 13 0 52 0 0 2 33 55 0 18 1 48 0 1 3 0 52 2 0 2 17 0 18 2 1 14 0 48 1 5 18 2 1 6 0 48 1 33 7 0 18 3 48 0 32 1 0 2 17 1 1 15 0 16 0 16 1 52 4 0 3 32 1 0 2 32 101 0 18 4 48 0 1 16 0 52 0 0 2 33 72 0 18 1 48 0 5 52 4 0 0 17 0 51 17 0 0 4 0 1 1 0 1 1 17 1 5 16 1 48 0 5 18 2 1 18 0 48 1 5 18 2 1 6 0 48 1 33 7 0 18 3 48 0 32 1 0 2 17 2 1 19 0 16 0 16 2 52 4 0 3 32 15 0 18 3 48 0 17 0 1 20 0 16 0 52 4 0 2 50)} {:upvalue-count 7 :arity 0 :constants ("between" "=" "class" "and" "on" "list" me toggle-between toggle-class "style" toggle-style-between toggle-style "attr" toggle-attr-between toggle-attr) :bytecode (18 0 1 0 0 48 1 33 106 0 18 1 48 0 1 2 0 52 1 0 2 33 88 0 18 2 48 0 17 0 18 3 48 0 5 16 0 17 0 18 4 1 3 0 48 1 5 18 1 48 0 1 2 0 52 1 0 2 33 47 0 18 2 48 0 17 1 18 3 48 0 5 16 1 17 1 18 5 1 4 0 1 6 0 52 5 0 1 48 2 17 2 1 7 0 16 0 16 1 16 2 52 5 0 4 32 1 0 2 32 1 0 2 32 50 1 18 1 48 0 1 2 0 52 1 0 2 33 45 0 18 2 48 0 17 0 18 3 48 0 5 16 0 17 0 18 5 1 4 0 1 6 0 52 5 0 1 48 2 17 1 1 8 0 16 0 16 1 52 5 0 3 32 247 0 18 1 48 0 1 9 0 52 1 0 2 33 109 0 18 2 48 0 17 0 18 3 48 0 5 16 0 17 0 18 0 1 0 0 48 1 33 54 0 18 6 48 0 17 1 18 4 1 3 0 48 1 5 18 6 48 0 17 2 18 5 1 4 0 1 6 0 52 5 0 1 48 2 17 3 1 10 0 16 0 16 1 16 2 16 3 52 5 0 5 32 27 0 18 5 1 4 0 1 6 0 52 5 0 1 48 2 17 1 1 11 0 16 0 16 1 52 5 0 3 32 124 0 18 1 48 0 1 12 0 52 1 0 2 33 109 0 18 2 48 0 17 0 18 3 48 0 5 16 0 17 0 18 0 1 0 0 48 1 33 54 0 18 6 48 0 17 1 18 4 1 3 0 48 1 5 18 6 48 0 17 2 18 5 1 4 0 1 6 0 52 5 0 1 48 2 17 3 1 13 0 16 0 16 1 16 2 16 3 52 5 0 5 32 27 0 18 5 1 4 0 1 6 0 52 5 0 1 48 2 17 1 1 14 0 16 0 16 1 52 5 0 3 32 1 0 2 50)} {:upvalue-count 2 :arity 0 :constants ("to" "list" set!) :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 5 18 0 48 0 17 1 1 2 0 16 0 16 1 52 1 0 3 50)} {:upvalue-count 4 :arity 0 :constants ("into" "list" set! "before" put! "after" "at" "start" "of" "end" "error" "str" "Expected start/end after at, position " "Expected into/before/after/at at position ") :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 33 16 0 1 2 0 18 0 48 0 16 0 52 1 0 3 32 171 0 18 1 1 3 0 48 1 33 19 0 1 4 0 16 0 1 3 0 18 0 48 0 52 1 0 4 32 142 0 18 1 1 5 0 48 1 33 19 0 1 4 0 16 0 1 5 0 18 0 48 0 52 1 0 4 32 113 0 18 1 1 6 0 48 1 33 90 0 18 1 1 7 0 48 1 33 27 0 18 2 1 8 0 48 1 5 1 4 0 16 0 1 7 0 18 0 48 0 52 1 0 4 32 50 0 18 1 1 9 0 48 1 33 27 0 18 2 1 8 0 48 1 5 1 4 0 16 0 1 9 0 18 0 48 0 52 1 0 4 32 13 0 1 12 0 18 3 52 11 0 2 52 10 0 1 32 13 0 1 13 0 18 3 52 11 0 2 52 10 0 1 50)} {:upvalue-count 3 :arity 0 :constants ("else" "otherwise" "end" "list" if) :bytecode (18 0 48 0 17 0 18 1 48 0 17 1 18 2 1 0 0 48 1 6 34 8 0 5 18 2 1 1 0 48 1 33 7 0 18 1 48 0 32 1 0 2 17 2 18 2 1 2 0 48 1 5 16 2 33 16 0 1 4 0 16 0 16 1 16 2 52 3 0 4 32 11 0 1 4 0 16 0 16 1 52 3 0 3 50)} {:upvalue-count 6 :arity 0 :constants ("for" "from" "list" wait-for "=" "number" wait "get" "value" 0) :bytecode (18 0 1 0 0 48 1 33 65 0 18 1 48 0 17 0 18 2 48 0 5 18 0 1 1 0 48 1 33 7 0 18 3 48 0 32 1 0 2 17 1 16 1 33 17 0 1 3 0 16 0 1 1 0 16 1 52 2 0 4 32 9 0 1 3 0 16 0 52 2 0 2 32 53 0 18 4 48 0 1 5 0 52 4 0 2 33 29 0 18 2 48 0 17 0 1 6 0 18 5 16 0 1 8 0 52 7 0 2 48 1 52 2 0 2 32 10 0 1 6 0 1 9 0 52 2 0 2 50)} {:upvalue-count 4 :arity 1 :constants ({:upvalue-count 5 :arity 1 :constants ("=" "paren-close" "get" "value" "colon" "comma" "append" "list") :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 34 5 0 5 18 1 48 0 33 28 0 18 0 48 0 1 1 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 16 0 32 83 0 18 2 48 0 1 3 0 52 2 0 2 17 1 18 0 48 0 1 4 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 3 48 0 17 2 18 0 48 0 1 5 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 4 16 0 16 1 16 2 52 7 0 2 52 6 0 2 49 1 50)} "cons" dict "list") :bytecode (18 0 48 0 5 51 0 0 0 1 0 2 0 0 0 3 1 0 17 0 5 1 2 0 16 0 52 3 0 0 48 1 52 1 0 2 50)} {:upvalue-count 4 :arity 0 :constants ("get" "value" "=" "paren-open" "to" "list" me send) :bytecode (18 0 48 0 1 1 0 52 0 0 2 17 0 18 1 48 0 1 3 0 52 2 0 2 33 7 0 18 2 48 0 32 1 0 2 17 1 18 3 1 4 0 1 6 0 52 5 0 1 48 2 17 2 16 1 33 16 0 1 7 0 16 0 16 1 16 2 52 5 0 4 32 11 0 1 7 0 16 0 16 2 52 5 0 3 50)} {:upvalue-count 2 :arity 0 :constants ("get" "value" "on" "list" me trigger) :bytecode (18 0 48 0 1 1 0 52 0 0 2 17 0 18 1 1 2 0 1 4 0 52 3 0 1 48 2 17 1 1 5 0 16 0 16 1 52 3 0 3 50)} {:upvalue-count 1 :arity 0 :constants ("list" log) :bytecode (1 1 0 18 0 48 0 52 0 0 2 50)} {:upvalue-count 3 :arity 0 :constants ("by" 1 "on" "list" me increment!) :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 33 7 0 18 0 48 0 32 3 0 1 1 0 17 1 18 2 1 2 0 1 4 0 52 3 0 1 48 2 17 2 1 5 0 16 0 16 1 16 2 52 3 0 4 50)} {:upvalue-count 3 :arity 0 :constants ("by" 1 "on" "list" me decrement!) :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 33 7 0 18 0 48 0 32 3 0 1 1 0 17 1 18 2 1 2 0 1 4 0 52 3 0 1 48 2 17 2 1 5 0 16 0 16 1 16 2 52 3 0 4 50)} {:upvalue-count 6 :arity 0 :constants ("list" me "=" "keyword" "then" "end" "with" "add" "remove" "set" "put" "toggle" "hide" "show" "display" hide) :bytecode (18 0 48 0 33 10 0 1 1 0 52 0 0 1 32 188 0 18 1 48 0 1 3 0 52 2 0 2 6 33 156 0 5 18 2 48 0 1 4 0 52 2 0 2 6 34 140 0 5 18 2 48 0 1 5 0 52 2 0 2 6 34 124 0 5 18 2 48 0 1 6 0 52 2 0 2 6 34 108 0 5 18 2 48 0 1 7 0 52 2 0 2 6 34 92 0 5 18 2 48 0 1 8 0 52 2 0 2 6 34 76 0 5 18 2 48 0 1 9 0 52 2 0 2 6 34 60 0 5 18 2 48 0 1 10 0 52 2 0 2 6 34 44 0 5 18 2 48 0 1 11 0 52 2 0 2 6 34 28 0 5 18 2 48 0 1 12 0 52 2 0 2 6 34 12 0 5 18 2 48 0 1 13 0 52 2 0 2 33 10 0 1 1 0 52 0 0 1 32 4 0 18 3 48 0 17 0 18 4 1 6 0 48 1 33 29 0 18 0 48 0 33 6 0 1 14 0 32 13 0 18 2 48 0 17 1 18 5 48 0 5 16 1 32 3 0 1 14 0 17 1 1 15 0 16 0 16 1 52 0 0 3 50)} {:upvalue-count 6 :arity 0 :constants ("list" me "=" "keyword" "then" "end" "with" "add" "remove" "set" "put" "toggle" "hide" "show" "display" show) :bytecode (18 0 48 0 33 10 0 1 1 0 52 0 0 1 32 188 0 18 1 48 0 1 3 0 52 2 0 2 6 33 156 0 5 18 2 48 0 1 4 0 52 2 0 2 6 34 140 0 5 18 2 48 0 1 5 0 52 2 0 2 6 34 124 0 5 18 2 48 0 1 6 0 52 2 0 2 6 34 108 0 5 18 2 48 0 1 7 0 52 2 0 2 6 34 92 0 5 18 2 48 0 1 8 0 52 2 0 2 6 34 76 0 5 18 2 48 0 1 9 0 52 2 0 2 6 34 60 0 5 18 2 48 0 1 10 0 52 2 0 2 6 34 44 0 5 18 2 48 0 1 11 0 52 2 0 2 6 34 28 0 5 18 2 48 0 1 12 0 52 2 0 2 6 34 12 0 5 18 2 48 0 1 13 0 52 2 0 2 33 10 0 1 1 0 52 0 0 1 32 4 0 18 3 48 0 17 0 18 4 1 6 0 48 1 33 29 0 18 0 48 0 33 6 0 1 14 0 32 13 0 18 2 48 0 17 1 18 5 48 0 5 16 1 32 3 0 1 14 0 17 1 1 15 0 16 0 16 1 52 0 0 3 50)} {:upvalue-count 6 :arity 0 :constants ("=" "style" "get" "value" "my" "from" "to" "over" "list" transition-from transition) :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 14 0 18 1 48 0 1 3 0 52 2 0 2 32 72 0 18 2 48 0 1 4 0 52 0 0 2 33 47 0 18 1 48 0 5 18 0 48 0 1 1 0 52 0 0 2 33 14 0 18 1 48 0 1 3 0 52 2 0 2 32 11 0 18 1 48 0 1 3 0 52 2 0 2 32 11 0 18 1 48 0 1 3 0 52 2 0 2 17 0 18 3 1 5 0 48 1 33 7 0 18 4 48 0 32 1 0 2 17 1 18 5 1 6 0 48 1 5 18 4 48 0 17 2 18 3 1 7 0 48 1 33 7 0 18 4 48 0 32 1 0 2 17 3 16 1 33 18 0 1 9 0 16 0 16 1 16 2 16 3 52 8 0 5 32 34 0 16 3 33 17 0 1 10 0 16 0 16 2 16 3 2 52 8 0 5 32 12 0 1 10 0 16 0 16 2 2 52 8 0 4 50)} {:upvalue-count 7 :arity 0 :constants ("=" "keyword" "for" "in" "end" "list" for "it" "forever" forever "while" while "until" until "times" times repeat) :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 2 0 52 0 0 2 33 12 0 18 2 48 0 5 18 3 49 0 32 203 0 18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 3 0 52 0 0 2 33 43 0 18 2 48 0 5 18 4 48 0 17 0 18 5 48 0 17 1 18 6 1 4 0 48 1 5 1 6 0 1 7 0 16 0 2 16 1 52 5 0 5 32 130 0 18 6 1 8 0 48 1 33 10 0 1 9 0 52 5 0 1 32 83 0 18 6 1 10 0 48 1 33 14 0 1 11 0 18 4 48 0 52 5 0 2 32 59 0 18 6 1 12 0 48 1 33 14 0 1 13 0 18 4 48 0 52 5 0 2 32 35 0 18 4 48 0 17 0 18 6 1 14 0 48 1 33 12 0 1 15 0 16 0 52 5 0 2 32 7 0 1 9 0 52 5 0 1 17 0 18 5 48 0 17 1 18 6 1 4 0 48 1 5 1 16 0 16 0 16 1 52 5 0 3 50)} {:upvalue-count 6 :arity 0 :constants ("nil?" "as" "json" "list" fetch) :bytecode (18 0 48 0 17 0 16 0 52 0 0 1 33 5 0 16 0 32 10 0 18 1 18 2 16 0 48 1 48 1 17 1 18 3 1 1 0 48 1 33 16 0 18 4 48 0 17 2 18 5 48 0 5 16 2 32 3 0 1 2 0 17 2 1 4 0 16 1 16 2 52 3 0 3 50)} {:upvalue-count 4 :arity 1 :constants ({:upvalue-count 5 :arity 1 :constants ("=" "paren-close" "comma" "append" "list") :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 34 5 0 5 18 1 48 0 33 28 0 18 0 48 0 1 1 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 16 0 32 45 0 18 3 48 0 17 1 18 0 48 0 1 2 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 4 16 0 16 1 52 4 0 1 52 3 0 2 49 1 50)} "list") :bytecode (18 0 48 0 5 51 0 0 0 1 0 2 0 0 0 3 1 0 17 0 5 16 0 52 1 0 0 49 1 50)} {:upvalue-count 3 :arity 0 :constants ("get" "value" "=" "paren-open" "cons" call "list") :bytecode (18 0 48 0 1 1 0 52 0 0 2 17 0 18 1 48 0 1 3 0 52 2 0 2 33 24 0 18 2 48 0 17 1 1 5 0 16 0 16 1 52 4 0 2 52 4 0 2 32 9 0 1 5 0 16 0 52 6 0 2 50)} {:upvalue-count 5 :arity 0 :constants ("=" "class" "from" "for" "list" take! "attr") :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 74 0 18 1 48 0 17 0 18 2 48 0 5 16 0 17 0 18 3 1 2 0 48 1 33 7 0 18 4 48 0 32 1 0 2 17 1 18 3 1 3 0 48 1 33 7 0 18 4 48 0 32 1 0 2 17 2 1 5 0 1 1 0 16 0 16 1 16 2 52 4 0 5 32 89 0 18 0 48 0 1 6 0 52 0 0 2 33 74 0 18 1 48 0 17 0 18 2 48 0 5 16 0 17 0 18 3 1 2 0 48 1 33 7 0 18 4 48 0 32 1 0 2 17 1 18 3 1 3 0 48 1 33 7 0 18 4 48 0 32 1 0 2 17 2 1 5 0 1 6 0 16 0 16 1 16 2 52 4 0 5 32 1 0 2 50)} {:upvalue-count 2 :arity 0 :constants ("to" "list" go) :bytecode (18 0 1 0 0 48 1 5 1 2 0 18 1 48 0 52 1 0 2 50)} {:upvalue-count 6 :arity 1 :constants ("=" "op" "+" "-" "*" "/" "%" "keyword" "mod" + - * / "make-symbol" "nil?" "list") :bytecode (18 0 48 0 17 1 18 1 48 0 17 2 16 1 1 1 0 52 0 0 2 6 33 66 0 5 16 2 1 2 0 52 0 0 2 6 34 52 0 5 16 2 1 3 0 52 0 0 2 6 34 38 0 5 16 2 1 4 0 52 0 0 2 6 34 24 0 5 16 2 1 5 0 52 0 0 2 6 34 10 0 5 16 2 1 6 0 52 0 0 2 6 34 24 0 5 16 1 1 7 0 52 0 0 2 6 33 10 0 5 16 2 1 8 0 52 0 0 2 33 161 0 18 2 48 0 5 16 2 1 2 0 52 0 0 2 33 6 0 1 9 0 32 91 0 16 2 1 3 0 52 0 0 2 33 6 0 1 10 0 32 73 0 16 2 1 4 0 52 0 0 2 33 6 0 1 11 0 32 55 0 16 2 1 5 0 52 0 0 2 33 6 0 1 12 0 32 37 0 16 2 1 6 0 52 0 0 2 6 34 10 0 5 16 2 1 8 0 52 0 0 2 33 10 0 1 6 0 52 13 0 1 32 1 0 2 17 3 18 3 48 0 17 4 16 4 52 14 0 1 33 5 0 16 4 32 6 0 18 4 16 4 48 1 17 4 18 5 16 3 16 0 16 4 52 15 0 3 49 1 32 2 0 16 0 50)} {:upvalue-count 8 :arity 0 :constants ("=" "ident" "keyword" "of" "list" "make-symbol" "." "result" it "first" first "last" last "closest" closest "next" next "previous" previous ref) :bytecode (18 0 48 0 17 0 18 1 48 0 17 1 16 0 1 1 0 52 0 0 2 6 34 10 0 5 16 0 1 2 0 52 0 0 2 33 179 0 18 2 48 0 5 18 3 1 3 0 48 1 33 20 0 1 6 0 52 5 0 1 18 4 48 0 16 1 52 4 0 3 32 141 0 16 1 1 7 0 52 0 0 2 33 10 0 1 8 0 52 4 0 1 32 119 0 16 1 1 9 0 52 0 0 2 33 10 0 18 5 1 10 0 49 1 32 97 0 16 1 1 11 0 52 0 0 2 33 10 0 18 5 1 12 0 49 1 32 75 0 16 1 1 13 0 52 0 0 2 33 10 0 18 6 1 14 0 49 1 32 53 0 16 1 1 15 0 52 0 0 2 33 10 0 18 6 1 16 0 49 1 32 31 0 16 1 1 17 0 52 0 0 2 33 10 0 18 6 1 18 0 49 1 32 9 0 1 19 0 16 1 52 4 0 2 32 4 0 18 7 49 0 50)} {:upvalue-count 4 :arity 1 :constants ({:upvalue-count 5 :arity 1 :constants ("=" "bracket-close" "comma" "append" "list") :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 34 5 0 5 18 1 48 0 33 28 0 18 0 48 0 1 1 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 16 0 32 45 0 18 3 48 0 17 1 18 0 48 0 1 2 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 4 16 0 16 1 52 4 0 1 52 3 0 2 49 1 50)} "cons" array "list") :bytecode (51 0 0 0 0 0 1 0 2 0 3 1 0 17 0 5 1 2 0 16 0 52 3 0 0 48 1 52 1 0 2 50)} {:upvalue-count 4 :arity 0 :constants ("=" "keyword" "end" "then" "else" "list" return) :bytecode (18 0 48 0 6 34 60 0 5 18 1 48 0 1 1 0 52 0 0 2 6 33 44 0 5 18 2 48 0 1 2 0 52 0 0 2 6 34 28 0 5 18 2 48 0 1 3 0 52 0 0 2 6 34 12 0 5 18 2 48 0 1 4 0 52 0 0 2 33 11 0 1 6 0 2 52 5 0 2 32 11 0 1 6 0 18 3 48 0 52 5 0 2 50)} {:upvalue-count 1 :arity 0 :constants ("list" throw) :bytecode (1 1 0 18 0 48 0 52 0 0 2 50)} {:upvalue-count 2 :arity 0 :constants ("to" "list" append!) :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 5 18 0 48 0 17 1 1 2 0 16 0 16 1 52 1 0 3 50)} {:upvalue-count 3 :arity 0 :constants ("then" "end" "list" tell) :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 5 18 2 48 0 17 1 18 1 1 1 0 48 1 5 1 3 0 16 0 16 1 52 2 0 3 50)} {:upvalue-count 6 :arity 0 :constants ("in" "index" "end" "list" for) :bytecode (18 0 48 0 17 0 18 1 48 0 5 18 2 1 0 0 48 1 5 18 3 48 0 17 1 18 4 1 1 0 48 1 33 16 0 18 0 48 0 17 2 18 1 48 0 5 16 2 32 1 0 2 17 2 18 5 48 0 17 3 18 4 1 2 0 48 1 5 16 2 33 21 0 1 4 0 16 0 16 1 16 3 1 1 0 16 2 52 3 0 6 32 13 0 1 4 0 16 0 16 1 16 3 52 3 0 4 50)} {:upvalue-count 3 :arity 0 :constants ("=" "a" "called" "list" make) :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 7 0 18 1 48 0 32 1 0 2 5 18 0 48 0 17 0 18 1 48 0 5 18 2 1 2 0 48 1 33 16 0 18 0 48 0 17 1 18 1 48 0 5 16 1 32 1 0 2 17 1 16 1 33 14 0 1 4 0 16 0 16 1 52 3 0 3 32 9 0 1 4 0 16 0 52 3 0 2 50)} {:upvalue-count 4 :arity 0 :constants ("=" "paren-open" "cons" install "list") :bytecode (18 0 48 0 17 0 18 1 48 0 5 18 2 48 0 1 1 0 52 0 0 2 33 24 0 18 3 48 0 17 1 1 3 0 16 0 16 1 52 2 0 2 52 2 0 2 32 9 0 1 3 0 16 0 52 4 0 2 50)} {:upvalue-count 1 :arity 0 :constants ("list" measure "nil?" me) :bytecode (18 0 48 0 17 0 1 1 0 16 0 52 2 0 1 33 10 0 1 3 0 52 0 0 1 32 2 0 16 0 52 0 0 2 50)} {:upvalue-count 5 :arity 0 :constants ("=" "keyword" "then" "end" "list" me "top" "bottom" "left" "right" scroll!) :bytecode (18 0 48 0 6 34 44 0 5 18 1 48 0 1 1 0 52 0 0 2 6 33 28 0 5 18 2 48 0 1 2 0 52 0 0 2 6 34 12 0 5 18 2 48 0 1 3 0 52 0 0 2 33 10 0 1 5 0 52 4 0 1 32 4 0 18 3 48 0 17 0 18 4 1 6 0 48 1 33 6 0 1 6 0 32 51 0 18 4 1 7 0 48 1 33 6 0 1 7 0 32 35 0 18 4 1 8 0 48 1 33 6 0 1 8 0 32 19 0 18 4 1 9 0 48 1 33 6 0 1 9 0 32 3 0 1 6 0 17 1 1 10 0 16 0 16 1 52 4 0 3 50)} {:upvalue-count 4 :arity 0 :constants ("=" "keyword" "then" "end" "list" me select!) :bytecode (18 0 48 0 6 34 44 0 5 18 1 48 0 1 1 0 52 0 0 2 6 33 28 0 5 18 2 48 0 1 2 0 52 0 0 2 6 34 12 0 5 18 2 48 0 1 3 0 52 0 0 2 33 10 0 1 5 0 52 4 0 1 32 4 0 18 3 48 0 17 0 1 6 0 16 0 52 4 0 2 50)} {:upvalue-count 4 :arity 0 :constants ("=" "keyword" "then" "end" "list" me reset!) :bytecode (18 0 48 0 6 34 44 0 5 18 1 48 0 1 1 0 52 0 0 2 6 33 28 0 5 18 2 48 0 1 2 0 52 0 0 2 6 34 12 0 5 18 2 48 0 1 3 0 52 0 0 2 33 10 0 1 5 0 52 4 0 1 32 4 0 18 3 48 0 17 0 1 6 0 16 0 52 4 0 2 50)} {:upvalue-count 2 :arity 0 :constants ("to" "list" default!) :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 5 18 0 48 0 17 1 1 2 0 16 0 16 1 52 1 0 3 50)} {:upvalue-count 1 :arity 0 :constants ("the" "event" "default" "list" halt!) :bytecode (18 0 1 0 0 48 1 6 33 20 0 5 18 0 1 1 0 48 1 6 34 8 0 5 18 0 1 2 0 48 1 17 0 1 4 0 16 0 33 6 0 1 1 0 32 3 0 1 2 0 52 3 0 2 50)} {:upvalue-count 2 :arity 0 :constants ("=" "paren-open" "list") :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 7 0 18 1 49 0 32 4 0 52 2 0 0 50)} {:upvalue-count 4 :arity 0 :constants ("list" me "=" "keyword" "then" "end" focus!) :bytecode (18 0 48 0 33 10 0 1 1 0 52 0 0 1 32 60 0 18 1 48 0 1 3 0 52 2 0 2 6 33 28 0 5 18 2 48 0 1 4 0 52 2 0 2 6 34 12 0 5 18 2 48 0 1 5 0 52 2 0 2 33 10 0 1 1 0 52 0 0 1 32 4 0 18 3 48 0 17 0 1 6 0 16 0 52 0 0 2 50)} {:upvalue-count 4 :arity 1 :constants ({:upvalue-count 5 :arity 1 :constants ("=" "keyword" "end" "nil?" "append" "list") :bytecode (18 0 48 0 6 34 28 0 5 18 1 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 2 48 0 1 2 0 52 0 0 2 33 5 0 16 0 32 36 0 18 3 48 0 17 1 16 1 52 3 0 1 33 5 0 16 0 32 16 0 18 4 16 0 16 1 52 5 0 1 52 4 0 2 49 1 50)} "list") :bytecode (51 0 0 0 0 0 1 0 2 0 3 1 0 17 0 5 16 0 52 1 0 0 49 1 50)} {:upvalue-count 5 :arity 0 :constants ("end" "list" def) :bytecode (18 0 48 0 17 0 18 1 48 0 5 18 2 48 0 17 1 18 3 48 0 17 2 18 4 1 0 0 48 1 5 1 2 0 16 0 16 1 16 2 52 1 0 4 50)} {:upvalue-count 5 :arity 0 :constants ("end" "list" behavior) :bytecode (18 0 48 0 17 0 18 1 48 0 5 18 2 48 0 17 1 18 3 48 0 17 2 18 4 1 0 0 48 1 5 1 2 0 16 0 16 1 16 2 52 1 0 4 50)} {:upvalue-count 4 :arity 1 :constants ({:upvalue-count 5 :arity 1 :constants ("=" "local" "append" "list") :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 38 0 18 1 48 0 17 1 18 2 48 0 5 18 3 48 0 17 2 18 4 16 0 16 1 16 2 52 3 0 2 52 2 0 2 49 1 32 2 0 16 0 50)} "list") :bytecode (51 0 0 0 0 0 1 0 2 0 3 1 0 17 0 5 16 0 52 1 0 0 49 1 50)} {:upvalue-count 6 :arity 0 :constants ("=" "component" "paren-open" "paren-close" "into" "before" "after" "list" render) :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 16 0 18 1 48 0 17 0 18 2 48 0 5 16 0 32 66 0 18 0 48 0 1 2 0 52 0 0 2 33 39 0 18 2 48 0 5 18 3 48 0 17 0 18 0 48 0 1 3 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 16 0 32 13 0 18 1 48 0 17 0 18 2 48 0 5 16 0 17 0 18 4 48 0 17 1 18 5 1 4 0 48 1 33 6 0 1 4 0 32 33 0 18 5 1 5 0 48 1 33 6 0 1 5 0 32 17 0 18 5 1 6 0 48 1 33 6 0 1 6 0 32 1 0 2 17 2 16 2 33 7 0 18 3 48 0 32 1 0 2 17 3 16 2 33 18 0 1 8 0 16 0 16 1 16 2 16 3 52 7 0 5 32 11 0 1 8 0 16 0 16 1 52 7 0 3 50)} {:upvalue-count 5 :arity 0 :constants ("get" "pos" {:upvalue-count 6 :arity 1 :constants ("=" "paren-open" "+" 1 "paren-close" 0 "get" "pos" "-") :bytecode (18 0 48 0 33 5 0 18 1 32 123 0 18 2 48 0 1 1 0 52 0 0 2 33 21 0 18 3 48 0 5 18 4 16 0 1 3 0 52 2 0 2 49 1 32 88 0 18 2 48 0 1 4 0 52 0 0 2 33 63 0 16 0 1 5 0 52 0 0 2 33 30 0 18 5 48 0 1 7 0 52 6 0 2 1 3 0 52 2 0 2 17 1 18 3 48 0 5 16 1 32 18 0 18 3 48 0 5 18 4 16 0 1 3 0 52 8 0 2 49 1 32 11 0 18 3 48 0 5 18 4 16 0 49 1 50)} 0 "substring") :bytecode (18 0 48 0 1 1 0 52 0 0 2 17 0 18 1 48 0 5 51 2 0 0 2 1 0 0 3 0 1 1 1 0 0 17 1 5 16 1 1 3 0 48 1 17 2 18 4 16 0 16 2 52 4 0 3 50)} {:upvalue-count 39 :arity 0 :constants ("=" "keyword" "catch" "finally" "end" "else" "otherwise" "add" "remove" "toggle" "set" "put" "if" "wait" "send" "trigger" "log" "increment" "decrement" "hide" "show" "transition" "repeat" "fetch" "call" "take" "settle" "list" settle "go" "return" "throw" "append" "tell" "for" "make" "install" "measure" "render" "scroll" "select" "reset" "default" "halt" "focus") :bytecode (18 0 48 0 17 0 18 1 48 0 17 1 16 0 1 1 0 52 0 0 2 6 33 66 0 5 16 1 1 2 0 52 0 0 2 6 34 52 0 5 16 1 1 3 0 52 0 0 2 6 34 38 0 5 16 1 1 4 0 52 0 0 2 6 34 24 0 5 16 1 1 5 0 52 0 0 2 6 34 10 0 5 16 1 1 6 0 52 0 0 2 33 4 0 2 32 95 5 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 7 0 52 0 0 2 33 12 0 18 2 48 0 5 18 3 49 0 32 57 5 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 8 0 52 0 0 2 33 12 0 18 2 48 0 5 18 4 49 0 32 19 5 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 9 0 52 0 0 2 33 12 0 18 2 48 0 5 18 5 49 0 32 237 4 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 10 0 52 0 0 2 33 12 0 18 2 48 0 5 18 6 49 0 32 199 4 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 11 0 52 0 0 2 33 12 0 18 2 48 0 5 18 7 49 0 32 161 4 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 12 0 52 0 0 2 33 12 0 18 2 48 0 5 18 8 49 0 32 123 4 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 13 0 52 0 0 2 33 12 0 18 2 48 0 5 18 9 49 0 32 85 4 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 14 0 52 0 0 2 33 12 0 18 2 48 0 5 18 10 49 0 32 47 4 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 15 0 52 0 0 2 33 12 0 18 2 48 0 5 18 11 49 0 32 9 4 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 16 0 52 0 0 2 33 12 0 18 2 48 0 5 18 12 49 0 32 227 3 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 17 0 52 0 0 2 33 12 0 18 2 48 0 5 18 13 49 0 32 189 3 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 18 0 52 0 0 2 33 12 0 18 2 48 0 5 18 14 49 0 32 151 3 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 19 0 52 0 0 2 33 12 0 18 2 48 0 5 18 15 49 0 32 113 3 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 20 0 52 0 0 2 33 12 0 18 2 48 0 5 18 16 49 0 32 75 3 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 21 0 52 0 0 2 33 12 0 18 2 48 0 5 18 17 49 0 32 37 3 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 22 0 52 0 0 2 33 12 0 18 2 48 0 5 18 18 49 0 32 255 2 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 23 0 52 0 0 2 33 12 0 18 2 48 0 5 18 19 49 0 32 217 2 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 24 0 52 0 0 2 33 12 0 18 2 48 0 5 18 20 49 0 32 179 2 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 25 0 52 0 0 2 33 12 0 18 2 48 0 5 18 21 49 0 32 141 2 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 26 0 52 0 0 2 33 15 0 18 2 48 0 5 1 28 0 52 27 0 1 32 100 2 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 29 0 52 0 0 2 33 12 0 18 2 48 0 5 18 22 49 0 32 62 2 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 30 0 52 0 0 2 33 12 0 18 2 48 0 5 18 23 49 0 32 24 2 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 31 0 52 0 0 2 33 12 0 18 2 48 0 5 18 24 49 0 32 242 1 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 32 0 52 0 0 2 33 12 0 18 2 48 0 5 18 25 49 0 32 204 1 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 33 0 52 0 0 2 33 12 0 18 2 48 0 5 18 26 49 0 32 166 1 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 34 0 52 0 0 2 33 12 0 18 2 48 0 5 18 27 49 0 32 128 1 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 35 0 52 0 0 2 33 12 0 18 2 48 0 5 18 28 49 0 32 90 1 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 36 0 52 0 0 2 33 12 0 18 2 48 0 5 18 29 49 0 32 52 1 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 37 0 52 0 0 2 33 12 0 18 2 48 0 5 18 30 49 0 32 14 1 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 38 0 52 0 0 2 33 12 0 18 2 48 0 5 18 31 49 0 32 232 0 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 39 0 52 0 0 2 33 12 0 18 2 48 0 5 18 32 49 0 32 194 0 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 40 0 52 0 0 2 33 12 0 18 2 48 0 5 18 33 49 0 32 156 0 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 41 0 52 0 0 2 33 12 0 18 2 48 0 5 18 34 49 0 32 118 0 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 42 0 52 0 0 2 33 12 0 18 2 48 0 5 18 35 49 0 32 80 0 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 43 0 52 0 0 2 33 12 0 18 2 48 0 5 18 36 49 0 32 42 0 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 44 0 52 0 0 2 33 12 0 18 2 48 0 5 18 37 49 0 32 4 0 18 38 49 0 50)} {:upvalue-count 5 :arity 2 :constants ({:upvalue-count 0 :arity 1 :constants ("=" "add" "remove" "toggle" "set" "put" "if" "wait" "send" "trigger" "log" "increment" "decrement" "hide" "show" "transition" "repeat" "fetch" "call" "take" "settle" "go" "return" "throw" "append" "tell" "for" "make" "install" "measure" "render" "halt" "default" "scroll" "select" "reset" "focus") :bytecode (16 0 1 1 0 52 0 0 2 6 34 230 1 5 16 0 1 2 0 52 0 0 2 6 34 216 1 5 16 0 1 3 0 52 0 0 2 6 34 202 1 5 16 0 1 4 0 52 0 0 2 6 34 188 1 5 16 0 1 5 0 52 0 0 2 6 34 174 1 5 16 0 1 6 0 52 0 0 2 6 34 160 1 5 16 0 1 7 0 52 0 0 2 6 34 146 1 5 16 0 1 8 0 52 0 0 2 6 34 132 1 5 16 0 1 9 0 52 0 0 2 6 34 118 1 5 16 0 1 10 0 52 0 0 2 6 34 104 1 5 16 0 1 11 0 52 0 0 2 6 34 90 1 5 16 0 1 12 0 52 0 0 2 6 34 76 1 5 16 0 1 13 0 52 0 0 2 6 34 62 1 5 16 0 1 14 0 52 0 0 2 6 34 48 1 5 16 0 1 15 0 52 0 0 2 6 34 34 1 5 16 0 1 16 0 52 0 0 2 6 34 20 1 5 16 0 1 17 0 52 0 0 2 6 34 6 1 5 16 0 1 18 0 52 0 0 2 6 34 248 0 5 16 0 1 19 0 52 0 0 2 6 34 234 0 5 16 0 1 20 0 52 0 0 2 6 34 220 0 5 16 0 1 21 0 52 0 0 2 6 34 206 0 5 16 0 1 22 0 52 0 0 2 6 34 192 0 5 16 0 1 23 0 52 0 0 2 6 34 178 0 5 16 0 1 24 0 52 0 0 2 6 34 164 0 5 16 0 1 25 0 52 0 0 2 6 34 150 0 5 16 0 1 26 0 52 0 0 2 6 34 136 0 5 16 0 1 27 0 52 0 0 2 6 34 122 0 5 16 0 1 28 0 52 0 0 2 6 34 108 0 5 16 0 1 29 0 52 0 0 2 6 34 94 0 5 16 0 1 30 0 52 0 0 2 6 34 80 0 5 16 0 1 31 0 52 0 0 2 6 34 66 0 5 16 0 1 32 0 52 0 0 2 6 34 52 0 5 16 0 1 33 0 52 0 0 2 6 34 38 0 5 16 0 1 34 0 52 0 0 2 6 34 24 0 5 16 0 1 35 0 52 0 0 2 6 34 10 0 5 16 0 1 36 0 52 0 0 2 50)} {:upvalue-count 7 :arity 1 :constants ("then" "nil?" "append" "list" "not" "=" "keyword") :bytecode (18 0 1 0 0 48 1 5 18 1 48 0 17 1 16 1 52 1 0 1 33 5 0 16 0 32 84 0 16 0 16 1 52 3 0 1 52 2 0 2 17 2 18 0 1 0 0 48 1 33 9 0 18 2 16 2 49 1 32 51 0 18 3 48 0 52 4 0 1 6 33 25 0 5 18 4 48 0 1 6 0 52 5 0 2 6 33 9 0 5 18 5 18 6 48 0 48 1 33 9 0 18 2 16 2 49 1 32 2 0 16 2 50)} "list" "=" "len" 0 1 "first" "cons" do) :bytecode (51 0 0 17 0 5 51 1 0 0 0 0 1 1 1 0 2 0 3 1 0 0 4 17 1 5 16 1 52 2 0 0 48 1 17 2 16 2 52 4 0 1 1 5 0 52 3 0 2 33 4 0 2 32 34 0 16 2 52 4 0 1 1 6 0 52 3 0 2 33 9 0 16 2 52 7 0 1 32 9 0 1 9 0 16 2 52 8 0 2 50)} {:upvalue-count 6 :arity 0 :constants ("every" "=" "bracket-open" "bracket-close" "from" "catch" "list" "finally" "end" on "append" "filter") :bytecode (18 0 1 0 0 48 1 17 0 18 1 48 0 17 1 18 2 48 0 5 16 1 17 1 18 3 48 0 1 2 0 52 1 0 2 33 39 0 18 2 48 0 5 18 4 48 0 17 2 18 3 48 0 1 3 0 52 1 0 2 33 7 0 18 2 48 0 32 1 0 2 5 16 2 32 1 0 2 17 2 18 0 1 4 0 48 1 33 7 0 18 4 48 0 32 1 0 2 17 3 18 5 48 0 17 4 18 0 1 5 0 48 1 33 32 0 18 1 48 0 17 5 18 2 48 0 5 16 5 17 5 18 5 48 0 17 6 16 5 16 6 52 6 0 2 32 1 0 2 17 5 18 0 1 7 0 48 1 33 7 0 18 5 48 0 32 1 0 2 17 6 18 0 1 8 0 48 1 5 1 9 0 16 1 52 6 0 2 17 7 16 0 33 17 0 16 7 1 0 0 3 52 6 0 2 52 10 0 2 32 2 0 16 7 17 8 16 2 33 18 0 16 8 1 11 0 16 2 52 6 0 2 52 10 0 2 32 2 0 16 8 17 9 16 3 33 18 0 16 9 1 4 0 16 3 52 6 0 2 52 10 0 2 32 2 0 16 9 17 10 16 5 33 18 0 16 10 1 5 0 16 5 52 6 0 2 52 10 0 2 32 2 0 16 10 17 11 16 6 33 18 0 16 11 1 7 0 16 6 52 6 0 2 52 10 0 2 32 2 0 16 11 17 12 16 12 16 4 52 6 0 1 52 10 0 2 17 13 16 13 50)} {:upvalue-count 2 :arity 0 :constants ("end" "list" init) :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 5 1 2 0 16 0 52 1 0 2 50)} {:upvalue-count 7 :arity 0 :constants ("=" "on" "init" "def" "behavior") :bytecode (18 0 48 0 17 0 16 0 1 1 0 52 0 0 2 33 12 0 18 1 48 0 5 18 2 49 0 32 76 0 16 0 1 2 0 52 0 0 2 33 12 0 18 1 48 0 5 18 3 49 0 32 52 0 16 0 1 3 0 52 0 0 2 33 12 0 18 1 48 0 5 18 4 49 0 32 28 0 16 0 1 4 0 52 0 0 2 33 12 0 18 1 48 0 5 18 5 49 0 32 4 0 18 6 49 0 50)} {:upvalue-count 3 :arity 1 :constants ("nil?" "append" "list") :bytecode (18 0 48 0 33 5 0 16 0 32 36 0 18 1 48 0 17 1 16 1 52 0 0 1 33 5 0 16 0 32 16 0 18 2 16 0 16 1 52 2 0 1 52 1 0 2 49 1 50)} "list" "=" 1 "first" "cons" do) :bytecode (1 0 0 17 2 16 0 52 1 0 1 17 3 51 2 0 1 2 1 3 1 0 17 4 5 51 3 0 1 4 17 5 5 51 4 0 1 4 17 6 5 51 5 0 1 0 1 2 17 7 5 51 6 0 1 2 1 3 1 5 17 8 5 51 7 0 1 5 1 6 1 7 17 9 5 51 8 0 1 9 1 2 17 10 5 51 9 0 17 11 5 51 10 0 1 5 1 6 1 7 1 13 17 12 5 51 11 0 1 5 1 8 1 6 1 7 1 13 1 41 17 13 5 51 12 0 1 5 1 6 1 7 17 14 5 51 13 0 1 5 1 6 1 7 1 9 1 21 17 15 5 51 14 0 1 5 1 6 1 7 1 11 1 21 1 68 1 46 1 12 1 14 1 15 1 8 1 2 1 0 1 47 1 16 1 9 17 16 5 51 15 0 1 5 1 6 1 7 1 12 1 13 1 41 1 21 1 17 17 17 5 51 16 0 1 5 1 6 1 7 1 21 1 9 1 16 1 8 17 18 5 51 17 0 1 9 1 18 1 45 1 17 1 16 1 19 17 19 5 51 18 0 1 9 1 19 1 18 1 45 1 17 1 16 1 20 17 20 5 51 19 0 1 16 1 5 1 6 1 7 1 17 1 45 1 18 1 19 1 20 17 21 5 51 20 0 1 9 1 21 17 22 5 51 21 0 1 5 1 7 1 22 17 23 5 51 22 0 1 5 1 7 1 9 1 21 1 6 17 24 5 51 23 0 1 9 1 5 1 6 1 7 1 10 1 22 1 16 17 25 5 51 24 0 1 21 1 10 17 26 5 51 25 0 1 21 1 9 1 10 1 2 17 27 5 51 26 0 1 21 1 70 1 9 17 28 5 51 27 0 1 9 1 6 1 7 1 21 1 5 1 11 17 29 5 51 28 0 1 7 1 5 1 8 1 21 17 30 5 51 29 0 1 7 1 5 1 30 1 22 17 31 5 51 30 0 1 7 1 22 17 32 5 51 31 0 1 21 17 33 5 51 32 0 1 21 1 9 1 22 17 34 5 51 33 0 1 21 1 9 1 22 17 35 5 51 34 0 1 8 1 5 1 6 1 21 1 9 1 7 17 36 5 51 35 0 1 8 1 5 1 6 1 21 1 9 1 7 17 37 5 51 36 0 1 5 1 7 1 6 1 9 1 21 1 10 17 38 5 51 37 0 1 5 1 6 1 7 1 52 1 21 1 70 1 9 17 39 5 51 38 0 1 16 1 45 1 17 1 9 1 6 1 7 17 40 5 51 39 0 1 7 1 5 1 8 1 21 17 41 5 51 40 0 1 7 1 5 1 41 17 42 5 51 41 0 1 5 1 6 1 7 1 9 1 21 17 43 5 51 42 0 1 9 1 21 17 44 5 51 43 0 1 5 1 6 1 7 1 16 1 17 1 45 17 45 5 51 44 0 1 5 1 6 1 7 1 9 1 21 1 15 1 14 1 16 17 46 5 51 45 0 1 5 1 8 1 7 1 21 17 47 5 51 46 0 1 8 1 5 1 6 1 21 17 48 5 51 47 0 1 21 17 49 5 51 48 0 1 21 1 10 17 50 5 51 49 0 1 21 1 9 1 70 17 51 5 51 50 0 1 6 1 7 1 10 1 21 1 9 1 70 17 52 5 51 51 0 1 6 1 7 1 9 17 53 5 51 52 0 1 6 1 7 1 5 1 41 17 54 5 51 53 0 1 21 17 55 5 51 54 0 1 8 1 5 1 6 1 21 1 9 17 56 5 51 55 0 1 8 1 5 1 6 1 21 17 57 5 51 56 0 1 8 1 5 1 6 1 21 17 58 5 51 57 0 1 21 1 10 17 59 5 51 58 0 1 9 17 60 5 51 59 0 1 5 1 41 17 61 5 51 60 0 1 8 1 5 1 6 1 21 17 62 5 51 61 0 1 8 1 5 1 6 1 73 17 63 5 51 62 0 1 6 1 7 1 61 1 70 1 9 17 64 5 51 63 0 1 6 1 7 1 61 1 63 1 9 17 65 5 51 64 0 1 5 1 6 1 7 1 21 17 66 5 51 65 0 1 5 1 6 1 7 1 21 1 66 1 9 17 67 5 51 66 0 1 4 1 7 1 8 1 5 1 1 17 68 5 51 67 0 1 5 1 6 1 7 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 42 1 43 1 44 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 67 1 56 1 57 1 58 1 59 1 60 1 62 1 21 17 69 5 51 68 0 1 9 1 69 1 8 1 5 1 6 17 70 5 51 69 0 1 9 1 6 1 7 1 5 1 21 1 70 17 71 5 51 70 0 1 70 1 9 17 72 5 51 71 0 1 6 1 7 1 71 1 72 1 64 1 65 1 70 17 73 5 51 72 0 1 8 1 73 1 74 17 74 5 16 74 52 73 0 0 48 1 17 75 16 75 52 1 0 1 1 75 0 52 74 0 2 33 9 0 16 75 52 76 0 1 32 9 0 1 78 0 16 75 52 77 0 2 50)} "hs-compile" {:upvalue-count 0 :arity 1 :constants ("hs-parse" "hs-tokenize") :bytecode (20 0 0 20 1 0 16 0 48 1 16 0 49 2 50)}) :bytecode (51 1 0 128 0 0 5 51 3 0 128 2 0 50))) + :constants ("hs-parse" {:upvalue-count 0 :arity 2 :constants (0 "len" {:upvalue-count 3 :arity 0 :constants ("<" "nth") :bytecode (18 0 18 1 52 0 0 2 33 11 0 18 2 18 0 52 1 0 2 32 1 0 2 50)} {:upvalue-count 1 :arity 0 :constants ("get" "type" "eof") :bytecode (18 0 48 0 17 0 16 0 33 12 0 16 0 1 1 0 52 0 0 2 32 3 0 1 2 0 50)} {:upvalue-count 1 :arity 0 :constants ("get" "value") :bytecode (18 0 48 0 17 0 16 0 33 12 0 16 0 1 1 0 52 0 0 2 32 1 0 2 50)} {:upvalue-count 2 :arity 0 :constants ("nth" "+" 1) :bytecode (18 0 18 1 52 0 0 2 17 0 18 1 1 2 0 52 1 0 2 19 1 5 16 0 50)} {:upvalue-count 3 :arity 0 :constants (">=" "=" "eof") :bytecode (18 0 18 1 52 0 0 2 6 34 12 0 5 18 2 48 0 1 2 0 52 1 0 2 50)} {:upvalue-count 3 :arity 1 :constants ("=" "keyword") :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 33 11 0 5 18 1 48 0 16 0 52 0 0 2 33 9 0 18 2 48 0 5 3 32 1 0 2 50)} {:upvalue-count 2 :arity 1 :constants ("error" "str" "Expected '" "' at position ") :bytecode (18 0 16 0 48 1 33 4 0 3 32 18 0 1 2 0 16 0 1 3 0 18 1 52 1 0 4 52 0 0 1 50)} {:upvalue-count 0 :arity 1 :constants ("len" ">=" 3 "=" "substring" "-" 2 "ms" "parse-number" 0 "nth" 1 "s" "*" 1000) :bytecode (16 0 52 0 0 1 17 1 16 1 1 2 0 52 1 0 2 6 33 25 0 5 16 0 16 1 1 6 0 52 5 0 2 16 1 52 4 0 3 1 7 0 52 3 0 2 33 25 0 16 0 1 9 0 16 1 1 6 0 52 5 0 2 52 4 0 3 52 8 0 1 32 77 0 16 1 1 6 0 52 1 0 2 6 33 23 0 5 16 0 16 1 1 11 0 52 5 0 2 52 10 0 2 1 12 0 52 3 0 2 33 32 0 1 14 0 16 0 1 9 0 16 1 1 11 0 52 5 0 2 52 4 0 3 52 8 0 1 52 13 0 2 32 6 0 16 0 52 8 0 1 50)} {:upvalue-count 4 :arity 1 :constants ("=" "ident" "keyword" "list" . "attr" attr "class" "get" "value") :bytecode (18 0 48 0 17 1 18 1 48 0 17 2 16 1 1 1 0 52 0 0 2 6 34 10 0 5 16 1 1 2 0 52 0 0 2 33 23 0 18 2 48 0 5 18 3 1 4 0 16 0 16 2 52 3 0 3 49 1 32 76 0 16 1 1 5 0 52 0 0 2 33 19 0 18 2 48 0 5 1 6 0 16 2 16 0 52 3 0 3 32 45 0 16 1 1 7 0 52 0 0 2 33 31 0 18 2 48 0 1 9 0 52 8 0 2 17 3 18 3 1 4 0 16 0 16 3 52 3 0 3 49 1 32 2 0 16 0 50)} {:upvalue-count 6 :arity 1 :constants ("=" "class" "not" "list" "make-symbol" "." "paren-open" method-call) :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 33 9 0 5 18 1 48 0 52 2 0 1 33 33 0 18 2 48 0 17 1 18 3 48 0 5 18 4 1 5 0 52 4 0 1 16 0 16 1 52 3 0 3 49 1 32 40 0 18 0 48 0 1 6 0 52 0 0 2 33 24 0 18 5 48 0 17 1 18 4 1 7 0 16 0 16 1 52 3 0 3 49 1 32 2 0 16 0 50)} {:upvalue-count 3 :arity 1 :constants ("=" "selector" "list" me "class" "str" "." "id" "#" "*") :bytecode (18 0 48 0 17 1 18 1 48 0 17 2 16 1 1 1 0 52 0 0 2 33 23 0 18 2 48 0 5 16 0 16 2 1 3 0 52 2 0 1 52 2 0 3 32 100 0 16 1 1 4 0 52 0 0 2 33 30 0 18 2 48 0 5 16 0 1 6 0 16 2 52 5 0 2 1 3 0 52 2 0 1 52 2 0 3 32 58 0 16 1 1 7 0 52 0 0 2 33 30 0 18 2 48 0 5 16 0 1 8 0 16 2 52 5 0 2 1 3 0 52 2 0 1 52 2 0 3 32 16 0 16 0 1 9 0 1 3 0 52 2 0 1 52 2 0 3 50)} {:upvalue-count 5 :arity 1 :constants ("=" "selector" "class" "str" "." "id" "#" "*" "in" "list") :bytecode (18 0 48 0 17 1 18 1 48 0 17 2 16 1 1 1 0 52 0 0 2 33 10 0 18 2 48 0 5 16 2 32 61 0 16 1 1 2 0 52 0 0 2 33 17 0 18 2 48 0 5 1 4 0 16 2 52 3 0 2 32 32 0 16 1 1 5 0 52 0 0 2 33 17 0 18 2 48 0 5 1 6 0 16 2 52 3 0 2 32 3 0 1 7 0 17 3 18 3 1 8 0 48 1 33 15 0 16 0 16 3 18 4 48 0 52 9 0 3 32 8 0 16 0 16 3 52 9 0 2 50)} {:upvalue-count 16 :arity 0 :constants ("=" "number" "string" "template" "list" template "keyword" "true" "false" "null" "nil" null-literal "undefined" "beep" "op" "!" beep! "not" not "no" no "eval" "paren-open" sx-eval "the" "me" me "I" "it" "result" it "event" event "target" "make-symbol" "." "detail" "my" "its" "closest" closest "next" next "previous" previous "first" first "last" last "id" query "str" "#" "selector" "attr" attr "style" style "local" local "class" "ident" ref "paren-close" "brace-open" {:upvalue-count 6 :arity 1 :constants ("=" "brace-close" "string" "local" "true" "false" "null" "list" ref "colon" "comma" "cons") :bytecode (18 0 48 0 6 34 12 0 5 18 1 48 0 1 1 0 52 0 0 2 33 28 0 18 1 48 0 1 1 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 16 0 32 203 0 18 1 48 0 1 2 0 52 0 0 2 33 16 0 18 3 48 0 17 1 18 2 48 0 5 16 1 32 13 0 18 3 48 0 17 1 18 2 48 0 5 16 1 17 1 18 1 48 0 1 3 0 52 0 0 2 33 71 0 18 3 48 0 17 2 18 2 48 0 5 16 2 1 4 0 52 0 0 2 33 4 0 3 32 41 0 16 2 1 5 0 52 0 0 2 33 4 0 4 32 25 0 16 2 1 6 0 52 0 0 2 33 4 0 2 32 9 0 1 8 0 16 2 52 7 0 2 32 30 0 18 1 48 0 1 9 0 52 0 0 2 33 12 0 18 2 48 0 5 18 4 48 0 32 4 0 18 4 48 0 17 2 18 1 48 0 1 10 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 5 16 1 16 2 52 7 0 2 16 0 52 11 0 2 49 1 50)} object-literal "\\" {:upvalue-count 6 :arity 1 :constants ("=" "op" "-" "<" "+" 1 "len" "get" "nth" "value" ">" "ident" "comma" "append") :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 2 0 52 0 0 2 33 76 0 18 2 1 5 0 52 4 0 2 18 3 52 6 0 1 52 3 0 2 6 33 30 0 5 18 3 18 2 1 5 0 52 4 0 2 52 8 0 2 1 9 0 52 7 0 2 1 10 0 52 0 0 2 33 15 0 18 4 48 0 5 18 4 48 0 5 16 0 32 2 0 16 0 32 65 0 18 0 48 0 1 11 0 52 0 0 2 33 49 0 18 1 48 0 17 1 18 4 48 0 5 18 0 48 0 1 12 0 52 0 0 2 33 7 0 18 4 48 0 32 1 0 2 5 18 5 16 0 16 1 52 13 0 2 49 1 32 2 0 16 0 50)} block-literal "bracket-open" "-" - 0 "component" component "some" ">" "len" "+" 1 "get" "nth" "value" "in" "with" some "every" every) :bytecode (18 0 48 0 17 0 18 1 48 0 17 1 16 0 1 1 0 52 0 0 2 33 14 0 18 2 48 0 5 18 3 16 1 49 1 32 66 7 16 0 1 2 0 52 0 0 2 33 10 0 18 2 48 0 5 16 1 32 44 7 16 0 1 3 0 52 0 0 2 33 17 0 18 2 48 0 5 1 5 0 16 1 52 4 0 2 32 15 7 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 7 0 52 0 0 2 33 9 0 18 2 48 0 5 3 32 236 6 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 8 0 52 0 0 2 33 9 0 18 2 48 0 5 4 32 201 6 16 0 1 6 0 52 0 0 2 6 33 24 0 5 16 1 1 9 0 52 0 0 2 6 34 10 0 5 16 1 1 10 0 52 0 0 2 33 15 0 18 2 48 0 5 1 11 0 52 4 0 1 32 146 6 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 12 0 52 0 0 2 33 15 0 18 2 48 0 5 1 11 0 52 4 0 1 32 105 6 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 13 0 52 0 0 2 33 58 0 18 2 48 0 5 18 0 48 0 1 14 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 15 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 1 16 0 18 4 48 0 52 4 0 2 32 21 6 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 17 0 52 0 0 2 33 19 0 18 2 48 0 5 1 18 0 18 4 48 0 52 4 0 2 32 232 5 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 19 0 52 0 0 2 33 19 0 18 2 48 0 5 1 20 0 18 4 48 0 52 4 0 2 32 187 5 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 21 0 52 0 0 2 33 47 0 18 2 48 0 5 18 0 48 0 1 22 0 52 0 0 2 33 14 0 1 23 0 18 5 48 0 52 4 0 2 32 11 0 1 23 0 18 4 48 0 52 4 0 2 32 114 5 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 24 0 52 0 0 2 33 12 0 18 2 48 0 5 18 6 49 0 32 76 5 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 25 0 52 0 0 2 33 15 0 18 2 48 0 5 1 26 0 52 4 0 1 32 35 5 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 27 0 52 0 0 2 33 15 0 18 2 48 0 5 1 26 0 52 4 0 1 32 250 4 16 0 1 6 0 52 0 0 2 6 33 24 0 5 16 1 1 28 0 52 0 0 2 6 34 10 0 5 16 1 1 29 0 52 0 0 2 33 15 0 18 2 48 0 5 1 30 0 52 4 0 1 32 195 4 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 31 0 52 0 0 2 33 15 0 18 2 48 0 5 1 32 0 52 4 0 1 32 154 4 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 33 0 52 0 0 2 33 29 0 18 2 48 0 5 1 35 0 52 34 0 1 1 32 0 52 4 0 1 1 33 0 52 4 0 3 32 99 4 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 36 0 52 0 0 2 33 29 0 18 2 48 0 5 1 35 0 52 34 0 1 1 32 0 52 4 0 1 1 36 0 52 4 0 3 32 44 4 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 37 0 52 0 0 2 33 19 0 18 2 48 0 5 18 7 1 26 0 52 4 0 1 49 1 32 255 3 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 38 0 52 0 0 2 33 19 0 18 2 48 0 5 18 7 1 30 0 52 4 0 1 49 1 32 210 3 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 39 0 52 0 0 2 33 15 0 18 2 48 0 5 18 8 1 40 0 49 1 32 169 3 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 41 0 52 0 0 2 33 15 0 18 2 48 0 5 18 8 1 42 0 49 1 32 128 3 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 43 0 52 0 0 2 33 15 0 18 2 48 0 5 18 8 1 44 0 49 1 32 87 3 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 45 0 52 0 0 2 33 15 0 18 2 48 0 5 18 9 1 46 0 49 1 32 46 3 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 47 0 52 0 0 2 33 15 0 18 2 48 0 5 18 9 1 48 0 49 1 32 5 3 16 0 1 49 0 52 0 0 2 33 24 0 18 2 48 0 5 1 50 0 1 52 0 16 1 52 51 0 2 52 4 0 2 32 225 2 16 0 1 53 0 52 0 0 2 33 17 0 18 2 48 0 5 1 50 0 16 1 52 4 0 2 32 196 2 16 0 1 54 0 52 0 0 2 33 24 0 18 2 48 0 5 1 55 0 16 1 1 26 0 52 4 0 1 52 4 0 3 32 160 2 16 0 1 56 0 52 0 0 2 33 24 0 18 2 48 0 5 1 57 0 16 1 1 26 0 52 4 0 1 52 4 0 3 32 124 2 16 0 1 58 0 52 0 0 2 33 17 0 18 2 48 0 5 1 59 0 16 1 52 4 0 2 32 95 2 16 0 1 60 0 52 0 0 2 33 24 0 18 2 48 0 5 1 50 0 1 35 0 16 1 52 51 0 2 52 4 0 2 32 59 2 16 0 1 61 0 52 0 0 2 33 17 0 18 2 48 0 5 1 62 0 16 1 52 4 0 2 32 30 2 16 0 1 22 0 52 0 0 2 33 39 0 18 2 48 0 5 18 4 48 0 17 2 18 0 48 0 1 63 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 16 2 32 235 1 16 0 1 64 0 52 0 0 2 33 41 0 18 2 48 0 5 51 65 0 0 10 0 0 0 2 0 1 0 4 1 2 17 2 5 1 66 0 16 2 52 4 0 0 48 1 52 4 0 2 32 182 1 16 0 1 14 0 52 0 0 2 6 33 10 0 5 16 1 1 67 0 52 0 0 2 33 49 0 18 2 48 0 5 51 68 0 0 0 0 1 0 11 0 12 0 2 1 3 17 3 5 16 3 52 4 0 0 48 1 17 4 1 69 0 16 4 18 4 48 0 52 4 0 3 32 107 1 16 0 1 70 0 52 0 0 2 33 12 0 18 2 48 0 5 18 13 49 0 32 83 1 16 0 1 14 0 52 0 0 2 6 33 10 0 5 16 1 1 71 0 52 0 0 2 33 26 0 18 2 48 0 5 18 14 48 0 17 4 1 72 0 1 73 0 16 4 52 4 0 3 32 31 1 16 0 1 74 0 52 0 0 2 33 17 0 18 2 48 0 5 1 75 0 16 1 52 4 0 2 32 2 1 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 76 0 52 0 0 2 33 149 0 18 2 48 0 5 18 0 48 0 1 61 0 52 0 0 2 6 33 54 0 5 18 12 52 78 0 1 18 11 1 80 0 52 79 0 2 52 77 0 2 6 33 30 0 5 18 12 18 11 1 80 0 52 79 0 2 52 82 0 2 1 83 0 52 81 0 2 1 84 0 52 0 0 2 33 51 0 18 1 48 0 17 4 18 2 48 0 5 18 15 1 84 0 48 1 5 18 4 48 0 17 5 18 15 1 85 0 48 1 5 1 86 0 16 4 16 5 18 4 48 0 52 4 0 4 32 18 0 1 18 0 1 20 0 18 4 48 0 52 4 0 2 52 4 0 2 32 83 0 16 0 1 6 0 52 0 0 2 6 33 10 0 5 16 1 1 87 0 52 0 0 2 33 56 0 18 2 48 0 5 18 1 48 0 17 4 18 2 48 0 5 18 15 1 84 0 48 1 5 18 4 48 0 17 5 18 15 1 85 0 48 1 5 1 88 0 16 4 16 5 18 4 48 0 52 4 0 4 32 1 0 2 50)} {:upvalue-count 8 :arity 1 :constants ("=" "op" "'s" "class" "paren-open" "list" call "bracket-open" ".." "bracket-close" array-slice array-index) :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 2 0 52 0 0 2 33 14 0 18 2 48 0 5 18 3 16 0 49 1 32 74 1 18 0 48 0 1 3 0 52 0 0 2 33 9 0 18 4 16 0 49 1 32 51 1 18 0 48 0 1 4 0 52 0 0 2 33 20 0 18 5 48 0 17 1 1 6 0 16 0 16 1 52 5 0 3 32 17 1 18 0 48 0 1 7 0 52 0 0 2 33 1 1 18 2 48 0 5 18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 8 0 52 0 0 2 33 53 0 18 2 48 0 5 18 6 48 0 17 1 18 0 48 0 1 9 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 7 1 10 0 16 0 2 16 1 52 5 0 4 49 1 32 166 0 18 6 48 0 17 1 18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 8 0 52 0 0 2 33 92 0 18 2 48 0 5 18 0 48 0 1 9 0 52 0 0 2 33 24 0 18 2 48 0 5 18 7 1 10 0 16 0 16 1 2 52 5 0 4 49 1 32 46 0 18 6 48 0 17 2 18 0 48 0 1 9 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 7 1 10 0 16 0 16 1 16 2 52 5 0 4 49 1 32 38 0 18 0 48 0 1 9 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 7 1 11 0 16 0 16 1 52 5 0 3 49 1 32 2 0 16 0 50)} {:upvalue-count 7 :arity 1 :constants ("=" "op" "==" "!=" "<" ">" "<=" ">=" "===" "!==" "list" = strict-eq not "keyword" "is" "not" "empty" empty? "in" not-in? "between" "and" and >= <= "really" "equal" "to" "a" "an" "!" type-check-strict type-check "less" "than" "or" < "greater" > in? "ident" "hs-keyword?" prop-is "am" "exists" exists? "starts" "with" starts-with? "ends" ends-with? "matches" matches? "contains" contains? "as" "colon" as "str" ":" "of" "list?" "first" ref "make-symbol" "." "nth" 1 of "does" "exist" "match" "contain" "include" "includes" "equals" "precedes" precedes? "follows" follows?) :bytecode (18 0 48 0 17 1 18 1 48 0 17 2 16 1 1 1 0 52 0 0 2 6 33 108 0 5 16 2 1 2 0 52 0 0 2 6 34 94 0 5 16 2 1 3 0 52 0 0 2 6 34 80 0 5 16 2 1 4 0 52 0 0 2 6 34 66 0 5 16 2 1 5 0 52 0 0 2 6 34 52 0 5 16 2 1 6 0 52 0 0 2 6 34 38 0 5 16 2 1 7 0 52 0 0 2 6 34 24 0 5 16 2 1 8 0 52 0 0 2 6 34 10 0 5 16 2 1 9 0 52 0 0 2 33 109 0 18 2 48 0 5 18 3 48 0 17 3 16 2 1 2 0 52 0 0 2 33 14 0 1 11 0 16 0 16 3 52 10 0 3 32 69 0 16 2 1 8 0 52 0 0 2 33 14 0 1 12 0 16 0 16 3 52 10 0 3 32 43 0 16 2 1 9 0 52 0 0 2 33 21 0 1 13 0 1 12 0 16 0 16 3 52 10 0 3 52 10 0 2 32 10 0 16 2 16 0 16 3 52 10 0 3 32 13 9 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 15 0 52 0 0 2 33 173 3 18 2 48 0 5 18 4 1 16 0 48 1 33 127 1 18 4 1 17 0 48 1 33 19 0 1 13 0 1 18 0 16 0 52 10 0 2 52 10 0 2 32 95 1 18 4 1 19 0 48 1 33 16 0 1 20 0 16 0 18 3 48 0 52 10 0 3 32 69 1 18 4 1 21 0 48 1 33 59 0 18 5 48 0 17 3 18 4 1 22 0 48 1 5 18 5 48 0 17 4 1 13 0 1 23 0 1 24 0 16 0 16 3 52 10 0 3 1 25 0 16 0 16 4 52 10 0 3 52 10 0 3 52 10 0 2 32 0 1 18 4 1 26 0 48 1 33 39 0 18 4 1 27 0 48 1 5 18 4 1 28 0 48 1 5 1 13 0 1 12 0 16 0 18 3 48 0 52 10 0 3 52 10 0 2 32 207 0 18 4 1 27 0 48 1 33 31 0 18 4 1 28 0 48 1 5 1 13 0 1 11 0 16 0 18 3 48 0 52 10 0 3 52 10 0 2 32 166 0 18 1 48 0 1 29 0 52 0 0 2 6 34 12 0 5 18 1 48 0 1 30 0 52 0 0 2 6 33 7 0 5 18 2 48 0 5 3 33 101 0 18 1 48 0 17 3 18 2 48 0 5 18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 31 0 52 0 0 2 17 4 16 4 33 7 0 18 2 48 0 32 1 0 2 5 16 4 33 21 0 1 13 0 1 32 0 16 0 16 3 52 10 0 3 52 10 0 2 32 18 0 1 13 0 1 33 0 16 0 16 3 52 10 0 3 52 10 0 2 32 24 0 18 3 48 0 17 3 1 13 0 1 11 0 16 0 16 3 52 10 0 3 52 10 0 2 32 28 2 18 4 1 17 0 48 1 33 12 0 1 18 0 16 0 52 10 0 2 32 6 2 18 4 1 34 0 48 1 33 66 0 18 4 1 35 0 48 1 5 18 4 1 36 0 48 1 33 32 0 18 4 1 27 0 48 1 5 18 4 1 28 0 48 1 5 1 25 0 16 0 18 3 48 0 52 10 0 3 32 13 0 1 37 0 16 0 18 3 48 0 52 10 0 3 32 186 1 18 4 1 38 0 48 1 33 66 0 18 4 1 35 0 48 1 5 18 4 1 36 0 48 1 33 32 0 18 4 1 27 0 48 1 5 18 4 1 28 0 48 1 5 1 24 0 16 0 18 3 48 0 52 10 0 3 32 13 0 1 39 0 16 0 18 3 48 0 52 10 0 3 32 110 1 18 4 1 21 0 48 1 33 52 0 18 5 48 0 17 3 18 4 1 22 0 48 1 5 18 5 48 0 17 4 1 23 0 1 24 0 16 0 16 3 52 10 0 3 1 25 0 16 0 16 4 52 10 0 3 52 10 0 3 32 48 1 18 4 1 19 0 48 1 33 16 0 1 40 0 16 0 18 3 48 0 52 10 0 3 32 22 1 18 4 1 26 0 48 1 33 32 0 18 4 1 27 0 48 1 5 18 4 1 28 0 48 1 5 1 12 0 16 0 18 3 48 0 52 10 0 3 32 236 0 18 4 1 27 0 48 1 33 24 0 18 4 1 28 0 48 1 5 1 11 0 16 0 18 3 48 0 52 10 0 3 32 202 0 18 1 48 0 1 29 0 52 0 0 2 6 34 12 0 5 18 1 48 0 1 30 0 52 0 0 2 6 33 7 0 5 18 2 48 0 5 3 33 87 0 18 1 48 0 17 3 18 2 48 0 5 18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 31 0 52 0 0 2 17 4 16 4 33 7 0 18 2 48 0 32 1 0 2 5 16 4 33 14 0 1 32 0 16 0 16 3 52 10 0 3 32 11 0 1 33 0 16 0 16 3 52 10 0 3 32 74 0 18 0 48 0 1 41 0 52 0 0 2 6 33 14 0 5 20 42 0 18 1 48 0 48 1 52 16 0 1 33 25 0 18 1 48 0 17 3 18 2 48 0 5 1 43 0 16 0 16 3 52 10 0 3 32 17 0 18 3 48 0 17 3 1 11 0 16 0 16 3 52 10 0 3 32 70 5 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 44 0 52 0 0 2 33 165 0 18 2 48 0 5 18 4 1 16 0 48 1 33 82 0 18 4 1 19 0 48 1 33 16 0 1 20 0 16 0 18 3 48 0 52 10 0 3 32 53 0 18 4 1 17 0 48 1 33 19 0 1 13 0 1 18 0 16 0 52 10 0 2 52 10 0 2 32 24 0 18 3 48 0 17 3 1 13 0 1 11 0 16 0 16 3 52 10 0 3 52 10 0 2 32 65 0 18 4 1 19 0 48 1 33 16 0 1 40 0 16 0 18 3 48 0 52 10 0 3 32 39 0 18 4 1 17 0 48 1 33 12 0 1 18 0 16 0 52 10 0 2 32 17 0 18 3 48 0 17 3 1 11 0 16 0 16 3 52 10 0 3 32 135 4 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 45 0 52 0 0 2 33 17 0 18 2 48 0 5 1 46 0 16 0 52 10 0 2 32 92 4 16 1 1 14 0 52 0 0 2 6 34 10 0 5 16 1 1 41 0 52 0 0 2 6 33 10 0 5 16 2 1 47 0 52 0 0 2 33 29 0 18 2 48 0 5 18 4 1 48 0 48 1 5 1 49 0 16 0 18 3 48 0 52 10 0 3 32 23 4 16 1 1 14 0 52 0 0 2 6 34 10 0 5 16 1 1 41 0 52 0 0 2 6 33 10 0 5 16 2 1 50 0 52 0 0 2 33 29 0 18 2 48 0 5 18 4 1 48 0 48 1 5 1 51 0 16 0 18 3 48 0 52 10 0 3 32 210 3 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 52 0 52 0 0 2 33 21 0 18 2 48 0 5 1 53 0 16 0 18 3 48 0 52 10 0 3 32 163 3 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 54 0 52 0 0 2 33 21 0 18 2 48 0 5 1 55 0 16 0 18 3 48 0 52 10 0 3 32 116 3 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 56 0 52 0 0 2 33 135 0 18 2 48 0 5 18 1 48 0 1 29 0 52 0 0 2 6 34 12 0 5 18 1 48 0 1 30 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 1 48 0 17 3 18 2 48 0 5 18 0 48 0 1 57 0 52 0 0 2 6 33 9 0 5 18 6 48 0 52 16 0 1 33 39 0 18 2 48 0 5 18 1 48 0 17 4 18 2 48 0 5 1 58 0 16 0 16 3 1 60 0 16 4 52 59 0 3 52 10 0 3 32 11 0 1 58 0 16 0 16 3 52 10 0 3 32 211 2 16 1 1 57 0 52 0 0 2 33 92 0 18 2 48 0 5 18 1 48 0 17 3 18 2 48 0 5 18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 31 0 52 0 0 2 17 4 16 4 33 7 0 18 2 48 0 32 1 0 2 5 16 4 33 14 0 1 32 0 16 0 16 3 52 10 0 3 32 11 0 1 33 0 16 0 16 3 52 10 0 3 32 107 2 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 61 0 52 0 0 2 33 77 0 18 2 48 0 5 18 3 48 0 17 3 16 0 52 62 0 1 6 33 14 0 5 16 0 52 63 0 1 1 64 0 52 0 0 2 33 25 0 1 66 0 52 65 0 1 16 3 16 0 1 68 0 52 67 0 2 52 10 0 3 32 11 0 1 69 0 16 0 16 3 52 10 0 3 32 4 2 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 19 0 52 0 0 2 33 21 0 18 2 48 0 5 1 40 0 16 0 18 3 48 0 52 10 0 3 32 213 1 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 70 0 52 0 0 2 33 170 0 18 2 48 0 5 18 4 1 16 0 48 1 5 18 4 1 71 0 48 1 33 19 0 1 13 0 1 46 0 16 0 52 10 0 2 52 10 0 2 32 125 0 18 4 1 72 0 48 1 33 23 0 1 13 0 1 53 0 16 0 18 3 48 0 52 10 0 3 52 10 0 2 32 92 0 18 4 1 73 0 48 1 6 34 8 0 5 18 4 1 54 0 48 1 33 23 0 1 13 0 1 55 0 16 0 18 3 48 0 52 10 0 3 52 10 0 2 32 47 0 18 4 1 74 0 48 1 6 34 8 0 5 18 4 1 75 0 48 1 33 23 0 1 13 0 1 55 0 16 0 18 3 48 0 52 10 0 3 52 10 0 2 32 2 0 16 0 32 17 1 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 76 0 52 0 0 2 33 21 0 18 2 48 0 5 1 11 0 16 0 18 3 48 0 52 10 0 3 32 226 0 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 26 0 52 0 0 2 33 29 0 18 2 48 0 5 18 4 1 76 0 48 1 5 1 12 0 16 0 18 3 48 0 52 10 0 3 32 171 0 16 1 1 14 0 52 0 0 2 6 33 38 0 5 16 2 1 73 0 52 0 0 2 6 34 24 0 5 16 2 1 74 0 52 0 0 2 6 34 10 0 5 16 2 1 75 0 52 0 0 2 33 21 0 18 2 48 0 5 1 55 0 16 0 18 3 48 0 52 10 0 3 32 96 0 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 77 0 52 0 0 2 33 21 0 18 2 48 0 5 1 78 0 16 0 18 5 48 0 52 10 0 3 32 49 0 16 1 1 14 0 52 0 0 2 6 33 10 0 5 16 2 1 79 0 52 0 0 2 33 21 0 18 2 48 0 5 1 80 0 16 0 18 5 48 0 52 10 0 3 32 2 0 16 0 50)} {:upvalue-count 6 :arity 1 :constants ("where" "list" coll-where "sorted" "by" "descending" "not" "ascending" coll-sorted-desc coll-sorted "mapped" "to" coll-mapped "split" coll-split "joined" coll-joined) :bytecode (18 0 1 0 0 48 1 33 36 0 18 1 18 2 18 3 18 4 48 0 48 1 48 1 48 1 17 1 18 5 1 2 0 16 0 16 1 52 1 0 3 49 1 32 11 1 18 0 1 3 0 48 1 33 93 0 18 0 1 4 0 48 1 5 18 1 18 2 18 3 18 4 48 0 48 1 48 1 48 1 17 1 18 0 1 5 0 48 1 17 2 16 2 52 6 0 1 33 10 0 18 0 1 7 0 48 1 32 1 0 2 5 18 5 16 2 33 14 0 1 8 0 16 0 16 1 52 1 0 3 32 11 0 1 9 0 16 0 16 1 52 1 0 3 49 1 32 164 0 18 0 1 10 0 48 1 33 44 0 18 0 1 11 0 48 1 5 18 1 18 2 18 3 18 4 48 0 48 1 48 1 48 1 17 1 18 5 1 12 0 16 0 16 1 52 1 0 3 49 1 32 110 0 18 0 1 13 0 48 1 33 44 0 18 0 1 4 0 48 1 5 18 1 18 2 18 3 18 4 48 0 48 1 48 1 48 1 17 1 18 5 1 14 0 16 0 16 1 52 1 0 3 49 1 32 56 0 18 0 1 15 0 48 1 33 44 0 18 0 1 4 0 48 1 5 18 1 18 2 18 3 18 4 48 0 48 1 48 1 48 1 17 1 18 5 1 16 0 16 0 16 1 52 1 0 3 49 1 32 2 0 16 0 50)} {:upvalue-count 7 :arity 1 :constants ("and" "list" and "or" or) :bytecode (18 0 1 0 0 48 1 33 40 0 18 1 18 2 18 3 18 4 18 5 48 0 48 1 48 1 48 1 48 1 17 1 18 6 1 2 0 16 0 16 1 52 1 0 3 49 1 32 52 0 18 0 1 3 0 48 1 33 40 0 18 1 18 2 18 3 18 4 18 5 48 0 48 1 48 1 48 1 48 1 17 1 18 6 1 4 0 16 0 16 1 52 1 0 3 49 1 32 2 0 16 0 50)} {:upvalue-count 9 :arity 0 :constants ("nil?" "number?" "=" "ident" "list" string-postfix "not" "then" "end" "else" "otherwise" "op" "%") :bytecode (18 0 48 0 17 0 16 0 52 0 0 1 33 4 0 2 32 242 0 16 0 52 1 0 1 6 33 12 0 5 18 1 48 0 1 3 0 52 2 0 2 33 27 0 18 2 48 0 17 1 18 3 48 0 5 1 5 0 16 0 16 1 52 4 0 3 17 0 32 1 0 2 5 18 4 16 0 48 1 17 1 18 5 16 1 48 1 17 2 18 6 16 2 48 1 17 3 18 7 16 3 48 1 17 4 18 8 16 4 48 1 17 5 16 5 6 33 112 0 5 18 1 48 0 1 3 0 52 2 0 2 6 33 64 0 5 18 2 48 0 1 7 0 52 2 0 2 6 34 44 0 5 18 2 48 0 1 8 0 52 2 0 2 6 34 28 0 5 18 2 48 0 1 9 0 52 2 0 2 6 34 12 0 5 18 2 48 0 1 10 0 52 2 0 2 52 6 0 1 6 34 28 0 5 18 1 48 0 1 11 0 52 2 0 2 6 33 12 0 5 18 2 48 0 1 12 0 52 2 0 2 33 25 0 18 2 48 0 17 6 18 3 48 0 5 1 5 0 16 5 16 6 52 4 0 3 32 2 0 16 5 50)} {:upvalue-count 2 :arity 2 :constants () :bytecode (18 0 16 0 48 1 33 7 0 18 1 49 0 32 2 0 16 1 50)} {:upvalue-count 3 :arity 0 :constants ("=" "class" "get" "value" "list" {:upvalue-count 4 :arity 0 :constants ("=" "class" "append" "list" "get" "value") :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 31 0 18 1 18 2 48 0 1 5 0 52 4 0 2 52 3 0 1 52 2 0 2 19 1 5 18 3 49 0 32 1 0 2 50)} "to" me "empty?" add-class "cons" multi-add-class) :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 101 0 18 1 48 0 1 3 0 52 2 0 2 17 0 52 4 0 0 17 1 51 5 0 0 0 1 1 0 1 1 2 17 2 5 16 2 48 0 5 18 2 1 6 0 1 7 0 52 4 0 1 48 2 17 3 16 1 52 8 0 1 33 14 0 1 9 0 16 0 16 3 52 4 0 3 32 21 0 1 11 0 16 3 16 0 16 1 52 10 0 2 52 10 0 2 52 10 0 2 32 1 0 2 50)} {:upvalue-count 5 :arity 0 :constants ("=" "class" "get" "value" "list" {:upvalue-count 4 :arity 0 :constants ("=" "class" "append" "list" "get" "value") :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 31 0 18 1 18 2 48 0 1 5 0 52 4 0 2 52 3 0 1 52 2 0 2 19 1 5 18 3 49 0 32 1 0 2 50)} "from" "empty?" remove-class "cons" multi-remove-class "bracket-open" "[" "attr" "]" remove-attr "{" {:upvalue-count 4 :arity 0 :constants ("not" "=" "}" ";" "append" "list" "get" "value") :bytecode (18 0 48 0 1 2 0 52 1 0 2 52 0 0 1 33 76 0 18 0 48 0 1 3 0 52 1 0 2 33 7 0 18 1 48 0 32 1 0 2 5 18 0 48 0 1 2 0 52 1 0 2 52 0 0 1 33 31 0 18 2 18 1 48 0 1 7 0 52 6 0 2 52 5 0 1 52 4 0 2 19 2 5 18 3 49 0 32 1 0 2 32 1 0 2 50)} "}" remove-css remove-element) :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 105 0 18 1 48 0 1 3 0 52 2 0 2 17 0 52 4 0 0 17 1 51 5 0 0 0 1 1 0 1 1 2 17 2 5 16 2 48 0 5 18 2 1 6 0 48 1 33 7 0 18 3 48 0 32 1 0 2 17 3 16 1 52 7 0 1 33 14 0 1 8 0 16 0 16 3 52 4 0 3 32 21 0 1 10 0 16 3 16 0 16 1 52 9 0 2 52 9 0 2 52 9 0 2 32 209 0 18 0 48 0 1 11 0 52 0 0 2 6 33 12 0 5 18 4 48 0 1 12 0 52 0 0 2 33 78 0 18 1 48 0 5 18 0 48 0 1 13 0 52 0 0 2 33 55 0 18 1 48 0 1 3 0 52 2 0 2 17 0 18 2 1 14 0 48 1 5 18 2 1 6 0 48 1 33 7 0 18 3 48 0 32 1 0 2 17 1 1 15 0 16 0 16 1 52 4 0 3 32 1 0 2 32 101 0 18 4 48 0 1 16 0 52 0 0 2 33 72 0 18 1 48 0 5 52 4 0 0 17 0 51 17 0 0 4 0 1 1 0 1 1 17 1 5 16 1 48 0 5 18 2 1 18 0 48 1 5 18 2 1 6 0 48 1 33 7 0 18 3 48 0 32 1 0 2 17 2 1 19 0 16 0 16 2 52 4 0 3 32 15 0 18 3 48 0 17 0 1 20 0 16 0 52 4 0 2 50)} {:upvalue-count 7 :arity 0 :constants ("between" "=" "class" "and" "on" "list" me toggle-between toggle-class "style" toggle-style-between toggle-style "attr" toggle-attr-between toggle-attr) :bytecode (18 0 1 0 0 48 1 33 106 0 18 1 48 0 1 2 0 52 1 0 2 33 88 0 18 2 48 0 17 0 18 3 48 0 5 16 0 17 0 18 4 1 3 0 48 1 5 18 1 48 0 1 2 0 52 1 0 2 33 47 0 18 2 48 0 17 1 18 3 48 0 5 16 1 17 1 18 5 1 4 0 1 6 0 52 5 0 1 48 2 17 2 1 7 0 16 0 16 1 16 2 52 5 0 4 32 1 0 2 32 1 0 2 32 50 1 18 1 48 0 1 2 0 52 1 0 2 33 45 0 18 2 48 0 17 0 18 3 48 0 5 16 0 17 0 18 5 1 4 0 1 6 0 52 5 0 1 48 2 17 1 1 8 0 16 0 16 1 52 5 0 3 32 247 0 18 1 48 0 1 9 0 52 1 0 2 33 109 0 18 2 48 0 17 0 18 3 48 0 5 16 0 17 0 18 0 1 0 0 48 1 33 54 0 18 6 48 0 17 1 18 4 1 3 0 48 1 5 18 6 48 0 17 2 18 5 1 4 0 1 6 0 52 5 0 1 48 2 17 3 1 10 0 16 0 16 1 16 2 16 3 52 5 0 5 32 27 0 18 5 1 4 0 1 6 0 52 5 0 1 48 2 17 1 1 11 0 16 0 16 1 52 5 0 3 32 124 0 18 1 48 0 1 12 0 52 1 0 2 33 109 0 18 2 48 0 17 0 18 3 48 0 5 16 0 17 0 18 0 1 0 0 48 1 33 54 0 18 6 48 0 17 1 18 4 1 3 0 48 1 5 18 6 48 0 17 2 18 5 1 4 0 1 6 0 52 5 0 1 48 2 17 3 1 13 0 16 0 16 1 16 2 16 3 52 5 0 5 32 27 0 18 5 1 4 0 1 6 0 52 5 0 1 48 2 17 1 1 14 0 16 0 16 1 52 5 0 3 32 1 0 2 50)} {:upvalue-count 2 :arity 0 :constants ("to" "list" set!) :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 5 18 0 48 0 17 1 1 2 0 16 0 16 1 52 1 0 3 50)} {:upvalue-count 4 :arity 0 :constants ("into" "list" set! "before" put! "after" "at" "start" "of" "end" "error" "str" "Expected start/end after at, position " "Expected into/before/after/at at position ") :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 33 16 0 1 2 0 18 0 48 0 16 0 52 1 0 3 32 171 0 18 1 1 3 0 48 1 33 19 0 1 4 0 16 0 1 3 0 18 0 48 0 52 1 0 4 32 142 0 18 1 1 5 0 48 1 33 19 0 1 4 0 16 0 1 5 0 18 0 48 0 52 1 0 4 32 113 0 18 1 1 6 0 48 1 33 90 0 18 1 1 7 0 48 1 33 27 0 18 2 1 8 0 48 1 5 1 4 0 16 0 1 7 0 18 0 48 0 52 1 0 4 32 50 0 18 1 1 9 0 48 1 33 27 0 18 2 1 8 0 48 1 5 1 4 0 16 0 1 9 0 18 0 48 0 52 1 0 4 32 13 0 1 12 0 18 3 52 11 0 2 52 10 0 1 32 13 0 1 13 0 18 3 52 11 0 2 52 10 0 1 50)} {:upvalue-count 3 :arity 0 :constants ("else" "otherwise" "end" "list" if) :bytecode (18 0 48 0 17 0 18 1 48 0 17 1 18 2 1 0 0 48 1 6 34 8 0 5 18 2 1 1 0 48 1 33 7 0 18 1 48 0 32 1 0 2 17 2 18 2 1 2 0 48 1 5 16 2 33 16 0 1 4 0 16 0 16 1 16 2 52 3 0 4 32 11 0 1 4 0 16 0 16 1 52 3 0 3 50)} {:upvalue-count 6 :arity 0 :constants ("for" "from" "list" wait-for "=" "number" wait "get" "value" 0) :bytecode (18 0 1 0 0 48 1 33 65 0 18 1 48 0 17 0 18 2 48 0 5 18 0 1 1 0 48 1 33 7 0 18 3 48 0 32 1 0 2 17 1 16 1 33 17 0 1 3 0 16 0 1 1 0 16 1 52 2 0 4 32 9 0 1 3 0 16 0 52 2 0 2 32 53 0 18 4 48 0 1 5 0 52 4 0 2 33 29 0 18 2 48 0 17 0 1 6 0 18 5 16 0 1 8 0 52 7 0 2 48 1 52 2 0 2 32 10 0 1 6 0 1 9 0 52 2 0 2 50)} {:upvalue-count 4 :arity 1 :constants ({:upvalue-count 5 :arity 1 :constants ("=" "paren-close" "get" "value" "colon" "comma" "append" "list") :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 34 5 0 5 18 1 48 0 33 28 0 18 0 48 0 1 1 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 16 0 32 83 0 18 2 48 0 1 3 0 52 2 0 2 17 1 18 0 48 0 1 4 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 3 48 0 17 2 18 0 48 0 1 5 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 4 16 0 16 1 16 2 52 7 0 2 52 6 0 2 49 1 50)} "cons" dict "list") :bytecode (18 0 48 0 5 51 0 0 0 1 0 2 0 0 0 3 1 0 17 0 5 1 2 0 16 0 52 3 0 0 48 1 52 1 0 2 50)} {:upvalue-count 4 :arity 0 :constants ("get" "value" "=" "paren-open" "to" "list" me send) :bytecode (18 0 48 0 1 1 0 52 0 0 2 17 0 18 1 48 0 1 3 0 52 2 0 2 33 7 0 18 2 48 0 32 1 0 2 17 1 18 3 1 4 0 1 6 0 52 5 0 1 48 2 17 2 16 1 33 16 0 1 7 0 16 0 16 1 16 2 52 5 0 4 32 11 0 1 7 0 16 0 16 2 52 5 0 3 50)} {:upvalue-count 2 :arity 0 :constants ("get" "value" "on" "list" me trigger) :bytecode (18 0 48 0 1 1 0 52 0 0 2 17 0 18 1 1 2 0 1 4 0 52 3 0 1 48 2 17 1 1 5 0 16 0 16 1 52 3 0 3 50)} {:upvalue-count 1 :arity 0 :constants ("list" log) :bytecode (1 1 0 18 0 48 0 52 0 0 2 50)} {:upvalue-count 3 :arity 0 :constants ("by" 1 "on" "list" me increment!) :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 33 7 0 18 0 48 0 32 3 0 1 1 0 17 1 18 2 1 2 0 1 4 0 52 3 0 1 48 2 17 2 1 5 0 16 0 16 1 16 2 52 3 0 4 50)} {:upvalue-count 3 :arity 0 :constants ("by" 1 "on" "list" me decrement!) :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 33 7 0 18 0 48 0 32 3 0 1 1 0 17 1 18 2 1 2 0 1 4 0 52 3 0 1 48 2 17 2 1 5 0 16 0 16 1 16 2 52 3 0 4 50)} {:upvalue-count 6 :arity 0 :constants ("list" me "=" "keyword" "then" "end" "with" "add" "remove" "set" "put" "toggle" "hide" "show" "display" hide) :bytecode (18 0 48 0 33 10 0 1 1 0 52 0 0 1 32 188 0 18 1 48 0 1 3 0 52 2 0 2 6 33 156 0 5 18 2 48 0 1 4 0 52 2 0 2 6 34 140 0 5 18 2 48 0 1 5 0 52 2 0 2 6 34 124 0 5 18 2 48 0 1 6 0 52 2 0 2 6 34 108 0 5 18 2 48 0 1 7 0 52 2 0 2 6 34 92 0 5 18 2 48 0 1 8 0 52 2 0 2 6 34 76 0 5 18 2 48 0 1 9 0 52 2 0 2 6 34 60 0 5 18 2 48 0 1 10 0 52 2 0 2 6 34 44 0 5 18 2 48 0 1 11 0 52 2 0 2 6 34 28 0 5 18 2 48 0 1 12 0 52 2 0 2 6 34 12 0 5 18 2 48 0 1 13 0 52 2 0 2 33 10 0 1 1 0 52 0 0 1 32 4 0 18 3 48 0 17 0 18 4 1 6 0 48 1 33 29 0 18 0 48 0 33 6 0 1 14 0 32 13 0 18 2 48 0 17 1 18 5 48 0 5 16 1 32 3 0 1 14 0 17 1 1 15 0 16 0 16 1 52 0 0 3 50)} {:upvalue-count 6 :arity 0 :constants ("list" me "=" "keyword" "then" "end" "with" "add" "remove" "set" "put" "toggle" "hide" "show" "display" show) :bytecode (18 0 48 0 33 10 0 1 1 0 52 0 0 1 32 188 0 18 1 48 0 1 3 0 52 2 0 2 6 33 156 0 5 18 2 48 0 1 4 0 52 2 0 2 6 34 140 0 5 18 2 48 0 1 5 0 52 2 0 2 6 34 124 0 5 18 2 48 0 1 6 0 52 2 0 2 6 34 108 0 5 18 2 48 0 1 7 0 52 2 0 2 6 34 92 0 5 18 2 48 0 1 8 0 52 2 0 2 6 34 76 0 5 18 2 48 0 1 9 0 52 2 0 2 6 34 60 0 5 18 2 48 0 1 10 0 52 2 0 2 6 34 44 0 5 18 2 48 0 1 11 0 52 2 0 2 6 34 28 0 5 18 2 48 0 1 12 0 52 2 0 2 6 34 12 0 5 18 2 48 0 1 13 0 52 2 0 2 33 10 0 1 1 0 52 0 0 1 32 4 0 18 3 48 0 17 0 18 4 1 6 0 48 1 33 29 0 18 0 48 0 33 6 0 1 14 0 32 13 0 18 2 48 0 17 1 18 5 48 0 5 16 1 32 3 0 1 14 0 17 1 1 15 0 16 0 16 1 52 0 0 3 50)} {:upvalue-count 6 :arity 0 :constants ("=" "style" "get" "value" "my" "from" "to" "over" "list" transition-from transition) :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 14 0 18 1 48 0 1 3 0 52 2 0 2 32 72 0 18 2 48 0 1 4 0 52 0 0 2 33 47 0 18 1 48 0 5 18 0 48 0 1 1 0 52 0 0 2 33 14 0 18 1 48 0 1 3 0 52 2 0 2 32 11 0 18 1 48 0 1 3 0 52 2 0 2 32 11 0 18 1 48 0 1 3 0 52 2 0 2 17 0 18 3 1 5 0 48 1 33 7 0 18 4 48 0 32 1 0 2 17 1 18 5 1 6 0 48 1 5 18 4 48 0 17 2 18 3 1 7 0 48 1 33 7 0 18 4 48 0 32 1 0 2 17 3 16 1 33 18 0 1 9 0 16 0 16 1 16 2 16 3 52 8 0 5 32 34 0 16 3 33 17 0 1 10 0 16 0 16 2 16 3 2 52 8 0 5 32 12 0 1 10 0 16 0 16 2 2 52 8 0 4 50)} {:upvalue-count 7 :arity 0 :constants ("=" "keyword" "for" "in" "end" "list" for "it" "forever" forever "while" while "until" until "times" times repeat) :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 2 0 52 0 0 2 33 12 0 18 2 48 0 5 18 3 49 0 32 203 0 18 0 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 1 48 0 1 3 0 52 0 0 2 33 43 0 18 2 48 0 5 18 4 48 0 17 0 18 5 48 0 17 1 18 6 1 4 0 48 1 5 1 6 0 1 7 0 16 0 2 16 1 52 5 0 5 32 130 0 18 6 1 8 0 48 1 33 10 0 1 9 0 52 5 0 1 32 83 0 18 6 1 10 0 48 1 33 14 0 1 11 0 18 4 48 0 52 5 0 2 32 59 0 18 6 1 12 0 48 1 33 14 0 1 13 0 18 4 48 0 52 5 0 2 32 35 0 18 4 48 0 17 0 18 6 1 14 0 48 1 33 12 0 1 15 0 16 0 52 5 0 2 32 7 0 1 9 0 52 5 0 1 17 0 18 5 48 0 17 1 18 6 1 4 0 48 1 5 1 16 0 16 0 16 1 52 5 0 3 50)} {:upvalue-count 6 :arity 0 :constants ("nil?" "as" "json" "list" fetch) :bytecode (18 0 48 0 17 0 16 0 52 0 0 1 33 5 0 16 0 32 10 0 18 1 18 2 16 0 48 1 48 1 17 1 18 3 1 1 0 48 1 33 16 0 18 4 48 0 17 2 18 5 48 0 5 16 2 32 3 0 1 2 0 17 2 1 4 0 16 1 16 2 52 3 0 3 50)} {:upvalue-count 4 :arity 1 :constants ({:upvalue-count 5 :arity 1 :constants ("=" "paren-close" "comma" "append" "list") :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 34 5 0 5 18 1 48 0 33 28 0 18 0 48 0 1 1 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 16 0 32 45 0 18 3 48 0 17 1 18 0 48 0 1 2 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 4 16 0 16 1 52 4 0 1 52 3 0 2 49 1 50)} "list") :bytecode (18 0 48 0 5 51 0 0 0 1 0 2 0 0 0 3 1 0 17 0 5 16 0 52 1 0 0 49 1 50)} {:upvalue-count 3 :arity 0 :constants ("get" "value" "=" "paren-open" "cons" call "list") :bytecode (18 0 48 0 1 1 0 52 0 0 2 17 0 18 1 48 0 1 3 0 52 2 0 2 33 24 0 18 2 48 0 17 1 1 5 0 16 0 16 1 52 4 0 2 52 4 0 2 32 9 0 1 5 0 16 0 52 6 0 2 50)} {:upvalue-count 5 :arity 0 :constants ("=" "class" "from" "for" "list" take! "attr") :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 74 0 18 1 48 0 17 0 18 2 48 0 5 16 0 17 0 18 3 1 2 0 48 1 33 7 0 18 4 48 0 32 1 0 2 17 1 18 3 1 3 0 48 1 33 7 0 18 4 48 0 32 1 0 2 17 2 1 5 0 1 1 0 16 0 16 1 16 2 52 4 0 5 32 89 0 18 0 48 0 1 6 0 52 0 0 2 33 74 0 18 1 48 0 17 0 18 2 48 0 5 16 0 17 0 18 3 1 2 0 48 1 33 7 0 18 4 48 0 32 1 0 2 17 1 18 3 1 3 0 48 1 33 7 0 18 4 48 0 32 1 0 2 17 2 1 5 0 1 6 0 16 0 16 1 16 2 52 4 0 5 32 1 0 2 50)} {:upvalue-count 2 :arity 0 :constants ("to" "list" go) :bytecode (18 0 1 0 0 48 1 5 1 2 0 18 1 48 0 52 1 0 2 50)} {:upvalue-count 6 :arity 1 :constants ("=" "op" "+" "-" "*" "/" "%" "keyword" "mod" + - * / "make-symbol" "nil?" "list") :bytecode (18 0 48 0 17 1 18 1 48 0 17 2 16 1 1 1 0 52 0 0 2 6 33 66 0 5 16 2 1 2 0 52 0 0 2 6 34 52 0 5 16 2 1 3 0 52 0 0 2 6 34 38 0 5 16 2 1 4 0 52 0 0 2 6 34 24 0 5 16 2 1 5 0 52 0 0 2 6 34 10 0 5 16 2 1 6 0 52 0 0 2 6 34 24 0 5 16 1 1 7 0 52 0 0 2 6 33 10 0 5 16 2 1 8 0 52 0 0 2 33 161 0 18 2 48 0 5 16 2 1 2 0 52 0 0 2 33 6 0 1 9 0 32 91 0 16 2 1 3 0 52 0 0 2 33 6 0 1 10 0 32 73 0 16 2 1 4 0 52 0 0 2 33 6 0 1 11 0 32 55 0 16 2 1 5 0 52 0 0 2 33 6 0 1 12 0 32 37 0 16 2 1 6 0 52 0 0 2 6 34 10 0 5 16 2 1 8 0 52 0 0 2 33 10 0 1 6 0 52 13 0 1 32 1 0 2 17 3 18 3 48 0 17 4 16 4 52 14 0 1 33 5 0 16 4 32 6 0 18 4 16 4 48 1 17 4 18 5 16 3 16 0 16 4 52 15 0 3 49 1 32 2 0 16 0 50)} {:upvalue-count 8 :arity 0 :constants ("=" "ident" "keyword" "of" "list" "make-symbol" "." "result" it "first" first "last" last "closest" closest "next" next "previous" previous ref) :bytecode (18 0 48 0 17 0 18 1 48 0 17 1 16 0 1 1 0 52 0 0 2 6 34 10 0 5 16 0 1 2 0 52 0 0 2 33 179 0 18 2 48 0 5 18 3 1 3 0 48 1 33 20 0 1 6 0 52 5 0 1 18 4 48 0 16 1 52 4 0 3 32 141 0 16 1 1 7 0 52 0 0 2 33 10 0 1 8 0 52 4 0 1 32 119 0 16 1 1 9 0 52 0 0 2 33 10 0 18 5 1 10 0 49 1 32 97 0 16 1 1 11 0 52 0 0 2 33 10 0 18 5 1 12 0 49 1 32 75 0 16 1 1 13 0 52 0 0 2 33 10 0 18 6 1 14 0 49 1 32 53 0 16 1 1 15 0 52 0 0 2 33 10 0 18 6 1 16 0 49 1 32 31 0 16 1 1 17 0 52 0 0 2 33 10 0 18 6 1 18 0 49 1 32 9 0 1 19 0 16 1 52 4 0 2 32 4 0 18 7 49 0 50)} {:upvalue-count 4 :arity 1 :constants ({:upvalue-count 5 :arity 1 :constants ("=" "bracket-close" "comma" "append" "list") :bytecode (18 0 48 0 1 1 0 52 0 0 2 6 34 5 0 5 18 1 48 0 33 28 0 18 0 48 0 1 1 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 16 0 32 45 0 18 3 48 0 17 1 18 0 48 0 1 2 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 18 4 16 0 16 1 52 4 0 1 52 3 0 2 49 1 50)} "cons" array "list") :bytecode (51 0 0 0 0 0 1 0 2 0 3 1 0 17 0 5 1 2 0 16 0 52 3 0 0 48 1 52 1 0 2 50)} {:upvalue-count 4 :arity 0 :constants ("=" "keyword" "end" "then" "else" "list" return) :bytecode (18 0 48 0 6 34 60 0 5 18 1 48 0 1 1 0 52 0 0 2 6 33 44 0 5 18 2 48 0 1 2 0 52 0 0 2 6 34 28 0 5 18 2 48 0 1 3 0 52 0 0 2 6 34 12 0 5 18 2 48 0 1 4 0 52 0 0 2 33 11 0 1 6 0 2 52 5 0 2 32 11 0 1 6 0 18 3 48 0 52 5 0 2 50)} {:upvalue-count 1 :arity 0 :constants ("list" throw) :bytecode (1 1 0 18 0 48 0 52 0 0 2 50)} {:upvalue-count 2 :arity 0 :constants ("to" "list" append!) :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 5 18 0 48 0 17 1 1 2 0 16 0 16 1 52 1 0 3 50)} {:upvalue-count 3 :arity 0 :constants ("then" "end" "list" tell) :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 5 18 2 48 0 17 1 18 1 1 1 0 48 1 5 1 3 0 16 0 16 1 52 2 0 3 50)} {:upvalue-count 6 :arity 0 :constants ("in" "index" "end" "list" for) :bytecode (18 0 48 0 17 0 18 1 48 0 5 18 2 1 0 0 48 1 5 18 3 48 0 17 1 18 4 1 1 0 48 1 33 16 0 18 0 48 0 17 2 18 1 48 0 5 16 2 32 1 0 2 17 2 18 5 48 0 17 3 18 4 1 2 0 48 1 5 16 2 33 21 0 1 4 0 16 0 16 1 16 3 1 1 0 16 2 52 3 0 6 32 13 0 1 4 0 16 0 16 1 16 3 52 3 0 4 50)} {:upvalue-count 3 :arity 0 :constants ("=" "a" "called" "list" make) :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 7 0 18 1 48 0 32 1 0 2 5 18 0 48 0 17 0 18 1 48 0 5 18 2 1 2 0 48 1 33 16 0 18 0 48 0 17 1 18 1 48 0 5 16 1 32 1 0 2 17 1 16 1 33 14 0 1 4 0 16 0 16 1 52 3 0 3 32 9 0 1 4 0 16 0 52 3 0 2 50)} {:upvalue-count 4 :arity 0 :constants ("=" "paren-open" "cons" install "list") :bytecode (18 0 48 0 17 0 18 1 48 0 5 18 2 48 0 1 1 0 52 0 0 2 33 24 0 18 3 48 0 17 1 1 3 0 16 0 16 1 52 2 0 2 52 2 0 2 32 9 0 1 3 0 16 0 52 4 0 2 50)} {:upvalue-count 1 :arity 0 :constants ("list" measure "nil?" me) :bytecode (18 0 48 0 17 0 1 1 0 16 0 52 2 0 1 33 10 0 1 3 0 52 0 0 1 32 2 0 16 0 52 0 0 2 50)} {:upvalue-count 5 :arity 0 :constants ("=" "keyword" "then" "end" "list" me "top" "bottom" "left" "right" scroll!) :bytecode (18 0 48 0 6 34 44 0 5 18 1 48 0 1 1 0 52 0 0 2 6 33 28 0 5 18 2 48 0 1 2 0 52 0 0 2 6 34 12 0 5 18 2 48 0 1 3 0 52 0 0 2 33 10 0 1 5 0 52 4 0 1 32 4 0 18 3 48 0 17 0 18 4 1 6 0 48 1 33 6 0 1 6 0 32 51 0 18 4 1 7 0 48 1 33 6 0 1 7 0 32 35 0 18 4 1 8 0 48 1 33 6 0 1 8 0 32 19 0 18 4 1 9 0 48 1 33 6 0 1 9 0 32 3 0 1 6 0 17 1 1 10 0 16 0 16 1 52 4 0 3 50)} {:upvalue-count 4 :arity 0 :constants ("=" "keyword" "then" "end" "list" me select!) :bytecode (18 0 48 0 6 34 44 0 5 18 1 48 0 1 1 0 52 0 0 2 6 33 28 0 5 18 2 48 0 1 2 0 52 0 0 2 6 34 12 0 5 18 2 48 0 1 3 0 52 0 0 2 33 10 0 1 5 0 52 4 0 1 32 4 0 18 3 48 0 17 0 1 6 0 16 0 52 4 0 2 50)} {:upvalue-count 4 :arity 0 :constants ("=" "keyword" "then" "end" "list" me reset!) :bytecode (18 0 48 0 6 34 44 0 5 18 1 48 0 1 1 0 52 0 0 2 6 33 28 0 5 18 2 48 0 1 2 0 52 0 0 2 6 34 12 0 5 18 2 48 0 1 3 0 52 0 0 2 33 10 0 1 5 0 52 4 0 1 32 4 0 18 3 48 0 17 0 1 6 0 16 0 52 4 0 2 50)} {:upvalue-count 2 :arity 0 :constants ("to" "list" default!) :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 5 18 0 48 0 17 1 1 2 0 16 0 16 1 52 1 0 3 50)} {:upvalue-count 1 :arity 0 :constants ("the" "event" "default" "list" halt!) :bytecode (18 0 1 0 0 48 1 6 33 20 0 5 18 0 1 1 0 48 1 6 34 8 0 5 18 0 1 2 0 48 1 17 0 1 4 0 16 0 33 6 0 1 1 0 32 3 0 1 2 0 52 3 0 2 50)} {:upvalue-count 2 :arity 0 :constants ("=" "paren-open" "list") :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 7 0 18 1 49 0 32 4 0 52 2 0 0 50)} {:upvalue-count 4 :arity 0 :constants ("list" me "=" "keyword" "then" "end" focus!) :bytecode (18 0 48 0 33 10 0 1 1 0 52 0 0 1 32 60 0 18 1 48 0 1 3 0 52 2 0 2 6 33 28 0 5 18 2 48 0 1 4 0 52 2 0 2 6 34 12 0 5 18 2 48 0 1 5 0 52 2 0 2 33 10 0 1 1 0 52 0 0 1 32 4 0 18 3 48 0 17 0 1 6 0 16 0 52 0 0 2 50)} {:upvalue-count 4 :arity 1 :constants ({:upvalue-count 5 :arity 1 :constants ("=" "keyword" "end" "nil?" "append" "list") :bytecode (18 0 48 0 6 34 28 0 5 18 1 48 0 1 1 0 52 0 0 2 6 33 12 0 5 18 2 48 0 1 2 0 52 0 0 2 33 5 0 16 0 32 36 0 18 3 48 0 17 1 16 1 52 3 0 1 33 5 0 16 0 32 16 0 18 4 16 0 16 1 52 5 0 1 52 4 0 2 49 1 50)} "list") :bytecode (51 0 0 0 0 0 1 0 2 0 3 1 0 17 0 5 16 0 52 1 0 0 49 1 50)} {:upvalue-count 5 :arity 0 :constants ("end" "list" def) :bytecode (18 0 48 0 17 0 18 1 48 0 5 18 2 48 0 17 1 18 3 48 0 17 2 18 4 1 0 0 48 1 5 1 2 0 16 0 16 1 16 2 52 1 0 4 50)} {:upvalue-count 5 :arity 0 :constants ("end" "list" behavior) :bytecode (18 0 48 0 17 0 18 1 48 0 5 18 2 48 0 17 1 18 3 48 0 17 2 18 4 1 0 0 48 1 5 1 2 0 16 0 16 1 16 2 52 1 0 4 50)} {:upvalue-count 4 :arity 1 :constants ({:upvalue-count 5 :arity 1 :constants ("=" "local" "append" "list") :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 38 0 18 1 48 0 17 1 18 2 48 0 5 18 3 48 0 17 2 18 4 16 0 16 1 16 2 52 3 0 2 52 2 0 2 49 1 32 2 0 16 0 50)} "list") :bytecode (51 0 0 0 0 0 1 0 2 0 3 1 0 17 0 5 16 0 52 1 0 0 49 1 50)} {:upvalue-count 6 :arity 0 :constants ("=" "component" "paren-open" "paren-close" "into" "before" "after" "list" render) :bytecode (18 0 48 0 1 1 0 52 0 0 2 33 16 0 18 1 48 0 17 0 18 2 48 0 5 16 0 32 66 0 18 0 48 0 1 2 0 52 0 0 2 33 39 0 18 2 48 0 5 18 3 48 0 17 0 18 0 48 0 1 3 0 52 0 0 2 33 7 0 18 2 48 0 32 1 0 2 5 16 0 32 13 0 18 1 48 0 17 0 18 2 48 0 5 16 0 17 0 18 4 48 0 17 1 18 5 1 4 0 48 1 33 6 0 1 4 0 32 33 0 18 5 1 5 0 48 1 33 6 0 1 5 0 32 17 0 18 5 1 6 0 48 1 33 6 0 1 6 0 32 1 0 2 17 2 16 2 33 7 0 18 3 48 0 32 1 0 2 17 3 16 2 33 18 0 1 8 0 16 0 16 1 16 2 16 3 52 7 0 5 32 11 0 1 8 0 16 0 16 1 52 7 0 3 50)} {:upvalue-count 5 :arity 0 :constants ("get" "pos" {:upvalue-count 6 :arity 1 :constants ("=" "paren-open" "+" 1 "paren-close" 0 "get" "pos" "-") :bytecode (18 0 48 0 33 5 0 18 1 32 123 0 18 2 48 0 1 1 0 52 0 0 2 33 21 0 18 3 48 0 5 18 4 16 0 1 3 0 52 2 0 2 49 1 32 88 0 18 2 48 0 1 4 0 52 0 0 2 33 63 0 16 0 1 5 0 52 0 0 2 33 30 0 18 5 48 0 1 7 0 52 6 0 2 1 3 0 52 2 0 2 17 1 18 3 48 0 5 16 1 32 18 0 18 3 48 0 5 18 4 16 0 1 3 0 52 8 0 2 49 1 32 11 0 18 3 48 0 5 18 4 16 0 49 1 50)} 0 "substring") :bytecode (18 0 48 0 1 1 0 52 0 0 2 17 0 18 1 48 0 5 51 2 0 0 2 1 0 0 3 0 1 1 1 0 0 17 1 5 16 1 1 3 0 48 1 17 2 18 4 16 0 16 2 52 4 0 3 50)} {:upvalue-count 39 :arity 0 :constants ("=" "keyword" "catch" "finally" "end" "else" "otherwise" "add" "remove" "toggle" "set" "put" "if" "wait" "send" "trigger" "log" "increment" "decrement" "hide" "show" "transition" "repeat" "fetch" "call" "take" "settle" "list" settle "go" "return" "throw" "append" "tell" "for" "make" "install" "measure" "render" "scroll" "select" "reset" "default" "halt" "focus") :bytecode (18 0 48 0 17 0 18 1 48 0 17 1 16 0 1 1 0 52 0 0 2 6 33 66 0 5 16 1 1 2 0 52 0 0 2 6 34 52 0 5 16 1 1 3 0 52 0 0 2 6 34 38 0 5 16 1 1 4 0 52 0 0 2 6 34 24 0 5 16 1 1 5 0 52 0 0 2 6 34 10 0 5 16 1 1 6 0 52 0 0 2 33 4 0 2 32 95 5 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 7 0 52 0 0 2 33 12 0 18 2 48 0 5 18 3 49 0 32 57 5 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 8 0 52 0 0 2 33 12 0 18 2 48 0 5 18 4 49 0 32 19 5 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 9 0 52 0 0 2 33 12 0 18 2 48 0 5 18 5 49 0 32 237 4 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 10 0 52 0 0 2 33 12 0 18 2 48 0 5 18 6 49 0 32 199 4 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 11 0 52 0 0 2 33 12 0 18 2 48 0 5 18 7 49 0 32 161 4 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 12 0 52 0 0 2 33 12 0 18 2 48 0 5 18 8 49 0 32 123 4 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 13 0 52 0 0 2 33 12 0 18 2 48 0 5 18 9 49 0 32 85 4 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 14 0 52 0 0 2 33 12 0 18 2 48 0 5 18 10 49 0 32 47 4 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 15 0 52 0 0 2 33 12 0 18 2 48 0 5 18 11 49 0 32 9 4 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 16 0 52 0 0 2 33 12 0 18 2 48 0 5 18 12 49 0 32 227 3 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 17 0 52 0 0 2 33 12 0 18 2 48 0 5 18 13 49 0 32 189 3 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 18 0 52 0 0 2 33 12 0 18 2 48 0 5 18 14 49 0 32 151 3 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 19 0 52 0 0 2 33 12 0 18 2 48 0 5 18 15 49 0 32 113 3 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 20 0 52 0 0 2 33 12 0 18 2 48 0 5 18 16 49 0 32 75 3 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 21 0 52 0 0 2 33 12 0 18 2 48 0 5 18 17 49 0 32 37 3 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 22 0 52 0 0 2 33 12 0 18 2 48 0 5 18 18 49 0 32 255 2 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 23 0 52 0 0 2 33 12 0 18 2 48 0 5 18 19 49 0 32 217 2 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 24 0 52 0 0 2 33 12 0 18 2 48 0 5 18 20 49 0 32 179 2 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 25 0 52 0 0 2 33 12 0 18 2 48 0 5 18 21 49 0 32 141 2 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 26 0 52 0 0 2 33 15 0 18 2 48 0 5 1 28 0 52 27 0 1 32 100 2 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 29 0 52 0 0 2 33 12 0 18 2 48 0 5 18 22 49 0 32 62 2 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 30 0 52 0 0 2 33 12 0 18 2 48 0 5 18 23 49 0 32 24 2 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 31 0 52 0 0 2 33 12 0 18 2 48 0 5 18 24 49 0 32 242 1 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 32 0 52 0 0 2 33 12 0 18 2 48 0 5 18 25 49 0 32 204 1 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 33 0 52 0 0 2 33 12 0 18 2 48 0 5 18 26 49 0 32 166 1 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 34 0 52 0 0 2 33 12 0 18 2 48 0 5 18 27 49 0 32 128 1 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 35 0 52 0 0 2 33 12 0 18 2 48 0 5 18 28 49 0 32 90 1 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 36 0 52 0 0 2 33 12 0 18 2 48 0 5 18 29 49 0 32 52 1 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 37 0 52 0 0 2 33 12 0 18 2 48 0 5 18 30 49 0 32 14 1 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 38 0 52 0 0 2 33 12 0 18 2 48 0 5 18 31 49 0 32 232 0 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 39 0 52 0 0 2 33 12 0 18 2 48 0 5 18 32 49 0 32 194 0 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 40 0 52 0 0 2 33 12 0 18 2 48 0 5 18 33 49 0 32 156 0 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 41 0 52 0 0 2 33 12 0 18 2 48 0 5 18 34 49 0 32 118 0 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 42 0 52 0 0 2 33 12 0 18 2 48 0 5 18 35 49 0 32 80 0 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 43 0 52 0 0 2 33 12 0 18 2 48 0 5 18 36 49 0 32 42 0 16 0 1 1 0 52 0 0 2 6 33 10 0 5 16 1 1 44 0 52 0 0 2 33 12 0 18 2 48 0 5 18 37 49 0 32 4 0 18 38 49 0 50)} {:upvalue-count 5 :arity 2 :constants ({:upvalue-count 0 :arity 1 :constants ("=" "add" "remove" "toggle" "set" "put" "if" "wait" "send" "trigger" "log" "increment" "decrement" "hide" "show" "transition" "repeat" "fetch" "call" "take" "settle" "go" "return" "throw" "append" "tell" "for" "make" "install" "measure" "render" "halt" "default" "scroll" "select" "reset" "focus") :bytecode (16 0 1 1 0 52 0 0 2 6 34 230 1 5 16 0 1 2 0 52 0 0 2 6 34 216 1 5 16 0 1 3 0 52 0 0 2 6 34 202 1 5 16 0 1 4 0 52 0 0 2 6 34 188 1 5 16 0 1 5 0 52 0 0 2 6 34 174 1 5 16 0 1 6 0 52 0 0 2 6 34 160 1 5 16 0 1 7 0 52 0 0 2 6 34 146 1 5 16 0 1 8 0 52 0 0 2 6 34 132 1 5 16 0 1 9 0 52 0 0 2 6 34 118 1 5 16 0 1 10 0 52 0 0 2 6 34 104 1 5 16 0 1 11 0 52 0 0 2 6 34 90 1 5 16 0 1 12 0 52 0 0 2 6 34 76 1 5 16 0 1 13 0 52 0 0 2 6 34 62 1 5 16 0 1 14 0 52 0 0 2 6 34 48 1 5 16 0 1 15 0 52 0 0 2 6 34 34 1 5 16 0 1 16 0 52 0 0 2 6 34 20 1 5 16 0 1 17 0 52 0 0 2 6 34 6 1 5 16 0 1 18 0 52 0 0 2 6 34 248 0 5 16 0 1 19 0 52 0 0 2 6 34 234 0 5 16 0 1 20 0 52 0 0 2 6 34 220 0 5 16 0 1 21 0 52 0 0 2 6 34 206 0 5 16 0 1 22 0 52 0 0 2 6 34 192 0 5 16 0 1 23 0 52 0 0 2 6 34 178 0 5 16 0 1 24 0 52 0 0 2 6 34 164 0 5 16 0 1 25 0 52 0 0 2 6 34 150 0 5 16 0 1 26 0 52 0 0 2 6 34 136 0 5 16 0 1 27 0 52 0 0 2 6 34 122 0 5 16 0 1 28 0 52 0 0 2 6 34 108 0 5 16 0 1 29 0 52 0 0 2 6 34 94 0 5 16 0 1 30 0 52 0 0 2 6 34 80 0 5 16 0 1 31 0 52 0 0 2 6 34 66 0 5 16 0 1 32 0 52 0 0 2 6 34 52 0 5 16 0 1 33 0 52 0 0 2 6 34 38 0 5 16 0 1 34 0 52 0 0 2 6 34 24 0 5 16 0 1 35 0 52 0 0 2 6 34 10 0 5 16 0 1 36 0 52 0 0 2 50)} {:upvalue-count 7 :arity 1 :constants ("nil?" "append" "list" "then" "not" "=" "keyword") :bytecode (18 0 48 0 17 1 16 1 52 0 0 1 33 5 0 16 0 32 84 0 16 0 16 1 52 2 0 1 52 1 0 2 17 2 18 1 1 3 0 48 1 33 9 0 18 2 16 2 49 1 32 51 0 18 3 48 0 52 4 0 1 6 33 25 0 5 18 4 48 0 1 6 0 52 5 0 2 6 33 9 0 5 18 5 18 6 48 0 48 1 33 9 0 18 2 16 2 49 1 32 2 0 16 2 50)} "list" "=" "len" 0 1 "first" "cons" do) :bytecode (51 0 0 17 0 5 51 1 0 0 0 0 1 1 1 0 2 0 3 1 0 0 4 17 1 5 16 1 52 2 0 0 48 1 17 2 16 2 52 4 0 1 1 5 0 52 3 0 2 33 4 0 2 32 34 0 16 2 52 4 0 1 1 6 0 52 3 0 2 33 9 0 16 2 52 7 0 1 32 9 0 1 9 0 16 2 52 8 0 2 50)} {:upvalue-count 6 :arity 0 :constants ("every" "=" "bracket-open" "bracket-close" "from" "catch" "list" "finally" "end" on "append" "filter") :bytecode (18 0 1 0 0 48 1 17 0 18 1 48 0 17 1 18 2 48 0 5 16 1 17 1 18 3 48 0 1 2 0 52 1 0 2 33 39 0 18 2 48 0 5 18 4 48 0 17 2 18 3 48 0 1 3 0 52 1 0 2 33 7 0 18 2 48 0 32 1 0 2 5 16 2 32 1 0 2 17 2 18 0 1 4 0 48 1 33 7 0 18 4 48 0 32 1 0 2 17 3 18 5 48 0 17 4 18 0 1 5 0 48 1 33 32 0 18 1 48 0 17 5 18 2 48 0 5 16 5 17 5 18 5 48 0 17 6 16 5 16 6 52 6 0 2 32 1 0 2 17 5 18 0 1 7 0 48 1 33 7 0 18 5 48 0 32 1 0 2 17 6 18 0 1 8 0 48 1 5 1 9 0 16 1 52 6 0 2 17 7 16 0 33 17 0 16 7 1 0 0 3 52 6 0 2 52 10 0 2 32 2 0 16 7 17 8 16 2 33 18 0 16 8 1 11 0 16 2 52 6 0 2 52 10 0 2 32 2 0 16 8 17 9 16 3 33 18 0 16 9 1 4 0 16 3 52 6 0 2 52 10 0 2 32 2 0 16 9 17 10 16 5 33 18 0 16 10 1 5 0 16 5 52 6 0 2 52 10 0 2 32 2 0 16 10 17 11 16 6 33 18 0 16 11 1 7 0 16 6 52 6 0 2 52 10 0 2 32 2 0 16 11 17 12 16 12 16 4 52 6 0 1 52 10 0 2 17 13 16 13 50)} {:upvalue-count 2 :arity 0 :constants ("end" "list" init) :bytecode (18 0 48 0 17 0 18 1 1 0 0 48 1 5 1 2 0 16 0 52 1 0 2 50)} {:upvalue-count 7 :arity 0 :constants ("=" "on" "init" "def" "behavior") :bytecode (18 0 48 0 17 0 16 0 1 1 0 52 0 0 2 33 12 0 18 1 48 0 5 18 2 49 0 32 76 0 16 0 1 2 0 52 0 0 2 33 12 0 18 1 48 0 5 18 3 49 0 32 52 0 16 0 1 3 0 52 0 0 2 33 12 0 18 1 48 0 5 18 4 49 0 32 28 0 16 0 1 4 0 52 0 0 2 33 12 0 18 1 48 0 5 18 5 49 0 32 4 0 18 6 49 0 50)} {:upvalue-count 3 :arity 1 :constants ("nil?" "append" "list") :bytecode (18 0 48 0 33 5 0 16 0 32 36 0 18 1 48 0 17 1 16 1 52 0 0 1 33 5 0 16 0 32 16 0 18 2 16 0 16 1 52 2 0 1 52 1 0 2 49 1 50)} "list" "=" 1 "first" "cons" do) :bytecode (1 0 0 17 2 16 0 52 1 0 1 17 3 51 2 0 1 2 1 3 1 0 17 4 5 51 3 0 1 4 17 5 5 51 4 0 1 4 17 6 5 51 5 0 1 0 1 2 17 7 5 51 6 0 1 2 1 3 1 5 17 8 5 51 7 0 1 5 1 6 1 7 17 9 5 51 8 0 1 9 1 2 17 10 5 51 9 0 17 11 5 51 10 0 1 5 1 6 1 7 1 13 17 12 5 51 11 0 1 5 1 8 1 6 1 7 1 13 1 41 17 13 5 51 12 0 1 5 1 6 1 7 17 14 5 51 13 0 1 5 1 6 1 7 1 9 1 21 17 15 5 51 14 0 1 5 1 6 1 7 1 11 1 21 1 68 1 46 1 12 1 14 1 15 1 8 1 2 1 0 1 47 1 16 1 9 17 16 5 51 15 0 1 5 1 6 1 7 1 12 1 13 1 41 1 21 1 17 17 17 5 51 16 0 1 5 1 6 1 7 1 21 1 9 1 16 1 8 17 18 5 51 17 0 1 9 1 18 1 45 1 17 1 16 1 19 17 19 5 51 18 0 1 9 1 19 1 18 1 45 1 17 1 16 1 20 17 20 5 51 19 0 1 16 1 5 1 6 1 7 1 17 1 45 1 18 1 19 1 20 17 21 5 51 20 0 1 9 1 21 17 22 5 51 21 0 1 5 1 7 1 22 17 23 5 51 22 0 1 5 1 7 1 9 1 21 1 6 17 24 5 51 23 0 1 9 1 5 1 6 1 7 1 10 1 22 1 16 17 25 5 51 24 0 1 21 1 10 17 26 5 51 25 0 1 21 1 9 1 10 1 2 17 27 5 51 26 0 1 21 1 70 1 9 17 28 5 51 27 0 1 9 1 6 1 7 1 21 1 5 1 11 17 29 5 51 28 0 1 7 1 5 1 8 1 21 17 30 5 51 29 0 1 7 1 5 1 30 1 22 17 31 5 51 30 0 1 7 1 22 17 32 5 51 31 0 1 21 17 33 5 51 32 0 1 21 1 9 1 22 17 34 5 51 33 0 1 21 1 9 1 22 17 35 5 51 34 0 1 8 1 5 1 6 1 21 1 9 1 7 17 36 5 51 35 0 1 8 1 5 1 6 1 21 1 9 1 7 17 37 5 51 36 0 1 5 1 7 1 6 1 9 1 21 1 10 17 38 5 51 37 0 1 5 1 6 1 7 1 52 1 21 1 70 1 9 17 39 5 51 38 0 1 16 1 45 1 17 1 9 1 6 1 7 17 40 5 51 39 0 1 7 1 5 1 8 1 21 17 41 5 51 40 0 1 7 1 5 1 41 17 42 5 51 41 0 1 5 1 6 1 7 1 9 1 21 17 43 5 51 42 0 1 9 1 21 17 44 5 51 43 0 1 5 1 6 1 7 1 16 1 17 1 45 17 45 5 51 44 0 1 5 1 6 1 7 1 9 1 21 1 15 1 14 1 16 17 46 5 51 45 0 1 5 1 8 1 7 1 21 17 47 5 51 46 0 1 8 1 5 1 6 1 21 17 48 5 51 47 0 1 21 17 49 5 51 48 0 1 21 1 10 17 50 5 51 49 0 1 21 1 9 1 70 17 51 5 51 50 0 1 6 1 7 1 10 1 21 1 9 1 70 17 52 5 51 51 0 1 6 1 7 1 9 17 53 5 51 52 0 1 6 1 7 1 5 1 41 17 54 5 51 53 0 1 21 17 55 5 51 54 0 1 8 1 5 1 6 1 21 1 9 17 56 5 51 55 0 1 8 1 5 1 6 1 21 17 57 5 51 56 0 1 8 1 5 1 6 1 21 17 58 5 51 57 0 1 21 1 10 17 59 5 51 58 0 1 9 17 60 5 51 59 0 1 5 1 41 17 61 5 51 60 0 1 8 1 5 1 6 1 21 17 62 5 51 61 0 1 8 1 5 1 6 1 73 17 63 5 51 62 0 1 6 1 7 1 61 1 70 1 9 17 64 5 51 63 0 1 6 1 7 1 61 1 63 1 9 17 65 5 51 64 0 1 5 1 6 1 7 1 21 17 66 5 51 65 0 1 5 1 6 1 7 1 21 1 66 1 9 17 67 5 51 66 0 1 4 1 7 1 8 1 5 1 1 17 68 5 51 67 0 1 5 1 6 1 7 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 42 1 43 1 44 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 67 1 56 1 57 1 58 1 59 1 60 1 62 1 21 17 69 5 51 68 0 1 69 1 9 1 8 1 5 1 6 17 70 5 51 69 0 1 9 1 6 1 7 1 5 1 21 1 70 17 71 5 51 70 0 1 70 1 9 17 72 5 51 71 0 1 6 1 7 1 71 1 72 1 64 1 65 1 70 17 73 5 51 72 0 1 8 1 73 1 74 17 74 5 16 74 52 73 0 0 48 1 17 75 16 75 52 1 0 1 1 75 0 52 74 0 2 33 9 0 16 75 52 76 0 1 32 9 0 1 78 0 16 75 52 77 0 2 50)} "hs-compile" {:upvalue-count 0 :arity 1 :constants ("hs-parse" "hs-tokenize") :bytecode (20 0 0 20 1 0 16 0 48 1 16 0 49 2 50)}) :bytecode (51 1 0 128 0 0 5 51 3 0 128 2 0 50))) diff --git a/spec/tests/test-hyperscript-behavioral.sx b/spec/tests/test-hyperscript-behavioral.sx index 8fb5d0c4..745c786e 100644 --- a/spec/tests/test-hyperscript-behavioral.sx +++ b/spec/tests/test-hyperscript-behavioral.sx @@ -84,7 +84,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "bar" (dom-get-attr _el-div "foo")) + (assert= (dom-get-attr _el-div "foo") "bar") )) (deftest "can add css properties" (hs-cleanup!) @@ -94,8 +94,8 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "red" (dom-get-style _el-div "color")) - (assert= "monospace" (dom-get-style _el-div "fontFamily")) + (assert= (dom-get-style _el-div "color") "red") + (assert= (dom-get-style _el-div "fontFamily") "monospace") )) (deftest "can add templated css properties" (hs-cleanup!) @@ -105,7 +105,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "red" (dom-get-style _el-div "color")) + (assert= (dom-get-style _el-div "color") "red") )) (deftest "can add multiple class refs" (hs-cleanup!) @@ -224,7 +224,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "1,2,3,4" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "1,2,3,4") )) (deftest "can add a value to a set" (hs-cleanup!) @@ -233,7 +233,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "2" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "2") )) ) @@ -379,7 +379,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "1,2,4" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "1,2,4") )) (deftest "can remove a value from a set" (hs-cleanup!) @@ -388,7 +388,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "2" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "2") )) ) @@ -601,22 +601,22 @@ (deftest "can toggle between two attribute values" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-div) (dom-dispatch _el-div "click" nil) - (assert= "inactive" (dom-get-attr _el-div "data-state")) + (assert= (dom-get-attr _el-div "data-state") "inactive") (dom-dispatch _el-div "click" nil) - (assert= "active" (dom-get-attr _el-div "data-state")) + (assert= (dom-get-attr _el-div "data-state") "active") )) (deftest "can toggle between different attributes" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-div) (dom-dispatch _el-div "click" nil) - (assert= "true" (dom-get-attr _el-div "disabled")) + (assert= (dom-get-attr _el-div "disabled") "true") (dom-dispatch _el-div "click" nil) - (assert= "true" (dom-get-attr _el-div "enabled")) + (assert= (dom-get-attr _el-div "enabled") "true") )) (deftest "can toggle visibility" (hs-cleanup!) @@ -625,9 +625,9 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "hidden" (dom-get-style _el-div "visibility")) + (assert= (dom-get-style _el-div "visibility") "hidden") (dom-dispatch _el-div "click" nil) - (assert= "visible" (dom-get-style _el-div "visibility")) + (assert= (dom-get-style _el-div "visibility") "visible") )) (deftest "can toggle opacity w/ my" (hs-cleanup!) @@ -636,9 +636,9 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "0" (dom-get-style _el-div "opacity")) + (assert= (dom-get-style _el-div "opacity") "0") (dom-dispatch _el-div "click" nil) - (assert= "1" (dom-get-style _el-div "opacity")) + (assert= (dom-get-style _el-div "opacity") "1") )) (deftest "can toggle visibility w/ my" (hs-cleanup!) @@ -647,9 +647,9 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "hidden" (dom-get-style _el-div "visibility")) + (assert= (dom-get-style _el-div "visibility") "hidden") (dom-dispatch _el-div "click" nil) - (assert= "visible" (dom-get-style _el-div "visibility")) + (assert= (dom-get-style _el-div "visibility") "visible") )) (deftest "can toggle opacity on other elt" (hs-cleanup!) @@ -672,29 +672,29 @@ (deftest "can toggle *display between two values" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-div) (dom-dispatch _el-div "click" nil) - (assert= "flex" (dom-get-style _el-div "display")) + (assert= (dom-get-style _el-div "display") "flex") (dom-dispatch _el-div "click" nil) - (assert= "none" (dom-get-style _el-div "display")) + (assert= (dom-get-style _el-div "display") "none") )) (deftest "can toggle *opacity between three values" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-div) (dom-dispatch _el-div "click" nil) - (assert= "0.5" (dom-get-style _el-div "opacity")) + (assert= (dom-get-style _el-div "opacity") "0.5") (dom-dispatch _el-div "click" nil) - (assert= "1" (dom-get-style _el-div "opacity")) + (assert= (dom-get-style _el-div "opacity") "1") (dom-dispatch _el-div "click" nil) - (assert= "0" (dom-get-style _el-div "opacity")) + (assert= (dom-get-style _el-div "opacity") "0") )) (deftest "can toggle a global variable between two values" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-div) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) @@ -703,7 +703,7 @@ (deftest "can toggle a global variable between three values" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-div) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) @@ -718,57 +718,64 @@ (hs-cleanup!) (let ((_el-d1 (dom-create-element "div"))) (dom-set-attr _el-d1 "id" "d1") - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-d1 "_" "on click set #d1.innerHTML to \"foo\"") (dom-append (dom-body) _el-d1) + (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "foo" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "foo") )) (deftest "can set indirect properties" (hs-cleanup!) (let ((_el-d1 (dom-create-element "div"))) (dom-set-attr _el-d1 "id" "d1") - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-d1 "_" "on click set innerHTML of #d1 to \"foo\"") (dom-append (dom-body) _el-d1) + (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "foo" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "foo") )) (deftest "can set complex indirect properties lhs" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-div "_" "on click set parentNode.innerHTML of #d1 to \"foo\"") (dom-append (dom-body) _el-div) + (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "can set complex indirect properties rhs" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-div "_" "on click set innerHTML of #d1.parentNode to \"foo\"") (dom-append (dom-body) _el-div) + (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "can set chained indirect properties" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-div "_" "on click set the innerHTML of the parentNode of #d1 to \"foo\"") (dom-append (dom-body) _el-div) + (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "can set styles" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-div "_" "on click set my.style.color to \"red\"") (dom-append (dom-body) _el-div) + (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "red" (dom-get-style _el-div "color")) + (assert= (dom-get-style _el-div "color") "red") )) (deftest "can set javascript globals" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-div "_" "on click set window.temp to \"red\"") (dom-append (dom-body) _el-div) + (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) ;; SKIP check: skip window["temp"].should.equal("red") )) @@ -780,37 +787,40 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "foo" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "foo") )) (deftest "can set into id ref" (hs-cleanup!) (let ((_el-d1 (dom-create-element "div"))) (dom-set-attr _el-d1 "id" "d1") - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-d1 "_" "on click set #d1.innerHTML to \"foo\"") (dom-append (dom-body) _el-d1) + (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "foo" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "foo") )) (deftest "can set into class ref" (hs-cleanup!) (let ((_el-div (dom-create-element "div")) (_el-div1 (dom-create-element "div"))) (dom-add-class _el-div "divs") - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-div "_" "on click set .divs.innerHTML to \"foo\"") (dom-append (dom-body) _el-div) + (hs-activate! _el-div) (dom-add-class _el-div1 "divs") (dom-append (dom-body) _el-div1) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) - (assert= "foo" (dom-inner-html _el-div1)) + (assert= (dom-inner-html _el-div) "foo") + (assert= (dom-inner-html _el-div1) "foo") )) (deftest "can set into attribute ref" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) (dom-add-class _el-div "divs") - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-div "_" "on click set @bar to \"foo\"") (dom-append (dom-body) _el-div) + (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-get-attr _el-div "bar")) + (assert= (dom-get-attr _el-div "bar") "foo") )) (deftest "can set into indirect attribute ref" (hs-cleanup!) @@ -822,7 +832,7 @@ (dom-set-attr _el-div2 "id" "div2") (dom-append (dom-body) _el-div2) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-get-attr _el-div2 "bar")) + (assert= (dom-get-attr _el-div2 "bar") "foo") )) (deftest "can set into indirect attribute ref 2" (hs-cleanup!) @@ -834,7 +844,7 @@ (dom-set-attr _el-div2 "id" "div2") (dom-append (dom-body) _el-div2) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-get-attr _el-div2 "bar")) + (assert= (dom-get-attr _el-div2 "bar") "foo") )) (deftest "can set into indirect attribute ref 3" (hs-cleanup!) @@ -846,14 +856,15 @@ (dom-set-attr _el-div2 "id" "div2") (dom-append (dom-body) _el-div2) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-get-attr _el-div2 "bar")) + (assert= (dom-get-attr _el-div2 "bar") "foo") )) (deftest "can set into style ref" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) (dom-add-class _el-div "divs") - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-div "_" "on click set *color to \"red\"") (dom-append (dom-body) _el-div) + (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) ;; SKIP check: skip d1.style["color"].should.equal("red") )) @@ -901,7 +912,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "foo" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "foo") )) (deftest "can set many properties at once with object literal" (hs-cleanup!) @@ -914,18 +925,20 @@ (deftest "can set props w/ array access syntax" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-div "_" "on click set my style[\"color\"] to \"red\"") (dom-append (dom-body) _el-div) + (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "red" (dom-get-style _el-div "color")) + (assert= (dom-get-style _el-div "color") "red") )) (deftest "can set props w/ array access syntax and var" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-div "_" "on click set foo to \"color\" then set my style[foo] to \"red\"") (dom-append (dom-body) _el-div) + (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "red" (dom-get-style _el-div "color")) + (assert= (dom-get-style _el-div "color") "red") )) (deftest "can set arrays w/ array access syntax" (hs-cleanup!) @@ -934,7 +947,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "red" (dom-get-style _el-div "color")) + (assert= (dom-get-style _el-div "color") "red") )) (deftest "can set arrays w/ array access syntax and var" (hs-cleanup!) @@ -943,7 +956,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "red" (dom-get-style _el-div "color")) + (assert= (dom-get-style _el-div "color") "red") )) (deftest "handles set url regression properly" (hs-cleanup!) @@ -966,7 +979,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "foo" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "foo") )) (deftest "can put directly into nodes" (hs-cleanup!) @@ -976,7 +989,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "foo" (dom-text-content _el-d1)) + (assert= (dom-text-content _el-d1) "foo") )) (deftest "can put nodes into nodes" (hs-cleanup!) @@ -997,7 +1010,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "me symbol doesn't get stomped on direct write" (hs-cleanup!) @@ -1006,7 +1019,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "bar" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "bar") )) (deftest "can set styles" (hs-cleanup!) @@ -1015,7 +1028,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "red" (dom-get-style _el-div "color")) + (assert= (dom-get-style _el-div "color") "red") )) (deftest "can set javascript globals" (hs-cleanup!) @@ -1037,8 +1050,8 @@ (dom-set-attr _el-d2 "id" "d2") (dom-append (dom-body) _el-d2) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-text-content _el-d1)) - (assert= "foo" (dom-text-content _el-d2)) + (assert= (dom-text-content _el-d1) "foo") + (assert= (dom-text-content _el-d2) "foo") )) (deftest "can set into class ref w/ flatmapped property using of" (hs-cleanup!) @@ -1051,8 +1064,8 @@ (dom-set-attr _el-d2 "id" "d2") (dom-append (dom-body) _el-d2) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-text-content _el-d1)) - (assert= "foo" (dom-text-content _el-d2)) + (assert= (dom-text-content _el-d1) "foo") + (assert= (dom-text-content _el-d2) "foo") )) (deftest "can set local variables" (hs-cleanup!) @@ -1062,7 +1075,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "foo" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "foo") )) (deftest "can set into id ref" (hs-cleanup!) @@ -1072,7 +1085,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "foo" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "foo") )) (deftest "can insert before" (hs-cleanup!) @@ -1106,7 +1119,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "foo*" (dom-text-content _el-d1)) + (assert= (dom-text-content _el-d1) "foo*") )) (deftest "can insert before end" (hs-cleanup!) @@ -1116,7 +1129,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "*foo" (dom-text-content _el-d1)) + (assert= (dom-text-content _el-d1) "*foo") )) (deftest "can set into attribute ref" (hs-cleanup!) @@ -1126,7 +1139,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-get-attr _el-div "bar")) + (assert= (dom-get-attr _el-div "bar") "foo") )) (deftest "can set into indirect attribute ref" (hs-cleanup!) @@ -1136,7 +1149,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-get-attr _el-div "bar")) + (assert= (dom-get-attr _el-div "bar") "foo") )) (deftest "can set into indirect attribute ref 2" (hs-cleanup!) @@ -1148,7 +1161,7 @@ (dom-set-attr _el-div2 "id" "div2") (dom-append (dom-body) _el-div2) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-get-attr _el-div2 "bar")) + (assert= (dom-get-attr _el-div2 "bar") "foo") )) (deftest "can set into indirect attribute ref 3" (hs-cleanup!) @@ -1160,7 +1173,7 @@ (dom-set-attr _el-div2 "id" "div2") (dom-append (dom-body) _el-div2) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-get-attr _el-div2 "bar")) + (assert= (dom-get-attr _el-div2 "bar") "foo") )) (deftest "can set into style ref" (hs-cleanup!) @@ -1214,7 +1227,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "foo" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "foo") )) (deftest "can put properties w/ array access syntax" (hs-cleanup!) @@ -1223,7 +1236,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "red" (dom-get-style _el-div "color")) + (assert= (dom-get-style _el-div "color") "red") )) (deftest "can put properties w/ array access syntax and var" (hs-cleanup!) @@ -1232,7 +1245,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "red" (dom-get-style _el-div "color")) + (assert= (dom-get-style _el-div "color") "red") )) (deftest "can put array vals w/ array access syntax" (hs-cleanup!) @@ -1241,7 +1254,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "red" (dom-get-style _el-div "color")) + (assert= (dom-get-style _el-div "color") "red") )) (deftest "can put array vals w/ array access syntax and var" (hs-cleanup!) @@ -1250,7 +1263,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "red" (dom-get-style _el-div "color")) + (assert= (dom-get-style _el-div "color") "red") )) (deftest "properly processes hyperscript in new content in a symbol write" (hs-cleanup!) @@ -1260,7 +1273,7 @@ (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) - (assert= "42" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "42") )) (deftest "properly processes hyperscript in new content in a element target" (hs-cleanup!) @@ -1271,7 +1284,7 @@ (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) (dom-dispatch _el-d1 "click" nil) - (assert= "42" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "42") )) (deftest "properly processes hyperscript in before" (hs-cleanup!) @@ -1282,7 +1295,7 @@ (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) (dom-dispatch _el-d1 "click" nil) - (assert= "42" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "42") )) (deftest "properly processes hyperscript at start of" (hs-cleanup!) @@ -1293,7 +1306,7 @@ (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) (dom-dispatch _el-d1 "click" nil) - (assert= "42" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "42") )) (deftest "properly processes hyperscript at end of" (hs-cleanup!) @@ -1304,7 +1317,7 @@ (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) (dom-dispatch _el-d1 "click" nil) - (assert= "42" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "42") )) (deftest "properly processes hyperscript after" (hs-cleanup!) @@ -1315,7 +1328,7 @@ (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) (dom-dispatch _el-d1 "click" nil) - (assert= "42" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "42") )) (deftest "is null tolerant" (hs-cleanup!) @@ -1344,7 +1357,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "1,2,3" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "1,2,3") )) (deftest "can put at end of an array" (hs-cleanup!) @@ -1353,7 +1366,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "1,2,3" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "1,2,3") )) ) @@ -1492,8 +1505,8 @@ (dom-append (dom-body) _el-trigger) (hs-activate! _el-trigger) (dom-dispatch (dom-query-by-id "trigger") "click" nil) - (assert= "none" (dom-get-style (dom-query-by-id "d1") "display")) - (assert= "block" (dom-get-style (dom-query-by-id "d2") "display")) + (assert= (dom-get-style (dom-query-by-id "d1") "display") "none") + (assert= (dom-get-style (dom-query-by-id "d2") "display") "block") )) ) @@ -1506,7 +1519,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "basic true branch works with multiple commands" (hs-cleanup!) @@ -1515,7 +1528,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "basic true branch works with end" (hs-cleanup!) @@ -1524,7 +1537,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "basic true branch works with naked else" (hs-cleanup!) @@ -1533,7 +1546,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "basic true branch works with naked else end" (hs-cleanup!) @@ -1542,7 +1555,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "basic else branch works" (hs-cleanup!) @@ -1551,7 +1564,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "basic else branch works with end" (hs-cleanup!) @@ -1560,7 +1573,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "basic else if branch works" (hs-cleanup!) @@ -1569,7 +1582,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "basic else if branch works with end" (hs-cleanup!) @@ -1578,7 +1591,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "otherwise alias works" (hs-cleanup!) @@ -1587,7 +1600,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "triple else if branch works" (hs-cleanup!) @@ -1596,7 +1609,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "triple else if branch works with end" (hs-cleanup!) @@ -1605,7 +1618,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "basic else branch works with multiple commands" (hs-cleanup!) @@ -1614,7 +1627,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "true branch with a wait works" (hs-cleanup!) @@ -1623,7 +1636,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "false branch with a wait works" (hs-cleanup!) @@ -1632,7 +1645,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "if properly passes execution along if child is not executed" (hs-cleanup!) @@ -1641,7 +1654,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "if properly supports nested if statements and end block" (hs-cleanup!) @@ -1651,7 +1664,7 @@ (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) - (assert= "foo" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "foo") )) (deftest "if on new line does not join w/ else" (hs-cleanup!) @@ -1661,7 +1674,7 @@ (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) - (assert= "" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "") )) (deftest "passes the sieve test" (error "NOT IMPLEMENTED: test HTML could not be parsed into SX")) @@ -1672,11 +1685,11 @@ (deftest "basic for loop works" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - (dom-set-attr _el-div "_" "on click repeat for x in [1, 2, 3] then put x at end of me end") + (dom-set-attr _el-div "_" "on click repeat for x in [1, 2, 3] put x at end of me end") (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "123" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "123") )) (deftest "basic for loop with null works" (hs-cleanup!) @@ -1685,7 +1698,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "") )) (deftest "waiting in for loop works" (hs-cleanup!) @@ -1694,16 +1707,16 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "123" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "123") )) (deftest "basic raw for loop works" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - (dom-set-attr _el-div "_" "on click for x in [1, 2, 3] then put x at end of me end") + (dom-set-attr _el-div "_" "on click for x in [1, 2, 3] put x at end of me end") (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "123" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "123") )) (deftest "basic raw for loop works" (hs-cleanup!) @@ -1712,7 +1725,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "") )) (deftest "waiting in raw for loop works" (hs-cleanup!) @@ -1721,7 +1734,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "123" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "123") )) (deftest "repeat forever works" (hs-cleanup!) @@ -1733,7 +1746,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "5" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "5") )) (deftest "repeat forever works w/o keyword" (hs-cleanup!) @@ -1745,16 +1758,16 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "5" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "5") )) (deftest "basic in loop works" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - (dom-set-attr _el-div "_" "on click repeat in [1, 2, 3] then put it at end of me end") + (dom-set-attr _el-div "_" "on click repeat in [1, 2, 3] put it at end of me end") (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "123" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "123") )) (deftest "index syntax works" (hs-cleanup!) @@ -1763,7 +1776,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "a0ab1abc2" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "a0ab1abc2") )) (deftest "indexed by syntax works" (hs-cleanup!) @@ -1772,7 +1785,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "a0ab1abc2" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "a0ab1abc2") )) (deftest "while keyword works" (hs-cleanup!) @@ -1784,7 +1797,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "5" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "5") )) (deftest "until keyword works" (hs-cleanup!) @@ -1796,7 +1809,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "5" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "5") )) (deftest "until event keyword works" (hs-cleanup!) @@ -1818,7 +1831,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "3" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "3") ;; SKIP check: skip window.called.should.equal(1) )) (deftest "can nest loops" @@ -1831,43 +1844,43 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "123246369" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "123246369") )) (deftest "basic times loop works" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - (dom-set-attr _el-div "_" "on click repeat 3 times then put \"a\" at end of me end") + (dom-set-attr _el-div "_" "on click repeat 3 times put \"a\" at end of me end") (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "aaa" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "aaa") )) (deftest "times loop with expression works" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - (dom-set-attr _el-div "_" "on click repeat 3 + 3 times then put \"a\" at end of me end") + (dom-set-attr _el-div "_" "on click repeat 3 + 3 times put \"a\" at end of me end") (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "aaaaaa" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "aaaaaa") )) (deftest "loop continue works" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - (dom-set-attr _el-div "_" "on click repeat 2 times then for x in ['A', 'B', 'C', 'D'] then if (x != 'D') then put 'success ' + x + '. ' at end of me then continue then put 'FAIL!!. ' at end of me then end then put 'expected D. ' at end of me then end then end then") + (dom-set-attr _el-div "_" "on click repeat 2 times for x in ['A', 'B', 'C', 'D'] if (x != 'D') then put 'success ' + x + '. ' at end of me then continue then put 'FAIL!!. ' at end of me then end then put 'expected D. ' at end of me then end then end then") (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "success A. success B. success C. expected D. success A. success B. success C. expected D. " (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "success A. success B. success C. expected D. success A. success B. success C. expected D. ") )) (deftest "loop break works" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - (dom-set-attr _el-div "_" "on click repeat 2 times then for x in ['A', 'B', 'C', 'D'] then if x is 'C' then break then end then put x at end of me then end then end then") + (dom-set-attr _el-div "_" "on click repeat 2 times for x in ['A', 'B', 'C', 'D'] if x is 'C' then break then end then put x at end of me then end then end then") (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "ABAB" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "ABAB") )) (deftest "basic raw for loop with null works" (hs-cleanup!) @@ -1876,7 +1889,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "") )) (deftest "basic property for loop works" (hs-cleanup!) @@ -1885,7 +1898,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "123" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "123") )) (deftest "bottom-tested repeat until" (hs-cleanup!) @@ -1894,7 +1907,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "3" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "3") )) (deftest "bottom-tested repeat while" (hs-cleanup!) @@ -1903,7 +1916,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "3" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "3") )) (deftest "bottom-tested loop always runs at least once" (hs-cleanup!) @@ -1912,34 +1925,34 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "1" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "1") )) (deftest "break exits a simple repeat loop" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - (dom-set-attr _el-div "_" "on click set x to 0 then repeat 10 times then set x to x + 1 then if x is 3 break end then end then put x into me then") + (dom-set-attr _el-div "_" "on click set x to 0 then repeat 10 times set x to x + 1 then if x is 3 break end then end then put x into me then") (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "3" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "3") )) (deftest "continue skips rest of iteration in simple repeat loop" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - (dom-set-attr _el-div "_" "on click repeat for x in [1, 2, 3, 4, 5] then if x is 3 continue end then put x at end of me then end then") + (dom-set-attr _el-div "_" "on click repeat for x in [1, 2, 3, 4, 5] if x is 3 continue end then put x at end of me then end then") (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "1245" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "1245") )) (deftest "break exits a for-in loop" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - (dom-set-attr _el-div "_" "on click repeat for x in [1, 2, 3, 4, 5] then if x is 4 break end then put x at end of me then end then") + (dom-set-attr _el-div "_" "on click repeat for x in [1, 2, 3, 4, 5] if x is 4 break end then put x at end of me then end then") (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "123" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "123") )) (deftest "break exits a while loop" (hs-cleanup!) @@ -1948,7 +1961,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "5" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "5") )) (deftest "for loop over undefined skips without error" (hs-cleanup!) @@ -1957,7 +1970,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "done" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "done") )) ) @@ -1992,7 +2005,7 @@ (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "foo" nil) - (assert= "hyperscript is hyper cool" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "hyperscript is hyper cool") )) (deftest "can destructure properties in a wait" (hs-cleanup!) @@ -2002,7 +2015,7 @@ (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "foo" nil) - (assert= "bar" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "bar") )) (deftest "can wait on event on another element" (hs-cleanup!) @@ -2085,7 +2098,7 @@ (hs-activate! _el-bar) (dom-dispatch _el-div "click" nil) (assert (not (dom-has-class? _el-bar "foo-sent"))) - (assert= "42" (dom-inner-html _el-bar)) + (assert= (dom-inner-html _el-bar) "42") )) (deftest "can send events with dots" (hs-cleanup!) @@ -2112,7 +2125,7 @@ (hs-activate! _el-bar) (dom-dispatch _el-div "click" nil) (assert (not (dom-has-class? _el-bar "foo-sent"))) - (assert= "42" (dom-inner-html _el-bar)) + (assert= (dom-inner-html _el-bar) "42") )) (deftest "can send events with colons" (hs-cleanup!) @@ -2139,7 +2152,7 @@ (hs-activate! _el-bar) (dom-dispatch _el-div "click" nil) (assert (not (dom-has-class? _el-bar "foo-sent"))) - (assert= "42" (dom-inner-html _el-bar)) + (assert= (dom-inner-html _el-bar) "42") )) (deftest "can send events to any expression" (hs-cleanup!) @@ -2234,8 +2247,8 @@ (dom-add-class _el-div2 "div") (dom-append (dom-body) _el-div2) (dom-dispatch _el-div1 "click" nil) - (assert= "bar" (dom-get-attr _el-div "data-foo")) - (assert= "" (dom-get-attr _el-div1 "data-foo")) + (assert= (dom-get-attr _el-div "data-foo") "bar") + (assert= (dom-get-attr _el-div1 "data-foo") "") ;; SKIP check: skip assert.isNull(d2.getAttribute("data-foo") ;; SKIP check: skip assert.isNull(d3.getAttribute("data-foo") ;; SKIP check: skip assert.isNull(d1.getAttribute("data-foo") @@ -2253,8 +2266,8 @@ (dom-add-class _el-div2 "div") (dom-append (dom-body) _el-div2) (dom-dispatch _el-div1 "click" nil) - (assert= "bar" (dom-get-attr _el-div "data-foo")) - (assert= "baz" (dom-get-attr _el-div1 "data-foo")) + (assert= (dom-get-attr _el-div "data-foo") "bar") + (assert= (dom-get-attr _el-div1 "data-foo") "baz") ;; SKIP check: skip assert.isNull(d2.getAttribute("data-foo") ;; SKIP check: skip assert.isNull(d3.getAttribute("data-foo") ;; SKIP check: skip assert.isNull(d1.getAttribute("data-foo") @@ -2272,9 +2285,9 @@ (dom-add-class _el-div2 "div") (dom-append (dom-body) _el-div2) (dom-dispatch _el-div1 "click" nil) - (assert= "qux" (dom-get-attr _el-div "data-foo")) - (assert= "baz" (dom-get-attr _el-div1 "data-foo")) - (assert= "qux" (dom-get-attr _el-div2 "data-foo")) + (assert= (dom-get-attr _el-div "data-foo") "qux") + (assert= (dom-get-attr _el-div1 "data-foo") "baz") + (assert= (dom-get-attr _el-div2 "data-foo") "qux") ;; SKIP check: skip assert.isNull(d2.getAttribute("data-foo") ;; SKIP check: skip assert.isNull(d3.getAttribute("data-foo") )) @@ -2292,9 +2305,9 @@ (dom-add-class _el-div2 "div") (dom-append (dom-body) _el-div2) (dom-dispatch _el-div1 "click" nil) - (assert= "qux" (dom-get-attr _el-div "data-foo")) - (assert= "baz" (dom-get-attr _el-div1 "data-foo")) - (assert= "qux" (dom-get-attr _el-div2 "data-foo")) + (assert= (dom-get-attr _el-div "data-foo") "qux") + (assert= (dom-get-attr _el-div1 "data-foo") "baz") + (assert= (dom-get-attr _el-div2 "data-foo") "qux") ;; SKIP check: skip assert.isNull(d3.getAttribute("data-foo") )) (deftest "can take an attribute for other elements" @@ -2311,8 +2324,8 @@ (dom-add-class _el-d3 "div") (dom-append (dom-body) _el-d3) (dom-dispatch _el-div1 "click" nil) - (assert= "bar" (dom-get-attr _el-div "data-foo")) - (assert= "" (dom-get-attr _el-d3 "data-foo")) + (assert= (dom-get-attr _el-div "data-foo") "bar") + (assert= (dom-get-attr _el-d3 "data-foo") "") ;; SKIP check: skip assert.isNull(d2.getAttribute("data-foo") ;; SKIP check: skip assert.isNull(d3.getAttribute("data-foo") ;; SKIP check: skip assert.isNull(d1.getAttribute("data-foo") @@ -2324,8 +2337,8 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch (dom-query-by-id "d2") "click" nil) - (assert= "bar" (dom-get-attr _el-div "data-foo")) - (assert= "" (dom-get-attr (dom-query-by-id "d2") "data-foo")) + (assert= (dom-get-attr _el-div "data-foo") "bar") + (assert= (dom-get-attr (dom-query-by-id "d2") "data-foo") "") ;; SKIP check: skip assert.isNull(d2.getAttribute("data-foo") ;; SKIP check: skip assert.isNull(d3.getAttribute("data-foo") ;; SKIP check: skip assert.isNull(d1.getAttribute("data-foo") @@ -2384,7 +2397,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "100px" (dom-get-style _el-div "width")) + (assert= (dom-get-style _el-div "width") "100px") )) (deftest "can transition with parameterized values" (hs-cleanup!) @@ -2393,7 +2406,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "100px" (dom-get-style _el-div "width")) + (assert= (dom-get-style _el-div "width") "100px") )) (deftest "can transition a single property on form" (hs-cleanup!) @@ -2402,7 +2415,7 @@ (dom-append (dom-body) _el-form) (hs-activate! _el-form) (dom-dispatch _el-form "click" nil) - (assert= "100px" (dom-get-style _el-form "width")) + (assert= (dom-get-style _el-form "width") "100px") )) (deftest "can transition a single property on current element with the my prefix" (hs-cleanup!) @@ -2411,7 +2424,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "100px" (dom-get-style _el-div "width")) + (assert= (dom-get-style _el-div "width") "100px") )) (deftest "can transition two properties on current element" (hs-cleanup!) @@ -2420,8 +2433,8 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "100px" (dom-get-style _el-div "width")) - (assert= "100px" (dom-get-style _el-div "height")) + (assert= (dom-get-style _el-div "width") "100px") + (assert= (dom-get-style _el-div "height") "100px") )) (deftest "can transition on another element" (hs-cleanup!) @@ -2432,7 +2445,7 @@ (dom-set-attr _el-foo "id" "foo") (dom-append (dom-body) _el-foo) (dom-dispatch _el-div "click" nil) - (assert= "100px" (dom-get-style _el-foo "width")) + (assert= (dom-get-style _el-foo "width") "100px") )) (deftest "can transition on another element no element prefix" (hs-cleanup!) @@ -2443,7 +2456,7 @@ (dom-set-attr _el-foo "id" "foo") (dom-append (dom-body) _el-foo) (dom-dispatch _el-div "click" nil) - (assert= "100px" (dom-get-style _el-foo "width")) + (assert= (dom-get-style _el-foo "width") "100px") )) (deftest "can transition on another element no element prefix + possessive" (hs-cleanup!) @@ -2454,7 +2467,7 @@ (dom-set-attr _el-foo "id" "foo") (dom-append (dom-body) _el-foo) (dom-dispatch _el-div "click" nil) - (assert= "100px" (dom-get-style _el-foo "width")) + (assert= (dom-get-style _el-foo "width") "100px") )) (deftest "can transition on another element no element prefix with it" (hs-cleanup!) @@ -2465,17 +2478,18 @@ (dom-set-attr _el-foo "id" "foo") (dom-append (dom-body) _el-foo) (dom-dispatch _el-div "click" nil) - (assert= "100px" (dom-get-style _el-foo "width")) + (assert= (dom-get-style _el-foo "width") "100px") )) (deftest "can transition with a custom transition time" (hs-cleanup!) (let ((_el-div (dom-create-element "div")) (_el-foo (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-div "_" "on click transition element #foo width from 0px to 100px using \"width 2s ease-in\"") (dom-append (dom-body) _el-div) + (hs-activate! _el-div) (dom-set-attr _el-foo "id" "foo") (dom-append (dom-body) _el-foo) (dom-dispatch _el-div "click" nil) - (assert= "100px" (dom-get-style _el-foo "width")) + (assert= (dom-get-style _el-foo "width") "100px") )) (deftest "can transition with a custom transition time via the over syntax" (hs-cleanup!) @@ -2486,7 +2500,7 @@ (dom-set-attr _el-foo "id" "foo") (dom-append (dom-body) _el-foo) (dom-dispatch _el-div "click" nil) - (assert= "100px" (dom-get-style _el-foo "width")) + (assert= (dom-get-style _el-foo "width") "100px") )) (deftest "can transition a single property on current element using style ref" (hs-cleanup!) @@ -2495,7 +2509,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "100px" (dom-get-style _el-div "width")) + (assert= (dom-get-style _el-div "width") "100px") )) (deftest "can transition a single property on form using style ref" (hs-cleanup!) @@ -2504,7 +2518,7 @@ (dom-append (dom-body) _el-form) (hs-activate! _el-form) (dom-dispatch _el-form "click" nil) - (assert= "100px" (dom-get-style _el-form "width")) + (assert= (dom-get-style _el-form "width") "100px") )) (deftest "can transition a single property on current element with the my prefix using style ref" (hs-cleanup!) @@ -2513,7 +2527,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "100px" (dom-get-style _el-div "width")) + (assert= (dom-get-style _el-div "width") "100px") )) (deftest "can use initial to transition to original value" (hs-cleanup!) @@ -2524,7 +2538,7 @@ (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) - (assert= "10px" (dom-get-style _el-div "width")) + (assert= (dom-get-style _el-div "width") "10px") )) (deftest "can transition on another element with of syntax" (hs-cleanup!) @@ -2556,8 +2570,9 @@ (deftest "can transition with a custom transition string" (hs-cleanup!) (let ((_el-div (dom-create-element "div")) (_el-foo (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-div "_" "on click transition #foo's *width from 0px to 100px using \"width 2s ease-in\"") (dom-append (dom-body) _el-div) + (hs-activate! _el-div) (dom-set-attr _el-foo "id" "foo") (dom-append (dom-body) _el-foo) )) @@ -2580,11 +2595,11 @@ (deftest "can transition on query ref with of syntax" (hs-cleanup!) (let ((_el-div (dom-create-element "div")) (_el-span (dom-create-element "span"))) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-div) (dom-append (dom-body) _el-span) (dom-dispatch _el-div "click" nil) - (assert= "100px" (dom-get-style _el-span "width")) + (assert= (dom-get-style _el-span "width") "100px") )) ) @@ -2693,7 +2708,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "yay" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "yay") )) (deftest "can do a simple fetch w/ a naked URL" (hs-cleanup!) @@ -2702,7 +2717,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "yay" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "yay") )) (deftest "can do a simple fetch w/ html" (hs-cleanup!) @@ -2711,7 +2726,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "[object DocumentFragment]" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "[object DocumentFragment]") ;; SKIP check: skip div.dataset.count.should.equal("1") )) (deftest "can do a simple fetch w/ json" @@ -2721,7 +2736,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "'{\"foo\":1}'" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "'{\"foo\":1}'") )) (deftest "can do a simple fetch w/ json using Object syntax" (hs-cleanup!) @@ -2730,7 +2745,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "'{\"foo\":1}'" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "'{\"foo\":1}'") )) (deftest "can do a simple fetch w/ json using Object syntax and an 'an' prefix" (hs-cleanup!) @@ -2739,7 +2754,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "'{\"foo\":1}'" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "'{\"foo\":1}'") )) (deftest "can do a simple fetch with a response object" (hs-cleanup!) @@ -2748,7 +2763,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "yep" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "yep") )) (deftest "can do a simple fetch w/ a custom conversion" (hs-cleanup!) @@ -2757,7 +2772,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "1.2" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "1.2") )) (deftest "can do a simple post" (hs-cleanup!) @@ -2766,7 +2781,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "yay" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "yay") )) (deftest "can do a simple post alt syntax without curlies" (hs-cleanup!) @@ -2775,7 +2790,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "yay" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "yay") )) (deftest "can do a simple post alt syntax w/ curlies" (hs-cleanup!) @@ -2784,7 +2799,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "yay" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "yay") )) (deftest "can put response conversion after with" (hs-cleanup!) @@ -2793,7 +2808,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "yay" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "yay") )) (deftest "can put response conversion before with" (hs-cleanup!) @@ -2802,7 +2817,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "yay" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "yay") )) (deftest "triggers an event just before fetching" (hs-cleanup!) @@ -2812,7 +2827,7 @@ (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) (assert (dom-has-class? _el-div "foo-set")) - (assert= "yay" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "yay") )) (deftest "submits the fetch parameters to the event handler" (hs-cleanup!) @@ -2822,7 +2837,7 @@ (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) ;; SKIP check: skip event.detail.headers.should.have.property('X-CustomHeader', - (assert= "yay" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "yay") )) (deftest "allows the event handler to change the fetch parameters" (hs-cleanup!) @@ -2833,7 +2848,7 @@ (dom-dispatch _el-div "click" nil) ;; SKIP check: skip arguments[1].should.have.property('headers') ;; SKIP check: skip arguments[1].headers.should.have.property('X-CustomHeader', - (assert= "yay" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "yay") )) (deftest "can catch an error that occurs when using fetch" (hs-cleanup!) @@ -2842,7 +2857,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "yay" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "yay") )) (deftest "can do a simple fetch w/ json using JSON syntax" (hs-cleanup!) @@ -2851,7 +2866,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "{\"foo\":1}" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "{\"foo\":1}") )) (deftest "throws on non-2xx response by default" (hs-cleanup!) @@ -2860,7 +2875,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "caught" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "caught") )) (deftest "do not throw passes through 404 response" (hs-cleanup!) @@ -2869,7 +2884,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "the body" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "the body") )) (deftest "don't throw passes through 404 response" (hs-cleanup!) @@ -2878,7 +2893,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "the body" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "the body") )) (deftest "as response does not throw on 404" (hs-cleanup!) @@ -2887,15 +2902,15 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "404" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "404") )) (deftest "Response can be converted to JSON via as JSON" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-div) (dom-dispatch _el-div "click" nil) - (assert= "Joe" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "Joe") )) ) @@ -2908,7 +2923,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "1" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "1") )) (deftest "can increment a variable" (hs-cleanup!) @@ -2917,7 +2932,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "22" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "22") )) (deftest "can increment refer to result" (hs-cleanup!) @@ -2926,7 +2941,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "2" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "2") )) (deftest "can increment an attribute" (hs-cleanup!) @@ -2938,7 +2953,7 @@ (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) - (assert= "8" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "8") )) (deftest "can increment an floating point numbers" (hs-cleanup!) @@ -2948,7 +2963,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "11.3" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "11.3") )) (deftest "can increment a property" (hs-cleanup!) @@ -2959,7 +2974,7 @@ (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) - (assert= "6" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "6") )) (deftest "can increment by zero" (hs-cleanup!) @@ -2968,7 +2983,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "20" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "20") )) (deftest "can increment a value multiple times" (hs-cleanup!) @@ -2981,7 +2996,7 @@ (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) - (assert= "5" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "5") )) (deftest "can decrement an empty variable" (hs-cleanup!) @@ -2990,7 +3005,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "-1" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "-1") )) (deftest "can decrement a variable" (hs-cleanup!) @@ -2999,7 +3014,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "18" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "18") )) (deftest "can decrement an attribute" (hs-cleanup!) @@ -3011,7 +3026,7 @@ (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) - (assert= "2" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "2") )) (deftest "can decrement an floating point numbers" (hs-cleanup!) @@ -3021,7 +3036,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "1" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "1") )) (deftest "can decrement a property" (hs-cleanup!) @@ -3032,7 +3047,7 @@ (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) - (assert= "0" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "0") )) (deftest "can decrement a value multiple times" (hs-cleanup!) @@ -3045,7 +3060,7 @@ (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) - (assert= "-5" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "-5") )) (deftest "can decrement by zero" (hs-cleanup!) @@ -3054,7 +3069,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "20" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "20") )) (deftest "can increment an array element" (hs-cleanup!) @@ -3063,7 +3078,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "21" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "21") )) (deftest "can decrement an array element" (hs-cleanup!) @@ -3072,7 +3087,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "19" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "19") )) (deftest "can increment a possessive property" (hs-cleanup!) @@ -3082,7 +3097,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch (dom-query-by-id "d1") "click" nil) - (assert= "6" (dom-text-content (dom-query-by-id "d1"))) + (assert= (dom-text-content (dom-query-by-id "d1")) "6") )) (deftest "can increment a property of expression" (hs-cleanup!) @@ -3092,7 +3107,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch (dom-query-by-id "d1") "click" nil) - (assert= "6" (dom-text-content (dom-query-by-id "d1"))) + (assert= (dom-text-content (dom-query-by-id "d1")) "6") )) (deftest "can increment a style ref" (hs-cleanup!) @@ -3101,7 +3116,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "0.75" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "0.75") )) ) @@ -3114,7 +3129,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "Hello there. General Kenobi." (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "Hello there. General Kenobi.") )) (deftest "can append a value into an array" (hs-cleanup!) @@ -3123,7 +3138,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "1,2,3,4" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "1,2,3,4") )) (deftest "can append a value to 'it'" (hs-cleanup!) @@ -3132,7 +3147,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "1,2,3,4" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "1,2,3,4") )) (deftest "can append a value to a DOM node" (hs-cleanup!) @@ -3141,7 +3156,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "This is my inner HTMLWith Tags" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "This is my inner HTMLWith Tags") )) (deftest "can append a value to a DOM element" (hs-cleanup!) @@ -3151,7 +3166,7 @@ (dom-append (dom-body) _el-content) (hs-activate! _el-content) (dom-dispatch _el-content "click" nil) - (assert= "Content" (dom-inner-html _el-content)) + (assert= (dom-inner-html _el-content) "Content") )) (deftest "can append a value to I" (hs-cleanup!) @@ -3160,7 +3175,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "Content" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "Content") )) (deftest "can append a value to an object property" (hs-cleanup!) @@ -3180,7 +3195,7 @@ (dom-append (dom-body) _el-id) (hs-activate! _el-id) (dom-dispatch _el-id "click" nil) - (assert= "foobardoh" (dom-inner-html _el-id)) + (assert= (dom-inner-html _el-id) "foobardoh") )) (deftest "append to undefined ignores the undefined" (hs-cleanup!) @@ -3190,7 +3205,7 @@ (dom-append (dom-body) _el-id) (hs-activate! _el-id) (dom-dispatch _el-id "click" nil) - (assert= "bar" (dom-inner-html _el-id)) + (assert= (dom-inner-html _el-id) "bar") )) (deftest "append preserves existing content rather than overwriting it" (hs-cleanup!) @@ -3231,7 +3246,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "3" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "3") )) ) @@ -3364,7 +3379,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "") )) (deftest "tell terminates with a feature" (hs-cleanup!) @@ -3374,7 +3389,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch _el-d1 "click" nil) - (assert= "" (dom-inner-html _el-d1)) + (assert= (dom-inner-html _el-d1) "") )) ) @@ -3435,11 +3450,12 @@ (let ((_el-bar (dom-create-element "div")) (_el-div (dom-create-element "div"))) (dom-set-attr _el-bar "id" "bar") (dom-append (dom-body) _el-bar) - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-div "_" "on click from #bar set #bar.innerHTML to #bar.innerHTML + \"a\"") (dom-append (dom-body) _el-div) + (hs-activate! _el-div) (dom-dispatch _el-bar "click" nil) (dom-dispatch _el-bar "click" nil) - (assert= "a" (dom-inner-html _el-bar)) + (assert= (dom-inner-html _el-bar) "a") )) (deftest "listeners on self are not removed when the element is removed" (hs-cleanup!) @@ -3449,7 +3465,7 @@ (hs-activate! _el-div) ;; SKIP action: div.remove__ ;; SKIP action: div.dispatchEvent_new Event__someCustomE - (assert= "1" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "1") )) (deftest "supports "elsewhere" modifier" (hs-cleanup!) @@ -3714,7 +3730,7 @@ (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) - (assert= "1" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "1") )) (deftest "can filter events based on count range" (hs-cleanup!) @@ -3725,7 +3741,7 @@ (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) - (assert= "2" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "2") )) (deftest "can filter events based on unbounded count range" (hs-cleanup!) @@ -3736,7 +3752,7 @@ (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) - (assert= "2" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "2") )) (deftest "can mix ranges" (hs-cleanup!) @@ -3748,7 +3764,7 @@ (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) (dom-dispatch _el-div "click" nil) - (assert= "three" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "three") )) (deftest "can listen for general mutations" (hs-cleanup!) @@ -3757,7 +3773,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-set-attr _el-div "foo" "bar") - (assert= "Mutated" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "Mutated") )) (deftest "can listen for attribute mutations" (hs-cleanup!) @@ -3766,7 +3782,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-set-attr _el-div "foo" "bar") - (assert= "Mutated" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "Mutated") )) (deftest "can listen for specific attribute mutations" (hs-cleanup!) @@ -3775,7 +3791,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-set-attr _el-div "foo" "bar") - (assert= "Mutated" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "Mutated") )) (deftest "can listen for specific attribute mutations and filter out other attribute mutations" (hs-cleanup!) @@ -3784,7 +3800,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-set-attr _el-div "foo" "bar") - (assert= "" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "") )) (deftest "can listen for childList mutations" (hs-cleanup!) @@ -3793,7 +3809,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-append _el-div (dom-create-element "P")) - (assert= "Mutated" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "Mutated") )) (deftest "can listen for childList mutation filter out other mutations" (hs-cleanup!) @@ -3802,7 +3818,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-set-attr _el-div "foo" "bar") - (assert= "" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "") )) (deftest "can listen for characterData mutation filter out other mutations" (hs-cleanup!) @@ -3811,7 +3827,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-set-attr _el-div "foo" "bar") - (assert= "" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "") )) (deftest "can listen for multiple mutations" (hs-cleanup!) @@ -3820,7 +3836,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-set-attr _el-div "foo" "bar") - (assert= "Mutated" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "Mutated") )) (deftest "can listen for multiple mutations 2" (hs-cleanup!) @@ -3829,7 +3845,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-set-attr _el-div "bar" "bar") - (assert= "Mutated" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "Mutated") )) (deftest "can listen for attribute mutations on other elements" (hs-cleanup!) @@ -3840,7 +3856,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-set-attr _el-d1 "foo" "bar") - (assert= "Mutated" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "Mutated") )) (deftest "each behavior installation has its own event queue" (hs-cleanup!) @@ -3859,9 +3875,9 @@ (dom-dispatch _el-div "foo" nil) (dom-dispatch _el-div2 "foo" nil) (dom-dispatch _el-div3 "foo" nil) - (assert= "behavior" (dom-inner-html _el-div)) - (assert= "behavior" (dom-inner-html _el-div2)) - (assert= "behavior" (dom-inner-html _el-div3)) + (assert= (dom-inner-html _el-div) "behavior") + (assert= (dom-inner-html _el-div2) "behavior") + (assert= (dom-inner-html _el-div3) "behavior") )) (deftest "can catch exceptions thrown in js functions" (hs-cleanup!) @@ -3870,7 +3886,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "bar" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "bar") )) (deftest "can catch exceptions thrown in hyperscript functions" (hs-cleanup!) @@ -3881,7 +3897,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "bar" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "bar") )) (deftest "can catch top-level exceptions" (hs-cleanup!) @@ -3890,7 +3906,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "bar" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "bar") )) (deftest "can catch async top-level exceptions" (hs-cleanup!) @@ -3899,7 +3915,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "bar" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "bar") )) (deftest "async exceptions don't kill the event queue" (hs-cleanup!) @@ -3909,7 +3925,7 @@ (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) (dom-dispatch _el-button "click" nil) - (assert= "success" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "success") )) (deftest "exceptions in catch block don't kill the event queue" (hs-cleanup!) @@ -3919,7 +3935,7 @@ (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) (dom-dispatch _el-button "click" nil) - (assert= "success" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "success") )) (deftest "uncaught exceptions trigger 'exception' event" (hs-cleanup!) @@ -3928,7 +3944,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "bar" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "bar") )) (deftest "caught exceptions do not trigger 'exception' event" (hs-cleanup!) @@ -3937,7 +3953,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "foo" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "foo") )) (deftest "rethrown exceptions trigger 'exception' event" (hs-cleanup!) @@ -3946,7 +3962,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "bar" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "bar") )) (deftest "basic finally blocks work" (hs-cleanup!) @@ -3955,7 +3971,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "bar" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "bar") )) (deftest "finally blocks work when exception thrown in catch" (hs-cleanup!) @@ -3964,7 +3980,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "bar" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "bar") )) (deftest "async basic finally blocks work" (hs-cleanup!) @@ -3973,7 +3989,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "bar" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "bar") )) (deftest "async finally blocks work when exception thrown in catch" (hs-cleanup!) @@ -3982,7 +3998,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "foobar" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "foobar") )) (deftest "async exceptions in finally block don't kill the event queue" (hs-cleanup!) @@ -3992,7 +4008,7 @@ (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) (dom-dispatch _el-button "click" nil) - (assert= "success" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "success") )) (deftest "exceptions in finally block don't kill the event queue" (hs-cleanup!) @@ -4002,7 +4018,7 @@ (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) (dom-dispatch _el-button "click" nil) - (assert= "success" (dom-inner-html _el-button)) + (assert= (dom-inner-html _el-button) "success") )) (deftest "can ignore when target doesn't exist" (hs-cleanup!) @@ -4012,7 +4028,7 @@ (dom-append (dom-body) _el-#d1) (hs-activate! _el-#d1) (dom-dispatch _el-#d1 "click" nil) - (assert= "clicked" (dom-inner-html _el-#d1)) + (assert= (dom-inner-html _el-#d1) "clicked") )) (deftest "can handle an or after a from clause" (hs-cleanup!) @@ -4026,7 +4042,7 @@ (hs-activate! _el-div) (dom-dispatch _el-d1 "click" nil) (dom-dispatch _el-d2 "click" nil) - (assert= "2" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "2") )) (deftest "handles custom events with null detail" (hs-cleanup!) @@ -4043,9 +4059,9 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "1" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "1") (dom-dispatch _el-div "click" nil) - (assert= "1" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "1") )) (deftest "caught exceptions do not trigger 'exception' event" (hs-cleanup!) @@ -4054,7 +4070,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "foo" (dom-text-content _el-button)) + (assert= (dom-text-content _el-button) "foo") )) (deftest "rethrown exceptions trigger 'exception' event" (hs-cleanup!) @@ -4063,7 +4079,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "bar" (dom-text-content _el-button)) + (assert= (dom-text-content _el-button) "bar") )) (deftest "can ignore when target doesn\'t exist" (hs-cleanup!) @@ -4072,7 +4088,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "clicked" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "clicked") )) ) @@ -4085,7 +4101,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "42" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "42") )) (deftest "can define an init block in a script" (hs-cleanup!) @@ -4129,7 +4145,7 @@ (dom-set-attr _el-d1 "id" "d1") (dom-append (dom-body) _el-d1) (dom-dispatch _el-script "click" nil) - (assert= "called" (dom-inner-html _el-div)) + (assert= (dom-inner-html _el-div) "called") )) (deftest "functions can be namespaced" (hs-cleanup!) @@ -4352,7 +4368,7 @@ (dom-set-attr _el-out "id" "out") (dom-append (dom-body) _el-out) (dom-dispatch _el-button "click" nil) - (assert= "Alice" (dom-text-content (dom-query-by-id "out"))) + (assert= (dom-text-content (dom-query-by-id "out")) "Alice") )) (deftest "returns null on cancel" (hs-cleanup!) @@ -4363,7 +4379,7 @@ (dom-set-attr _el-out "id" "out") (dom-append (dom-body) _el-out) (dom-dispatch _el-button "click" nil) - (assert= "null" (dom-text-content (dom-query-by-id "out"))) + (assert= (dom-text-content (dom-query-by-id "out")) "null") )) (deftest "shows an alert" (hs-cleanup!) @@ -4374,7 +4390,7 @@ (dom-set-attr _el-out "id" "out") (dom-append (dom-body) _el-out) (dom-dispatch _el-button "click" nil) - (assert= "done" (dom-text-content (dom-query-by-id "out"))) + (assert= (dom-text-content (dom-query-by-id "out")) "done") )) (deftest "confirm returns first choice on OK" (hs-cleanup!) @@ -4385,7 +4401,7 @@ (dom-set-attr _el-out "id" "out") (dom-append (dom-body) _el-out) (dom-dispatch _el-button "click" nil) - (assert= "Yes" (dom-text-content (dom-query-by-id "out"))) + (assert= (dom-text-content (dom-query-by-id "out")) "Yes") )) (deftest "confirm returns second choice on cancel" (hs-cleanup!) @@ -4396,7 +4412,7 @@ (dom-set-attr _el-out "id" "out") (dom-append (dom-body) _el-out) (dom-dispatch _el-button "click" nil) - (assert= "No" (dom-text-content (dom-query-by-id "out"))) + (assert= (dom-text-content (dom-query-by-id "out")) "No") )) ) @@ -4513,7 +4529,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "" (dom-text-content (dom-query-by-id "d1"))) + (assert= (dom-text-content (dom-query-by-id "d1")) "") )) (deftest "empty with no target empties me" (hs-cleanup!) @@ -4522,7 +4538,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "") )) (deftest "can empty multiple elements" (hs-cleanup!) @@ -4543,7 +4559,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "0" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "0") )) (deftest "can empty a set" (hs-cleanup!) @@ -4552,7 +4568,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "0" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "0") )) (deftest "can empty a map" (hs-cleanup!) @@ -4561,7 +4577,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "0" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "0") )) (deftest "can empty a text input" (hs-cleanup!) @@ -4574,7 +4590,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "" (dom-get-prop (dom-query-by-id "t1") "value")) + (assert= (dom-get-prop (dom-query-by-id "t1") "value") "") )) (deftest "can empty a textarea" (hs-cleanup!) @@ -4585,7 +4601,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "" (dom-get-prop (dom-query-by-id "ta1") "value")) + (assert= (dom-get-prop (dom-query-by-id "ta1") "value") "") )) (deftest "can empty a checkbox" (hs-cleanup!) @@ -4618,8 +4634,8 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "" (dom-get-prop (dom-query-by-id "t2") "value")) - (assert= "" (dom-get-prop (dom-query-by-id "ta2") "value")) + (assert= (dom-get-prop (dom-query-by-id "t2") "value") "") + (assert= (dom-get-prop (dom-query-by-id "ta2") "value") "") (assert (not (dom-get-prop (dom-query-by-id "cb2") "checked"))) )) (deftest "clear is an alias for empty" @@ -4633,7 +4649,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "" (dom-get-prop (dom-query-by-id "t3") "value")) + (assert= (dom-get-prop (dom-query-by-id "t3") "value") "") )) (deftest "clear works on elements" (hs-cleanup!) @@ -4644,7 +4660,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "" (dom-text-content (dom-query-by-id "d2"))) + (assert= (dom-text-content (dom-query-by-id "d2")) "") )) ) @@ -4684,8 +4700,9 @@ (deftest "can parse go to with string URL" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-div "_" "on click go to \"#test-hash\"") (dom-append (dom-body) _el-div) + (hs-activate! _el-div) )) (deftest "deprecated url keyword still parses" (hs-cleanup!) @@ -4802,10 +4819,10 @@ (let ((_el-target (dom-create-element "div")) (_el-button (dom-create-element "button"))) (dom-set-attr _el-target "id" "target") (dom-append (dom-body) _el-target) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-button) (dom-dispatch _el-button "click" nil) - (assert= "new" (dom-text-content (dom-query-by-id "target"))) + (assert= (dom-text-content (dom-query-by-id "target")) "new") )) (deftest "morph preserves element identity" (hs-cleanup!) @@ -4813,10 +4830,10 @@ (dom-set-attr _el-target "id" "target") (dom-append (dom-body) _el-target) (dom-set-attr _el-go "id" "go") - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-go) (dom-dispatch (dom-query-by-id "go") "click" nil) - (assert= "new" (dom-text-content (dom-query-by-id "target"))) + (assert= (dom-text-content (dom-query-by-id "target")) "new") )) (deftest "morph updates attributes" (hs-cleanup!) @@ -4824,7 +4841,7 @@ (dom-set-attr _el-target "id" "target") (dom-add-class _el-target "old") (dom-append (dom-body) _el-target) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-button) (dom-dispatch _el-button "click" nil) (assert (dom-has-class? (dom-query-by-id "target") "new")) @@ -4835,7 +4852,7 @@ (dom-set-attr _el-target "id" "target") (dom-append (dom-body) _el-target) (dom-set-attr _el-target1 "id" "target") - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-target1) (dom-dispatch (dom-query-by-id "go") "click" nil) )) @@ -4845,7 +4862,7 @@ (dom-set-attr _el-target "id" "target") (dom-append (dom-body) _el-target) (dom-set-attr _el-target1 "id" "target") - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-target1) (dom-dispatch (dom-query-by-id "go") "click" nil) )) @@ -4855,19 +4872,19 @@ (dom-set-attr _el-target "id" "target") (dom-append (dom-body) _el-target) (dom-set-attr _el-target1 "id" "target") - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-target1) (dom-dispatch (dom-query-by-id "go") "click" nil) - (assert= "new" (dom-text-content (dom-query-by-id "inner"))) + (assert= (dom-text-content (dom-query-by-id "inner")) "new") (dom-dispatch (dom-query-by-id "inner") "click" nil) - (assert= "clicked" (dom-text-content (dom-query-by-id "inner"))) + (assert= (dom-text-content (dom-query-by-id "inner")) "clicked") )) (deftest "morph cleans up removed hyperscript elements" (hs-cleanup!) (let ((_el-target (dom-create-element "div")) (_el-button (dom-create-element "button"))) (dom-set-attr _el-target "id" "target") (dom-append (dom-body) _el-target) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-button) (dom-dispatch _el-button "click" nil) )) @@ -4876,7 +4893,7 @@ (let ((_el-target (dom-create-element "div")) (_el-button (dom-create-element "button"))) (dom-set-attr _el-target "id" "target") (dom-append (dom-body) _el-target) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-button) (dom-dispatch _el-button "click" nil) )) @@ -4886,7 +4903,7 @@ (dom-set-attr _el-target "id" "target") (dom-append (dom-body) _el-target) (dom-set-attr _el-go "id" "go") - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-go) (dom-dispatch (dom-query-by-id "go") "click" nil) )) @@ -4900,7 +4917,7 @@ (dom-append (dom-body) _el-go) (hs-activate! _el-go) (dom-dispatch (dom-query-by-id "go") "click" nil) - (assert= "morphed" (dom-text-content (dom-query-by-id "target"))) + (assert= (dom-text-content (dom-query-by-id "target")) "morphed") )) ) @@ -4912,7 +4929,7 @@ (dom-set-attr _el-f1 "id" "f1") (dom-append (dom-body) _el-f1) (dom-dispatch (dom-query-by-id "rst") "click" nil) - (assert= "original" (dom-get-prop (dom-query-by-id "t1") "value")) + (assert= (dom-get-prop (dom-query-by-id "t1") "value") "original") )) (deftest "reset with no target resets me (form)" (hs-cleanup!) @@ -4921,7 +4938,7 @@ (dom-append (dom-body) _el-form) (hs-activate! _el-form) (dom-dispatch _el-form "custom" nil) - (assert= "default" (dom-get-prop (dom-query-by-id "t2") "value")) + (assert= (dom-get-prop (dom-query-by-id "t2") "value") "default") )) (deftest "can reset a text input to defaultValue" (hs-cleanup!) @@ -4934,7 +4951,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "hello" (dom-get-prop (dom-query-by-id "t3") "value")) + (assert= (dom-get-prop (dom-query-by-id "t3") "value") "hello") )) (deftest "can reset a checkbox" (hs-cleanup!) @@ -4969,7 +4986,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "original text" (dom-get-prop (dom-query-by-id "ta1") "value")) + (assert= (dom-get-prop (dom-query-by-id "ta1") "value") "original text") )) (deftest "can reset a select" (hs-cleanup!) @@ -4980,7 +4997,7 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "b" (dom-get-prop (dom-query-by-id "sel1") "value")) + (assert= (dom-get-prop (dom-query-by-id "sel1") "value") "b") )) (deftest "can reset multiple inputs" (hs-cleanup!) @@ -5139,7 +5156,7 @@ (dom-set-attr _el-out "id" "out") (dom-append (dom-body) _el-out) (dom-dispatch _el-button "click" nil) - (assert= "Hello" (dom-text-content (dom-query-by-id "out"))) + (assert= (dom-text-content (dom-query-by-id "out")) "Hello") )) ) @@ -5153,7 +5170,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch (dom-query-by-id "d1") "click" nil) - (assert= "ba" (dom-text-content (dom-query-by-id "d1"))) + (assert= (dom-text-content (dom-query-by-id "d1")) "ba") )) (deftest "can swap two properties" (hs-cleanup!) @@ -5167,8 +5184,8 @@ (dom-set-attr _el-b "id" "b") (dom-append (dom-body) _el-b) (dom-dispatch (dom-query-by-id "d1") "click" nil) - (assert= "world" (dom-text-content (dom-query-by-id "a"))) - (assert= "hello" (dom-text-content (dom-query-by-id "b"))) + (assert= (dom-text-content (dom-query-by-id "a")) "world") + (assert= (dom-text-content (dom-query-by-id "b")) "hello") )) (deftest "can swap array elements" (hs-cleanup!) @@ -5178,7 +5195,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch (dom-query-by-id "d1") "click" nil) - (assert= "3,2,1" (dom-text-content (dom-query-by-id "d1"))) + (assert= (dom-text-content (dom-query-by-id "d1")) "3,2,1") )) (deftest "can swap a variable with a property" (hs-cleanup!) @@ -5191,8 +5208,8 @@ (dom-set-attr _el-target "data-val" "x") (dom-append (dom-body) _el-target) (dom-dispatch (dom-query-by-id "d1") "click" nil) - (assert= "new" (dom-text-content (dom-query-by-id "d1"))) - (assert= "old" (dom-get-attr (dom-query-by-id "target") "data-val")) + (assert= (dom-text-content (dom-query-by-id "d1")) "new") + (assert= (dom-get-attr (dom-query-by-id "target") "data-val") "old") )) ) @@ -5925,9 +5942,9 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "1" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "1") (dom-dispatch _el-div "click" nil) - (assert= "2" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "2") )) (deftest "triggers multiple elements watching same variable" (hs-cleanup!) @@ -6038,7 +6055,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "clicked" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "clicked") )) (deftest "does not cross-trigger on unrelated variable writes" (hs-cleanup!) @@ -6066,11 +6083,11 @@ (dom-append (dom-body) _el-d2) (hs-activate! _el-d2) (dom-dispatch (dom-query-by-id "d1") "click" nil) - (assert= "A-clicked" (dom-text-content (dom-query-by-id "d1"))) - (assert= "B" (dom-text-content (dom-query-by-id "d2"))) + (assert= (dom-text-content (dom-query-by-id "d1")) "A-clicked") + (assert= (dom-text-content (dom-query-by-id "d2")) "B") (dom-dispatch (dom-query-by-id "d2") "click" nil) - (assert= "B-clicked" (dom-text-content (dom-query-by-id "d2"))) - (assert= "A-clicked" (dom-text-content (dom-query-by-id "d1"))) + (assert= (dom-text-content (dom-query-by-id "d2")) "B-clicked") + (assert= (dom-text-content (dom-query-by-id "d1")) "A-clicked") )) (deftest "handles NaN without infinite re-firing" (hs-cleanup!) @@ -6252,7 +6269,7 @@ (dom-set-attr _el-out "id" "out") (dom-append (dom-body) _el-out) (dom-dispatch _el-button "click" nil) - (assert= "original" (dom-text-content (dom-query-by-id "out"))) + (assert= (dom-text-content (dom-query-by-id "out")) "original") )) (deftest "rejected promise triggers catch block" (hs-cleanup!) @@ -6263,7 +6280,7 @@ (dom-set-attr _el-out "id" "out") (dom-append (dom-body) _el-out) (dom-dispatch _el-button "click" nil) - (assert= "boom" (dom-text-content (dom-query-by-id "out"))) + (assert= (dom-text-content (dom-query-by-id "out")) "boom") )) ) @@ -6313,7 +6330,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch (dom-query "span") "click" nil) - (assert= "42" (dom-text-content (dom-query "span"))) + (assert= (dom-text-content (dom-query "span")) "42") )) (deftest "child writes ^var and parent sees it" (hs-cleanup!) @@ -6323,7 +6340,7 @@ (hs-activate! _el-div) (dom-dispatch (dom-query "button") "click" nil) (dom-dispatch (dom-query "span") "click" nil) - (assert= "99" (dom-text-content (dom-query "span"))) + (assert= (dom-text-content (dom-query "span")) "99") )) (deftest "deeply nested child reads ^var from grandparent" (hs-cleanup!) @@ -6332,7 +6349,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch (dom-query "span") "click" nil) - (assert= "alice" (dom-text-content (dom-query "span"))) + (assert= (dom-text-content (dom-query "span")) "alice") )) (deftest "closest ancestor wins (shadowing)" (hs-cleanup!) @@ -6341,7 +6358,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch (dom-query "span") "click" nil) - (assert= "blue" (dom-text-content (dom-query "span"))) + (assert= (dom-text-content (dom-query "span")) "blue") )) (deftest "sibling subtrees have independent ^vars" (hs-cleanup!) @@ -6355,16 +6372,16 @@ (dom-append (dom-body) _el-b) (hs-activate! _el-b) (dom-dispatch (dom-query "#a span") "click" nil) - (assert= "A" (dom-text-content (dom-query "#a span"))) + (assert= (dom-text-content (dom-query "#a span")) "A") (dom-dispatch (dom-query "#b span") "click" nil) - (assert= "B" (dom-text-content (dom-query "#b span"))) + (assert= (dom-text-content (dom-query "#b span")) "B") )) (deftest "write to ^var not found anywhere creates on current element" (hs-cleanup!) (let ((_el-div (dom-create-element "div"))) (dom-append (dom-body) _el-div) (dom-dispatch (dom-query "button") "click" nil) - (assert= "created" (dom-text-content (dom-query "span"))) + (assert= (dom-text-content (dom-query "span")) "created") )) (deftest "child write updates the ancestor, not a local copy" (hs-cleanup!) @@ -6374,7 +6391,7 @@ (hs-activate! _el-div) (dom-dispatch (dom-query "button") "click" nil) (dom-dispatch (dom-query "span") "click" nil) - (assert= "10" (dom-text-content (dom-query "span"))) + (assert= (dom-text-content (dom-query "span")) "10") )) (deftest "increment works on inherited var" (hs-cleanup!) @@ -6386,7 +6403,7 @@ (dom-dispatch (dom-query "button") "click" nil) (dom-dispatch (dom-query "button") "click" nil) (dom-dispatch (dom-query "span") "click" nil) - (assert= "3" (dom-text-content (dom-query "span"))) + (assert= (dom-text-content (dom-query "span")) "3") )) (deftest "dom keyword works as scope modifier" (hs-cleanup!) @@ -6395,7 +6412,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch (dom-query "span") "click" nil) - (assert= "42" (dom-text-content (dom-query "span"))) + (assert= (dom-text-content (dom-query "span")) "42") )) (deftest "set ^var on explicit element" (hs-cleanup!) @@ -6404,7 +6421,7 @@ (dom-append (dom-body) _el-div) (dom-dispatch (dom-query "button") "click" nil) (dom-dispatch (dom-query "span") "click" nil) - (assert= "hello" (dom-text-content (dom-query "span"))) + (assert= (dom-text-content (dom-query "span")) "hello") )) (deftest "on clause targets a specific ancestor" (hs-cleanup!) @@ -6414,7 +6431,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch (dom-query "span") "click" nil) - (assert= "outer" (dom-text-content (dom-query "span"))) + (assert= (dom-text-content (dom-query "span")) "outer") )) (deftest "on clause with id reference" (hs-cleanup!) @@ -6429,7 +6446,7 @@ (hs-activate! _el-span) (dom-dispatch _el-button "click" nil) (dom-dispatch _el-span "click" nil) - (assert= "99" (dom-text-content _el-span)) + (assert= (dom-text-content _el-span) "99") )) (deftest "when reacts to ^var changes" (hs-cleanup!) @@ -6438,9 +6455,9 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch (dom-query "button") "click" nil) - (assert= "1" (dom-text-content (dom-query "output"))) + (assert= (dom-text-content (dom-query "output")) "1") (dom-dispatch (dom-query "button") "click" nil) - (assert= "2" (dom-text-content (dom-query "output"))) + (assert= (dom-text-content (dom-query "output")) "2") )) (deftest "always reacts to ^var changes" (hs-cleanup!) @@ -6457,8 +6474,8 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch (dom-query "button") "click" nil) - (assert= "blue" (dom-text-content (dom-query-by-id "a"))) - (assert= "blue" (dom-text-content (dom-query-by-id "b"))) + (assert= (dom-text-content (dom-query-by-id "a")) "blue") + (assert= (dom-text-content (dom-query-by-id "b")) "blue") )) (deftest "sibling subtrees react independently with ^var" (hs-cleanup!) @@ -6469,11 +6486,11 @@ (hs-activate! _el-a) (dom-dispatch (dom-query "#a button") "click" nil) (dom-dispatch (dom-query "#a button") "click" nil) - (assert= "2" (dom-text-content (dom-query "#a output"))) - (assert= "0" (dom-text-content (dom-query "#b output"))) + (assert= (dom-text-content (dom-query "#a output")) "2") + (assert= (dom-text-content (dom-query "#b output")) "0") (dom-dispatch (dom-query "#b button") "click" nil) - (assert= "1" (dom-text-content (dom-query "#b output"))) - (assert= "2" (dom-text-content (dom-query "#a output"))) + (assert= (dom-text-content (dom-query "#b output")) "1") + (assert= (dom-text-content (dom-query "#a output")) "2") )) (deftest "bind works with ^var" (hs-cleanup!) @@ -6506,9 +6523,9 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch (dom-query "button:text("same")") "click" nil) - (assert= "1" (dom-text-content (dom-query "output"))) + (assert= (dom-text-content (dom-query "output")) "1") (dom-dispatch (dom-query-by-id "diff") "click" nil) - (assert= "2" (dom-text-content (dom-query "output"))) + (assert= (dom-text-content (dom-query "output")) "2") )) ) @@ -6610,10 +6627,10 @@ (let ((_el-target (dom-create-element "div")) (_el-button (dom-create-element "button"))) (dom-set-attr _el-target "id" "target") (dom-append (dom-body) _el-target) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-button) (dom-dispatch _el-button "click" nil) - (assert= "new" (dom-text-content (dom-query-by-id "target"))) + (assert= (dom-text-content (dom-query-by-id "target")) "new") )) (deftest "set #id replaces element with another element" (hs-cleanup!) @@ -6630,7 +6647,7 @@ (let ((_el-list (dom-create-element "ul")) (_el-button (dom-create-element "button"))) (dom-set-attr _el-list "id" "list") (dom-append (dom-body) _el-list) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-button) (dom-dispatch _el-button "click" nil) )) @@ -6639,7 +6656,7 @@ (let ((_el-box (dom-create-element "div")) (_el-button (dom-create-element "button"))) (dom-set-attr _el-box "id" "box") (dom-append (dom-body) _el-box) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-button) (dom-dispatch _el-button "click" nil) )) @@ -6649,7 +6666,7 @@ (dom-add-class _el-div "wrapper") (dom-append (dom-body) _el-div) (dom-dispatch (dom-query "button") "click" nil) - (assert= "replaced" (dom-text-content (dom-query ".wrapper"))) + (assert= (dom-text-content (dom-query ".wrapper")) "replaced") )) (deftest "hyperscript in replacement content is initialized" (hs-cleanup!) @@ -6657,12 +6674,12 @@ (dom-set-attr _el-target "id" "target") (dom-append (dom-body) _el-target) (dom-set-attr _el-target1 "id" "target") - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-target1) (dom-dispatch (dom-query-by-id "go") "click" nil) - (assert= "new" (dom-text-content (dom-query-by-id "target"))) + (assert= (dom-text-content (dom-query-by-id "target")) "new") (dom-dispatch (dom-query-by-id "target") "click" nil) - (assert= "clicked" (dom-text-content (dom-query-by-id "target"))) + (assert= (dom-text-content (dom-query-by-id "target")) "clicked") )) (deftest "swap #a with #b swaps DOM positions" (hs-cleanup!) @@ -6683,17 +6700,17 @@ (dom-append (dom-body) _el-button) (hs-activate! _el-button) (dom-dispatch _el-button "click" nil) - (assert= "new" (dom-text-content (dom-query-by-id "target"))) + (assert= (dom-text-content (dom-query-by-id "target")) "new") )) ) ;; ── collectionExpressions (22 tests) ── (defsuite "hs-upstream-collectionExpressions" (deftest "filters an array by condition" - (assert= (list "a" "c") (eval-hs "set arr to [{name: \"a\", active: true}, {name: \"b\", active: false}, {name: \"c\", active: true}] then return arr where its active")) + (assert= (eval-hs "set arr to [{name: \"a\", active: true}, {name: \"b\", active: false}, {name: \"c\", active: true}] then return arr where its active") (list "a" "c")) ) (deftest "filters with comparison" - (assert= (list 4 5) (eval-hs "set arr to [1, 2, 3, 4, 5] then return arr where it > 3")) + (assert= (eval-hs "set arr to [1, 2, 3, 4, 5] then return arr where it > 3") (list 4 5)) ) (deftest "works with DOM elements" (hs-cleanup!) @@ -6706,34 +6723,34 @@ (dom-set-attr _el-out "id" "out") (dom-append (dom-body) _el-out) (dom-dispatch _el-button "click" nil) - (assert= "AC" (dom-text-content (dom-query-by-id "out"))) + (assert= (dom-text-content (dom-query-by-id "out")) "AC") )) (deftest "sorts by a property" - (assert= (list "Alice" "Bob" "Charlie") (eval-hs "set arr to [{name: \"Charlie\"}, {name: \"Alice\"}, {name: \"Bob\"}] then return arr sorted by its name")) + (assert= (eval-hs "set arr to [{name: \"Charlie\"}, {name: \"Alice\"}, {name: \"Bob\"}] then return arr sorted by its name") (list "Alice" "Bob" "Charlie")) ) (deftest "sorts descending" - (assert= (list 3 2 1) (eval-hs "set arr to [3, 1, 2] then return arr sorted by it descending")) + (assert= (eval-hs "set arr to [3, 1, 2] then return arr sorted by it descending") (list 3 2 1)) ) (deftest "sorts numbers by a computed key" - (assert= (list "a" "c" "b") (eval-hs "set arr to [{name: \"b\", age: 30}, {name: \"a\", age: 20}, {name: \"c\", age: 25}] then return arr sorted by its age")) + (assert= (eval-hs "set arr to [{name: \"b\", age: 30}, {name: \"a\", age: 20}, {name: \"c\", age: 25}] then return arr sorted by its age") (list "a" "c" "b")) ) (deftest "maps to a property" - (assert= (list "Alice" "Bob") (eval-hs "set arr to [{name: \"Alice\"}, {name: \"Bob\"}] then return arr mapped to its name")) + (assert= (eval-hs "set arr to [{name: \"Alice\"}, {name: \"Bob\"}] then return arr mapped to its name") (list "Alice" "Bob")) ) (deftest "maps with an expression" - (assert= (list 2 4 6) (eval-hs "set arr to [1, 2, 3] then return arr mapped to (it * 2)")) + (assert= (eval-hs "set arr to [1, 2, 3] then return arr mapped to (it * 2)") (list 2 4 6)) ) (deftest "where then mapped to" - (assert= (list "Alice" "Charlie") (eval-hs "set arr to [{name: \"Alice\", active: true}, {name: \"Bob\", active: false}, {name: \"Charlie\", active: true}] then return arr where its active mapped to its name")) + (assert= (eval-hs "set arr to [{name: \"Alice\", active: true}, {name: \"Bob\", active: false}, {name: \"Charlie\", active: true}] then return arr where its active mapped to its name") (list "Alice" "Charlie")) ) (deftest "sorted by then mapped to" - (assert= (list "Alice" "Charlie") (eval-hs "set arr to [{name: \"Charlie\", age: 30}, {name: \"Alice\", age: 20}] then return arr sorted by its age mapped to its name")) + (assert= (eval-hs "set arr to [{name: \"Charlie\", age: 30}, {name: \"Alice\", age: 20}] then return arr sorted by its age mapped to its name") (list "Alice" "Charlie")) ) (deftest "where then sorted by then mapped to" - (assert= (list "Bob" "Charlie") (eval-hs "set arr to [{name: \"Charlie\", active: true, age: 30}, {name: \"Alice\", active: false, age: 20}, {name: \"Bob\", active: true, age: 25}] then return arr where its active sorted by its age mapped to its name")) + (assert= (eval-hs "set arr to [{name: \"Charlie\", active: true, age: 30}, {name: \"Alice\", active: false, age: 20}, {name: \"Bob\", active: true, age: 25}] then return arr where its active sorted by its age mapped to its name") (list "Bob" "Charlie")) ) (deftest "the result inside where refers to previous command result, not current element" - (assert= (list 4 5) (eval-hs "get 3 then set arr to [1, 2, 3, 4, 5] then return arr where it > the result")) + (assert= (eval-hs "get 3 then set arr to [1, 2, 3, 4, 5] then return arr where it > the result") (list 4 5)) ) (deftest "where binds after in without parens" (hs-cleanup!) @@ -6760,23 +6777,23 @@ (let ((_el-box (dom-create-element "div")) (_el-button (dom-create-element "button")) (_el-b2 (dom-create-element "button"))) (dom-set-attr _el-box "id" "box") (dom-append (dom-body) _el-box) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-button) (dom-set-attr _el-b2 "id" "b2") - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-b2) (dom-dispatch (dom-query-by-id "b2") "click" nil) - (assert= "2" (dom-text-content (dom-query-by-id "b2"))) + (assert= (dom-text-content (dom-query-by-id "b2")) "2") )) (deftest "where in init followed by on feature" (hs-cleanup!) (let ((_el-box (dom-create-element "div")) (_el-button (dom-create-element "button"))) (dom-set-attr _el-box "id" "box") (dom-append (dom-body) _el-box) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-button) (dom-dispatch _el-button "click" nil) - (assert= "1" (dom-text-content _el-button)) + (assert= (dom-text-content _el-button) "1") )) (deftest "where in component init followed by on feature" (hs-cleanup!) @@ -6789,7 +6806,7 @@ (hs-activate! _el-template) (dom-append (dom-body) _el-test-where-comp) (dom-dispatch _el-test-where-comp "click" nil) - (assert= "1" (dom-text-content _el-test-where-comp)) + (assert= (dom-text-content _el-test-where-comp) "1") )) (deftest "where with is not me in component template" (hs-cleanup!) @@ -6815,25 +6832,25 @@ ;; ── splitJoin (7 tests) ── (defsuite "hs-upstream-splitJoin" (deftest "splits a string by delimiter" - (assert= (list "a" "b" "c") (eval-hs "return \"a,b,c\" split by \",\"")) + (assert= (eval-hs "return \"a,b,c\" split by \",\"") (list "a" "b" "c")) ) (deftest "splits by whitespace" - (assert= (list "hello" "world") (eval-hs "return \"hello world\" split by \" \"")) + (assert= (eval-hs "return \"hello world\" split by \" \"") (list "hello" "world")) ) (deftest "joins an array with delimiter" - (assert= "a, b, c" (eval-hs "return [\"a\", \"b\", \"c\"] joined by \", \"")) + (assert= (eval-hs "return [\"a\", \"b\", \"c\"] joined by \", \"") "a, b, c") ) (deftest "joins with empty string" - (assert= "xyz" (eval-hs "return [\"x\", \"y\", \"z\"] joined by \"\"")) + (assert= (eval-hs "return [\"x\", \"y\", \"z\"] joined by \"\"") "xyz") ) (deftest "split then where then joined" - (assert= "a-b-c" (eval-hs "return \"a,,b,,c\" split by \",\" where it is not \"\" joined by \"-\"")) + (assert= (eval-hs "return \"a,,b,,c\" split by \",\" where it is not \"\" joined by \"-\"") "a-b-c") ) (deftest "split then sorted then joined" - (assert= "apple, banana, cherry" (eval-hs "return \"banana,apple,cherry\" split by \",\" sorted by it joined by \", \"")) + (assert= (eval-hs "return \"banana,apple,cherry\" split by \",\" sorted by it joined by \", \"") "apple, banana, cherry") ) (deftest "split then mapped then joined" - (assert= "5,5" (eval-hs "return \"hello world\" split by \" \" mapped to its length joined by \",\"")) + (assert= (eval-hs "return \"hello world\" split by \" \" mapped to its length joined by \",\"") "5,5") ) ) @@ -7025,19 +7042,19 @@ (hs-cleanup!) (let ((_el-d1 (dom-create-element "div"))) (dom-set-attr _el-d1 "id" "d1") - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-d1) (dom-dispatch (dom-query-by-id "d1") "click" nil) - (assert= "bar" (dom-text-content (dom-query-by-id "d1"))) + (assert= (dom-text-content (dom-query-by-id "d1")) "bar") )) (deftest "can default of-expression properties" (hs-cleanup!) (let ((_el-d1 (dom-create-element "div"))) (dom-set-attr _el-d1 "id" "d1") - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-d1) (dom-dispatch (dom-query-by-id "d1") "click" nil) - (assert= "bar" (dom-text-content (dom-query-by-id "d1"))) + (assert= (dom-text-content (dom-query-by-id "d1")) "bar") )) (deftest "can default array elements" (hs-cleanup!) @@ -7046,7 +7063,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "yes" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "yes") )) (deftest "default array element respects existing value" (hs-cleanup!) @@ -7055,7 +7072,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "existing" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "existing") )) (deftest "default preserves zero" (hs-cleanup!) @@ -7064,7 +7081,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "0" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "0") )) (deftest "default overwrites empty string" (hs-cleanup!) @@ -7073,7 +7090,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "fallback" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "fallback") )) (deftest "default preserves false" (hs-cleanup!) @@ -7082,7 +7099,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "false" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "false") )) (deftest "can default style ref when unset" (hs-cleanup!) @@ -7091,7 +7108,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "" (dom-get-style _el-div "background-color")) + (assert= (dom-get-style _el-div "background-color") "") )) (deftest "default style ref preserves existing value" (hs-cleanup!) @@ -7101,7 +7118,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "" (dom-get-style _el-div "color")) + (assert= (dom-get-style _el-div "color") "") )) ) @@ -7114,7 +7131,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "boom" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "boom") )) ) @@ -7184,7 +7201,7 @@ (deftest "the result in a when clause refers to previous command result, not element being tested" (hs-cleanup!) (let ((_el-div (dom-create-element "div")) (_el-s1 (dom-create-element "span")) (_el-s2 (dom-create-element "span"))) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-div) (dom-set-attr _el-s1 "id" "s1") (dom-set-attr _el-s1 "style" "display:none") @@ -7199,7 +7216,7 @@ (deftest "the result after show...when is the matched elements" (hs-cleanup!) (let ((_el-div (dom-create-element "div")) (_el-p (dom-create-element "p")) (_el-p2 (dom-create-element "p")) (_el-out (dom-create-element "span"))) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-div) (dom-set-attr _el-p "style" "display:none") (dom-append (dom-body) _el-p) @@ -7208,7 +7225,7 @@ (dom-set-attr _el-out "id" "out") (dom-append (dom-body) _el-out) (dom-dispatch _el-div "click" nil) - (assert= "some" (dom-text-content (dom-query-by-id "out"))) + (assert= (dom-text-content (dom-query-by-id "out")) "some") )) ) @@ -7339,7 +7356,7 @@ (dom-append (dom-body) _el-div) (hs-activate! _el-div) (dom-dispatch _el-div "click" nil) - (assert= "clicked" (dom-text-content _el-div)) + (assert= (dom-text-content _el-div) "clicked") )) (deftest "recovers across feature boundaries and reports all errors" (hs-cleanup!) @@ -7364,7 +7381,7 @@ (let ((_el-div (dom-create-element "div"))) (dom-append (dom-body) _el-div) (dom-dispatch (dom-query-by-id "d2") "click" nil) - (assert= "clicked" (dom-text-content (dom-query-by-id "d2"))) + (assert= (dom-text-content (dom-query-by-id "d2")) "clicked") )) (deftest "_hyperscript() evaluate API still throws on first error" (error "NOT IMPLEMENTED: test HTML could not be parsed into SX")) @@ -7383,31 +7400,31 @@ (hs-activate! _el-d1) (dom-dispatch (dom-query-by-id "d1") "click" nil) (dom-dispatch (dom-query-by-id "d1") "click" nil) - (assert= "10" (dom-get-attr (dom-query-by-id "d1") "out")) + (assert= (dom-get-attr (dom-query-by-id "d1") "out") "10") )) ) ;; ── asExpression (17 tests) ── (defsuite "hs-upstream-asExpression" (deftest "converts value as Boolean" - (assert= true (eval-hs "1 as Boolean")) - (assert= false (eval-hs "0 as Boolean")) - (assert= false (eval-hs "'' as Boolean")) - (assert= true (eval-hs "'hello' as Boolean")) + (assert= (eval-hs "1 as Boolean") true) + (assert= (eval-hs "0 as Boolean") false) + (assert= (eval-hs "'' as Boolean") false) + (assert= (eval-hs "'hello' as Boolean") true) ) (deftest "can use the a modifier if you like" (error "NOT IMPLEMENTED: test HTML could not be parsed into SX")) (deftest "parses string as JSON to object" - (assert= "bar" (eval-hs "'{\"foo\":\"bar\"}' as JSON")) + (assert= (eval-hs "'{\"foo\":\"bar\"}' as JSON") "bar") ) (deftest "converts value as JSONString" - (assert= "{"foo":"bar"}" (eval-hs "{foo:'bar'} as JSONString")) + (assert= (eval-hs "{foo:'bar'} as JSONString") "{"foo":"bar"}") ) (deftest "pipe operator chains conversions" - (assert= "bar" (eval-hs "{foo:'bar'} as JSONString | JSON")) + (assert= (eval-hs "{foo:'bar'} as JSONString | JSON") "bar") ) (deftest "can use the an modifier if you'd like" - (assert= "bar" (eval-hs "'{\"foo\":\"bar\"}' as an Object")) + (assert= (eval-hs "'{\"foo\":\"bar\"}' as an Object") "bar") ) (deftest "collects duplicate text inputs into an array" (error "NOT IMPLEMENTED: test HTML could not be parsed into SX")) @@ -7439,8 +7456,10 @@ (hs-cleanup!) (let ((_el-arDiv (dom-create-element "div"))) (dom-set-attr _el-arDiv "id" "arDiv") - ;; HS source has bare quotes — HTML parse artifact + (dom-set-attr _el-arDiv "_" "on click set my @data-foo to \"blue\"") + (dom-set-attr _el-arDiv "data-foo" "red") (dom-append (dom-body) _el-arDiv) + (hs-activate! _el-arDiv) (dom-dispatch (dom-query-by-id "arDiv") "click" nil) )) ) @@ -7460,7 +7479,7 @@ (let ((_el-table (dom-create-element "table"))) (dom-append (dom-body) _el-table) (dom-dispatch (dom-query-by-id "master") "click" nil) - (assert= "2" (dom-text-content (dom-query-by-id "out"))) + (assert= (dom-text-content (dom-query-by-id "out")) "2") )) (deftest "closest with to modifier still works after parse change" (hs-cleanup!) @@ -7480,7 +7499,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch (dom-query-by-id "d1") "click" nil) - (assert= "yes" (dom-text-content (dom-query-by-id "d1"))) + (assert= (dom-text-content (dom-query-by-id "d1")) "yes") )) (deftest "is a Node works via instanceof" (hs-cleanup!) @@ -7490,7 +7509,7 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch (dom-query-by-id "d1") "click" nil) - (assert= "yes" (dom-text-content (dom-query-by-id "d1"))) + (assert= (dom-text-content (dom-query-by-id "d1")) "yes") )) (deftest "is not a works with instanceof fallback" (hs-cleanup!) @@ -7500,89 +7519,89 @@ (dom-append (dom-body) _el-d1) (hs-activate! _el-d1) (dom-dispatch (dom-query-by-id "d1") "click" nil) - (assert= "yes" (dom-text-content (dom-query-by-id "d1"))) + (assert= (dom-text-content (dom-query-by-id "d1")) "yes") )) (deftest "is ignoring case works" - (assert= true (eval-hs "'Hello' is 'hello' ignoring case")) - (assert= true (eval-hs "'Hello' is 'HELLO' ignoring case")) - (assert= false (eval-hs "'Hello' is 'world' ignoring case")) + (assert= (eval-hs "'Hello' is 'hello' ignoring case") true) + (assert= (eval-hs "'Hello' is 'HELLO' ignoring case") true) + (assert= (eval-hs "'Hello' is 'world' ignoring case") false) ) (deftest "is not ignoring case works" - (assert= true (eval-hs "'Hello' is not 'world' ignoring case")) - (assert= false (eval-hs "'Hello' is not 'hello' ignoring case")) + (assert= (eval-hs "'Hello' is not 'world' ignoring case") true) + (assert= (eval-hs "'Hello' is not 'hello' ignoring case") false) ) (deftest "contains ignoring case works" - (assert= true (eval-hs "'Hello World' contains 'hello' ignoring case")) - (assert= true (eval-hs "'Hello World' contains 'WORLD' ignoring case")) - (assert= false (eval-hs "'Hello World' contains 'missing' ignoring case")) + (assert= (eval-hs "'Hello World' contains 'hello' ignoring case") true) + (assert= (eval-hs "'Hello World' contains 'WORLD' ignoring case") true) + (assert= (eval-hs "'Hello World' contains 'missing' ignoring case") false) ) (deftest "matches ignoring case works" - (assert= true (eval-hs "'Hello' matches 'hello' ignoring case")) - (assert= true (eval-hs "'Hello' matches 'HELLO' ignoring case")) + (assert= (eval-hs "'Hello' matches 'hello' ignoring case") true) + (assert= (eval-hs "'Hello' matches 'HELLO' ignoring case") true) ) (deftest "starts with works" - (assert= true (eval-hs "'hello world' starts with 'hello'")) - (assert= false (eval-hs "'hello world' starts with 'world'")) - (assert= true (eval-hs "'hello' starts with 'hello'")) - (assert= false (eval-hs "'' starts with 'x'")) + (assert= (eval-hs "'hello world' starts with 'hello'") true) + (assert= (eval-hs "'hello world' starts with 'world'") false) + (assert= (eval-hs "'hello' starts with 'hello'") true) + (assert= (eval-hs "'' starts with 'x'") false) ) (deftest "ends with works" - (assert= true (eval-hs "'hello world' ends with 'world'")) - (assert= false (eval-hs "'hello world' ends with 'hello'")) - (assert= true (eval-hs "'hello' ends with 'hello'")) - (assert= false (eval-hs "'' ends with 'x'")) + (assert= (eval-hs "'hello world' ends with 'world'") true) + (assert= (eval-hs "'hello world' ends with 'hello'") false) + (assert= (eval-hs "'hello' ends with 'hello'") true) + (assert= (eval-hs "'' ends with 'x'") false) ) (deftest "does not start with works" - (assert= false (eval-hs "'hello world' does not start with 'hello'")) - (assert= true (eval-hs "'hello world' does not start with 'world'")) + (assert= (eval-hs "'hello world' does not start with 'hello'") false) + (assert= (eval-hs "'hello world' does not start with 'world'") true) ) (deftest "does not end with works" - (assert= false (eval-hs "'hello world' does not end with 'world'")) - (assert= true (eval-hs "'hello world' does not end with 'hello'")) + (assert= (eval-hs "'hello world' does not end with 'world'") false) + (assert= (eval-hs "'hello world' does not end with 'hello'") true) ) (deftest "starts with null is false" - (assert= false (eval-hs "null starts with 'x'")) - (assert= true (eval-hs "null does not start with 'x'")) + (assert= (eval-hs "null starts with 'x'") false) + (assert= (eval-hs "null does not start with 'x'") true) ) (deftest "ends with null is false" - (assert= false (eval-hs "null ends with 'x'")) - (assert= true (eval-hs "null does not end with 'x'")) + (assert= (eval-hs "null ends with 'x'") false) + (assert= (eval-hs "null does not end with 'x'") true) ) (deftest "starts with ignoring case works" - (assert= true (eval-hs "'Hello World' starts with 'hello' ignoring case")) - (assert= true (eval-hs "'Hello World' starts with 'HELLO' ignoring case")) - (assert= false (eval-hs "'Hello World' starts with 'world' ignoring case")) + (assert= (eval-hs "'Hello World' starts with 'hello' ignoring case") true) + (assert= (eval-hs "'Hello World' starts with 'HELLO' ignoring case") true) + (assert= (eval-hs "'Hello World' starts with 'world' ignoring case") false) ) (deftest "ends with ignoring case works" - (assert= true (eval-hs "'Hello World' ends with 'world' ignoring case")) - (assert= true (eval-hs "'Hello World' ends with 'WORLD' ignoring case")) - (assert= false (eval-hs "'Hello World' ends with 'hello' ignoring case")) + (assert= (eval-hs "'Hello World' ends with 'world' ignoring case") true) + (assert= (eval-hs "'Hello World' ends with 'WORLD' ignoring case") true) + (assert= (eval-hs "'Hello World' ends with 'hello' ignoring case") false) ) (deftest "starts with coerces to string" - (assert= true (eval-hs "123 starts with '12'")) - (assert= false (eval-hs "123 starts with '23'")) + (assert= (eval-hs "123 starts with '12'") true) + (assert= (eval-hs "123 starts with '23'") false) ) (deftest "ends with coerces to string" - (assert= true (eval-hs "123 ends with '23'")) - (assert= false (eval-hs "123 ends with '12'")) + (assert= (eval-hs "123 ends with '23'") true) + (assert= (eval-hs "123 ends with '12'") false) ) (deftest "is between works" - (assert= true (eval-hs "5 is between 1 and 10")) - (assert= true (eval-hs "1 is between 1 and 10")) - (assert= true (eval-hs "10 is between 1 and 10")) - (assert= false (eval-hs "0 is between 1 and 10")) - (assert= false (eval-hs "11 is between 1 and 10")) + (assert= (eval-hs "5 is between 1 and 10") true) + (assert= (eval-hs "1 is between 1 and 10") true) + (assert= (eval-hs "10 is between 1 and 10") true) + (assert= (eval-hs "0 is between 1 and 10") false) + (assert= (eval-hs "11 is between 1 and 10") false) ) (deftest "is not between works" - (assert= false (eval-hs "5 is not between 1 and 10")) - (assert= true (eval-hs "0 is not between 1 and 10")) - (assert= true (eval-hs "11 is not between 1 and 10")) - (assert= false (eval-hs "1 is not between 1 and 10")) - (assert= false (eval-hs "10 is not between 1 and 10")) + (assert= (eval-hs "5 is not between 1 and 10") false) + (assert= (eval-hs "0 is not between 1 and 10") true) + (assert= (eval-hs "11 is not between 1 and 10") true) + (assert= (eval-hs "1 is not between 1 and 10") false) + (assert= (eval-hs "10 is not between 1 and 10") false) ) (deftest "between works with strings" - (assert= true (eval-hs "'b' is between 'a' and 'c'")) - (assert= false (eval-hs "'d' is between 'a' and 'c'")) + (assert= (eval-hs "'b' is between 'a' and 'c'") true) + (assert= (eval-hs "'d' is between 'a' and 'c'") false) ) (deftest "I am between works" (error "NOT IMPLEMENTED: test HTML could not be parsed into SX")) @@ -7625,47 +7644,47 @@ (dom-append (dom-body) _el-b) )) (deftest "precedes with null is false" - (assert= false (eval-hs "null precedes null")) - (assert= true (eval-hs "null does not precede null")) + (assert= (eval-hs "null precedes null") false) + (assert= (eval-hs "null does not precede null") true) ) (deftest "I precede works" (hs-cleanup!) (let ((_el-a (dom-create-element "div")) (_el-b (dom-create-element "div"))) (dom-set-attr _el-a "id" "a") - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-a) (dom-set-attr _el-b "id" "b") (dom-append (dom-body) _el-b) (dom-dispatch (dom-query-by-id "a") "click" nil) - (assert= "yes" (dom-text-content (dom-query-by-id "a"))) + (assert= (dom-text-content (dom-query-by-id "a")) "yes") )) (deftest "is really works without equal to" - (assert= true (eval-hs "2 is really 2")) - (assert= false (eval-hs "2 is really '2'")) + (assert= (eval-hs "2 is really 2") true) + (assert= (eval-hs "2 is really '2'") false) ) (deftest "is not really works without equal to" - (assert= true (eval-hs "2 is not really '2'")) - (assert= false (eval-hs "2 is not really 2")) + (assert= (eval-hs "2 is not really '2'") true) + (assert= (eval-hs "2 is not really 2") false) ) (deftest "is equal works without to" - (assert= true (eval-hs "2 is equal 2")) - (assert= false (eval-hs "2 is equal 1")) + (assert= (eval-hs "2 is equal 2") true) + (assert= (eval-hs "2 is equal 1") false) ) (deftest "is not equal works without to" - (assert= false (eval-hs "2 is not equal 2")) - (assert= true (eval-hs "2 is not equal 1")) + (assert= (eval-hs "2 is not equal 2") false) + (assert= (eval-hs "2 is not equal 1") true) ) (deftest "am works as alias for is" - (assert= true (eval-hs "2 am 2")) - (assert= false (eval-hs "2 am 1")) + (assert= (eval-hs "2 am 2") true) + (assert= (eval-hs "2 am 1") false) ) (deftest "is not undefined still works as equality" - (assert= true (eval-hs "5 is not undefined")) - (assert= false (eval-hs "null is not undefined")) + (assert= (eval-hs "5 is not undefined") true) + (assert= (eval-hs "null is not undefined") false) ) (deftest "is not null still works as equality" - (assert= true (eval-hs "5 is not null")) - (assert= false (eval-hs "null is not null")) + (assert= (eval-hs "5 is not null") true) + (assert= (eval-hs "null is not null") false) ) (deftest "is falls back to boolean property when rhs is undefined" (hs-cleanup!) @@ -7725,7 +7744,7 @@ ;; ── in (1 tests) ── (defsuite "hs-upstream-in" (deftest "null value in array returns empty" - (assert= (list) (eval-hs "null in [1, 2, 3]")) + (assert= (eval-hs "null in [1, 2, 3]") (list)) ) ) @@ -7742,47 +7761,47 @@ ;; ── mathOperator (5 tests) ── (defsuite "hs-upstream-mathOperator" (deftest "array + array concats" - (assert= (list 1 2 3 4) (eval-hs "[1, 2] + [3, 4]")) + (assert= (eval-hs "[1, 2] + [3, 4]") (list 1 2 3 4)) ) (deftest "array + single value appends" - (assert= (list 1 2 3) (eval-hs "[1, 2] + 3")) + (assert= (eval-hs "[1, 2] + 3") (list 1 2 3)) ) (deftest "array + array does not mutate original" - (assert= (list 1 2) (eval-hs "set a to [1, 2] then set b to a + [3] then return a")) + (assert= (eval-hs "set a to [1, 2] then set b to a + [3] then return a") (list 1 2)) ) (deftest "array concat chains" - (assert= (list 1 2 3) (eval-hs "[1] + [2] + [3]")) + (assert= (eval-hs "[1] + [2] + [3]") (list 1 2 3)) ) (deftest "empty array + array works" - (assert= (list 1 2) (eval-hs "[] + [1, 2]")) + (assert= (eval-hs "[] + [1, 2]") (list 1 2)) ) ) ;; ── no (5 tests) ── (defsuite "hs-upstream-no" (deftest "no returns false for non-empty array" - (assert= false (eval-hs "no ['thing']")) + (assert= (eval-hs "no ['thing']") false) ) (deftest "no with where filters then checks emptiness" - (assert= true (eval-hs "no [1, 2, 3] where it > 5")) + (assert= (eval-hs "no [1, 2, 3] where it > 5") true) ) (deftest "no with where returns false when matches exist" - (assert= false (eval-hs "no [1, 2, 3] where it > 1")) + (assert= (eval-hs "no [1, 2, 3] where it > 1") false) ) (deftest "no with where and is not" - (assert= false (eval-hs "no [1, 2, 3] where it is not 2")) + (assert= (eval-hs "no [1, 2, 3] where it is not 2") false) ) (deftest "no with where on DOM elements" (hs-cleanup!) (let ((_el-box (dom-create-element "div")) (_el-button (dom-create-element "button")) (_el-out (dom-create-element "div"))) (dom-set-attr _el-box "id" "box") (dom-append (dom-body) _el-box) - ;; HS source has bare quotes — HTML parse artifact + ;; HS source has bare quotes or embedded HTML (dom-append (dom-body) _el-button) (dom-set-attr _el-out "id" "out") (dom-append (dom-body) _el-out) (dom-dispatch _el-button "click" nil) - (assert= "none" (dom-text-content (dom-query-by-id "out"))) + (assert= (dom-text-content (dom-query-by-id "out")) "none") )) ) diff --git a/tests/playwright/generate-sx-tests.py b/tests/playwright/generate-sx-tests.py index e8fdfce0..83dd8957 100644 --- a/tests/playwright/generate-sx-tests.py +++ b/tests/playwright/generate-sx-tests.py @@ -305,14 +305,14 @@ def check_to_sx(check, ref): return f'(assert (not (dom-has-class? {r} "{key}")))' elif typ == 'innerHTML': escaped = key.replace('"', '\\"') if isinstance(key, str) else key - return f'(assert= "{escaped}" (dom-inner-html {r}))' + return f'(assert= (dom-inner-html {r}) "{escaped}")' elif typ == 'textContent': escaped = key.replace('"', '\\"') - return f'(assert= "{escaped}" (dom-text-content {r}))' + return f'(assert= (dom-text-content {r}) "{escaped}")' elif typ == 'style': - return f'(assert= "{val}" (dom-get-style {r} "{key}"))' + return f'(assert= (dom-get-style {r} "{key}") "{val}")' elif typ == 'attr': - return f'(assert= "{val}" (dom-get-attr {r} "{key}"))' + return f'(assert= (dom-get-attr {r} "{key}") "{val}")' elif typ == 'hasAttr' and val: return f'(assert (dom-has-attr? {r} "{key}"))' elif typ == 'hasAttr' and not val: @@ -324,7 +324,7 @@ def check_to_sx(check, ref): elif typ == 'hasParent': return f'(assert (not (nil? (dom-parent {r}))))' elif typ == 'value': - return f'(assert= "{key}" (dom-get-prop {r} "value"))' + return f'(assert= (dom-get-prop {r} "value") "{key}")' else: return f';; SKIP check: {typ} {name}' @@ -365,16 +365,16 @@ def pw_assertion_to_sx(target, negated, assert_type, args_str): val = args[0] if args else '' escaped = val.replace('\\', '\\\\').replace('"', '\\"') if negated: - return f'(assert (!= "{escaped}" (dom-text-content {target})))' - return f'(assert= "{escaped}" (dom-text-content {target}))' + return f'(assert (!= (dom-text-content {target}) "{escaped}"))' + return f'(assert= (dom-text-content {target}) "{escaped}")' elif assert_type == 'toHaveAttribute': attr_name = args[0] if args else '' if len(args) >= 2: attr_val = args[1].replace('\\', '\\\\').replace('"', '\\"') if negated: - return f'(assert (!= "{attr_val}" (dom-get-attr {target} "{attr_name}")))' - return f'(assert= "{attr_val}" (dom-get-attr {target} "{attr_name}"))' + return f'(assert (!= (dom-get-attr {target} "{attr_name}") "{attr_val}"))' + return f'(assert= (dom-get-attr {target} "{attr_name}") "{attr_val}")' else: if negated: return f'(assert (not (dom-has-attr? {target} "{attr_name}")))' @@ -396,15 +396,15 @@ def pw_assertion_to_sx(target, negated, assert_type, args_str): val = args[1] if len(args) >= 2 else '' escaped = val.replace('\\', '\\\\').replace('"', '\\"') if negated: - return f'(assert (!= "{escaped}" (dom-get-style {target} "{prop}")))' - return f'(assert= "{escaped}" (dom-get-style {target} "{prop}"))' + return f'(assert (!= (dom-get-style {target} "{prop}") "{escaped}"))' + return f'(assert= (dom-get-style {target} "{prop}") "{escaped}")' elif assert_type == 'toHaveValue': val = args[0] if args else '' escaped = val.replace('\\', '\\\\').replace('"', '\\"') if negated: - return f'(assert (!= "{escaped}" (dom-get-prop {target} "value")))' - return f'(assert= "{escaped}" (dom-get-prop {target} "value"))' + return f'(assert (!= (dom-get-prop {target} "value") "{escaped}"))' + return f'(assert= (dom-get-prop {target} "value") "{escaped}")' elif assert_type == 'toBeVisible': if negated: @@ -505,12 +505,16 @@ def emit_element_setup(lines, elements, var_names): hs_val = re.sub(r'(then\s*)+then', 'then', hs_val) # Don't insert 'then' between event name and first command in 'on' handlers hs_val = re.sub(r'\bon (\w[\w.:+-]*) then\b', r'on \1 ', hs_val) + # Don't insert 'then' inside for-in loop bodies (between collection and body) + hs_val = re.sub(r'(\bin \[.*?\]) then\b', r'\1 ', hs_val) + # Don't insert 'then' after 'times' in repeat N times loops + hs_val = re.sub(r'\btimes then\b', 'times ', hs_val) hs_val = hs_val.strip() if not hs_val: lines.append(f' (dom-append (dom-body) {var})') continue - if hs_val.startswith('"') or hs_val.endswith('"'): - lines.append(f' ;; HS source has bare quotes — HTML parse artifact') + if hs_val.startswith('"') or (hs_val.endswith('"') and '<' in hs_val): + lines.append(f' ;; HS source has bare quotes or embedded HTML') lines.append(f' (dom-append (dom-body) {var})') continue hs_escaped = hs_val.replace('\\', '\\\\').replace('"', '\\"') @@ -657,7 +661,7 @@ def generate_eval_only_test(test, idx): ): hs_expr = extract_hs_expr(m.group(2)) expected_sx = js_val_to_sx(m.group(3)) - assertions.append(f' (assert= {expected_sx} (eval-hs "{hs_expr}"))') + assertions.append(f' (assert= (eval-hs "{hs_expr}") {expected_sx})') # Pattern 1b: Inline — run("expr").toEqual([...]) for m in re.finditer( @@ -666,7 +670,7 @@ def generate_eval_only_test(test, idx): ): hs_expr = extract_hs_expr(m.group(2)) expected_sx = js_val_to_sx(m.group(3)) - assertions.append(f' (assert= {expected_sx} (eval-hs "{hs_expr}"))') + assertions.append(f' (assert= (eval-hs "{hs_expr}") {expected_sx})') # Pattern 2: Two-line — var result = await run(`expr`); expect(result).toBe(val) if not assertions: @@ -678,10 +682,10 @@ def generate_eval_only_test(test, idx): hs_expr = extract_hs_expr(run_match.group(2)) for m in re.finditer(r'\.toBe\(([^)]+)\)', body): expected_sx = js_val_to_sx(m.group(1)) - assertions.append(f' (assert= {expected_sx} (eval-hs "{hs_expr}"))') + assertions.append(f' (assert= (eval-hs "{hs_expr}") {expected_sx})') for m in re.finditer(r'\.toEqual\((\[.*?\])\)', body, re.DOTALL): expected_sx = js_val_to_sx(m.group(1)) - assertions.append(f' (assert= {expected_sx} (eval-hs "{hs_expr}"))') + assertions.append(f' (assert= (eval-hs "{hs_expr}") {expected_sx})') # Pattern 3: toThrow — expect(() => run("expr")).toThrow() for m in re.finditer(