Semua berang-berang!Hari ini adalah hari Jumat, dan itu berarti saatnya mengambil stok!Melanjutkan tema klub perpustakaan kami, aku cepat-cepat membuat semua orang terlibat sedikit bahagia: Aku berhasil!Setelah lautan sel-sel saraf yang dihabiskan, setelah banyak dokumentasi tentang format marc, dan sekelompok kruk, saya masih mengumpulkan konverter yang relatif waras (tetapi masih dengan kode yang mengerikan :)) (+ handler + semua yang cukup untuk fantasi) untuk format marc.https://github.com/HerzenLibRu/BatchMarc (handler, aturan ditulis dalam js)https://github.com/t0pep0/marc21 (perpustakaan on Go untuk bekerja dengan format marc)Anda dapat menjalankannya seperti ini:jalankan main.go inputFile.ldb outputFile.ldb rules.jsAturan diterapkan untuk setiap entri marc dalam file.Dokumentasi belum ditulis, tetapi apakah segalanya ada di depan kita? =)Beberapa nuansa perpustakaan (dan, karenanya, dari konverter):- subbidang disimpan dalam daftar tertaut dengan pengurutan saat ditambahkan (permintaan spesifik dari kolega tidak mengizinkan penggunaan hashmap)
- Memberi Nama Bendera Pemimpin yang Tidak Mungkin Anda Sukai
Fitur aturan penulisan:Ketika aturan Anda mulai berjalan, sudah ada dua objek: orig dan res - orig - catatan asli, res - apa yang akhirnya akan ditulis ke file output, dan ketika aturan Anda mulai, res adalah objek kosong, hanya diinisialisasi, di sedangkan orig diisi dengan data 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();
Ketika aturan Anda berhasil, Go akan mengambil data dari res, dan menulisnya ke file.Perhatian! Kode tidak dioptimalkan, menganggapnya sebagai produk terkecil yang layak.Contoh aturan dapat ditemukan di repositori BatchMarc.PullRequest, IssueRequest - diterima olehUPD: js untuk aturan penulisan dipilih sebagai bahasa yang paling banyak didistribusikan (di lingkungan perpustakaan, termasuk)