lib: adds String::file_extension to retreive extension from a path
authorAlexis Laferrière <alexis.laf@xymus.net>
Thu, 9 Feb 2012 20:02:52 +0000 (15:02 -0500)
committerJean Privat <jean@pryen.org>
Mon, 13 Feb 2012 19:04:52 +0000 (14:04 -0500)
ex: "my.file.txt".file_extension == "txt"

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/standard/file.nit
tests/sav/test_file_extension.sav [new file with mode: 0644]
tests/test_file_extension.nit [new file with mode: 0644]

index 903554c..6592b85 100644 (file)
@@ -252,6 +252,16 @@ redef class String
                        path.to_s.to_cstring.file_mkdir
                end
        end
+
+       fun file_extension : nullable String
+       do
+               var last_slash = last_index_of('.')
+               if last_slash >= 0 then
+                       return substring( last_slash+1, length )
+               else
+                       return null
+               end
+       end
 end
 
 redef class NativeString
diff --git a/tests/sav/test_file_extension.sav b/tests/sav/test_file_extension.sav
new file mode 100644 (file)
index 0000000..c9bc7e4
--- /dev/null
@@ -0,0 +1,6 @@
+txt
+c
+txt
+txt
+
+true
diff --git a/tests/test_file_extension.nit b/tests/test_file_extension.nit
new file mode 100644 (file)
index 0000000..5627638
--- /dev/null
@@ -0,0 +1,6 @@
+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