From 8d1ef20f81f3014b4dd0dc38e246b91a18b51074 Mon Sep 17 00:00:00 2001 From: V1K1NGbg Date: Thu, 22 Aug 2024 17:48:56 -0300 Subject: Teal: convert luarocks.results --- src/luarocks/results.lua | 62 ------------------------------------------------ src/luarocks/results.tl | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 62 deletions(-) delete mode 100644 src/luarocks/results.lua create mode 100644 src/luarocks/results.tl (limited to 'src') diff --git a/src/luarocks/results.lua b/src/luarocks/results.lua deleted file mode 100644 index c14862de..00000000 --- a/src/luarocks/results.lua +++ /dev/null @@ -1,62 +0,0 @@ -local results = {} - -local vers = require("luarocks.core.vers") -local util = require("luarocks.util") - -local result_mt = {} - -result_mt.__index = result_mt - -function result_mt.type() - return "result" -end - -function results.new(name, version, repo, arch, namespace) - assert(type(name) == "string" and not name:match("/")) - assert(type(version) == "string") - assert(type(repo) == "string") - assert(type(arch) == "string" or not arch) - assert(type(namespace) == "string" or not namespace) - - if not namespace then - name, namespace = util.split_namespace(name) - end - - local self = { - name = name, - version = version, - namespace = namespace, - arch = arch, - repo = repo, - } - - return setmetatable(self, result_mt) -end - ---- Test the name field of a query. --- If query has a boolean field substring set to true, --- then substring match is performed; otherwise, exact string --- comparison is done. --- @param query table: A query in dependency table format. --- @param name string: A package name. --- @return boolean: True if names match, false otherwise. -local function match_name(query, name) - if query.substring then - return name:find(query.name, 0, true) and true or false - else - return name == query.name - end -end - ---- Returns true if the result satisfies a given query. --- @param query: a query. --- @return boolean. -function result_mt:satisfies(query) - assert(query:type() == "query") - return match_name(query, self.name) - and (query.arch[self.arch] or query.arch["any"]) - and ((not query.namespace) or (query.namespace == self.namespace)) - and vers.match_constraints(vers.parse_version(self.version), query.constraints) -end - -return results diff --git a/src/luarocks/results.tl b/src/luarocks/results.tl new file mode 100644 index 00000000..45b3691d --- /dev/null +++ b/src/luarocks/results.tl @@ -0,0 +1,60 @@ +local record results +end + +local vers = require("luarocks.core.vers") +local util = require("luarocks.util") +local type Query = require("luarocks.core.types.query").Query + +local type result = require("luarocks.core.types.result") +local type Result = result.Result + +local result_mt: metatable = {} + +result_mt.__index = result.Result + +function results.new(name: string, version: string, repo: string, arch?: string, namespace?: string): Result, boolean + + assert(not name:match("/")) + + + if not namespace then + name, namespace = util.split_namespace(name) + end + + local self: Result = { + name = name, + version = version, + namespace = namespace, + arch = arch, + repo = repo, + } + + return setmetatable(self, result_mt) +end + +--- Test the name field of a query. +-- If query has a boolean field substring set to true, +-- then substring match is performed; otherwise, exact string +-- comparison is done. +-- @param query table: A query in dependency table format. +-- @param name string: A package name. +-- @return boolean: True if names match, false otherwise. +local function match_name(query: Query, name: string): boolean + if query.substring then + return name:find(query.name, 0, true) and true or false + else + return name == query.name + end +end + +--- Returns true if the result satisfies a given query. +-- @param query: a query. +-- @return boolean. +function result.Result:satisfies(query: Query): boolean + return match_name(query, self.name) + and (query.arch[self.arch] or query.arch["any"]) + and ((not query.namespace) or (query.namespace == self.namespace)) + and (vers.match_constraints(vers.parse_version(self.version), query.constraints)) +end + +return results -- cgit v1.2.3-55-g6feb