lib/file: document and fix `file_extension`
authorJean Privat <jean@pryen.org>
Fri, 21 Mar 2014 14:31:20 +0000 (10:31 -0400)
committerJean Privat <jean@pryen.org>
Fri, 21 Mar 2014 14:31:20 +0000 (10:31 -0400)
Also remove the redundant (thus useless) test file.

Fixes #160
Signed-off-by: Jean Privat <jean@pryen.org>

lib/standard/file.nit
tests/sav/test_file_extension.res [deleted file]
tests/test_file_extension.nit [deleted file]

index dbabb41..93094e4 100644 (file)
@@ -387,10 +387,27 @@ redef class String
        fun chdir do to_cstring.file_chdir
 
        # Return right-most extension (without the dot)
-       fun file_extension : nullable String
+       #
+       # Only the last extension is returned.
+       # There is no special case for combined extensions.
+       #
+       #     assert "file.txt".file_extension      == "txt"
+       #     assert "file.tar.gz".file_extension   == "gz"
+       #
+       # For file without extension, `null` is returned.
+       # Hoever, for trailing dot, `""` is returned.
+       #
+       #     assert "file".file_extension          == null
+       #     assert "file.".file_extension         == ""
+       #
+       # The starting dot of hidden files is never considered.
+       #
+       #     assert ".file.txt".file_extension     == "txt"
+       #     assert ".file".file_extension         == null
+       fun file_extension: nullable String
        do
                var last_slash = last_index_of('.')
-               if last_slash >= 0 then
+               if last_slash > 0 then
                        return substring( last_slash+1, length )
                else
                        return null
diff --git a/tests/sav/test_file_extension.res b/tests/sav/test_file_extension.res
deleted file mode 100644 (file)
index c9bc7e4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-txt
-c
-txt
-txt
-
-true
diff --git a/tests/test_file_extension.nit b/tests/test_file_extension.nit
deleted file mode 100644 (file)
index 5627638..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-print "foo.txt".file_extension.as(not null)
-print "foo.c".file_extension.as(not null)
-print ".txt".file_extension.as(not null)
-print "my.file.txt".file_extension.as(not null)
-print "my.".file_extension.as(not null)
-print "file".file_extension == null