You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.5 KiB
55 lines
1.5 KiB
-- Version.lua
|
|
-- @Author : DengSir (tdaddon@163.com)
|
|
-- @Link : https://dengsir.github.io
|
|
-- @Date : 12/4/2018, 9:56:44 PM
|
|
|
|
local ns = select(2, ...)
|
|
local Addon = ns.Addon
|
|
|
|
local Version = Addon:NewClass('Version')
|
|
|
|
ns.Version = Version
|
|
|
|
function Version:Constructor(major, minor, build, revision)
|
|
self.major = major or 0
|
|
self.minor = minor or 0
|
|
self.build = build or 0
|
|
self.revision = revision or 0
|
|
end
|
|
|
|
function Version:Current()
|
|
local version = GetAddOnMetadata('Rematch', 'Version')
|
|
if not version then
|
|
return
|
|
end
|
|
|
|
local major, minor, build = version:match('^(%d+)%.(%d+)%.(%d+)')
|
|
local revision = version:match('exp%-(%d+)')
|
|
return Version:New(tonumber(major), tonumber(minor), tonumber(build), tonumber(revision))
|
|
end
|
|
|
|
local Meta = Version._Meta
|
|
|
|
function Meta.__lt(lhs, rhs)
|
|
if lhs.major ~= rhs.major then
|
|
return lhs.major < rhs.major
|
|
end
|
|
if lhs.minor ~= rhs.minor then
|
|
return lhs.minor < rhs.minor
|
|
end
|
|
if lhs.build ~= rhs.build then
|
|
return lhs.build < rhs.build
|
|
end
|
|
return lhs.revision < rhs.revision
|
|
end
|
|
|
|
function Meta.__eq(lhs, rhs)
|
|
return lhs.major == rhs.major and
|
|
lhs.minor == rhs.minor and
|
|
lhs.build == rhs.build and
|
|
lhs.revision == rhs.revision
|
|
end
|
|
|
|
function Meta.__tostring(self)
|
|
return format('%d.%d.%d.%d', self.major, self.minor, self.build, self.revision)
|
|
end
|
|
|