[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master fd77961 25/60: Add a few simple API
From: |
Junpeng Qiu |
Subject: |
[elpa] master fd77961 25/60: Add a few simple API |
Date: |
Tue, 25 Oct 2016 17:45:14 +0000 (UTC) |
branch: master
commit fd7796141dc0a9d378a501a70d441967fbe0b094
Author: Junpeng Qiu <address@hidden>
Commit: Junpeng Qiu <address@hidden>
Add a few simple API
---
parsec.el | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/parsec.el b/parsec.el
index faf2614..d6283a0 100644
--- a/parsec.el
+++ b/parsec.el
@@ -105,6 +105,9 @@
(defalias 'parsec-eof 'parsec-eob)
+(defun parsec-eol-or-eof ()
+ (parsec-or (parsec-eol) (parsec-eof)))
+
(defun parsec-re (regexp)
(if (looking-at regexp)
(progn (goto-char (match-end 0))
@@ -112,9 +115,37 @@
(parsec-stop :expected regexp
:found (parsec-eof-or-char-as-string))))
+(defun parsec-make-alternatives (chars)
+ (let ((regex-head "")
+ (regex-str "")
+ (regex-end "")
+ contains-caret-p)
+ (dolist (c chars)
+ (cond
+ ((char-equal c ?\]) (setq regex-head "]"))
+ ((char-equal c ?-) (setq regex-end "-"))
+ ((char-equal c ?^) (setq contains-caret-p t))
+ (t (setq regex-str (concat regex-str (char-to-string c))))))
+ (if (and contains-caret-p
+ (string-equal regex-end "-")
+ (string-equal regex-head "")
+ (string-equal regex-str ""))
+ (setq regex-end "-^")
+ (setq regex-str (concat regex-str "^")))
+ (concat regex-head regex-str regex-end)))
+
+(defun parsec-one-of (&rest chars)
+ (parsec-re (format "[%s]" (parsec-make-alternatives chars))))
+
+(defun parsec-none-of (&rest chars)
+ (parsec-re (format "[^%s]" (parsec-make-alternatives chars))))
+
(defsubst parsec-str (str)
(parsec-re (regexp-quote str)))
+(defsubst parsec-string (str)
+ (mapc (lambda (c) (parsec-ch c)) str))
+
(defsubst parsec-num (num &rest args)
(parsec-re (regexp-quote (number-to-string num))))
- [elpa] master fb26929 34/60: Fix parsec-make-alternatives, (continued)
- [elpa] master fb26929 34/60: Fix parsec-make-alternatives, Junpeng Qiu, 2016/10/25
- [elpa] master 31388e6 52/60: Add -s aliases, Junpeng Qiu, 2016/10/25
- [elpa] master 34521c6 53/60: Update README about *-s functions, Junpeng Qiu, 2016/10/25
- [elpa] master 8f0c266 58/60: Add doc for parsec-peek(-p), Junpeng Qiu, 2016/10/25
- [elpa] master ffd42de 45/60: Use simple-csv-parser.el as a demo, Junpeng Qiu, 2016/10/25
- [elpa] master bf49fb6 38/60: Upate README, Junpeng Qiu, 2016/10/25
- [elpa] master 966ca9e 43/60: Add comments to parsec.el, Junpeng Qiu, 2016/10/25
- [elpa] master c61a38c 22/60: Add convenient newline methods, Junpeng Qiu, 2016/10/25
- [elpa] master 0c3408a 01/60: Init commit, Junpeng Qiu, 2016/10/25
- [elpa] master 1929932 02/60: Split into two files, Junpeng Qiu, 2016/10/25
- [elpa] master fd77961 25/60: Add a few simple API,
Junpeng Qiu <=
- [elpa] master 12d2ad6 24/60: Bug fixes, Junpeng Qiu, 2016/10/25
- [elpa] master adf4706 20/60: Add many-till, notFollowedBy and fix others, Junpeng Qiu, 2016/10/25
- [elpa] master 32809ad 30/60: Add parsec-error-new-2, Junpeng Qiu, 2016/10/25
- [elpa] master 3503e4a 13/60: Rename for easier understanding, Junpeng Qiu, 2016/10/25
- [elpa] master 4fb2abe 29/60: Update simple-csv-parser, Junpeng Qiu, 2016/10/25
- [elpa] master fa2e6f1 27/60: Add gitignore, Junpeng Qiu, 2016/10/25
- [elpa] master a06220c 42/60: Update README, Junpeng Qiu, 2016/10/25
- [elpa] master f7e8629 26/60: Add tests, Junpeng Qiu, 2016/10/25
- [elpa] master bc11325 50/60: Add file examples/.nosearch, Junpeng Qiu, 2016/10/25
- [elpa] master 1da4344 32/60: Update url-str-parser, Junpeng Qiu, 2016/10/25