summaryrefslogtreecommitdiff
path: root/addons/gdUnit4/src/core/GdUnit4Version.gd
diff options
context:
space:
mode:
Diffstat (limited to 'addons/gdUnit4/src/core/GdUnit4Version.gd')
-rw-r--r--addons/gdUnit4/src/core/GdUnit4Version.gd65
1 files changed, 65 insertions, 0 deletions
diff --git a/addons/gdUnit4/src/core/GdUnit4Version.gd b/addons/gdUnit4/src/core/GdUnit4Version.gd
new file mode 100644
index 0000000..3e6a334
--- /dev/null
+++ b/addons/gdUnit4/src/core/GdUnit4Version.gd
@@ -0,0 +1,65 @@
+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]