Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defn- re-clause-to-if [s [re bindings body] else]
- `(if-let [[~'_ ~@bindings] (re-find ~re ~s)]
- ~body
- ~else))
- (defn- re-clauses-to-ifs [s clauses]
- (when-first [clause clauses]
- (if (and (not (next clauses))
- (= (count clause) 1))
- (first clause)
- (re-clause-to-if s clause (re-clauses-to-ifs s (rest clauses))))))
- (defmacro cond-re [s & clauses]
- (re-clauses-to-ifs s (partition 3 3 nil clauses)))
- (defn parse-flag [s]
- (cond-re s
- #"^--([^=]+)=(.*)" [flag value] [flag value]
- #"^--(.*)" [flag] [flag nil]))
- (comment
- (parse-flag "--foo")
- => ["foo" nil]
- (parse-flag "--foo=bar")
- => ["foo" "bar"]
- )
Add Comment
Please, Sign In to add comment