diff --git a/Applications/IRC.app/Main.lua b/Applications/IRC.app/Main.lua index e7626156..d8607362 100644 --- a/Applications/IRC.app/Main.lua +++ b/Applications/IRC.app/Main.lua @@ -7,6 +7,7 @@ local system = require("System") local paths = require("Paths") local system = require("System") local text = require("Text") +local event = require("Event") local number = require("Number") ------------------------------------------------------------------------------- diff --git a/Applications/VK.app/Main.lua b/Applications/VK.app/Main.lua index 744c7f90..f289a092 100644 --- a/Applications/VK.app/Main.lua +++ b/Applications/VK.app/Main.lua @@ -5,7 +5,7 @@ local filesystem = require("Filesystem") local color = require("Color") local image = require("Image") local internet = require("Internet") -local json = require("json") +local json = require("JSON") local color = require("Color") local paths = require("Paths") local system = require("System") diff --git a/Libraries/System.lua b/Libraries/System.lua index 7cc9d3e3..6c3c139f 100755 --- a/Libraries/System.lua +++ b/Libraries/System.lua @@ -110,13 +110,32 @@ function system.createShortcut(where, forWhat) end function system.parseArguments(...) - local arguments, options = {...}, {} - local i = 1 + local i, arguments, options, dashes, data, key, value = 1, {...}, {} + while i <= #arguments do - local option = arguments[i]:match("^%-+(.+)") - if option then - options[option] = true - table.remove(arguments, i) + if type(arguments[i]) == "string" then + dashes, data = arguments[i]:match("^(%-+)(.+)") + + if dashes then + -- Single dash option + if #dashes == 1 then + for i = 1, unicode.len(data) do + options[unicode.sub(data, i, i)] = true + end + -- Multiple dash option + else + -- Option with key and value + key, value = data:match("^([^=]+)=(.+)") + if key then + options[key] = value + else + options[data] = true + end + end + + table.remove(arguments, i) + i = i - 1 + end end i = i + 1