Created
October 3, 2023 00:05
-
-
Save run-dlang/6a7fa5da5588da7eefd85fbb2fba76d0 to your computer and use it in GitHub Desktop.
Code shared from run.dlang.io.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import std.algorithm; | |
import std.stdio, std.json; | |
void main() | |
{ | |
enum kıstas = "a < b"; | |
auto okulum = SIRALA!long(veri, "OKUL"); | |
// The source of the sorted data-^ root-^ | |
okulum.school!kıstas.writeln; | |
okulum.number!kıstas.writeln; | |
} | |
import std.array : appender; | |
import std.format : formattedWrite; | |
struct SIRALA(T) { | |
string[T] isim, oNum; // by number | |
T[string] okul; // by school | |
this(string data, string table) { | |
with(data.parseJSON[table].object["gelen"]) { | |
foreach(öğrenci; object["öğrenciler"].array) { | |
const number = öğrenci.object["numarası"].integer; | |
isim[number] = öğrenci.object["adı"].str; | |
const school = öğrenci.object["fakültesi"].str; | |
oNum[number] = school; | |
okul[school] = number; | |
} | |
} | |
} | |
string number(string E)() const { | |
auto r = appender!string; | |
foreach(number; oNum.keys.sort!E) { | |
r.formattedWrite("%s %s/%d\n", oNum[number], | |
isim[number], | |
number); | |
} | |
return r.data; | |
} | |
string school(string E)() const { | |
auto r = appender!string; | |
foreach(school; okul.keys.sort!E) { | |
const number = okul[school]; | |
r.formattedWrite("%s %s/%d\n", school, | |
isim[number], | |
number); | |
} | |
return r.data; | |
} | |
} | |
string veri = ` | |
{ | |
"OKUL": { | |
"gelen": { | |
"öğrenciler": [{ | |
"adı": "Mehmet Demir", | |
"numarası": 12257000, | |
"fakültesi": "Makine Mühendisi" | |
}, | |
{ | |
"adı": "Kaan Haktan", | |
"numarası": 11154217, | |
"fakültesi": "Elektronik Mühendisi" | |
}, | |
{ | |
"adı": "Ahmet Candan", | |
"numarası": 41153007, | |
"fakültesi": "Endüstri Mühendisi" | |
}] | |
}, | |
"mezun": { | |
"öğrenciler": [{ | |
"adı": "Celal Bayar", | |
"numarası": 12530154, | |
"fakültesi": "Makine Mühendisi" | |
}, | |
{ | |
"adı": "Hakan Cengiz", | |
"numarası": 293813877, | |
"fakültesi": "Elektronik Mühendisi" | |
}] | |
} | |
} | |
}`; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment