// تحليل عنوان موحد وقراءة استعلامه وترميز النص بالنسبة المئوية.
استورد std.io.println;
استورد std.uri.uri;
عرف الرئيسية(): عدد {
دع العنوان: نص = "https://example.com/search?q=sultan&lang=ar";
طابق حلل_عنوانا_موحدا(&العنوان) مع
| نتيجة.نجح(المحلل) -> { اطبع_سطر(سلسل_عنوانا_موحدا(&المحلل)); }
| نتيجة.خطأ(_) -> { اطبع_سطر("عنوان غير صالح"); أرجع 1; };
دع الاستعلام: نص = "q=sultan&lang=ar";
طابق حلل_استعلام_عنوان(&الاستعلام) مع
| نتيجة.نجح(الأزواج) -> {
دع الاسم: نص = "lang";
طابق أول_قيمة_استعلام_عنوان(&الأزواج, &الاسم) مع
| اختياري.موجود(القيمة) -> { اطبع_سطر(القيمة); }
| اختياري.لا_شيء -> { };
}
| نتيجة.خطأ(_) -> { أرجع 2; };
دع العبارة: نص = "a b&c";
اطبع_سطر(رمز_نسبيا(&العبارة));
أرجع 0;
}// Parsing a URI, reading its query, and percent-encoding text.
import std.io.println;
import std.uri.uri;
def main(): int {
let address: string = "https://example.com/search?q=sultan&lang=ar";
match parse_uri(&address) with
| result.ok(parsed) -> { println(uri_to_text(&parsed)); }
| result.err(_) -> { println("invalid uri"); return 1; };
let query: string = "q=sultan&lang=ar";
match parse_uri_query(&query) with
| result.ok(pairs) -> {
let name: string = "lang";
match uri_query_first_value(&pairs, &name) with
| option.some(value) -> { println(value); }
| option.none -> { };
}
| result.err(_) -> { return 2; };
let phrase: string = "a b&c";
println(percent_encode(&phrase));
return 0;
}
التشغيل
بالمفسر، دون ترجمة:
./build/sultanc run examples/ar/web/uri.snأو ترجمه إلى ملف تنفيذي:
./build/sultanc examples/ar/web/uri.sn -o build/example && ./build/example