diff --git a/.projections.json b/.projections.json index 851f0060d..e5f0a95c9 100644 --- a/.projections.json +++ b/.projections.json @@ -3,15 +3,16 @@ "alternate": "test/api/{}.vader", "doc": "docs/api/{}.md" }, - "autoload/SpaceVim/plugins/a.vim": { - "alternate": "test/plugin/a.vader", - "lua" : "lua/spacevim/plugin/a.lua" + "autoload/SpaceVim/plugins/*.vim": { + "alternate": "test/plugin/{}.vader", + "lua" : "lua/spacevim/plugin/{}.lua" }, - "lua/spacevim/plugin/a.lua": { - "alternate": "test/lua/plugin/a.vader", - "vim" : "autoload/SpaceVim/plugins/a.vim" + "lua/spacevim/plugin/*.lua": { + "alternate": "test/lua/plugin/{}.vader", + "vim" : "autoload/SpaceVim/plugins/{}.vim" }, - "test/plugin/a.vader": { "alternate": "autoload/SpaceVim/plugins/a.vim" }, + "test/plugin/*.vader": { "alternate": "autoload/SpaceVim/plugins/{}.vim" }, + "test/lua/plugin/*.vader": { "alternate": "lua/spacevim/plugin/{}.lua" }, "autoload/SpaceVim/layers/lang/*.vim": { "doc": "docs/layers/lang/{}.md" }, "test/api/*.vader": { "alternate": "autoload/SpaceVim/api/{}.vim" }, "docs/layers/*.md": { diff --git a/lua/spacevim/api/data/string.lua b/lua/spacevim/api/data/string.lua index 2102d4aed..a79d94fea 100644 --- a/lua/spacevim/api/data/string.lua +++ b/lua/spacevim/api/data/string.lua @@ -1,20 +1,103 @@ - -local str = {} +--============================================================================= +-- string.lua --- spacevim data#string api +-- Copyright (c) 2016-2019 Wang Shidong & Contributors +-- Author: Wang Shidong < wsdjeg@outlook.com > +-- URL: https://spacevim.org +-- License: GPLv3 +--============================================================================= -function str.trim(str) +local M = {} + + +function M.trim(str) return str:match( "^%s*(.-)%s*$" ) end -function str.fill(str, length, ...) - if string.len(str) > length then +function M.fill(str, length, ...) + local v = '' + if string.len(str) <= length then + v = str + else + local rightmost= 0 + while string.len(string.sub(str, 0, rightmost)) < length do + rightmost = rightmost + 1 + end + end + v = string.sub(str, 0, rightmost) + local argvs = ... + local char = ' ' + if argvs ~= nil then + char = argvs[1] or char + end + return v .. string.rep(char, length - string.len(v)) +end + +function M.strcharpart(str, start, ...) + +end + +function M.toggle_case(str) + local chars = {} + for _, char in pairs(M.string2chars(str)) do + local cn = string.byte(char) + if cn >= 97 and cn <= 122 then + table.insert(chars, string.char(cn - 32)) + elseif cn >= 65 and cn <= 90 then + table.insert(chars, string.char(cn + 32)) + else + table.insert(chars, char) + end + end + return table.concat(chars, '') +end + +function M.fill_left(str) + +end + +function M.fill_middle(str, length, ...) end -return str +function M.trim_start(str) + +end + +function M.trim_end(str) + +end + +function M.string2chars(str) + local t = {} + for k in string.gmatch(str, '.') do table.insert(t, k) end + return t +end + +function M.matchstrpos(str, need, ...) + +end + +function M.strAllIndex(str, need, use_expr) + +end + +function M.strQ2B(str) + +end + +function M.strB2Q(str) + +end + +function M.split(str, ...) + +end + +return M -- @todo add lua string api diff --git a/test/lua/data/string.vader b/test/lua/data/string.vader new file mode 100644 index 000000000..9192d6c07 --- /dev/null +++ b/test/lua/data/string.vader @@ -0,0 +1,9 @@ +Execute ( SpaceVim lua api: data#string ): + if $SPACEVIM_LUA != 1 + finish + endif + let cmp = SpaceVim#api#import('vim#compatible') + Log 'test trim()' + lua sp_str = require('spacevim.api').import('data.string') + AssertEqual cmp.luaeval("sp_str.trim(' s b ')"), 's b' + diff --git a/test/lua/plugin/projectmanager.vader b/test/lua/plugin/projectmanager.vader new file mode 100644 index 000000000..e69de29bb diff --git a/test/plugin/projectmanager.vader b/test/plugin/projectmanager.vader new file mode 100644 index 000000000..e69de29bb