about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-05-17T10·18+0200
committerEelco Dolstra <edolstra@gmail.com>2017-05-17T10·18+0200
commitf134fc4cbecc258771272c2418af3b92ade88f80 (patch)
tree0a8cdaae65c921624211f20f393f4acdd9a046c4
parente46090edb101acac20ab1e6260a0ba98c177206a (diff)
Document that builtins.match takes a POSIX extended RE
-rw-r--r--doc/manual/expressions/builtins.xml14
-rw-r--r--tests/lang/eval-okay-regex-match.nix3
2 files changed, 13 insertions, 4 deletions
diff --git a/doc/manual/expressions/builtins.xml b/doc/manual/expressions/builtins.xml
index 63d13e184a12..8a32661066fe 100644
--- a/doc/manual/expressions/builtins.xml
+++ b/doc/manual/expressions/builtins.xml
@@ -213,10 +213,11 @@ if builtins ? getEnv then builtins.getEnv "PATH" else ""</programlisting>
   <varlistentry><term><function>builtins.match</function>
   <replaceable>regex</replaceable> <replaceable>str</replaceable></term>
 
-  <listitem><para>Returns a list if
-    <replaceable>regex</replaceable> matches
-    <replaceable>str</replaceable> precisely, otherwise returns <literal>null</literal>.
-    Each item in the list is a regex group.
+  <listitem><para>Returns a list if the <link
+  xlink:href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04">extended
+  POSIX regular expression</link> <replaceable>regex</replaceable>
+  matches <replaceable>str</replaceable> precisely, otherwise returns
+  <literal>null</literal>.  Each item in the list is a regex group.
 
 <programlisting>
 builtins.match "ab" "abc"
@@ -236,6 +237,11 @@ builtins.match "a(b)(c)" "abc"
 
 Evaluates to <literal>[ "b" "c" ]</literal>.
 
+<programlisting>
+builtins.match "[[:space:]]+([[:upper:]]+)[[:space:]]+" "  FOO   "
+</programlisting>
+
+Evaluates to <literal>[ "foo" ]</literal>.
 
   </para></listitem>
   </varlistentry>
diff --git a/tests/lang/eval-okay-regex-match.nix b/tests/lang/eval-okay-regex-match.nix
index ae6501532d11..273e2590713e 100644
--- a/tests/lang/eval-okay-regex-match.nix
+++ b/tests/lang/eval-okay-regex-match.nix
@@ -17,8 +17,11 @@ assert  matches "fo+" "foo";
 assert  matches "fo{1,2}" "foo";
 assert !matches "fo{1,2}" "fooo";
 assert !matches "fo*" "foobar";
+assert  matches "[[:space:]]+([^[:space:]]+)[[:space:]]+" "  foo   ";
+assert !matches "[[:space:]]+([[:upper:]]+)[[:space:]]+" "  foo   ";
 
 assert match "(.*)\\.nix" "foobar.nix" == [ "foobar" ];
+assert match "[[:space:]]+([[:upper:]]+)[[:space:]]+" "  FOO   " == [ "FOO" ];
 
 assert splitFN "/path/to/foobar.nix" == [ "/path/to/" "/path/to" "foobar" "nix" ];
 assert splitFN "foobar.cc" == [ null null "foobar" "cc" ];