diff --git a/.luacheckrc b/.luacheckrc index 82bc627..2839660 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -14,7 +14,6 @@ globals = { "class", "handler", "gLog", - "gEnv", } ignore = { diff --git a/framework/lualib/thirdparty/behavior3/behavior_node.lua b/framework/lualib/3rd/behavior3/behavior_node.lua similarity index 100% rename from framework/lualib/thirdparty/behavior3/behavior_node.lua rename to framework/lualib/3rd/behavior3/behavior_node.lua diff --git a/framework/lualib/thirdparty/behavior3/behavior_ret.lua b/framework/lualib/3rd/behavior3/behavior_ret.lua similarity index 100% rename from framework/lualib/thirdparty/behavior3/behavior_ret.lua rename to framework/lualib/3rd/behavior3/behavior_ret.lua diff --git a/framework/lualib/thirdparty/behavior3/behavior_tree.lua b/framework/lualib/3rd/behavior3/behavior_tree.lua similarity index 100% rename from framework/lualib/thirdparty/behavior3/behavior_tree.lua rename to framework/lualib/3rd/behavior3/behavior_tree.lua diff --git a/framework/lualib/thirdparty/behavior3/nodes/actions/log.lua b/framework/lualib/3rd/behavior3/nodes/actions/log.lua similarity index 100% rename from framework/lualib/thirdparty/behavior3/nodes/actions/log.lua rename to framework/lualib/3rd/behavior3/nodes/actions/log.lua diff --git a/framework/lualib/thirdparty/behavior3/nodes/actions/wait.lua b/framework/lualib/3rd/behavior3/nodes/actions/wait.lua similarity index 100% rename from framework/lualib/thirdparty/behavior3/nodes/actions/wait.lua rename to framework/lualib/3rd/behavior3/nodes/actions/wait.lua diff --git a/framework/lualib/thirdparty/behavior3/nodes/composites/parallel.lua b/framework/lualib/3rd/behavior3/nodes/composites/parallel.lua similarity index 100% rename from framework/lualib/thirdparty/behavior3/nodes/composites/parallel.lua rename to framework/lualib/3rd/behavior3/nodes/composites/parallel.lua diff --git a/framework/lualib/thirdparty/behavior3/nodes/composites/selector.lua b/framework/lualib/3rd/behavior3/nodes/composites/selector.lua similarity index 100% rename from framework/lualib/thirdparty/behavior3/nodes/composites/selector.lua rename to framework/lualib/3rd/behavior3/nodes/composites/selector.lua diff --git a/framework/lualib/thirdparty/behavior3/nodes/composites/sequence.lua b/framework/lualib/3rd/behavior3/nodes/composites/sequence.lua similarity index 100% rename from framework/lualib/thirdparty/behavior3/nodes/composites/sequence.lua rename to framework/lualib/3rd/behavior3/nodes/composites/sequence.lua diff --git a/framework/lualib/thirdparty/behavior3/nodes/conditions/cmp.lua b/framework/lualib/3rd/behavior3/nodes/conditions/cmp.lua similarity index 100% rename from framework/lualib/thirdparty/behavior3/nodes/conditions/cmp.lua rename to framework/lualib/3rd/behavior3/nodes/conditions/cmp.lua diff --git a/framework/lualib/thirdparty/behavior3/nodes/decorators/always_fail.lua b/framework/lualib/3rd/behavior3/nodes/decorators/always_fail.lua similarity index 100% rename from framework/lualib/thirdparty/behavior3/nodes/decorators/always_fail.lua rename to framework/lualib/3rd/behavior3/nodes/decorators/always_fail.lua diff --git a/framework/lualib/thirdparty/behavior3/nodes/decorators/always_success.lua b/framework/lualib/3rd/behavior3/nodes/decorators/always_success.lua similarity index 100% rename from framework/lualib/thirdparty/behavior3/nodes/decorators/always_success.lua rename to framework/lualib/3rd/behavior3/nodes/decorators/always_success.lua diff --git a/framework/lualib/thirdparty/behavior3/nodes/decorators/not.lua b/framework/lualib/3rd/behavior3/nodes/decorators/not.lua similarity index 100% rename from framework/lualib/thirdparty/behavior3/nodes/decorators/not.lua rename to framework/lualib/3rd/behavior3/nodes/decorators/not.lua diff --git a/framework/lualib/thirdparty/behavior3/sample_process.lua b/framework/lualib/3rd/behavior3/sample_process.lua similarity index 100% rename from framework/lualib/thirdparty/behavior3/sample_process.lua rename to framework/lualib/3rd/behavior3/sample_process.lua diff --git a/framework/lualib/thirdparty/hotfix/helper/hotfix_helper.lua b/framework/lualib/3rd/hotfix/helper/hotfix_helper.lua similarity index 100% rename from framework/lualib/thirdparty/hotfix/helper/hotfix_helper.lua rename to framework/lualib/3rd/hotfix/helper/hotfix_helper.lua diff --git a/framework/lualib/thirdparty/hotfix/helper/hotfix_module_names.lua b/framework/lualib/3rd/hotfix/helper/hotfix_module_names.lua similarity index 100% rename from framework/lualib/thirdparty/hotfix/helper/hotfix_module_names.lua rename to framework/lualib/3rd/hotfix/helper/hotfix_module_names.lua diff --git a/framework/lualib/thirdparty/hotfix/hotfix.lua b/framework/lualib/3rd/hotfix/hotfix.lua similarity index 100% rename from framework/lualib/thirdparty/hotfix/hotfix.lua rename to framework/lualib/3rd/hotfix/hotfix.lua diff --git a/framework/lualib/thirdparty/hotfix/internal/functions_replacer.lua b/framework/lualib/3rd/hotfix/internal/functions_replacer.lua similarity index 100% rename from framework/lualib/thirdparty/hotfix/internal/functions_replacer.lua rename to framework/lualib/3rd/hotfix/internal/functions_replacer.lua diff --git a/framework/lualib/thirdparty/hotfix/internal/module_updater.lua b/framework/lualib/3rd/hotfix/internal/module_updater.lua similarity index 100% rename from framework/lualib/thirdparty/hotfix/internal/module_updater.lua rename to framework/lualib/3rd/hotfix/internal/module_updater.lua diff --git a/framework/lualib/thirdparty/lecs/component.lua b/framework/lualib/3rd/lecs/component.lua similarity index 100% rename from framework/lualib/thirdparty/lecs/component.lua rename to framework/lualib/3rd/lecs/component.lua diff --git a/framework/lualib/thirdparty/lecs/entity.lua b/framework/lualib/3rd/lecs/entity.lua similarity index 100% rename from framework/lualib/thirdparty/lecs/entity.lua rename to framework/lualib/3rd/lecs/entity.lua diff --git a/framework/lualib/thirdparty/lecs/filter.lua b/framework/lualib/3rd/lecs/filter.lua similarity index 100% rename from framework/lualib/thirdparty/lecs/filter.lua rename to framework/lualib/3rd/lecs/filter.lua diff --git a/framework/lualib/thirdparty/lecs/global.lua b/framework/lualib/3rd/lecs/global.lua similarity index 100% rename from framework/lualib/thirdparty/lecs/global.lua rename to framework/lualib/3rd/lecs/global.lua diff --git a/framework/lualib/thirdparty/lecs/init.lua b/framework/lualib/3rd/lecs/init.lua similarity index 100% rename from framework/lualib/thirdparty/lecs/init.lua rename to framework/lualib/3rd/lecs/init.lua diff --git a/framework/lualib/thirdparty/lecs/pool.lua b/framework/lualib/3rd/lecs/pool.lua similarity index 100% rename from framework/lualib/thirdparty/lecs/pool.lua rename to framework/lualib/3rd/lecs/pool.lua diff --git a/framework/lualib/thirdparty/lecs/system.lua b/framework/lualib/3rd/lecs/system.lua similarity index 100% rename from framework/lualib/thirdparty/lecs/system.lua rename to framework/lualib/3rd/lecs/system.lua diff --git a/framework/lualib/thirdparty/lecs/test.lua b/framework/lualib/3rd/lecs/test.lua similarity index 100% rename from framework/lualib/thirdparty/lecs/test.lua rename to framework/lualib/3rd/lecs/test.lua diff --git a/framework/lualib/thirdparty/lecs/tiny_ecs.lua b/framework/lualib/3rd/lecs/tiny_ecs.lua similarity index 100% rename from framework/lualib/thirdparty/lecs/tiny_ecs.lua rename to framework/lualib/3rd/lecs/tiny_ecs.lua diff --git a/framework/lualib/thirdparty/lecs/world.lua b/framework/lualib/3rd/lecs/world.lua similarity index 100% rename from framework/lualib/thirdparty/lecs/world.lua rename to framework/lualib/3rd/lecs/world.lua diff --git a/framework/lualib/thirdparty/luassert/array.lua b/framework/lualib/3rd/luassert/array.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/array.lua rename to framework/lualib/3rd/luassert/array.lua diff --git a/framework/lualib/thirdparty/luassert/assert.lua b/framework/lualib/3rd/luassert/assert.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/assert.lua rename to framework/lualib/3rd/luassert/assert.lua diff --git a/framework/lualib/thirdparty/luassert/assertions.lua b/framework/lualib/3rd/luassert/assertions.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/assertions.lua rename to framework/lualib/3rd/luassert/assertions.lua diff --git a/framework/lualib/thirdparty/luassert/compatibility.lua b/framework/lualib/3rd/luassert/compatibility.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/compatibility.lua rename to framework/lualib/3rd/luassert/compatibility.lua diff --git a/framework/lualib/thirdparty/luassert/formatters/binarystring.lua b/framework/lualib/3rd/luassert/formatters/binarystring.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/formatters/binarystring.lua rename to framework/lualib/3rd/luassert/formatters/binarystring.lua diff --git a/framework/lualib/thirdparty/luassert/formatters/init.lua b/framework/lualib/3rd/luassert/formatters/init.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/formatters/init.lua rename to framework/lualib/3rd/luassert/formatters/init.lua diff --git a/framework/lualib/thirdparty/luassert/init.lua b/framework/lualib/3rd/luassert/init.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/init.lua rename to framework/lualib/3rd/luassert/init.lua diff --git a/framework/lualib/thirdparty/luassert/languages/en.lua b/framework/lualib/3rd/luassert/languages/en.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/languages/en.lua rename to framework/lualib/3rd/luassert/languages/en.lua diff --git a/framework/lualib/thirdparty/luassert/languages/zh.lua b/framework/lualib/3rd/luassert/languages/zh.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/languages/zh.lua rename to framework/lualib/3rd/luassert/languages/zh.lua diff --git a/framework/lualib/thirdparty/luassert/match.lua b/framework/lualib/3rd/luassert/match.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/match.lua rename to framework/lualib/3rd/luassert/match.lua diff --git a/framework/lualib/thirdparty/luassert/matchers/composite.lua b/framework/lualib/3rd/luassert/matchers/composite.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/matchers/composite.lua rename to framework/lualib/3rd/luassert/matchers/composite.lua diff --git a/framework/lualib/thirdparty/luassert/matchers/core.lua b/framework/lualib/3rd/luassert/matchers/core.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/matchers/core.lua rename to framework/lualib/3rd/luassert/matchers/core.lua diff --git a/framework/lualib/thirdparty/luassert/matchers/init.lua b/framework/lualib/3rd/luassert/matchers/init.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/matchers/init.lua rename to framework/lualib/3rd/luassert/matchers/init.lua diff --git a/framework/lualib/thirdparty/luassert/mock.lua b/framework/lualib/3rd/luassert/mock.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/mock.lua rename to framework/lualib/3rd/luassert/mock.lua diff --git a/framework/lualib/thirdparty/luassert/modifiers.lua b/framework/lualib/3rd/luassert/modifiers.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/modifiers.lua rename to framework/lualib/3rd/luassert/modifiers.lua diff --git a/framework/lualib/thirdparty/luassert/namespaces.lua b/framework/lualib/3rd/luassert/namespaces.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/namespaces.lua rename to framework/lualib/3rd/luassert/namespaces.lua diff --git a/framework/lualib/thirdparty/luassert/say.lua b/framework/lualib/3rd/luassert/say.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/say.lua rename to framework/lualib/3rd/luassert/say.lua diff --git a/framework/lualib/thirdparty/luassert/spy.lua b/framework/lualib/3rd/luassert/spy.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/spy.lua rename to framework/lualib/3rd/luassert/spy.lua diff --git a/framework/lualib/thirdparty/luassert/state.lua b/framework/lualib/3rd/luassert/state.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/state.lua rename to framework/lualib/3rd/luassert/state.lua diff --git a/framework/lualib/thirdparty/luassert/stub.lua b/framework/lualib/3rd/luassert/stub.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/stub.lua rename to framework/lualib/3rd/luassert/stub.lua diff --git a/framework/lualib/thirdparty/luassert/util.lua b/framework/lualib/3rd/luassert/util.lua similarity index 100% rename from framework/lualib/thirdparty/luassert/util.lua rename to framework/lualib/3rd/luassert/util.lua diff --git a/framework/lualib/thirdparty/lester/lester.lua b/framework/lualib/3rd/luaunit/lester.lua similarity index 100% rename from framework/lualib/thirdparty/lester/lester.lua rename to framework/lualib/3rd/luaunit/lester.lua diff --git a/framework/lualib/thirdparty/luaunit/luaunit.lua b/framework/lualib/3rd/luaunit/luaunit.lua similarity index 100% rename from framework/lualib/thirdparty/luaunit/luaunit.lua rename to framework/lualib/3rd/luaunit/luaunit.lua diff --git a/framework/lualib/thirdparty/pl/Date.lua b/framework/lualib/3rd/pl/Date.lua similarity index 100% rename from framework/lualib/thirdparty/pl/Date.lua rename to framework/lualib/3rd/pl/Date.lua diff --git a/framework/lualib/thirdparty/pl/List.lua b/framework/lualib/3rd/pl/List.lua similarity index 100% rename from framework/lualib/thirdparty/pl/List.lua rename to framework/lualib/3rd/pl/List.lua diff --git a/framework/lualib/thirdparty/pl/Map.lua b/framework/lualib/3rd/pl/Map.lua similarity index 100% rename from framework/lualib/thirdparty/pl/Map.lua rename to framework/lualib/3rd/pl/Map.lua diff --git a/framework/lualib/thirdparty/pl/MultiMap.lua b/framework/lualib/3rd/pl/MultiMap.lua similarity index 100% rename from framework/lualib/thirdparty/pl/MultiMap.lua rename to framework/lualib/3rd/pl/MultiMap.lua diff --git a/framework/lualib/thirdparty/pl/OrderedMap.lua b/framework/lualib/3rd/pl/OrderedMap.lua similarity index 100% rename from framework/lualib/thirdparty/pl/OrderedMap.lua rename to framework/lualib/3rd/pl/OrderedMap.lua diff --git a/framework/lualib/thirdparty/pl/Set.lua b/framework/lualib/3rd/pl/Set.lua similarity index 100% rename from framework/lualib/thirdparty/pl/Set.lua rename to framework/lualib/3rd/pl/Set.lua diff --git a/framework/lualib/thirdparty/pl/app.lua b/framework/lualib/3rd/pl/app.lua similarity index 100% rename from framework/lualib/thirdparty/pl/app.lua rename to framework/lualib/3rd/pl/app.lua diff --git a/framework/lualib/thirdparty/pl/array2d.lua b/framework/lualib/3rd/pl/array2d.lua similarity index 100% rename from framework/lualib/thirdparty/pl/array2d.lua rename to framework/lualib/3rd/pl/array2d.lua diff --git a/framework/lualib/thirdparty/pl/class.lua b/framework/lualib/3rd/pl/class.lua similarity index 100% rename from framework/lualib/thirdparty/pl/class.lua rename to framework/lualib/3rd/pl/class.lua diff --git a/framework/lualib/thirdparty/pl/compat.lua b/framework/lualib/3rd/pl/compat.lua similarity index 100% rename from framework/lualib/thirdparty/pl/compat.lua rename to framework/lualib/3rd/pl/compat.lua diff --git a/framework/lualib/thirdparty/pl/comprehension.lua b/framework/lualib/3rd/pl/comprehension.lua similarity index 100% rename from framework/lualib/thirdparty/pl/comprehension.lua rename to framework/lualib/3rd/pl/comprehension.lua diff --git a/framework/lualib/thirdparty/pl/config.lua b/framework/lualib/3rd/pl/config.lua similarity index 100% rename from framework/lualib/thirdparty/pl/config.lua rename to framework/lualib/3rd/pl/config.lua diff --git a/framework/lualib/thirdparty/pl/data.lua b/framework/lualib/3rd/pl/data.lua similarity index 100% rename from framework/lualib/thirdparty/pl/data.lua rename to framework/lualib/3rd/pl/data.lua diff --git a/framework/lualib/thirdparty/pl/dir.lua b/framework/lualib/3rd/pl/dir.lua similarity index 100% rename from framework/lualib/thirdparty/pl/dir.lua rename to framework/lualib/3rd/pl/dir.lua diff --git a/framework/lualib/thirdparty/pl/file.lua b/framework/lualib/3rd/pl/file.lua similarity index 100% rename from framework/lualib/thirdparty/pl/file.lua rename to framework/lualib/3rd/pl/file.lua diff --git a/framework/lualib/thirdparty/pl/func.lua b/framework/lualib/3rd/pl/func.lua similarity index 100% rename from framework/lualib/thirdparty/pl/func.lua rename to framework/lualib/3rd/pl/func.lua diff --git a/framework/lualib/thirdparty/pl/import_into.lua b/framework/lualib/3rd/pl/import_into.lua similarity index 100% rename from framework/lualib/thirdparty/pl/import_into.lua rename to framework/lualib/3rd/pl/import_into.lua diff --git a/framework/lualib/thirdparty/pl/init.lua b/framework/lualib/3rd/pl/init.lua similarity index 100% rename from framework/lualib/thirdparty/pl/init.lua rename to framework/lualib/3rd/pl/init.lua diff --git a/framework/lualib/thirdparty/pl/input.lua b/framework/lualib/3rd/pl/input.lua similarity index 100% rename from framework/lualib/thirdparty/pl/input.lua rename to framework/lualib/3rd/pl/input.lua diff --git a/framework/lualib/thirdparty/pl/lapp.lua b/framework/lualib/3rd/pl/lapp.lua similarity index 100% rename from framework/lualib/thirdparty/pl/lapp.lua rename to framework/lualib/3rd/pl/lapp.lua diff --git a/framework/lualib/thirdparty/pl/lexer.lua b/framework/lualib/3rd/pl/lexer.lua similarity index 100% rename from framework/lualib/thirdparty/pl/lexer.lua rename to framework/lualib/3rd/pl/lexer.lua diff --git a/framework/lualib/thirdparty/pl/luabalanced.lua b/framework/lualib/3rd/pl/luabalanced.lua similarity index 100% rename from framework/lualib/thirdparty/pl/luabalanced.lua rename to framework/lualib/3rd/pl/luabalanced.lua diff --git a/framework/lualib/thirdparty/pl/operator.lua b/framework/lualib/3rd/pl/operator.lua similarity index 100% rename from framework/lualib/thirdparty/pl/operator.lua rename to framework/lualib/3rd/pl/operator.lua diff --git a/framework/lualib/thirdparty/pl/path.lua b/framework/lualib/3rd/pl/path.lua similarity index 100% rename from framework/lualib/thirdparty/pl/path.lua rename to framework/lualib/3rd/pl/path.lua diff --git a/framework/lualib/thirdparty/pl/permute.lua b/framework/lualib/3rd/pl/permute.lua similarity index 100% rename from framework/lualib/thirdparty/pl/permute.lua rename to framework/lualib/3rd/pl/permute.lua diff --git a/framework/lualib/thirdparty/pl/pretty.lua b/framework/lualib/3rd/pl/pretty.lua similarity index 100% rename from framework/lualib/thirdparty/pl/pretty.lua rename to framework/lualib/3rd/pl/pretty.lua diff --git a/framework/lualib/thirdparty/pl/seq.lua b/framework/lualib/3rd/pl/seq.lua similarity index 100% rename from framework/lualib/thirdparty/pl/seq.lua rename to framework/lualib/3rd/pl/seq.lua diff --git a/framework/lualib/thirdparty/pl/sip.lua b/framework/lualib/3rd/pl/sip.lua similarity index 100% rename from framework/lualib/thirdparty/pl/sip.lua rename to framework/lualib/3rd/pl/sip.lua diff --git a/framework/lualib/thirdparty/pl/strict.lua b/framework/lualib/3rd/pl/strict.lua similarity index 100% rename from framework/lualib/thirdparty/pl/strict.lua rename to framework/lualib/3rd/pl/strict.lua diff --git a/framework/lualib/thirdparty/pl/stringio.lua b/framework/lualib/3rd/pl/stringio.lua similarity index 100% rename from framework/lualib/thirdparty/pl/stringio.lua rename to framework/lualib/3rd/pl/stringio.lua diff --git a/framework/lualib/thirdparty/pl/stringx.lua b/framework/lualib/3rd/pl/stringx.lua similarity index 100% rename from framework/lualib/thirdparty/pl/stringx.lua rename to framework/lualib/3rd/pl/stringx.lua diff --git a/framework/lualib/thirdparty/pl/tablex.lua b/framework/lualib/3rd/pl/tablex.lua similarity index 100% rename from framework/lualib/thirdparty/pl/tablex.lua rename to framework/lualib/3rd/pl/tablex.lua diff --git a/framework/lualib/thirdparty/pl/template.lua b/framework/lualib/3rd/pl/template.lua similarity index 100% rename from framework/lualib/thirdparty/pl/template.lua rename to framework/lualib/3rd/pl/template.lua diff --git a/framework/lualib/thirdparty/pl/test.lua b/framework/lualib/3rd/pl/test.lua similarity index 100% rename from framework/lualib/thirdparty/pl/test.lua rename to framework/lualib/3rd/pl/test.lua diff --git a/framework/lualib/thirdparty/pl/text.lua b/framework/lualib/3rd/pl/text.lua similarity index 100% rename from framework/lualib/thirdparty/pl/text.lua rename to framework/lualib/3rd/pl/text.lua diff --git a/framework/lualib/thirdparty/pl/types.lua b/framework/lualib/3rd/pl/types.lua similarity index 100% rename from framework/lualib/thirdparty/pl/types.lua rename to framework/lualib/3rd/pl/types.lua diff --git a/framework/lualib/thirdparty/pl/url.lua b/framework/lualib/3rd/pl/url.lua similarity index 100% rename from framework/lualib/thirdparty/pl/url.lua rename to framework/lualib/3rd/pl/url.lua diff --git a/framework/lualib/thirdparty/pl/utils.lua b/framework/lualib/3rd/pl/utils.lua similarity index 100% rename from framework/lualib/thirdparty/pl/utils.lua rename to framework/lualib/3rd/pl/utils.lua diff --git a/framework/lualib/thirdparty/pl/xml.lua b/framework/lualib/3rd/pl/xml.lua similarity index 100% rename from framework/lualib/thirdparty/pl/xml.lua rename to framework/lualib/3rd/pl/xml.lua diff --git a/framework/lualib/thirdparty/rx/aliases.lua b/framework/lualib/3rd/rx/aliases.lua similarity index 100% rename from framework/lualib/thirdparty/rx/aliases.lua rename to framework/lualib/3rd/rx/aliases.lua diff --git a/framework/lualib/thirdparty/rx/init.lua b/framework/lualib/3rd/rx/init.lua similarity index 100% rename from framework/lualib/thirdparty/rx/init.lua rename to framework/lualib/3rd/rx/init.lua diff --git a/framework/lualib/thirdparty/rx/observable.lua b/framework/lualib/3rd/rx/observable.lua similarity index 100% rename from framework/lualib/thirdparty/rx/observable.lua rename to framework/lualib/3rd/rx/observable.lua diff --git a/framework/lualib/thirdparty/rx/observer.lua b/framework/lualib/3rd/rx/observer.lua similarity index 100% rename from framework/lualib/thirdparty/rx/observer.lua rename to framework/lualib/3rd/rx/observer.lua diff --git a/framework/lualib/thirdparty/rx/operators/all.lua b/framework/lualib/3rd/rx/operators/all.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/all.lua rename to framework/lualib/3rd/rx/operators/all.lua diff --git a/framework/lualib/thirdparty/rx/operators/amb.lua b/framework/lualib/3rd/rx/operators/amb.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/amb.lua rename to framework/lualib/3rd/rx/operators/amb.lua diff --git a/framework/lualib/thirdparty/rx/operators/average.lua b/framework/lualib/3rd/rx/operators/average.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/average.lua rename to framework/lualib/3rd/rx/operators/average.lua diff --git a/framework/lualib/thirdparty/rx/operators/buffer.lua b/framework/lualib/3rd/rx/operators/buffer.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/buffer.lua rename to framework/lualib/3rd/rx/operators/buffer.lua diff --git a/framework/lualib/thirdparty/rx/operators/catch.lua b/framework/lualib/3rd/rx/operators/catch.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/catch.lua rename to framework/lualib/3rd/rx/operators/catch.lua diff --git a/framework/lualib/thirdparty/rx/operators/combineLatest.lua b/framework/lualib/3rd/rx/operators/combineLatest.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/combineLatest.lua rename to framework/lualib/3rd/rx/operators/combineLatest.lua diff --git a/framework/lualib/thirdparty/rx/operators/compact.lua b/framework/lualib/3rd/rx/operators/compact.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/compact.lua rename to framework/lualib/3rd/rx/operators/compact.lua diff --git a/framework/lualib/thirdparty/rx/operators/concat.lua b/framework/lualib/3rd/rx/operators/concat.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/concat.lua rename to framework/lualib/3rd/rx/operators/concat.lua diff --git a/framework/lualib/thirdparty/rx/operators/contains.lua b/framework/lualib/3rd/rx/operators/contains.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/contains.lua rename to framework/lualib/3rd/rx/operators/contains.lua diff --git a/framework/lualib/thirdparty/rx/operators/count.lua b/framework/lualib/3rd/rx/operators/count.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/count.lua rename to framework/lualib/3rd/rx/operators/count.lua diff --git a/framework/lualib/thirdparty/rx/operators/debounce.lua b/framework/lualib/3rd/rx/operators/debounce.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/debounce.lua rename to framework/lualib/3rd/rx/operators/debounce.lua diff --git a/framework/lualib/thirdparty/rx/operators/defaultIfEmpty.lua b/framework/lualib/3rd/rx/operators/defaultIfEmpty.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/defaultIfEmpty.lua rename to framework/lualib/3rd/rx/operators/defaultIfEmpty.lua diff --git a/framework/lualib/thirdparty/rx/operators/delay.lua b/framework/lualib/3rd/rx/operators/delay.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/delay.lua rename to framework/lualib/3rd/rx/operators/delay.lua diff --git a/framework/lualib/thirdparty/rx/operators/distinct.lua b/framework/lualib/3rd/rx/operators/distinct.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/distinct.lua rename to framework/lualib/3rd/rx/operators/distinct.lua diff --git a/framework/lualib/thirdparty/rx/operators/distinctUntilChanged.lua b/framework/lualib/3rd/rx/operators/distinctUntilChanged.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/distinctUntilChanged.lua rename to framework/lualib/3rd/rx/operators/distinctUntilChanged.lua diff --git a/framework/lualib/thirdparty/rx/operators/elementAt.lua b/framework/lualib/3rd/rx/operators/elementAt.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/elementAt.lua rename to framework/lualib/3rd/rx/operators/elementAt.lua diff --git a/framework/lualib/thirdparty/rx/operators/filter.lua b/framework/lualib/3rd/rx/operators/filter.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/filter.lua rename to framework/lualib/3rd/rx/operators/filter.lua diff --git a/framework/lualib/thirdparty/rx/operators/find.lua b/framework/lualib/3rd/rx/operators/find.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/find.lua rename to framework/lualib/3rd/rx/operators/find.lua diff --git a/framework/lualib/thirdparty/rx/operators/first.lua b/framework/lualib/3rd/rx/operators/first.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/first.lua rename to framework/lualib/3rd/rx/operators/first.lua diff --git a/framework/lualib/thirdparty/rx/operators/flatMap.lua b/framework/lualib/3rd/rx/operators/flatMap.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/flatMap.lua rename to framework/lualib/3rd/rx/operators/flatMap.lua diff --git a/framework/lualib/thirdparty/rx/operators/flatMapLatest.lua b/framework/lualib/3rd/rx/operators/flatMapLatest.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/flatMapLatest.lua rename to framework/lualib/3rd/rx/operators/flatMapLatest.lua diff --git a/framework/lualib/thirdparty/rx/operators/flatten.lua b/framework/lualib/3rd/rx/operators/flatten.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/flatten.lua rename to framework/lualib/3rd/rx/operators/flatten.lua diff --git a/framework/lualib/thirdparty/rx/operators/ignoreElements.lua b/framework/lualib/3rd/rx/operators/ignoreElements.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/ignoreElements.lua rename to framework/lualib/3rd/rx/operators/ignoreElements.lua diff --git a/framework/lualib/thirdparty/rx/operators/last.lua b/framework/lualib/3rd/rx/operators/last.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/last.lua rename to framework/lualib/3rd/rx/operators/last.lua diff --git a/framework/lualib/thirdparty/rx/operators/map.lua b/framework/lualib/3rd/rx/operators/map.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/map.lua rename to framework/lualib/3rd/rx/operators/map.lua diff --git a/framework/lualib/thirdparty/rx/operators/max.lua b/framework/lualib/3rd/rx/operators/max.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/max.lua rename to framework/lualib/3rd/rx/operators/max.lua diff --git a/framework/lualib/thirdparty/rx/operators/merge.lua b/framework/lualib/3rd/rx/operators/merge.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/merge.lua rename to framework/lualib/3rd/rx/operators/merge.lua diff --git a/framework/lualib/thirdparty/rx/operators/min.lua b/framework/lualib/3rd/rx/operators/min.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/min.lua rename to framework/lualib/3rd/rx/operators/min.lua diff --git a/framework/lualib/thirdparty/rx/operators/pack.lua b/framework/lualib/3rd/rx/operators/pack.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/pack.lua rename to framework/lualib/3rd/rx/operators/pack.lua diff --git a/framework/lualib/thirdparty/rx/operators/partition.lua b/framework/lualib/3rd/rx/operators/partition.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/partition.lua rename to framework/lualib/3rd/rx/operators/partition.lua diff --git a/framework/lualib/thirdparty/rx/operators/pluck.lua b/framework/lualib/3rd/rx/operators/pluck.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/pluck.lua rename to framework/lualib/3rd/rx/operators/pluck.lua diff --git a/framework/lualib/thirdparty/rx/operators/reduce.lua b/framework/lualib/3rd/rx/operators/reduce.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/reduce.lua rename to framework/lualib/3rd/rx/operators/reduce.lua diff --git a/framework/lualib/thirdparty/rx/operators/reject.lua b/framework/lualib/3rd/rx/operators/reject.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/reject.lua rename to framework/lualib/3rd/rx/operators/reject.lua diff --git a/framework/lualib/thirdparty/rx/operators/retry.lua b/framework/lualib/3rd/rx/operators/retry.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/retry.lua rename to framework/lualib/3rd/rx/operators/retry.lua diff --git a/framework/lualib/thirdparty/rx/operators/sample.lua b/framework/lualib/3rd/rx/operators/sample.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/sample.lua rename to framework/lualib/3rd/rx/operators/sample.lua diff --git a/framework/lualib/thirdparty/rx/operators/scan.lua b/framework/lualib/3rd/rx/operators/scan.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/scan.lua rename to framework/lualib/3rd/rx/operators/scan.lua diff --git a/framework/lualib/thirdparty/rx/operators/skip.lua b/framework/lualib/3rd/rx/operators/skip.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/skip.lua rename to framework/lualib/3rd/rx/operators/skip.lua diff --git a/framework/lualib/thirdparty/rx/operators/skipLast.lua b/framework/lualib/3rd/rx/operators/skipLast.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/skipLast.lua rename to framework/lualib/3rd/rx/operators/skipLast.lua diff --git a/framework/lualib/thirdparty/rx/operators/skipUntil.lua b/framework/lualib/3rd/rx/operators/skipUntil.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/skipUntil.lua rename to framework/lualib/3rd/rx/operators/skipUntil.lua diff --git a/framework/lualib/thirdparty/rx/operators/skipWhile.lua b/framework/lualib/3rd/rx/operators/skipWhile.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/skipWhile.lua rename to framework/lualib/3rd/rx/operators/skipWhile.lua diff --git a/framework/lualib/thirdparty/rx/operators/startWith.lua b/framework/lualib/3rd/rx/operators/startWith.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/startWith.lua rename to framework/lualib/3rd/rx/operators/startWith.lua diff --git a/framework/lualib/thirdparty/rx/operators/sum.lua b/framework/lualib/3rd/rx/operators/sum.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/sum.lua rename to framework/lualib/3rd/rx/operators/sum.lua diff --git a/framework/lualib/thirdparty/rx/operators/switch.lua b/framework/lualib/3rd/rx/operators/switch.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/switch.lua rename to framework/lualib/3rd/rx/operators/switch.lua diff --git a/framework/lualib/thirdparty/rx/operators/take.lua b/framework/lualib/3rd/rx/operators/take.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/take.lua rename to framework/lualib/3rd/rx/operators/take.lua diff --git a/framework/lualib/thirdparty/rx/operators/takeLast.lua b/framework/lualib/3rd/rx/operators/takeLast.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/takeLast.lua rename to framework/lualib/3rd/rx/operators/takeLast.lua diff --git a/framework/lualib/thirdparty/rx/operators/takeUntil.lua b/framework/lualib/3rd/rx/operators/takeUntil.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/takeUntil.lua rename to framework/lualib/3rd/rx/operators/takeUntil.lua diff --git a/framework/lualib/thirdparty/rx/operators/takeWhile.lua b/framework/lualib/3rd/rx/operators/takeWhile.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/takeWhile.lua rename to framework/lualib/3rd/rx/operators/takeWhile.lua diff --git a/framework/lualib/thirdparty/rx/operators/tap.lua b/framework/lualib/3rd/rx/operators/tap.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/tap.lua rename to framework/lualib/3rd/rx/operators/tap.lua diff --git a/framework/lualib/thirdparty/rx/operators/unpack.lua b/framework/lualib/3rd/rx/operators/unpack.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/unpack.lua rename to framework/lualib/3rd/rx/operators/unpack.lua diff --git a/framework/lualib/thirdparty/rx/operators/unwrap.lua b/framework/lualib/3rd/rx/operators/unwrap.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/unwrap.lua rename to framework/lualib/3rd/rx/operators/unwrap.lua diff --git a/framework/lualib/thirdparty/rx/operators/window.lua b/framework/lualib/3rd/rx/operators/window.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/window.lua rename to framework/lualib/3rd/rx/operators/window.lua diff --git a/framework/lualib/thirdparty/rx/operators/with.lua b/framework/lualib/3rd/rx/operators/with.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/with.lua rename to framework/lualib/3rd/rx/operators/with.lua diff --git a/framework/lualib/thirdparty/rx/operators/zip.lua b/framework/lualib/3rd/rx/operators/zip.lua similarity index 100% rename from framework/lualib/thirdparty/rx/operators/zip.lua rename to framework/lualib/3rd/rx/operators/zip.lua diff --git a/framework/lualib/thirdparty/rx/schedulers/cooperativescheduler.lua b/framework/lualib/3rd/rx/schedulers/cooperativescheduler.lua similarity index 100% rename from framework/lualib/thirdparty/rx/schedulers/cooperativescheduler.lua rename to framework/lualib/3rd/rx/schedulers/cooperativescheduler.lua diff --git a/framework/lualib/thirdparty/rx/schedulers/immediatescheduler.lua b/framework/lualib/3rd/rx/schedulers/immediatescheduler.lua similarity index 100% rename from framework/lualib/thirdparty/rx/schedulers/immediatescheduler.lua rename to framework/lualib/3rd/rx/schedulers/immediatescheduler.lua diff --git a/framework/lualib/thirdparty/rx/schedulers/timeoutscheduler.lua b/framework/lualib/3rd/rx/schedulers/timeoutscheduler.lua similarity index 100% rename from framework/lualib/thirdparty/rx/schedulers/timeoutscheduler.lua rename to framework/lualib/3rd/rx/schedulers/timeoutscheduler.lua diff --git a/framework/lualib/thirdparty/rx/subjects/asyncsubject.lua b/framework/lualib/3rd/rx/subjects/asyncsubject.lua similarity index 100% rename from framework/lualib/thirdparty/rx/subjects/asyncsubject.lua rename to framework/lualib/3rd/rx/subjects/asyncsubject.lua diff --git a/framework/lualib/thirdparty/rx/subjects/behaviorsubject.lua b/framework/lualib/3rd/rx/subjects/behaviorsubject.lua similarity index 100% rename from framework/lualib/thirdparty/rx/subjects/behaviorsubject.lua rename to framework/lualib/3rd/rx/subjects/behaviorsubject.lua diff --git a/framework/lualib/thirdparty/rx/subjects/replaysubject.lua b/framework/lualib/3rd/rx/subjects/replaysubject.lua similarity index 100% rename from framework/lualib/thirdparty/rx/subjects/replaysubject.lua rename to framework/lualib/3rd/rx/subjects/replaysubject.lua diff --git a/framework/lualib/thirdparty/rx/subjects/subject.lua b/framework/lualib/3rd/rx/subjects/subject.lua similarity index 100% rename from framework/lualib/thirdparty/rx/subjects/subject.lua rename to framework/lualib/3rd/rx/subjects/subject.lua diff --git a/framework/lualib/thirdparty/rx/subscription.lua b/framework/lualib/3rd/rx/subscription.lua similarity index 100% rename from framework/lualib/thirdparty/rx/subscription.lua rename to framework/lualib/3rd/rx/subscription.lua diff --git a/framework/lualib/thirdparty/rx/timer.lua b/framework/lualib/3rd/rx/timer.lua similarity index 100% rename from framework/lualib/thirdparty/rx/timer.lua rename to framework/lualib/3rd/rx/timer.lua diff --git a/framework/lualib/thirdparty/rx/util.lua b/framework/lualib/3rd/rx/util.lua similarity index 100% rename from framework/lualib/thirdparty/rx/util.lua rename to framework/lualib/3rd/rx/util.lua diff --git a/framework/lualib/thirdparty/validation/context.lua b/framework/lualib/3rd/validation/context.lua similarity index 100% rename from framework/lualib/thirdparty/validation/context.lua rename to framework/lualib/3rd/validation/context.lua diff --git a/framework/lualib/thirdparty/validation/init.lua b/framework/lualib/3rd/validation/init.lua similarity index 100% rename from framework/lualib/thirdparty/validation/init.lua rename to framework/lualib/3rd/validation/init.lua diff --git a/framework/lualib/thirdparty/validation/message.lua b/framework/lualib/3rd/validation/message.lua similarity index 100% rename from framework/lualib/thirdparty/validation/message.lua rename to framework/lualib/3rd/validation/message.lua diff --git a/framework/lualib/thirdparty/validation/rules/absent.lua b/framework/lualib/3rd/validation/rules/absent.lua similarity index 100% rename from framework/lualib/thirdparty/validation/rules/absent.lua rename to framework/lualib/3rd/validation/rules/absent.lua diff --git a/framework/lualib/thirdparty/validation/rules/all.lua b/framework/lualib/3rd/validation/rules/all.lua similarity index 100% rename from framework/lualib/thirdparty/validation/rules/all.lua rename to framework/lualib/3rd/validation/rules/all.lua diff --git a/framework/lualib/thirdparty/validation/rules/between.lua b/framework/lualib/3rd/validation/rules/between.lua similarity index 100% rename from framework/lualib/thirdparty/validation/rules/between.lua rename to framework/lualib/3rd/validation/rules/between.lua diff --git a/framework/lualib/thirdparty/validation/rules/dummy.lua b/framework/lualib/3rd/validation/rules/dummy.lua similarity index 100% rename from framework/lualib/thirdparty/validation/rules/dummy.lua rename to framework/lualib/3rd/validation/rules/dummy.lua diff --git a/framework/lualib/thirdparty/validation/rules/equals.lua b/framework/lualib/3rd/validation/rules/equals.lua similarity index 100% rename from framework/lualib/thirdparty/validation/rules/equals.lua rename to framework/lualib/3rd/validation/rules/equals.lua diff --git a/framework/lualib/thirdparty/validation/rules/key.lua b/framework/lualib/3rd/validation/rules/key.lua similarity index 100% rename from framework/lualib/thirdparty/validation/rules/key.lua rename to framework/lualib/3rd/validation/rules/key.lua diff --git a/framework/lualib/thirdparty/validation/rules/never.lua b/framework/lualib/3rd/validation/rules/never.lua similarity index 100% rename from framework/lualib/thirdparty/validation/rules/never.lua rename to framework/lualib/3rd/validation/rules/never.lua diff --git a/framework/lualib/thirdparty/validation/rules/number.lua b/framework/lualib/3rd/validation/rules/number.lua similarity index 100% rename from framework/lualib/thirdparty/validation/rules/number.lua rename to framework/lualib/3rd/validation/rules/number.lua diff --git a/framework/lualib/thirdparty/validation/rules/numeric.lua b/framework/lualib/3rd/validation/rules/numeric.lua similarity index 100% rename from framework/lualib/thirdparty/validation/rules/numeric.lua rename to framework/lualib/3rd/validation/rules/numeric.lua diff --git a/framework/lualib/thirdparty/validation/rules/positive.lua b/framework/lualib/3rd/validation/rules/positive.lua similarity index 100% rename from framework/lualib/thirdparty/validation/rules/positive.lua rename to framework/lualib/3rd/validation/rules/positive.lua diff --git a/framework/lualib/thirdparty/validation/rules/string.lua b/framework/lualib/3rd/validation/rules/string.lua similarity index 100% rename from framework/lualib/thirdparty/validation/rules/string.lua rename to framework/lualib/3rd/validation/rules/string.lua diff --git a/framework/lualib/thirdparty/beholder/beholder.lua b/framework/lualib/3rd/zeus/beholder.lua similarity index 100% rename from framework/lualib/thirdparty/beholder/beholder.lua rename to framework/lualib/3rd/zeus/beholder.lua diff --git a/framework/lualib/thirdparty/bint/bint.lua b/framework/lualib/3rd/zeus/bint.lua similarity index 100% rename from framework/lualib/thirdparty/bint/bint.lua rename to framework/lualib/3rd/zeus/bint.lua diff --git a/framework/lualib/thirdparty/enum.lua b/framework/lualib/3rd/zeus/enum.lua similarity index 100% rename from framework/lualib/thirdparty/enum.lua rename to framework/lualib/3rd/zeus/enum.lua diff --git a/framework/lualib/thirdparty/events.lua b/framework/lualib/3rd/zeus/events.lua similarity index 100% rename from framework/lualib/thirdparty/events.lua rename to framework/lualib/3rd/zeus/events.lua diff --git a/framework/lualib/thirdparty/fsm.lua b/framework/lualib/3rd/zeus/fsm.lua similarity index 100% rename from framework/lualib/thirdparty/fsm.lua rename to framework/lualib/3rd/zeus/fsm.lua diff --git a/framework/lualib/thirdparty/oop/handler.lua b/framework/lualib/3rd/zeus/handler.lua similarity index 100% rename from framework/lualib/thirdparty/oop/handler.lua rename to framework/lualib/3rd/zeus/handler.lua diff --git a/framework/lualib/thirdparty/hashids.lua b/framework/lualib/3rd/zeus/hashids.lua similarity index 100% rename from framework/lualib/thirdparty/hashids.lua rename to framework/lualib/3rd/zeus/hashids.lua diff --git a/framework/lualib/thirdparty/json.lua b/framework/lualib/3rd/zeus/json.lua similarity index 100% rename from framework/lualib/thirdparty/json.lua rename to framework/lualib/3rd/zeus/json.lua diff --git a/framework/lualib/thirdparty/lru/lru.lua b/framework/lualib/3rd/zeus/lru.lua similarity index 96% rename from framework/lualib/thirdparty/lru/lru.lua rename to framework/lualib/3rd/zeus/lru.lua index ade67c8..ed58640 100644 --- a/framework/lualib/thirdparty/lru/lru.lua +++ b/framework/lualib/3rd/zeus/lru.lua @@ -1,159 +1,159 @@ --- lua-LRU, LRU cache in Lua --- Copyright (c) 2015 Boris Nagaev --- See the LICENSE file for terms of use. --- https://github.com/starius/lua-lru -local setmetatable = setmetatable -local assert = assert - -local LRU = {} - -function LRU.new(max_size, max_bytes) - - assert(max_size >= 1, "max_size must be >= 1") - assert(not max_bytes or max_bytes >= 1, "max_bytes must be >= 1") - - -- current size - local size = 0 - local bytes_used = 0 - - -- map is a hash map from keys to tuples - -- tuple: value, prev, next, key - -- prev and next are pointers to tuples - local map = {} - - -- indices of tuple - local VALUE = 1 - local PREV = 2 - local NEXT = 3 - local KEY = 4 - local BYTES = 5 - - -- newest and oldest are ends of double-linked list - local newest = nil -- first - local oldest = nil -- last - - local removed_tuple - -- remove a tuple from linked list - local function cut(tuple) - local tuple_prev = tuple[PREV] - local tuple_next = tuple[NEXT] - tuple[PREV] = nil - tuple[NEXT] = nil - if tuple_prev and tuple_next then - tuple_prev[NEXT] = tuple_next - tuple_next[PREV] = tuple_prev - elseif tuple_prev then - -- tuple is the oldest element - tuple_prev[NEXT] = nil - oldest = tuple_prev - elseif tuple_next then - -- tuple is the newest element - tuple_next[PREV] = nil - newest = tuple_next - else - -- tuple is the only element - newest = nil - oldest = nil - end - end - - -- insert a tuple to the newest end - local function setNewest(tuple) - if not newest then - newest = tuple - oldest = tuple - else - tuple[NEXT] = newest - newest[PREV] = tuple - newest = tuple - end - end - - local function del(key, tuple) - map[key] = nil - cut(tuple) - size = size - 1 - bytes_used = bytes_used - (tuple[BYTES] or 0) - removed_tuple = tuple - end - - -- removes elemenets to provide enough memory - -- returns last removed element or nil - local function makeFreeSpace(bytes) - while size + 1 > max_size or (max_bytes and bytes_used + bytes > max_bytes) do - assert(oldest, "not enough storage for cache") - del(oldest[KEY], oldest) - end - end - - local function get(_, key) - local tuple = map[key] - if not tuple then - return nil - end - cut(tuple) - setNewest(tuple) - return tuple[VALUE] - end - - -- 增删都用这个接口,有点歧义 - local function set(_, key, value, bytes) - local tuple = map[key] - if tuple then - del(key, tuple) - end - if value ~= nil then - -- the value is not removed - bytes = max_bytes and (bytes or #value) or 0 - makeFreeSpace(bytes) - local tuple1 = removed_tuple or {} - map[key] = tuple1 - tuple1[VALUE] = value - tuple1[KEY] = key - tuple1[BYTES] = max_bytes and bytes - size = size + 1 - bytes_used = bytes_used + bytes - setNewest(tuple1) - else - assert(key ~= nil, "Key may not be nil") - end - removed_tuple = nil - end - - local function delete(_, key) - return set(_, key, nil) - end - - local function mynext(_, prev_key) - local tuple - if prev_key then - tuple = map[prev_key][NEXT] - else - tuple = newest - end - if tuple then - return tuple[KEY], tuple[VALUE] - else - return nil - end - end - - -- returns iterator for keys and values - local function lru_pairs() - return mynext, nil, nil - end - - local mt = { - __index = { - get = get, - set = set, - delete = delete, - pairs = lru_pairs, - }, - __pairs = lru_pairs, - } - - return setmetatable({}, mt) -end - -return LRU +-- lua-LRU, LRU cache in Lua +-- Copyright (c) 2015 Boris Nagaev +-- See the LICENSE file for terms of use. +-- https://github.com/starius/lua-lru +local setmetatable = setmetatable +local assert = assert + +local LRU = {} + +function LRU.new(max_size, max_bytes) + + assert(max_size >= 1, "max_size must be >= 1") + assert(not max_bytes or max_bytes >= 1, "max_bytes must be >= 1") + + -- current size + local size = 0 + local bytes_used = 0 + + -- map is a hash map from keys to tuples + -- tuple: value, prev, next, key + -- prev and next are pointers to tuples + local map = {} + + -- indices of tuple + local VALUE = 1 + local PREV = 2 + local NEXT = 3 + local KEY = 4 + local BYTES = 5 + + -- newest and oldest are ends of double-linked list + local newest = nil -- first + local oldest = nil -- last + + local removed_tuple + -- remove a tuple from linked list + local function cut(tuple) + local tuple_prev = tuple[PREV] + local tuple_next = tuple[NEXT] + tuple[PREV] = nil + tuple[NEXT] = nil + if tuple_prev and tuple_next then + tuple_prev[NEXT] = tuple_next + tuple_next[PREV] = tuple_prev + elseif tuple_prev then + -- tuple is the oldest element + tuple_prev[NEXT] = nil + oldest = tuple_prev + elseif tuple_next then + -- tuple is the newest element + tuple_next[PREV] = nil + newest = tuple_next + else + -- tuple is the only element + newest = nil + oldest = nil + end + end + + -- insert a tuple to the newest end + local function setNewest(tuple) + if not newest then + newest = tuple + oldest = tuple + else + tuple[NEXT] = newest + newest[PREV] = tuple + newest = tuple + end + end + + local function del(key, tuple) + map[key] = nil + cut(tuple) + size = size - 1 + bytes_used = bytes_used - (tuple[BYTES] or 0) + removed_tuple = tuple + end + + -- removes elemenets to provide enough memory + -- returns last removed element or nil + local function makeFreeSpace(bytes) + while size + 1 > max_size or (max_bytes and bytes_used + bytes > max_bytes) do + assert(oldest, "not enough storage for cache") + del(oldest[KEY], oldest) + end + end + + local function get(_, key) + local tuple = map[key] + if not tuple then + return nil + end + cut(tuple) + setNewest(tuple) + return tuple[VALUE] + end + + -- 增删都用这个接口,有点歧义 + local function set(_, key, value, bytes) + local tuple = map[key] + if tuple then + del(key, tuple) + end + if value ~= nil then + -- the value is not removed + bytes = max_bytes and (bytes or #value) or 0 + makeFreeSpace(bytes) + local tuple1 = removed_tuple or {} + map[key] = tuple1 + tuple1[VALUE] = value + tuple1[KEY] = key + tuple1[BYTES] = max_bytes and bytes + size = size + 1 + bytes_used = bytes_used + bytes + setNewest(tuple1) + else + assert(key ~= nil, "Key may not be nil") + end + removed_tuple = nil + end + + local function delete(_, key) + return set(_, key, nil) + end + + local function mynext(_, prev_key) + local tuple + if prev_key then + tuple = map[prev_key][NEXT] + else + tuple = newest + end + if tuple then + return tuple[KEY], tuple[VALUE] + else + return nil + end + end + + -- returns iterator for keys and values + local function lru_pairs() + return mynext, nil, nil + end + + local mt = { + __index = { + get = get, + set = set, + delete = delete, + pairs = lru_pairs, + }, + __pairs = lru_pairs, + } + + return setmetatable({}, mt) +end + +return LRU diff --git a/framework/lualib/thirdparty/ltrace.lua b/framework/lualib/3rd/zeus/ltrace.lua similarity index 100% rename from framework/lualib/thirdparty/ltrace.lua rename to framework/lualib/3rd/zeus/ltrace.lua diff --git a/framework/lualib/thirdparty/oop/middleclass.lua b/framework/lualib/3rd/zeus/middleclass.lua similarity index 100% rename from framework/lualib/thirdparty/oop/middleclass.lua rename to framework/lualib/3rd/zeus/middleclass.lua diff --git a/framework/lualib/thirdparty/moses/moses.lua b/framework/lualib/3rd/zeus/moses.lua similarity index 100% rename from framework/lualib/thirdparty/moses/moses.lua rename to framework/lualib/3rd/zeus/moses.lua diff --git a/framework/lualib/thirdparty/nesting/nesting.lua b/framework/lualib/3rd/zeus/nesting.lua similarity index 100% rename from framework/lualib/thirdparty/nesting/nesting.lua rename to framework/lualib/3rd/zeus/nesting.lua diff --git a/framework/lualib/thirdparty/oop/option.lua b/framework/lualib/3rd/zeus/option.lua similarity index 100% rename from framework/lualib/thirdparty/oop/option.lua rename to framework/lualib/3rd/zeus/option.lua diff --git a/framework/lualib/thirdparty/promise/promise.lua b/framework/lualib/3rd/zeus/promise.lua similarity index 100% rename from framework/lualib/thirdparty/promise/promise.lua rename to framework/lualib/3rd/zeus/promise.lua diff --git a/framework/lualib/thirdparty/rubble/rubble.lua b/framework/lualib/3rd/zeus/rubble.lua similarity index 100% rename from framework/lualib/thirdparty/rubble/rubble.lua rename to framework/lualib/3rd/zeus/rubble.lua diff --git a/framework/lualib/thirdparty/sandbox/sandbox.lua b/framework/lualib/3rd/zeus/sandbox.lua similarity index 100% rename from framework/lualib/thirdparty/sandbox/sandbox.lua rename to framework/lualib/3rd/zeus/sandbox.lua diff --git a/framework/lualib/thirdparty/oop/stateful.lua b/framework/lualib/3rd/zeus/stateful.lua similarity index 100% rename from framework/lualib/thirdparty/oop/stateful.lua rename to framework/lualib/3rd/zeus/stateful.lua diff --git a/framework/lualib/thirdparty/traceable.lua b/framework/lualib/3rd/zeus/traceable.lua similarity index 100% rename from framework/lualib/thirdparty/traceable.lua rename to framework/lualib/3rd/zeus/traceable.lua diff --git a/framework/lualib/thirdparty/try.lua b/framework/lualib/3rd/zeus/try.lua similarity index 100% rename from framework/lualib/thirdparty/try.lua rename to framework/lualib/3rd/zeus/try.lua diff --git a/framework/lualib/thirdparty/vararg.lua b/framework/lualib/3rd/zeus/vararg.lua similarity index 100% rename from framework/lualib/thirdparty/vararg.lua rename to framework/lualib/3rd/zeus/vararg.lua diff --git a/framework/lualib/thirdparty/zset/zset.lua b/framework/lualib/3rd/zeus/zset.lua similarity index 100% rename from framework/lualib/thirdparty/zset/zset.lua rename to framework/lualib/3rd/zeus/zset.lua diff --git a/framework/lualib/thirdparty/ luafun/fun.lua b/framework/lualib/thirdparty/ luafun/fun.lua deleted file mode 100644 index 214bd9c..0000000 --- a/framework/lualib/thirdparty/ luafun/fun.lua +++ /dev/null @@ -1,1124 +0,0 @@ ---- ---- Lua Fun - a high-performance functional programming library for LuaJIT ---- ---- Copyright (c) 2013-2017 Roman Tsisyk ---- ---- Distributed under the MIT/X11 License. See COPYING.md for more details. ---- -local exports = {} -local methods = {} - --- compatibility with Lua 5.1/5.2 -local unpack = rawget(table, "unpack") or unpack - --------------------------------------------------------------------------------- --- Tools --------------------------------------------------------------------------------- - -local return_if_not_empty = function(state_x, ...) - if state_x == nil then - return nil - end - return ... -end - -local call_if_not_empty = function(fun, state_x, ...) - if state_x == nil then - return nil - end - return state_x, fun(...) -end - -local function deepcopy(orig) -- used by cycle() - local orig_type = type(orig) - local copy - if orig_type == 'table' then - copy = {} - for orig_key, orig_value in next, orig, nil do - copy[deepcopy(orig_key)] = deepcopy(orig_value) - end - else - copy = orig - end - return copy -end - -local iterator_mt = { - -- usually called by for-in loop - __call = function(self, param, state) - return self.gen(param, state) - end, - __tostring = function(self) - return '' - end, - -- add all exported methods - __index = methods, -} - -local wrap = function(gen, param, state) - return setmetatable({ - gen = gen, - param = param, - state = state, - }, iterator_mt), param, state -end -exports.wrap = wrap - -local unwrap = function(self) - return self.gen, self.param, self.state -end -methods.unwrap = unwrap - --------------------------------------------------------------------------------- --- Basic Functions --------------------------------------------------------------------------------- - -local nil_gen = function(_param, _state) - return nil -end - -local string_gen = function(param, state) - local state = state + 1 - if state > #param then - return nil - end - local r = string.sub(param, state, state) - return state, r -end - -local ipairs_gen = ipairs({}) -- get the generating function from ipairs - -local pairs_gen = pairs({ - a = 0, -}) -- get the generating function from pairs -local map_gen = function(tab, key) - local value - local key, value = pairs_gen(tab, key) - return key, key, value -end - -local rawiter = function(obj, param, state) - assert(obj ~= nil, "invalid iterator") - if type(obj) == "table" then - local mt = getmetatable(obj); - if mt ~= nil then - if mt == iterator_mt then - return obj.gen, obj.param, obj.state - elseif mt.__ipairs ~= nil then - return mt.__ipairs(obj) - elseif mt.__pairs ~= nil then - return mt.__pairs(obj) - end - end - if #obj > 0 then - -- array - return ipairs(obj) - else - -- hash - return map_gen, obj, nil - end - elseif (type(obj) == "function") then - return obj, param, state - elseif (type(obj) == "string") then - if #obj == 0 then - return nil_gen, nil, nil - end - return string_gen, obj, 0 - end - error(string.format('object %s of type "%s" is not iterable', obj, type(obj))) -end - -local iter = function(obj, param, state) - return wrap(rawiter(obj, param, state)) -end -exports.iter = iter - -local method0 = function(fun) - return function(self) - return fun(self.gen, self.param, self.state) - end -end - -local method1 = function(fun) - return function(self, arg1) - return fun(arg1, self.gen, self.param, self.state) - end -end - -local method2 = function(fun) - return function(self, arg1, arg2) - return fun(arg1, arg2, self.gen, self.param, self.state) - end -end - -local export0 = function(fun) - return function(gen, param, state) - return fun(rawiter(gen, param, state)) - end -end - -local export1 = function(fun) - return function(arg1, gen, param, state) - return fun(arg1, rawiter(gen, param, state)) - end -end - -local export2 = function(fun) - return function(arg1, arg2, gen, param, state) - return fun(arg1, arg2, rawiter(gen, param, state)) - end -end - -local each = function(fun, gen, param, state) - repeat - state = call_if_not_empty(fun, gen(param, state)) - until state == nil -end -methods.each = method1(each) -exports.each = export1(each) -methods.for_each = methods.each -exports.for_each = exports.each -methods.foreach = methods.each -exports.foreach = exports.each - --------------------------------------------------------------------------------- --- Generators --------------------------------------------------------------------------------- - -local range_gen = function(param, state) - local stop, step = param[1], param[2] - local state = state + step - if state > stop then - return nil - end - return state, state -end - -local range_rev_gen = function(param, state) - local stop, step = param[1], param[2] - local state = state + step - if state < stop then - return nil - end - return state, state -end - -local range = function(start, stop, step) - if step == nil then - if stop == nil then - if start == 0 then - return nil_gen, nil, nil - end - stop = start - start = stop > 0 and 1 or -1 - end - step = start <= stop and 1 or -1 - end - - assert(type(start) == "number", "start must be a number") - assert(type(stop) == "number", "stop must be a number") - assert(type(step) == "number", "step must be a number") - assert(step ~= 0, "step must not be zero") - - if (step > 0) then - return wrap(range_gen, {stop, step}, start - step) - elseif (step < 0) then - return wrap(range_rev_gen, {stop, step}, start - step) - end -end -exports.range = range - -local duplicate_table_gen = function(param_x, state_x) - return state_x + 1, unpack(param_x) -end - -local duplicate_fun_gen = function(param_x, state_x) - return state_x + 1, param_x(state_x) -end - -local duplicate_gen = function(param_x, state_x) - return state_x + 1, param_x -end - -local duplicate = function(...) - if select('#', ...) <= 1 then - return wrap(duplicate_gen, select(1, ...), 0) - else - return wrap(duplicate_table_gen, {...}, 0) - end -end -exports.duplicate = duplicate -exports.replicate = duplicate -exports.xrepeat = duplicate - -local tabulate = function(fun) - assert(type(fun) == "function") - return wrap(duplicate_fun_gen, fun, 0) -end -exports.tabulate = tabulate - -local zeros = function() - return wrap(duplicate_gen, 0, 0) -end -exports.zeros = zeros - -local ones = function() - return wrap(duplicate_gen, 1, 0) -end -exports.ones = ones - -local rands_gen = function(param_x, _state_x) - return 0, math.random(param_x[1], param_x[2]) -end - -local rands_nil_gen = function(_param_x, _state_x) - return 0, math.random() -end - -local rands = function(n, m) - if n == nil and m == nil then - return wrap(rands_nil_gen, 0, 0) - end - assert(type(n) == "number", "invalid first arg to rands") - if m == nil then - m = n - n = 0 - else - assert(type(m) == "number", "invalid second arg to rands") - end - assert(n < m, "empty interval") - return wrap(rands_gen, {n, m - 1}, 0) -end -exports.rands = rands - --------------------------------------------------------------------------------- --- Slicing --------------------------------------------------------------------------------- - -local nth = function(n, gen_x, param_x, state_x) - assert(n > 0, "invalid first argument to nth") - -- An optimization for arrays and strings - if gen_x == ipairs_gen then - return param_x[n] - elseif gen_x == string_gen then - if n <= #param_x then - return string.sub(param_x, n, n) - else - return nil - end - end - for i = 1, n - 1, 1 do - state_x = gen_x(param_x, state_x) - if state_x == nil then - return nil - end - end - return return_if_not_empty(gen_x(param_x, state_x)) -end -methods.nth = method1(nth) -exports.nth = export1(nth) - -local head_call = function(state, ...) - if state == nil then - error("head: iterator is empty") - end - return ... -end - -local head = function(gen, param, state) - return head_call(gen(param, state)) -end -methods.head = method0(head) -exports.head = export0(head) -exports.car = exports.head -methods.car = methods.head - -local tail = function(gen, param, state) - state = gen(param, state) - if state == nil then - return wrap(nil_gen, nil, nil) - end - return wrap(gen, param, state) -end -methods.tail = method0(tail) -exports.tail = export0(tail) -exports.cdr = exports.tail -methods.cdr = methods.tail - -local take_n_gen_x = function(i, state_x, ...) - if state_x == nil then - return nil - end - return {i, state_x}, ... -end - -local take_n_gen = function(param, state) - local n, gen_x, param_x = param[1], param[2], param[3] - local i, state_x = state[1], state[2] - if i >= n then - return nil - end - return take_n_gen_x(i + 1, gen_x(param_x, state_x)) -end - -local take_n = function(n, gen, param, state) - assert(n >= 0, "invalid first argument to take_n") - return wrap(take_n_gen, {n, gen, param}, {0, state}) -end -methods.take_n = method1(take_n) -exports.take_n = export1(take_n) - -local take_while_gen_x = function(fun, state_x, ...) - if state_x == nil or not fun(...) then - return nil - end - return state_x, ... -end - -local take_while_gen = function(param, state_x) - local fun, gen_x, param_x = param[1], param[2], param[3] - return take_while_gen_x(fun, gen_x(param_x, state_x)) -end - -local take_while = function(fun, gen, param, state) - assert(type(fun) == "function", "invalid first argument to take_while") - return wrap(take_while_gen, {fun, gen, param}, state) -end -methods.take_while = method1(take_while) -exports.take_while = export1(take_while) - -local take = function(n_or_fun, gen, param, state) - if type(n_or_fun) == "number" then - return take_n(n_or_fun, gen, param, state) - else - return take_while(n_or_fun, gen, param, state) - end -end -methods.take = method1(take) -exports.take = export1(take) - -local drop_n = function(n, gen, param, state) - assert(n >= 0, "invalid first argument to drop_n") - local i - for i = 1, n, 1 do - state = gen(param, state) - if state == nil then - return wrap(nil_gen, nil, nil) - end - end - return wrap(gen, param, state) -end -methods.drop_n = method1(drop_n) -exports.drop_n = export1(drop_n) - -local drop_while_x = function(fun, state_x, ...) - if state_x == nil or not fun(...) then - return state_x, false - end - return state_x, true, ... -end - -local drop_while = function(fun, gen_x, param_x, state_x) - assert(type(fun) == "function", "invalid first argument to drop_while") - local cont, state_x_prev - repeat - state_x_prev = deepcopy(state_x) - state_x, cont = drop_while_x(fun, gen_x(param_x, state_x)) - until not cont - if state_x == nil then - return wrap(nil_gen, nil, nil) - end - return wrap(gen_x, param_x, state_x_prev) -end -methods.drop_while = method1(drop_while) -exports.drop_while = export1(drop_while) - -local drop = function(n_or_fun, gen_x, param_x, state_x) - if type(n_or_fun) == "number" then - return drop_n(n_or_fun, gen_x, param_x, state_x) - else - return drop_while(n_or_fun, gen_x, param_x, state_x) - end -end -methods.drop = method1(drop) -exports.drop = export1(drop) - -local split = function(n_or_fun, gen_x, param_x, state_x) - return take(n_or_fun, gen_x, param_x, state_x), drop(n_or_fun, gen_x, param_x, state_x) -end -methods.split = method1(split) -exports.split = export1(split) -methods.split_at = methods.split -exports.split_at = exports.split -methods.span = methods.split -exports.span = exports.split - --------------------------------------------------------------------------------- --- Indexing --------------------------------------------------------------------------------- - -local index = function(x, gen, param, state) - local i = 1 - for _k, r in gen, param, state do - if r == x then - return i - end - i = i + 1 - end - return nil -end -methods.index = method1(index) -exports.index = export1(index) -methods.index_of = methods.index -exports.index_of = exports.index -methods.elem_index = methods.index -exports.elem_index = exports.index - -local indexes_gen = function(param, state) - local x, gen_x, param_x = param[1], param[2], param[3] - local i, state_x = state[1], state[2] - local r - while true do - state_x, r = gen_x(param_x, state_x) - if state_x == nil then - return nil - end - i = i + 1 - if r == x then - return {i, state_x}, i - end - end -end - -local indexes = function(x, gen, param, state) - return wrap(indexes_gen, {x, gen, param}, {0, state}) -end -methods.indexes = method1(indexes) -exports.indexes = export1(indexes) -methods.elem_indexes = methods.indexes -exports.elem_indexes = exports.indexes -methods.indices = methods.indexes -exports.indices = exports.indexes -methods.elem_indices = methods.indexes -exports.elem_indices = exports.indexes - --------------------------------------------------------------------------------- --- Filtering --------------------------------------------------------------------------------- - -local filter1_gen = function(fun, gen_x, param_x, state_x, a) - while true do - if state_x == nil or fun(a) then - break - end - state_x, a = gen_x(param_x, state_x) - end - return state_x, a -end - --- call each other -local filterm_gen -local filterm_gen_shrink = function(fun, gen_x, param_x, state_x) - return filterm_gen(fun, gen_x, param_x, gen_x(param_x, state_x)) -end - -filterm_gen = function(fun, gen_x, param_x, state_x, ...) - if state_x == nil then - return nil - end - if fun(...) then - return state_x, ... - end - return filterm_gen_shrink(fun, gen_x, param_x, state_x) -end - -local filter_detect = function(fun, gen_x, param_x, state_x, ...) - if select('#', ...) < 2 then - return filter1_gen(fun, gen_x, param_x, state_x, ...) - else - return filterm_gen(fun, gen_x, param_x, state_x, ...) - end -end - -local filter_gen = function(param, state_x) - local fun, gen_x, param_x = param[1], param[2], param[3] - return filter_detect(fun, gen_x, param_x, gen_x(param_x, state_x)) -end - -local filter = function(fun, gen, param, state) - return wrap(filter_gen, {fun, gen, param}, state) -end -methods.filter = method1(filter) -exports.filter = export1(filter) -methods.remove_if = methods.filter -exports.remove_if = exports.filter - -local grep = function(fun_or_regexp, gen, param, state) - local fun = fun_or_regexp - if type(fun_or_regexp) == "string" then - fun = function(x) - return string.find(x, fun_or_regexp) ~= nil - end - end - return filter(fun, gen, param, state) -end -methods.grep = method1(grep) -exports.grep = export1(grep) - -local partition = function(fun, gen, param, state) - local neg_fun = function(...) - return not fun(...) - end - return filter(fun, gen, param, state), filter(neg_fun, gen, param, state) -end -methods.partition = method1(partition) -exports.partition = export1(partition) - --------------------------------------------------------------------------------- --- Reducing --------------------------------------------------------------------------------- - -local foldl_call = function(fun, start, state, ...) - if state == nil then - return nil, start - end - return state, fun(start, ...) -end - -local foldl = function(fun, start, gen_x, param_x, state_x) - while true do - state_x, start = foldl_call(fun, start, gen_x(param_x, state_x)) - if state_x == nil then - break - end - end - return start -end -methods.foldl = method2(foldl) -exports.foldl = export2(foldl) -methods.reduce = methods.foldl -exports.reduce = exports.foldl - -local length = function(gen, param, state) - if gen == ipairs_gen or gen == string_gen then - return #param - end - local len = 0 - repeat - state = gen(param, state) - len = len + 1 - until state == nil - return len - 1 -end -methods.length = method0(length) -exports.length = export0(length) - -local is_null = function(gen, param, state) - return gen(param, deepcopy(state)) == nil -end -methods.is_null = method0(is_null) -exports.is_null = export0(is_null) - -local is_prefix_of = function(iter_x, iter_y) - local gen_x, param_x, state_x = iter(iter_x) - local gen_y, param_y, state_y = iter(iter_y) - - local r_x, r_y - for i = 1, 10, 1 do - state_x, r_x = gen_x(param_x, state_x) - state_y, r_y = gen_y(param_y, state_y) - if state_x == nil then - return true - end - if state_y == nil or r_x ~= r_y then - return false - end - end -end -methods.is_prefix_of = is_prefix_of -exports.is_prefix_of = is_prefix_of - -local all = function(fun, gen_x, param_x, state_x) - local r - repeat - state_x, r = call_if_not_empty(fun, gen_x(param_x, state_x)) - until state_x == nil or not r - return state_x == nil -end -methods.all = method1(all) -exports.all = export1(all) -methods.every = methods.all -exports.every = exports.all - -local any = function(fun, gen_x, param_x, state_x) - local r - repeat - state_x, r = call_if_not_empty(fun, gen_x(param_x, state_x)) - until state_x == nil or r - return not not r -end -methods.any = method1(any) -exports.any = export1(any) -methods.some = methods.any -exports.some = exports.any - -local sum = function(gen, param, state) - local s = 0 - local r = 0 - repeat - s = s + r - state, r = gen(param, state) - until state == nil - return s -end -methods.sum = method0(sum) -exports.sum = export0(sum) - -local product = function(gen, param, state) - local p = 1 - local r = 1 - repeat - p = p * r - state, r = gen(param, state) - until state == nil - return p -end -methods.product = method0(product) -exports.product = export0(product) - -local min_cmp = function(m, n) - if n < m then - return n - else - return m - end -end - -local max_cmp = function(m, n) - if n > m then - return n - else - return m - end -end - -local min = function(gen, param, state) - local state, m = gen(param, state) - if state == nil then - error("min: iterator is empty") - end - - local cmp - if type(m) == "number" then - -- An optimization: use math.min for numbers - cmp = math.min - else - cmp = min_cmp - end - - for _, r in gen, param, state do - m = cmp(m, r) - end - return m -end -methods.min = method0(min) -exports.min = export0(min) -methods.minimum = methods.min -exports.minimum = exports.min - -local min_by = function(cmp, gen_x, param_x, state_x) - local state_x, m = gen_x(param_x, state_x) - if state_x == nil then - error("min: iterator is empty") - end - - for _, r in gen_x, param_x, state_x do - m = cmp(m, r) - end - return m -end -methods.min_by = method1(min_by) -exports.min_by = export1(min_by) -methods.minimum_by = methods.min_by -exports.minimum_by = exports.min_by - -local max = function(gen_x, param_x, state_x) - local state_x, m = gen_x(param_x, state_x) - if state_x == nil then - error("max: iterator is empty") - end - - local cmp - if type(m) == "number" then - -- An optimization: use math.max for numbers - cmp = math.max - else - cmp = max_cmp - end - - for _, r in gen_x, param_x, state_x do - m = cmp(m, r) - end - return m -end -methods.max = method0(max) -exports.max = export0(max) -methods.maximum = methods.max -exports.maximum = exports.max - -local max_by = function(cmp, gen_x, param_x, state_x) - local state_x, m = gen_x(param_x, state_x) - if state_x == nil then - error("max: iterator is empty") - end - - for _, r in gen_x, param_x, state_x do - m = cmp(m, r) - end - return m -end -methods.max_by = method1(max_by) -exports.max_by = export1(max_by) -methods.maximum_by = methods.maximum_by -exports.maximum_by = exports.maximum_by - -local totable = function(gen_x, param_x, state_x) - local tab, key, val = {} - while true do - state_x, val = gen_x(param_x, state_x) - if state_x == nil then - break - end - table.insert(tab, val) - end - return tab -end -methods.totable = method0(totable) -exports.totable = export0(totable) - -local tomap = function(gen_x, param_x, state_x) - local tab, key, val = {} - while true do - state_x, key, val = gen_x(param_x, state_x) - if state_x == nil then - break - end - tab[key] = val - end - return tab -end -methods.tomap = method0(tomap) -exports.tomap = export0(tomap) - --------------------------------------------------------------------------------- --- Transformations --------------------------------------------------------------------------------- - -local map_gen = function(param, state) - local gen_x, param_x, fun = param[1], param[2], param[3] - return call_if_not_empty(fun, gen_x(param_x, state)) -end - -local map = function(fun, gen, param, state) - return wrap(map_gen, {gen, param, fun}, state) -end -methods.map = method1(map) -exports.map = export1(map) - -local enumerate_gen_call = function(state, i, state_x, ...) - if state_x == nil then - return nil - end - return {i + 1, state_x}, i, ... -end - -local enumerate_gen = function(param, state) - local gen_x, param_x = param[1], param[2] - local i, state_x = state[1], state[2] - return enumerate_gen_call(state, i, gen_x(param_x, state_x)) -end - -local enumerate = function(gen, param, state) - return wrap(enumerate_gen, {gen, param}, {1, state}) -end -methods.enumerate = method0(enumerate) -exports.enumerate = export0(enumerate) - -local intersperse_call = function(i, state_x, ...) - if state_x == nil then - return nil - end - return {i + 1, state_x}, ... -end - -local intersperse_gen = function(param, state) - local x, gen_x, param_x = param[1], param[2], param[3] - local i, state_x = state[1], state[2] - if i % 2 == 1 then - return {i + 1, state_x}, x - else - return intersperse_call(i, gen_x(param_x, state_x)) - end -end - --- TODO: interperse must not add x to the tail -local intersperse = function(x, gen, param, state) - return wrap(intersperse_gen, {x, gen, param}, {0, state}) -end -methods.intersperse = method1(intersperse) -exports.intersperse = export1(intersperse) - --------------------------------------------------------------------------------- --- Compositions --------------------------------------------------------------------------------- - -local function zip_gen_r(param, state, state_new, ...) - if #state_new == #param / 2 then - return state_new, ... - end - - local i = #state_new + 1 - local gen_x, param_x = param[2 * i - 1], param[2 * i] - local state_x, r = gen_x(param_x, state[i]) - if state_x == nil then - return nil - end - table.insert(state_new, state_x) - return zip_gen_r(param, state, state_new, r, ...) -end - -local zip_gen = function(param, state) - return zip_gen_r(param, state, {}) -end - --- A special hack for zip/chain to skip last two state, if a wrapped iterator --- has been passed -local numargs = function(...) - local n = select('#', ...) - if n >= 3 then - -- Fix last argument - local it = select(n - 2, ...) - if type(it) == 'table' and getmetatable(it) == iterator_mt and it.param == select(n - 1, ...) and it.state == - select(n, ...) then - return n - 2 - end - end - return n -end - -local zip = function(...) - local n = numargs(...) - if n == 0 then - return wrap(nil_gen, nil, nil) - end - local param = { - [2 * n] = 0, - } - local state = { - [n] = 0, - } - - local i, gen_x, param_x, state_x - for i = 1, n, 1 do - local it = select(n - i + 1, ...) - gen_x, param_x, state_x = rawiter(it) - param[2 * i - 1] = gen_x - param[2 * i] = param_x - state[i] = state_x - end - - return wrap(zip_gen, param, state) -end -methods.zip = zip -exports.zip = zip - -local cycle_gen_call = function(param, state_x, ...) - if state_x == nil then - local gen_x, param_x, state_x0 = param[1], param[2], param[3] - return gen_x(param_x, deepcopy(state_x0)) - end - return state_x, ... -end - -local cycle_gen = function(param, state_x) - local gen_x, param_x, state_x0 = param[1], param[2], param[3] - return cycle_gen_call(param, gen_x(param_x, state_x)) -end - -local cycle = function(gen, param, state) - return wrap(cycle_gen, {gen, param, state}, deepcopy(state)) -end -methods.cycle = method0(cycle) -exports.cycle = export0(cycle) - --- call each other -local chain_gen_r1 -local chain_gen_r2 = function(param, state, state_x, ...) - if state_x == nil then - local i = state[1] - i = i + 1 - if param[3 * i - 1] == nil then - return nil - end - local state_x = param[3 * i] - return chain_gen_r1(param, {i, state_x}) - end - return {state[1], state_x}, ... -end - -chain_gen_r1 = function(param, state) - local i, state_x = state[1], state[2] - local gen_x, param_x = param[3 * i - 2], param[3 * i - 1] - return chain_gen_r2(param, state, gen_x(param_x, state[2])) -end - -local chain = function(...) - local n = numargs(...) - if n == 0 then - return wrap(nil_gen, nil, nil) - end - - local param = { - [3 * n] = 0, - } - local i, gen_x, param_x, state_x - for i = 1, n, 1 do - local elem = select(i, ...) - gen_x, param_x, state_x = iter(elem) - param[3 * i - 2] = gen_x - param[3 * i - 1] = param_x - param[3 * i] = state_x - end - - return wrap(chain_gen_r1, param, {1, param[3]}) -end -methods.chain = chain -exports.chain = chain - --------------------------------------------------------------------------------- --- Operators --------------------------------------------------------------------------------- - -local operator = { - ---------------------------------------------------------------------------- - -- Comparison operators - ---------------------------------------------------------------------------- - lt = function(a, b) - return a < b - end, - le = function(a, b) - return a <= b - end, - eq = function(a, b) - return a == b - end, - ne = function(a, b) - return a ~= b - end, - ge = function(a, b) - return a >= b - end, - gt = function(a, b) - return a > b - end, - - ---------------------------------------------------------------------------- - -- Arithmetic operators - ---------------------------------------------------------------------------- - add = function(a, b) - return a + b - end, - div = function(a, b) - return a / b - end, - floordiv = function(a, b) - return math.floor(a / b) - end, - intdiv = function(a, b) - local q = a / b - if a >= 0 then - return math.floor(q) - else - return math.ceil(q) - end - end, - mod = function(a, b) - return a % b - end, - mul = function(a, b) - return a * b - end, - neq = function(a) - return -a - end, - unm = function(a) - return -a - end, -- an alias - pow = function(a, b) - return a ^ b - end, - sub = function(a, b) - return a - b - end, - truediv = function(a, b) - return a / b - end, - - ---------------------------------------------------------------------------- - -- String operators - ---------------------------------------------------------------------------- - concat = function(a, b) - return a .. b - end, - len = function(a) - return #a - end, - length = function(a) - return #a - end, -- an alias - - ---------------------------------------------------------------------------- - -- Logical operators - ---------------------------------------------------------------------------- - land = function(a, b) - return a and b - end, - lor = function(a, b) - return a or b - end, - lnot = function(a) - return not a - end, - truth = function(a) - return not not a - end, -} -exports.operator = operator -methods.operator = operator -exports.op = operator -methods.op = operator - --------------------------------------------------------------------------------- --- module definitions --------------------------------------------------------------------------------- - --- a special syntax sugar to export all functions to the global table -setmetatable(exports, { - __call = function(t, override) - for k, v in pairs(t) do - if rawget(_G, k) ~= nil then - local msg = 'function ' .. k .. ' already exists in global scope.' - if override then - rawset(_G, k, v) - print('WARNING: ' .. msg .. ' Overwritten.') - else - print('NOTICE: ' .. msg .. ' Skipped.') - end - else - rawset(_G, k, v) - end - end - end, -}) - -return exports diff --git a/framework/lualib/thirdparty/lume/lume.lua b/framework/lualib/thirdparty/lume/lume.lua deleted file mode 100644 index fcd30d0..0000000 --- a/framework/lualib/thirdparty/lume/lume.lua +++ /dev/null @@ -1,818 +0,0 @@ --- --- https://github.com/rxi/lume --- --- Copyright (c) 2020 rxi --- --- Permission is hereby granted, free of charge, to any person obtaining a copy of --- this software and associated documentation files (the "Software"), to deal in --- the Software without restriction, including without limitation the rights to --- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies --- of the Software, and to permit persons to whom the Software is furnished to do --- so, subject to the following conditions: --- --- The above copyright notice and this permission notice shall be included in all --- copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE --- SOFTWARE. --- -local lume = { - _version = "2.3.0", -} - -local pairs, ipairs = pairs, ipairs -local type, assert, unpack = type, assert, unpack or table.unpack -local tostring, tonumber = tostring, tonumber -local math_floor = math.floor -local math_ceil = math.ceil -local math_atan2 = math.atan2 or math.atan -local math_sqrt = math.sqrt -local math_abs = math.abs - -local noop = function() -end - -local identity = function(x) - return x -end - -local patternescape = function(str) - return str:gsub("[%(%)%.%%%+%-%*%?%[%]%^%$]", "%%%1") -end - -local absindex = function(len, i) - return i < 0 and (len + i + 1) or i -end - -local iscallable = function(x) - if type(x) == "function" then - return true - end - local mt = getmetatable(x) - return mt and mt.__call ~= nil -end - -local getiter = function(x) - if lume.isarray(x) then - return ipairs - elseif type(x) == "table" then - return pairs - end - error("expected table", 3) -end - -local iteratee = function(x) - if x == nil then - return identity - end - if iscallable(x) then - return x - end - if type(x) == "table" then - return function(z) - for k, v in pairs(x) do - if z[k] ~= v then - return false - end - end - return true - end - end - return function(z) - return z[x] - end -end - -function lume.clamp(x, min, max) - return x < min and min or (x > max and max or x) -end - -function lume.round(x, increment) - if increment then - return lume.round(x / increment) * increment - end - return x >= 0 and math_floor(x + .5) or math_ceil(x - .5) -end - -function lume.sign(x) - return x < 0 and -1 or 1 -end - -function lume.lerp(a, b, amount) - return a + (b - a) * lume.clamp(amount, 0, 1) -end - -function lume.smooth(a, b, amount) - local t = lume.clamp(amount, 0, 1) - local m = t * t * (3 - 2 * t) - return a + (b - a) * m -end - -function lume.pingpong(x) - return 1 - math_abs(1 - x % 2) -end - -function lume.distance(x1, y1, x2, y2, squared) - local dx = x1 - x2 - local dy = y1 - y2 - local s = dx * dx + dy * dy - return squared and s or math_sqrt(s) -end - -function lume.angle(x1, y1, x2, y2) - return math_atan2(y2 - y1, x2 - x1) -end - -function lume.vector(angle, magnitude) - return math.cos(angle) * magnitude, math.sin(angle) * magnitude -end - -function lume.random(a, b) - if not a then - a, b = 0, 1 - end - if not b then - b = 0 - end - return a + math.random() * (b - a) -end - -function lume.randomchoice(t) - return t[math.random(#t)] -end - -function lume.weightedchoice(t) - local sum = 0 - for _, v in pairs(t) do - assert(v >= 0, "weight value less than zero") - sum = sum + v - end - assert(sum ~= 0, "all weights are zero") - local rnd = lume.random(sum) - for k, v in pairs(t) do - if rnd < v then - return k - end - rnd = rnd - v - end -end - -function lume.isarray(x) - return type(x) == "table" and x[1] ~= nil -end - -function lume.push(t, ...) - local n = select("#", ...) - for i = 1, n do - t[#t + 1] = select(i, ...) - end - return ... -end - -function lume.remove(t, x) - local iter = getiter(t) - for i, v in iter(t) do - if v == x then - if lume.isarray(t) then - table.remove(t, i) - break - else - t[i] = nil - break - end - end - end - return x -end - -function lume.clear(t) - local iter = getiter(t) - for k in iter(t) do - t[k] = nil - end - return t -end - -function lume.extend(t, ...) - for i = 1, select("#", ...) do - local x = select(i, ...) - if x then - for k, v in pairs(x) do - t[k] = v - end - end - end - return t -end - -function lume.shuffle(t) - local rtn = {} - for i = 1, #t do - local r = math.random(i) - if r ~= i then - rtn[i] = rtn[r] - end - rtn[r] = t[i] - end - return rtn -end - -function lume.sort(t, comp) - local rtn = lume.clone(t) - if comp then - if type(comp) == "string" then - table.sort(rtn, function(a, b) - return a[comp] < b[comp] - end) - else - table.sort(rtn, comp) - end - else - table.sort(rtn) - end - return rtn -end - -function lume.array(...) - local t = {} - for x in ... do - t[#t + 1] = x - end - return t -end - -function lume.each(t, fn, ...) - local iter = getiter(t) - if type(fn) == "string" then - for _, v in iter(t) do - v[fn](v, ...) - end - else - for _, v in iter(t) do - fn(v, ...) - end - end - return t -end - -function lume.map(t, fn) - fn = iteratee(fn) - local iter = getiter(t) - local rtn = {} - for k, v in iter(t) do - rtn[k] = fn(v) - end - return rtn -end - -function lume.all(t, fn) - fn = iteratee(fn) - local iter = getiter(t) - for _, v in iter(t) do - if not fn(v) then - return false - end - end - return true -end - -function lume.any(t, fn) - fn = iteratee(fn) - local iter = getiter(t) - for _, v in iter(t) do - if fn(v) then - return true - end - end - return false -end - -function lume.reduce(t, fn, first) - local started = first ~= nil - local acc = first - local iter = getiter(t) - for _, v in iter(t) do - if started then - acc = fn(acc, v) - else - acc = v - started = true - end - end - assert(started, "reduce of an empty table with no first value") - return acc -end - -function lume.unique(t) - local rtn = {} - for k in pairs(lume.invert(t)) do - rtn[#rtn + 1] = k - end - return rtn -end - -function lume.filter(t, fn, retainkeys) - fn = iteratee(fn) - local iter = getiter(t) - local rtn = {} - if retainkeys then - for k, v in iter(t) do - if fn(v) then - rtn[k] = v - end - end - else - for _, v in iter(t) do - if fn(v) then - rtn[#rtn + 1] = v - end - end - end - return rtn -end - -function lume.reject(t, fn, retainkeys) - fn = iteratee(fn) - local iter = getiter(t) - local rtn = {} - if retainkeys then - for k, v in iter(t) do - if not fn(v) then - rtn[k] = v - end - end - else - for _, v in iter(t) do - if not fn(v) then - rtn[#rtn + 1] = v - end - end - end - return rtn -end - -function lume.merge(...) - local rtn = {} - for i = 1, select("#", ...) do - local t = select(i, ...) - local iter = getiter(t) - for k, v in iter(t) do - rtn[k] = v - end - end - return rtn -end - -function lume.concat(...) - local rtn = {} - for i = 1, select("#", ...) do - local t = select(i, ...) - if t ~= nil then - local iter = getiter(t) - for _, v in iter(t) do - rtn[#rtn + 1] = v - end - end - end - return rtn -end - -function lume.find(t, value) - local iter = getiter(t) - for k, v in iter(t) do - if v == value then - return k - end - end - return nil -end - -function lume.match(t, fn) - fn = iteratee(fn) - local iter = getiter(t) - for k, v in iter(t) do - if fn(v) then - return v, k - end - end - return nil -end - -function lume.count(t, fn) - local count = 0 - local iter = getiter(t) - if fn then - fn = iteratee(fn) - for _, v in iter(t) do - if fn(v) then - count = count + 1 - end - end - else - if lume.isarray(t) then - return #t - end - for _ in iter(t) do - count = count + 1 - end - end - return count -end - -function lume.slice(t, i, j) - i = i and absindex(#t, i) or 1 - j = j and absindex(#t, j) or #t - local rtn = {} - for x = i < 1 and 1 or i, j > #t and #t or j do - rtn[#rtn + 1] = t[x] - end - return rtn -end - -function lume.first(t, n) - if not n then - return t[1] - end - return lume.slice(t, 1, n) -end - -function lume.last(t, n) - if not n then - return t[#t] - end - return lume.slice(t, -n, -1) -end - -function lume.invert(t) - local rtn = {} - for k, v in pairs(t) do - rtn[v] = k - end - return rtn -end - -function lume.pick(t, ...) - local rtn = {} - for i = 1, select("#", ...) do - local k = select(i, ...) - rtn[k] = t[k] - end - return rtn -end - -function lume.keys(t) - local rtn = {} - local iter = getiter(t) - for k in iter(t) do - rtn[#rtn + 1] = k - end - return rtn -end - -function lume.clone(t) - local rtn = {} - for k, v in pairs(t) do - rtn[k] = v - end - return rtn -end - -function lume.fn(fn, ...) - assert(iscallable(fn), "expected a function as the first argument") - local args = {...} - return function(...) - local a = lume.concat(args, {...}) - return fn(unpack(a)) - end -end - -function lume.once(fn, ...) - local f = lume.fn(fn, ...) - local done = false - return function(...) - if done then - return - end - done = true - return f(...) - end -end - -local memoize_fnkey = {} -local memoize_nil = {} - -function lume.memoize(fn) - local cache = {} - return function(...) - local c = cache - for i = 1, select("#", ...) do - local a = select(i, ...) or memoize_nil - c[a] = c[a] or {} - c = c[a] - end - c[memoize_fnkey] = c[memoize_fnkey] or {fn(...)} - return unpack(c[memoize_fnkey]) - end -end - -function lume.combine(...) - local n = select('#', ...) - if n == 0 then - return noop - end - if n == 1 then - local fn = select(1, ...) - if not fn then - return noop - end - assert(iscallable(fn), "expected a function or nil") - return fn - end - local funcs = {} - for i = 1, n do - local fn = select(i, ...) - if fn ~= nil then - assert(iscallable(fn), "expected a function or nil") - funcs[#funcs + 1] = fn - end - end - return function(...) - for _, f in ipairs(funcs) do - f(...) - end - end -end - -function lume.call(fn, ...) - if fn then - return fn(...) - end -end - -function lume.time(fn, ...) - local start = os.clock() - local rtn = {fn(...)} - return (os.clock() - start), unpack(rtn) -end - -local lambda_cache = {} - -function lume.lambda(str) - if not lambda_cache[str] then - local args, body = str:match([[^([%w,_ ]-)%->(.-)$]]) - assert(args and body, "bad string lambda") - local s = "return function(" .. args .. ")\nreturn " .. body .. "\nend" - lambda_cache[str] = lume.dostring(s) - end - return lambda_cache[str] -end - -local serialize - -local serialize_map = { - ["boolean"] = tostring, - ["nil"] = tostring, - ["string"] = function(v) - return string.format("%q", v) - end, - ["number"] = function(v) - if v ~= v then - return "0/0" -- nan - elseif v == 1 / 0 then - return "1/0" -- inf - elseif v == -1 / 0 then - return "-1/0" - end -- -inf - return tostring(v) - end, - ["table"] = function(t, stk) - stk = stk or {} - if stk[t] then - error("circular reference") - end - local rtn = {} - stk[t] = true - for k, v in pairs(t) do - rtn[#rtn + 1] = "[" .. serialize(k, stk) .. "]=" .. serialize(v, stk) - end - stk[t] = nil - return "{" .. table.concat(rtn, ",") .. "}" - end, -} - -setmetatable(serialize_map, { - __index = function(_, k) - error("unsupported serialize type: " .. k) - end, -}) - -serialize = function(x, stk) - return serialize_map[type(x)](x, stk) -end - -function lume.serialize(x) - return serialize(x) -end - -function lume.deserialize(str) - return lume.dostring("return " .. str) -end - -function lume.split(str, sep) - if not sep then - return lume.array(str:gmatch("([%S]+)")) - else - assert(sep ~= "", "empty separator") - local psep = patternescape(sep) - return lume.array((str .. sep):gmatch("(.-)(" .. psep .. ")")) - end -end - -function lume.trim(str, chars) - if not chars then - return str:match("^[%s]*(.-)[%s]*$") - end - chars = patternescape(chars) - return str:match("^[" .. chars .. "]*(.-)[" .. chars .. "]*$") -end - -function lume.wordwrap(str, limit) - limit = limit or 72 - local check - if type(limit) == "number" then - check = function(s) - return #s >= limit - end - else - check = limit - end - local rtn = {} - local line = "" - for word, spaces in str:gmatch("(%S+)(%s*)") do - local s = line .. word - if check(s) then - table.insert(rtn, line .. "\n") - line = word - else - line = s - end - for c in spaces:gmatch(".") do - if c == "\n" then - table.insert(rtn, line .. "\n") - line = "" - else - line = line .. c - end - end - end - table.insert(rtn, line) - return table.concat(rtn) -end - -function lume.format(str, vars) - if not vars then - return str - end - local f = function(x) - return tostring(vars[x] or vars[tonumber(x)] or "{" .. x .. "}") - end - return (str:gsub("{(.-)}", f)) -end - -function lume.trace(...) - local info = debug.getinfo(2, "Sl") - local t = {info.short_src .. ":" .. info.currentline .. ":"} - for i = 1, select("#", ...) do - local x = select(i, ...) - if type(x) == "number" then - x = string.format("%g", lume.round(x, .01)) - end - t[#t + 1] = tostring(x) - end - print(table.concat(t, " ")) -end - -function lume.dostring(str) - return assert((loadstring or load)(str))() -end - -function lume.uuid() - local fn = function(x) - local r = math.random(16) - 1 - r = (x == "x") and (r + 1) or (r % 4) + 9 - return ("0123456789abcdef"):sub(r, r) - end - return (("xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"):gsub("[xy]", fn)) -end - -function lume.hotswap(modname) - local oldglobal = lume.clone(_G) - local updated = {} - local function update(old, new) - if updated[old] then - return - end - updated[old] = true - local oldmt, newmt = getmetatable(old), getmetatable(new) - if oldmt and newmt then - update(oldmt, newmt) - end - for k, v in pairs(new) do - if type(v) == "table" then - update(old[k], v) - else - old[k] = v - end - end - end - local err = nil - local function onerror(e) - for k in pairs(_G) do - _G[k] = oldglobal[k] - end - err = lume.trim(e) - end - local ok, oldmod = pcall(require, modname) - oldmod = ok and oldmod or nil - xpcall(function() - package.loaded[modname] = nil - local newmod = require(modname) - if type(oldmod) == "table" then - update(oldmod, newmod) - end - for k, v in pairs(oldglobal) do - if v ~= _G[k] and type(v) == "table" then - update(v, _G[k]) - _G[k] = v - end - end - end, onerror) - package.loaded[modname] = oldmod - if err then - return nil, err - end - return oldmod -end - -local ripairs_iter = function(t, i) - i = i - 1 - local v = t[i] - if v ~= nil then - return i, v - end -end - -function lume.ripairs(t) - return ripairs_iter, t, (#t + 1) -end - -function lume.color(str, mul) - mul = mul or 1 - local r, g, b, a - r, g, b = str:match("#(%x%x)(%x%x)(%x%x)") - if r then - r = tonumber(r, 16) / 0xff - g = tonumber(g, 16) / 0xff - b = tonumber(b, 16) / 0xff - a = 1 - elseif str:match("rgba?%s*%([%d%s%.,]+%)") then - local f = str:gmatch("[%d.]+") - r = (f() or 0) / 0xff - g = (f() or 0) / 0xff - b = (f() or 0) / 0xff - a = f() or 1 - else - error(("bad color string '%s'"):format(str)) - end - return r * mul, g * mul, b * mul, a * mul -end - -local chain_mt = {} -chain_mt.__index = lume.map(lume.filter(lume, iscallable, true), function(fn) - return function(self, ...) - self._value = fn(self._value, ...) - return self - end -end) -chain_mt.__index.result = function(x) - return x._value -end - -function lume.chain(value) - return setmetatable({ - _value = value, - }, chain_mt) -end - -setmetatable(lume, { - __call = function(_, ...) - return lume.chain(...) - end, -}) - -return lume diff --git a/framework/lualib/thirdparty/sync9.lua b/framework/lualib/thirdparty/sync9.lua deleted file mode 100644 index 73924b7..0000000 --- a/framework/lualib/thirdparty/sync9.lua +++ /dev/null @@ -1,314 +0,0 @@ --- https://github.com/pkulchenko/syncX --- Implementation of Sync9 algorithm based on sync9.js from https://github.com/braid-org/braidjs --- Copyright 2021 Paul Kulchenko --- -local function argcheck(cond, i, f, extra) - if not cond then - error("bad argument #" .. i .. " to '" .. f .. "' (" .. extra .. ")", 0) - end -end - -local function splice(tbl, startidx, delcnt, ...) - local inscnt = select('#', ...) - local tblcnt = #tbl - argcheck(startidx >= 1, 2, "splice", "initial position must be positive") - argcheck(startidx <= tblcnt + 1, 2, "splice", "initial position must not exceed table size by more than 1") - argcheck(delcnt >= 0, 2, "splice", "delete count must be non-negative") - - -- remove excess (if any) - for _ = 1, delcnt - inscnt do - table.remove(tbl, startidx) - end - -- insert if needed - for i = 1, inscnt - delcnt do - table.insert(tbl, startidx + i - 1, (select(i, ...))) - end - -- assign the rest, as there is enough space - for i = math.max(1, inscnt - delcnt + 1), inscnt do - tbl[startidx + i - 1] = select(i, ...) - end -end - --- modified from https://stackoverflow.com/questions/22697936/binary-search-in-javascript -local function binarySearch(tbl, comparator) - local m = 1 - local n = #tbl - while (m <= n) do - local k = math.floor((n + m) / 2) - local cmp = comparator(tbl[k]) - if (cmp > 0) then - m = k + 1 - elseif (cmp < 0) then - n = k - 1 - else - return k - end - end - return m -end - -local function spliceinto(tbl, part) - local i = binarySearch(tbl, function(x) - return part.version < x.version and -1 or 1 - end) - tbl:splice(i, 0, part) - return i -end - -local function any(tbl, condition) - for k, v in pairs(tbl) do - if condition(k, v) then - return true - end - end - return false -end - --- traverse spaceDAG starting from node and calling `callback` for each part -local function traverse_space_dag(node, isanc, callback) - local offset = 0 - local function helper(node, version, prev) - local deleted = node.deletedby:any(function(version) - return isanc(version) - end) - -- callback may return `false` to indicate that traversal needs to be stopped - if callback(node, version, prev, offset, deleted) == false then - return false - end - if not deleted then - offset = offset + #node.elems - end - for _, part in ipairs(node.parts) do - if isanc(part.version) and helper(part, part.version) == false then - return false - end - end - if node.parts[0] and helper(node.parts[0], version, node) == false then - return false - end - end - return helper(node, node.version) -end - -local function space_dag_get(node, index, is_anc) - -- index value is 0-based - local value - local offset = 0 - traverse_space_dag(node, is_anc or function() - return true - end, function(node) - if (index - offset < #node.elems) then - value = node.elems[index - offset + 1] - return false - end - offset = offset + #node.elems - end) - return value -end - -local function space_dag_set(node, index, value, is_anc) - -- index value is 0-based - local offset = 0 - traverse_space_dag(node, is_anc or function() - return true - end, function(node) - if (index - offset < #node.elems) then - node.elems[index - offset + 1] = value - return false - end - offset = offset + #node.elems - end) -end - -local metaparts = { - __index = { - splice = splice, - slice = function(...) - return {table.unpack(...)} - end, - spliceinto = spliceinto, -- insert in the appropriate slot based on binary search by version - any = any, -- return `true` if any of the values match condition - copy = function(tbl) - return {table.unpack(tbl)} - end, - }, -} -local metadags = { - __index = { - getlength = function(node, isanc) - isanc = isanc or function() - return true - end - local count = 0 - traverse_space_dag(node, isanc, function(node) - count = count + node.elems.length - end) - return count - end, - getvalue = function(node, isanc) - isanc = isanc or function() - return true - end - local values = {} - traverse_space_dag(node, isanc, function(node, _, _, _, deleted) - if not deleted then - table.insert(values, table.concat(node.elems, "")) - end - end) - return table.concat(values) - end, - get = space_dag_get, - set = space_dag_set, - }, -} - -local function create_space_dag_node(version, elems, deletedby) - assert(not elems or type(elems) == "table") - assert(not deletedby or type(deletedby) == "table") - return setmetatable({ - version = version, -- node version as a string - elems = setmetatable(elems or {}, metaparts), -- list of elements this node stores - deletedby = setmetatable(deletedby or {}, metaparts), -- hash of versions this node is deleted by - parts = setmetatable({}, metaparts), -- list of nodes that are children of this one - -- parts[0] is a special non-versioned node that has been spliced from the elements of the curent node - }, metadags) -end - -local function space_dag_break_node(node, splitidx, newpart) - assert(splitidx >= 0) - local tail = create_space_dag_node(nil, node.elems:slice(splitidx + 1), node.deletedby:copy()) - tail.parts = node.parts - - node.elems = setmetatable(node.elems:slice(1, splitidx), getmetatable(node.elems)) - node.parts = setmetatable(newpart and {newpart} or {}, getmetatable(node.parts)) - node.parts[0] = tail - return tail -end - --- add a patchset to a node, which will have `nodeversion` after patching -local function space_dag_add_patchset(node, nodeversion, patches, isanc) - isanc = isanc or function() - return true - end - local deleteupto = 0 -- position to delete elements up to - local deferred = {} -- list of deferred callbacks - local deletedcnt = 0 -- number of deleted elements in the current patchset - setmetatable(patches, { - __index = { - next = function(tbl) - table.remove(tbl, 1) -- remove the processed patch - deleteupto = 0 -- reset delete tracker, as it's calculated per patch - -- process deferred callbacks (for example, node splits) - while #deferred > 0 do - table.remove(deferred, 1)() - end - end, - defer = function(_, callback) - table.insert(deferred, callback) - end, - }, - }) - - local function process_patch(node, patchversion, prev, offset, isdeleted) - if #patches == 0 then - return false - end -- nothing to process further - local addidx, delcnt, val = table.unpack(patches[1]) - local hasparts = node.parts:any(function(_, part) - return isanc(part.version) - end) - -- since the patches in the patchset are processed as independent patches - -- (even though the graph is only traversed once), - -- adjust the offset for the number of deletes to use the correct position - offset = offset - deletedcnt - - -- this element is already deleted - if isdeleted then - -- this patch only adds elements at the current offset - if delcnt == 0 and addidx == offset then - if #node.elems == 0 and hasparts then - return - end - if #node.elems > 0 then - space_dag_break_node(node, 0) - end - node.parts:spliceinto(create_space_dag_node(nodeversion, val)) - patches:next() - end - return - end - - -- nothing is being deleted, but need to do an insert - if delcnt == 0 then - if addidx < offset then - return - end -- trying to insert before the current offset - local d = addidx - (offset + #node.elems) - if d > 0 then - return - end -- trying to insert after the max index - if d == 0 and hasparts then - return - end -- shortcuts the processing to add a new element to a new node to enforce the order - if d ~= 0 then - space_dag_break_node(node, addidx - offset) - end - node.parts:spliceinto(create_space_dag_node(nodeversion, val)) - patches:next() - return - end - - if deleteupto <= offset then - local d = addidx - (offset + #node.elems) - if d >= 0 then - return - end -- trying to insert at or after the max index - deleteupto = addidx + delcnt - - if val then - local newnode = create_space_dag_node(nodeversion, val) - if addidx == offset and prev then - -- defer updates, otherwise inserted nodes affect position tracking - patches:defer(function() - node.parts:spliceinto(newnode) - end) - -- fall through to the next check for `deleteupto` - else - space_dag_break_node(node, addidx - offset) - -- defer updates, otherwise inserted nodes affect position tracking - patches:defer(function() - node.parts:spliceinto(newnode) - end) - return - end - else - if addidx == offset then - -- fall through to the next check for `deleteupto` - else - space_dag_break_node(node, addidx - offset) - return - end - end - end - - if deleteupto > offset then - if deleteupto <= offset + #node.elems then - if deleteupto < offset + #node.elems then - space_dag_break_node(node, deleteupto - offset) - -- increase the number of deleted elements subtracting the number of added ones - deletedcnt = deletedcnt + #node.elems - #val - end - patches:next() - end - node.deletedby[nodeversion] = true - return - end - end - traverse_space_dag(node, isanc, process_patch) -end - -metadags.__index.addpatchset = space_dag_add_patchset - -return { - createnode = create_space_dag_node, -} diff --git a/framework/lualib/zeus/swt/debug.lua b/framework/lualib/zeus/swt/debug.lua index 59d4330..824335f 100644 --- a/framework/lualib/zeus/swt/debug.lua +++ b/framework/lualib/zeus/swt/debug.lua @@ -13,7 +13,7 @@ debug.reg_debugcmd("SWT_RUN", debug_run) local function debug_snapshot(len, ti) collectgarbage("collect") - local lss = require "lsnapshot" + local lss = require "swt.lsnapshot" local json = require "json" lss.start_snapshot() diff --git a/framework/lualib/thirdparty/snaphot/lsnapshot.lua b/framework/lualib/zeus/swt/lsnapshot.lua similarity index 100% rename from framework/lualib/thirdparty/snaphot/lsnapshot.lua rename to framework/lualib/zeus/swt/lsnapshot.lua diff --git a/server/src/preload/preload.lua b/server/src/preload/preload.lua index 1de393a..104db7a 100644 --- a/server/src/preload/preload.lua +++ b/server/src/preload/preload.lua @@ -1,11 +1,11 @@ collectgarbage("setpause", 120) -- 内存增大 1 倍(200/100)时自动释放一次内存 (200 是默认值) collectgarbage("setstepmul", 1000) -- 收集器单步收集的速度相对于内存分配速度的倍率,设置 200 的倍率等于 2 倍(200/100)。(200 是默认值) -class = require("oop.middleclass") -handler = require("oop.handler") -- 支持 function 和 对象内部 handler 不过后者热更会更友好 -gEnv = require("env") +class = require("zeus.middleclass") +handler = require("zeus.handler") -- 支持 function 和 对象内部 handler 不过后者热更会更友好 -if gEnv.DEBUG then +local env = require("env") +if env.DEBUG then require("tracing.skynet") require("swt.debug") end