Dart DSL. , DSL .
. Fuzzy .
:
new Record()
..leader = '00000nam a2200000 u 4500'
..controlfield('001', 'LIB001')
..controlfield('005', '20120311123453.0')
..datafield('100', '',
new Subfield('a', 'Author of record'))
..datafield('245', '0',
new Subfield('a', 'Title of record'));
, , :
List data = [
['a', 'Title of record'],
['a', 'Something of record']
];
// Same record code from above with the addition of this line:
..datafields('245', '', data, (e) => new Subfield(e[0], e[1]));
:
class Record {
String leader;
List<ControlField> controlFields = [];
List<DataField> datafieldList = [];
void controlfield(String a, String b) {
controlFields.add(new ControlField(a, b));
}
void datafield(String a, String b, Subfield subfield) {
datafieldList.add(new DataField(a, b, subfield));
}
void datafields(String a, String b, Iterable data, Subfield f(E e)) {
data.forEach( (e) {
datafieldList.add(new DataField(a, b, f(e)));
});
}
}
class ControlField {
String a;
String b;
ControlField(this.a, this.b);
}
class DataField {
String a;
String b;
Subfield subfield;
DataField(this.a, this.b, this.subfield);
}
class Subfield {
String a;
String b;
Subfield(this.a, this.b);
}
MARC, a b , - . , , , , , , .