Skip to content

Instantly share code, notes, and snippets.

@oskarkv
Created December 3, 2012 15:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oskarkv/4195917 to your computer and use it in GitHub Desktop.
Save oskarkv/4195917 to your computer and use it in GitHub Desktop.
(defmacro match-def [op name sub? kwargs?]
(with-gensyms [sub kwargs re input]
(let [args [re input]
args (if sub? (conj args sub) args)
args (if kwargs? (conj args kwargs) args)]
`(~op ~name ~args
(let [matches# (map :saved (regex-seq ~re ~input ~(if kwargs? kwargs {})))]
(mapv #(get-submatch ~input ~(if sub? sub 0) %)
matches#))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment