daster/source/verinfo.d

38 lines
836 B
D

module verinfo;
import std.algorithm: startsWith;
import version_;
import std.array : split, join;
string getDasterVersion() {
auto verstr = dasterVersion;
if (verstr.startsWith("v"))
verstr = verstr[1 .. $];
auto parts = verstr.split("-");
if (parts.length >= 3) {
if (parts[$-1].length == 8 && parts[$-1][1 .. $].isHexNumber() && parts[$-2].isNumber())
verstr = parts[0 .. $-2].join("-") ~ "+" ~ parts[$-2 .. $].join("-");
}
return verstr;
}
private bool isHexNumber(string str) {
foreach (ch; str)
switch (ch) {
case '0': .. case '9': break;
case 'a': .. case 'f': break;
case 'A': .. case 'F': break;
default: return false;
}
return true;
}
private bool isNumber(string str) {
foreach (ch; str)
switch (ch) {
case '0': .. case '9': break;
default: return false;
}
return true;
}