aboutsummaryrefslogtreecommitdiff
path: root/luxc/src/lux/reader.clj
diff options
context:
space:
mode:
authorEduardo Julian2018-01-28 12:55:27 -0400
committerEduardo Julian2018-01-28 12:55:27 -0400
commit04ec239d095b0e1f62a9f1261587b5bfbc6fb457 (patch)
tree819ef38ab8786f3c7f8aa28e188146aeb7317646 /luxc/src/lux/reader.clj
parentfb14b2eb168377820b3af399c44dc2c4b6973f5a (diff)
- Fixed some parsing errors affecting JVM interface analysis/compilation.
Diffstat (limited to 'luxc/src/lux/reader.clj')
-rw-r--r--luxc/src/lux/reader.clj14
1 files changed, 14 insertions, 0 deletions
diff --git a/luxc/src/lux/reader.clj b/luxc/src/lux/reader.clj
index 6fea32c16..5f4aa8afe 100644
--- a/luxc/src/lux/reader.clj
+++ b/luxc/src/lux/reader.clj
@@ -63,6 +63,20 @@
(&/T [(&/T [file-name line-num column-num*]) line]))))
($No (str "[Reader Error] Pattern failed: " regex))))))
+(defn read-regex? [regex]
+ "(-> Regex (Reader (Maybe Text)))"
+ (with-line
+ (fn [file-name line-num column-num ^String line]
+ (if-let [^String match (re-find! regex column-num line)]
+ (let [match-length (.length match)
+ column-num* (+ column-num match-length)]
+ (if (= column-num* (.length line))
+ ($Done (&/T [(&/T [file-name line-num column-num]) true (&/$Some match)]))
+ ($Yes (&/T [(&/T [file-name line-num column-num]) false (&/$Some match)])
+ (&/T [(&/T [file-name line-num column-num*]) line]))))
+ ($Yes (&/T [(&/T [file-name line-num column-num]) false &/$None])
+ (&/T [(&/T [file-name line-num column-num]) line]))))))
+
(defn read-regex+ [regex]
(with-lines
(fn [reader]