diff options
author | 2016-03-04 20:18:47 +0100 | |
---|---|---|
committer | 2016-03-04 20:18:47 +0100 | |
commit | 24276fc7dbf8090f1952cf9ac97cb109a32e3b33 (patch) | |
tree | 974576016c6cae0e3b0bc049b559202f378cfac4 /plugins/path/init.lua | |
parent | 7dd36aaf2f6611ff9b0fcab787d7ea68d30ea7f6 (diff) |
removed Apache 2 licensed library since it is not possible to mix with GPL2 (nw)
Diffstat (limited to 'plugins/path/init.lua')
-rw-r--r-- | plugins/path/init.lua | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/plugins/path/init.lua b/plugins/path/init.lua deleted file mode 100644 index d0e427d02ee..00000000000 --- a/plugins/path/init.lua +++ /dev/null @@ -1,139 +0,0 @@ ---[[ - -Copyright 2014 The Luvit Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS-IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - ---]] - --- Extracted from https://github.com/luvit/luvi/blob/master/src/lua/init.lua - -local isWindows -if jit and jit.os then - -- Luajit provides explicit platform detection - isWindows = jit.os == "Windows" -else - -- Normal lua will only have \ for path separator on windows. - isWindows = package.config:find("\\") and true or false -end - -local uv = require('luv') - -local getPrefix, splitPath, joinParts - -if isWindows then - -- Windows aware path utilities - function getPrefix(path) - return path:match("^%a:\\") or - path:match("^/") or - path:match("^\\+") - end - function splitPath(path) - local parts = {} - for part in string.gmatch(path, '([^/\\]+)') do - table.insert(parts, part) - end - return parts - end - function joinParts(prefix, parts, i, j) - if not prefix then - return table.concat(parts, '/', i, j) - elseif prefix ~= '/' then - return prefix .. table.concat(parts, '\\', i, j) - else - return prefix .. table.concat(parts, '/', i, j) - end - end -else - -- Simple optimized versions for UNIX systems - function getPrefix(path) - return path:match("^/") - end - function splitPath(path) - local parts = {} - for part in string.gmatch(path, '([^/]+)') do - table.insert(parts, part) - end - return parts - end - function joinParts(prefix, parts, i, j) - if prefix then - return prefix .. table.concat(parts, '/', i, j) - end - return table.concat(parts, '/', i, j) - end -end - -local function pathJoin(...) - local inputs = {...} - local l = #inputs - - -- Find the last segment that is an absolute path - -- Or if all are relative, prefix will be nil - local i = l - local prefix - while true do - prefix = getPrefix(inputs[i]) - if prefix or i <= 1 then break end - i = i - 1 - end - - -- If there was one, remove its prefix from its segment - if prefix then - inputs[i] = inputs[i]:sub(#prefix) - end - - -- Split all the paths segments into one large list - local parts = {} - while i <= l do - local sub = splitPath(inputs[i]) - for j = 1, #sub do - parts[#parts + 1] = sub[j] - end - i = i + 1 - end - - -- Evaluate special segments in reverse order. - local skip = 0 - local reversed = {} - for idx = #parts, 1, -1 do - local part = parts[idx] - if part == '.' then - -- Ignore - elseif part == '..' then - skip = skip + 1 - elseif skip > 0 then - skip = skip - 1 - else - reversed[#reversed + 1] = part - end - end - - -- Reverse the list again to get the correct order - parts = reversed - for idx = 1, #parts / 2 do - local j = #parts - idx + 1 - parts[idx], parts[j] = parts[j], parts[idx] - end - - local path = joinParts(prefix, parts) - return path -end - -return { - isWindows = isWindows, - join = pathJoin, - getPrefix = getPrefix, - splitPath = splitPath, - joinparts = joinParts, -} |