neon-sprawl/client/addons/gdUnit4/src/core/GdUnit4Version.gd

66 lines
1.9 KiB
GDScript

class_name GdUnit4Version
extends RefCounted
const VERSION_PATTERN = "[center][color=#9887c4]gd[/color][color=#7a57d6]Unit[/color][color=#9887c4]4[/color] [color=#9887c4]${version}[/color][/center]"
var _major :int
var _minor :int
var _patch :int
func _init(major :int, minor :int, patch :int) -> void:
_major = major
_minor = minor
_patch = patch
static func parse(value :String) -> GdUnit4Version:
var regex := RegEx.new()
@warning_ignore("return_value_discarded")
regex.compile("[a-zA-Z:,-]+")
var cleaned := regex.sub(value, "", true)
var parts := cleaned.split(".")
var major := parts[0].to_int()
var minor := parts[1].to_int()
var patch := parts[2].to_int() if parts.size() > 2 else 0
return GdUnit4Version.new(major, minor, patch)
static func current() -> GdUnit4Version:
var config := ConfigFile.new()
@warning_ignore("return_value_discarded")
config.load('addons/gdUnit4/plugin.cfg')
@warning_ignore("unsafe_cast")
return parse(config.get_value('plugin', 'version') as String)
func equals(other :GdUnit4Version) -> bool:
return _major == other._major and _minor == other._minor and _patch == other._patch
func is_greater(other :GdUnit4Version) -> bool:
if _major > other._major:
return true
if _major == other._major and _minor > other._minor:
return true
return _major == other._major and _minor == other._minor and _patch > other._patch
static func init_version_label(label :Control) -> void:
var config := ConfigFile.new()
@warning_ignore("return_value_discarded")
config.load('addons/gdUnit4/plugin.cfg')
var version :String = config.get_value('plugin', 'version')
if label is RichTextLabel:
(label as RichTextLabel).text = VERSION_PATTERN.replace('${version}', version)
else:
(label as Label).text = "gdUnit4 " + version
func _to_string() -> String:
return "v%d.%d.%d" % [_major, _minor, _patch]
func documentation_version() -> String:
return "v%d.%d.x" % [_major, _minor]