HS parser: fix number+comparison keyword collision, eval-hs uses hs-compile
Parser: skip unit suffix when next ident is a comparison keyword (starts, ends, contains, matches, is, does, in, precedes, follows). Fixes "123 starts with '12'" returning "123starts" instead of true. eval-hs: use hs-compile directly instead of hs-to-sx-from-source with "return " prefix, which was causing the parser to consume the comparison as a string suffix. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -878,7 +878,7 @@ output.append(';; Evaluate a hyperscript expression and return its result.')
|
||||
output.append(';; Compiles the expression, wraps in a thunk, evaluates, returns result.')
|
||||
output.append('(define eval-hs')
|
||||
output.append(' (fn (src)')
|
||||
output.append(' (let ((sx (hs-to-sx-from-source (str "return " src))))')
|
||||
output.append(' (let ((sx (hs-to-sx (hs-compile src))))')
|
||||
output.append(' (let ((handler (eval-expr-cek')
|
||||
output.append(' (list (quote fn) (list (quote me)) (list (quote let) (list (list (quote it) nil) (list (quote event) nil)) sx)))))')
|
||||
output.append(' (handler nil)))))')
|
||||
|
||||
Reference in New Issue
Block a user