// Semantic versions: parsing and precedence (a pre-release sorts first).
import std.io.println;
import std.version.semver;
def describe(left: string, right: string): void {
match parse_semver(&left) with
| result.err(_) -> { println("invalid version"); }
| result.ok(a) -> {
match parse_semver(&right) with
| result.err(_) -> { println("invalid version"); }
| result.ok(b) -> {
let order: int = compare_semver(&a, &b);
if (order < 0) { println("older"); } else { if (order > 0) { println("newer"); } else { println("same"); }; };
};
};
}
def main(): int {
describe("1.2.3", "1.10.0");
describe("2.0.0", "2.0.0-beta.1");
describe("1.0.0", "1.0.0");
return 0;
}// الإصدارات الدلالية: التحليل والأسبقية (الإصدار التمهيدي يأتي أولا).
استورد std.io.println;
استورد std.version.semver;
عرف صف(اليسار: نص, اليمين: نص): فراغ {
طابق حلل_إصدارا_دلاليا(&اليسار) مع
| نتيجة.خطأ(_) -> { اطبع_سطر("إصدار غير صالح"); }
| نتيجة.نجح(أ) -> {
طابق حلل_إصدارا_دلاليا(&اليمين) مع
| نتيجة.خطأ(_) -> { اطبع_سطر("إصدار غير صالح"); }
| نتيجة.نجح(ب) -> {
دع الترتيب: عدد = قارن_إصدارين_دلاليين(&أ, &ب);
إذا (الترتيب < 0) { اطبع_سطر("أقدم"); } وإلا { إذا (الترتيب > 0) { اطبع_سطر("أحدث"); } وإلا { اطبع_سطر("متساويان"); }; };
};
};
}
عرف الرئيسية(): عدد {
صف("1.2.3", "1.10.0");
صف("2.0.0", "2.0.0-beta.1");
صف("1.0.0", "1.0.0");
أرجع 0;
}
Run it
With the interpreter, without compiling:
./build/sultanc run examples/en/web/versions.snOr compile it to an executable:
./build/sultanc examples/en/web/versions.sn -o build/example && ./build/example