Skip to content

Instantly share code, notes, and snippets.

@run-dlang
Created October 3, 2023 00:05
Show Gist options
  • Save run-dlang/a624c393d11ec603599a096139c0f46d to your computer and use it in GitHub Desktop.
Save run-dlang/a624c393d11ec603599a096139c0f46d to your computer and use it in GitHub Desktop.
Code shared from run.dlang.io.
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