كل سمور!اليوم هو يوم الجمعة ، وهذا يعني الوقت لتقييم!استمرارًا لموضوعات نادي المكتبات لدينا ، سارعت إلى جعل جميع المشاركين سعداء بعض الشيء: لقد فعلتها!بعد بحر من الخلايا العصبية المستهلكة ، وبعد جحيم من الوثائق حول تنسيقات مارك ، ومجموعة من العكازات ، ما زلت أجمع محولًا عاقلًا نسبيًا (ولكن لا يزال مع رمز فظيع :)) (+ معالج + كل ما يكفي للخيال) لتنسيقات مارك.https://github.com/HerzenLibRu/BatchMarc (معالج ، القواعد مكتوبة في js)https://github.com/t0pep0/marc21 (مكتبة على Go للعمل باستخدام تنسيقات مارك)يمكنكتشغيله على النحو التالي : go run main.go inputFile.ldb outputFile.ldb Rules.jsيتم تطبيق القواعد على كل إدخال في الملف.لم تتم كتابة التوثيق بعد ، ولكن هل ينتظرنا كل شيء؟ =)بعض الفروق الدقيقة في المكتبة (وبالتالي المحول):- يتم تخزين الحقول الفرعية في قائمة مرتبطة مع الفرز عند إضافتها (لم تسمح طلبات محددة من الزملاء باستخدام التجزئة)
- تسمية أعلام زعيم قد لا تعجبك
ميزات كتابة القواعد:عندما يبدأ تنفيذ قاعدتك ، هناك بالفعل شيئان: orig و res - orig - السجل الأصلي ، res - ما سيتم كتابته في النهاية إلى ملف الإخراج ، وعندما تبدأ قاعدتك ، يكون res كائنًا فارغًا ، تمت تهيئته للتو ، في بينما يمتلئ orig بالبيانات function VariableSubField(name, data){
this.Name = name;
this.Data = data;
}
function VariableField(tag, indicatorOne, indicatorTwo) {
this.Tag = tag;
this.IndicatorOne = indicatorOne;
this.IndicatorTwo = indicatorTwo;
this.RawData = [];
this.SubField = [];
}
function Leader() {
this.Status = "";
this.Type = "";
this.BibLevel = "";
this.ControlType = "";
this.CharacterEncoding = "";
this.IndicatorCount = "";
this.SubfieldCodeCount = "";
this.EncodingLevel = "";
this.CatalogingForm = "";
this.MultipartLevel = "";
this.LengthOFFieldPort = "";
this.StartCharPos = "";
this.LengthImplemenDefine = "";
this.Undefine = "";
}
function MarcRecord(){
this.Leader = new Leader()
this.VariableField = []
};
orig = new MarcRecord();
res = new MarcRecord();
عندما تعمل قواعدك ، ستأخذ Go البيانات من الدقة ، وتكتبها في ملف.إنتباه! لم يتم تحسين الرمز ، واعتبره أصغر منتج قابل للتطبيق.يمكن العثور على مثال للقواعد في مستودع BatchMarc.PullRequest ، IssueRequest - مقبولة منUPD: يتم اختيار js لكتابة القواعد باعتبارها اللغة الأكثر انتشارًا (في بيئة المكتبة ، بما في ذلك) اللغة