lix/tests/lang
Eelco Dolstra 976df480c9 Add a primop for regular expression pattern matching
The function ‘builtins.match’ takes a POSIX extended regular
expression and an arbitrary string. It returns ‘null’ if the string
does not match the regular expression. Otherwise, it returns a list
containing substring matches corresponding to parenthesis groups in
the regex. The regex must match the entire string (i.e. there is an
implied "^<pat>$" around the regex).  For example:

  match "foo" "foobar" => null
  match "foo" "foo" => []
  match "f(o+)(.*)" "foooobar" => ["oooo" "bar"]
  match "(.*/)?([^/]*)" "/dir/file.nix" => ["/dir/" "file.nix"]
  match "(.*/)?([^/]*)" "file.nix" => [null "file.nix"]

The following example finds all regular files with extension .nix or
.patch underneath the current directory:

  let

    findFiles = pat: dir: concatLists (mapAttrsToList (name: type:
      if type == "directory" then
        findFiles pat (dir + "/" + name)
      else if type == "regular" && match pat name != null then
        [(dir + "/" + name)]
      else []) (readDir dir));

  in findFiles ".*\\.(nix|patch)" (toString ./.)
2014-11-25 11:47:06 +01:00
..
dir1
dir2
dir3
dir4
readDir
eval-fail-abort.nix
eval-fail-antiquoted-path.nix
eval-fail-assert.nix
eval-fail-bad-antiquote-1.nix
eval-fail-bad-antiquote-2.nix
eval-fail-bad-antiquote-3.nix
eval-fail-blackhole.nix
eval-fail-deepseq.nix
eval-fail-missing-arg.nix
eval-fail-remove.nix
eval-fail-scope-5.nix
eval-fail-seq.nix
eval-fail-substring.nix
eval-fail-to-path.nix
eval-fail-undeclared-arg.nix
eval-okay-arithmetic.exp
eval-okay-arithmetic.nix
eval-okay-attrnames.exp
eval-okay-attrnames.nix
eval-okay-attrs.exp
eval-okay-attrs.nix
eval-okay-attrs2.exp
eval-okay-attrs2.nix
eval-okay-attrs3.exp
eval-okay-attrs3.nix
eval-okay-attrs4.exp
eval-okay-attrs4.nix
eval-okay-attrs5.exp
eval-okay-attrs5.nix
eval-okay-autoargs.exp
eval-okay-autoargs.flags
eval-okay-autoargs.nix
eval-okay-builtins.exp
eval-okay-builtins.nix
eval-okay-callable-attrs.exp
eval-okay-callable-attrs.nix
eval-okay-catattrs.exp
eval-okay-catattrs.nix
eval-okay-closure.exp.xml
eval-okay-closure.nix
eval-okay-concat.exp
eval-okay-concat.nix
eval-okay-context.exp
eval-okay-context.nix
eval-okay-curpos.exp
eval-okay-curpos.nix
eval-okay-deepseq.exp
eval-okay-deepseq.nix
eval-okay-delayed-with-inherit.exp
eval-okay-delayed-with-inherit.nix
eval-okay-delayed-with.exp
eval-okay-delayed-with.nix
eval-okay-dynamic-attrs-2.exp
eval-okay-dynamic-attrs-2.nix
eval-okay-dynamic-attrs-bare.exp
eval-okay-dynamic-attrs-bare.nix
eval-okay-dynamic-attrs.exp
eval-okay-dynamic-attrs.nix
eval-okay-elem.exp
eval-okay-elem.nix
eval-okay-empty-args.exp
eval-okay-empty-args.nix
eval-okay-eq-derivations.exp
eval-okay-eq-derivations.nix
eval-okay-eq.exp.disabled
eval-okay-eq.nix
eval-okay-filter.exp
eval-okay-filter.nix
eval-okay-flatten.exp
eval-okay-flatten.nix
eval-okay-fromjson.exp
eval-okay-fromjson.nix
eval-okay-functionargs.exp.xml
eval-okay-functionargs.nix
eval-okay-getattrpos.exp
eval-okay-getattrpos.nix
eval-okay-getenv.exp
eval-okay-getenv.nix
eval-okay-hash.exp
eval-okay-hash.nix
eval-okay-if.exp
eval-okay-if.nix
eval-okay-import.exp
eval-okay-import.nix
eval-okay-ind-string.exp
eval-okay-ind-string.nix
eval-okay-let.exp
eval-okay-let.nix
eval-okay-list.exp
eval-okay-list.nix
eval-okay-listtoattrs.exp
eval-okay-listtoattrs.nix
eval-okay-logic.exp
eval-okay-logic.nix
eval-okay-map.exp
eval-okay-map.nix
eval-okay-new-let.exp
eval-okay-new-let.nix
eval-okay-null-dynamic-attrs.exp
eval-okay-null-dynamic-attrs.nix
eval-okay-overrides.exp
eval-okay-overrides.nix
eval-okay-pathexists.exp
eval-okay-pathexists.nix
eval-okay-patterns.exp
eval-okay-patterns.nix
eval-okay-readDir.exp
eval-okay-readDir.nix
eval-okay-readfile.exp
eval-okay-readfile.nix
eval-okay-redefine-builtin.exp
eval-okay-redefine-builtin.nix
eval-okay-regex-match.exp
eval-okay-regex-match.nix
eval-okay-remove.exp
eval-okay-remove.nix
eval-okay-scope-1.exp
eval-okay-scope-1.nix
eval-okay-scope-2.exp
eval-okay-scope-2.nix
eval-okay-scope-3.exp
eval-okay-scope-3.nix
eval-okay-scope-4.exp
eval-okay-scope-4.nix
eval-okay-scope-6.exp
eval-okay-scope-6.nix
eval-okay-scope-7.exp
eval-okay-scope-7.nix
eval-okay-search-path.exp
eval-okay-search-path.flags
eval-okay-search-path.nix
eval-okay-seq.exp
eval-okay-seq.nix
eval-okay-string.exp
eval-okay-string.nix
eval-okay-strings-as-attrs-names.exp
eval-okay-strings-as-attrs-names.nix
eval-okay-substring.exp
eval-okay-substring.nix
eval-okay-tail-call-1.exp-disabled
eval-okay-tail-call-1.nix
eval-okay-tojson.exp
eval-okay-tojson.nix
eval-okay-toxml.exp
eval-okay-toxml.nix
eval-okay-toxml2.exp
eval-okay-toxml2.nix
eval-okay-tryeval.exp
eval-okay-tryeval.nix
eval-okay-types.exp
eval-okay-types.nix
eval-okay-versions.exp
eval-okay-versions.nix
eval-okay-with.exp
eval-okay-with.nix
eval-okay-xml.exp.xml
eval-okay-xml.nix
imported.nix
imported2.nix
lib.nix
parse-fail-dup-attrs-1.nix
parse-fail-dup-attrs-2.nix
parse-fail-dup-attrs-3.nix
parse-fail-dup-attrs-4.nix
parse-fail-dup-attrs-6.nix
parse-fail-dup-attrs-7.nix
parse-fail-dup-formals.nix
parse-fail-patterns-1.nix
parse-fail-regression-20060610.nix
parse-fail-undef-var-2.nix
parse-fail-undef-var.nix
parse-okay-1.nix
parse-okay-crlf.nix
parse-okay-dup-attrs-5.nix
parse-okay-regression-20041027.nix
parse-okay-subversion.nix
parse-okay-url.nix