! Copyright (C) 2009 Daniel Ehrenberg ! See http://factorcode.org/license.txt for BSD license. USING: regexp sequences kernel regexp.negation regexp.ast accessors fry ; IN: regexp.combinators : ( -- regexp ) R/ (?~.*)/ ; : ( string -- regexp ) [ "\\Q" "\\E" surround ] [ ] bi make-regexp ; : ( regexps -- disjunction ) [ [ raw>> "(" ")" surround ] map "|" join ] [ [ parse-tree>> ] map ] bi make-regexp ; : ( strings -- regexp ) [ ] map ; : ( regexps -- regexp ) [ [ raw>> ] map concat ] [ [ parse-tree>> ] map ] bi make-regexp ; : modify-regexp ( regexp raw-quot tree-quot -- new-regexp ) [ '[ raw>> @ ] ] [ '[ parse-tree>> @ ] ] bi* bi make-regexp ; inline : ( regexp -- not-regexp ) [ "(?~" ")" surround ] [ ] modify-regexp ; : ( regexps -- conjunction ) [ ] map ; : ( regexp -- regexp* ) [ "(" ")*" surround ] [ ] modify-regexp ; : ( regexp -- regexp+ ) [ "(" ")+" surround ] [ ] modify-regexp ; :