[vlc-commits] lua: add and use us_tonumber() for decimal numbers

Pierre Ynard git at videolan.org
Sat Jan 7 18:02:56 CET 2012


vlc/vlc-1.2 | branch: master | Pierre Ynard <linkfanel at yahoo.fr> | Sat Jan  7 17:58:09 2012 +0100| [5c1cb49e05d03a3dc52ebac9d2e0b84f5a03a1a7] | committer: Pierre Ynard

lua: add and use us_tonumber() for decimal numbers

Closes #5705
(cherry picked from commit c90a3e02568368f55f454aee7c89ed57a945ed17)

Signed-off-by: Pierre Ynard <linkfanel at yahoo.fr>

> http://git.videolan.org/gitweb.cgi/vlc/vlc-1.2.git/?a=commit;h=5c1cb49e05d03a3dc52ebac9d2e0b84f5a03a1a7
---

 share/lua/intf/cli.lua            |    2 +-
 share/lua/intf/modules/common.lua |   17 +++++++++++++++--
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/share/lua/intf/cli.lua b/share/lua/intf/cli.lua
index 265b938..ed2a685 100644
--- a/share/lua/intf/cli.lua
+++ b/share/lua/intf/cli.lua
@@ -464,7 +464,7 @@ end
 function rate(name,client,value)
     local input = vlc.object.input()
     if name == "rate" then
-        vlc.var.set(input, "rate", tonumber(value))
+        vlc.var.set(input, "rate", common.us_tonumber(value))
     elseif name == "normal" then
         vlc.var.set(input,"rate",1)
     else
diff --git a/share/lua/intf/modules/common.lua b/share/lua/intf/modules/common.lua
index 5744427..ca51344 100644
--- a/share/lua/intf/modules/common.lua
+++ b/share/lua/intf/modules/common.lua
@@ -46,6 +46,19 @@ function table_copy(t)
     return c
 end
 
+-- tonumber() for decimals number, using a dot as decimal separator
+-- regardless of the system locale 
+function us_tonumber(str)
+    local i, d = string.match(str, "([+-]?%d*)%.?(%d*)")
+    if i == nil or i == "" then
+        i = "0"
+    end
+    if d == nil or d == "" then
+        d = "0"
+    end
+    return tonumber(i) + tonumber(d)/(10^string.len(d))
+end
+
 -- strip leading and trailing spaces
 function strip(str)
     return string.gsub(str, "^%s*(.-)%s*$", "%1")
@@ -119,9 +132,9 @@ function seek(value)
     local input = vlc.object.input()
     if input ~= nil and value ~= nil then
         if string.sub(value,-1) == "%" then
-            local number = tonumber(string.sub(value,1,-2))
+            local number = us_tonumber(string.sub(value,1,-2))
             if number ~= nil then
-                local posPercent = tonumber( string.sub(value,1,-2))/100.
+                local posPercent = number/100.
                 if string.sub(value,1,1) == "+" or string.sub(value,1,1) == "-" then
                     vlc.var.set(input,"position",vlc.var.get(input,"position") + posPercent)
                 else



More information about the vlc-commits mailing list