BatchMarc प्रक्रिया को go + js पर marc फ़ाइलें

सभी बीवर!
आज शुक्रवार है, और इसका मतलब है कि स्टॉक लेने का समय!

हमारे पुस्तकालय क्लब के विषयों को जारी रखते हुए, मैंने सभी को थोड़ा खुश करने के लिए जल्दबाजी की: मैंने ऐसा किया!

खर्च किए गए तंत्रिका कोशिकाओं के एक समुद्र के बाद, marc स्वरूपों पर प्रलेखन के एक नरक के बाद, और बैसाखी का एक गुच्छा, मैंने अभी भी एक अपेक्षाकृत फलक (लेकिन अभी भी एक भयानक कोड के साथ :)) कनवर्टर (+ हैंडलर + सब कुछ जो कल्पना के लिए पर्याप्त है) को एक साथ रखा।

https://github.com/HerzenLibRu/BatchMarc (हैंडलर, नियम js में लिखे गए हैं)

https://github.com/t0pep0/marc21 (marc format के साथ काम करने के लिए जाने पर पुस्तकालय)



आप इसे इस तरह से चला सकते हैं:
go run main.go inputFile.ldb outputFile.ldb rules.js

नियम फ़ाइल में प्रत्येक marc प्रविष्टि पर लागू होते हैं।
दस्तावेज़ीकरण अभी तक नहीं लिखा गया है, लेकिन क्या सब कुछ हमारे आगे है? =)

पुस्तकालय की कुछ बारीकियों (और, तदनुसार, कनवर्टर की):
  • जोड़े जाने पर छँटाई के साथ उप-क्षेत्र एक लिंक की गई सूची में संग्रहीत किया जाता है (सहकर्मियों के विशिष्ट अनुरोधों ने हैशमैप के उपयोग की अनुमति नहीं दी)
  • नेमिंग लीडर फ्लैग यू नॉट लाइक


लेखन नियम की विशेषताएं:
जब आपका नियम निष्पादित होना शुरू होता है, तो पहले से ही दो ऑब्जेक्ट होते हैं: मूल और रेस - मूल - मूल रिकॉर्ड, रेस - आखिरकार आउटपुट फ़ाइल को क्या लिखा जाएगा, और जब आपका नियम शुरू होता है, तो रेज एक खाली वस्तु है, बस आरंभीकृत, जबकि मूल डेटा से भरा है

  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();


जब आपके नियम काम करेंगे, तो गो डेटा को रिस से लेगा, और उसे एक फाइल में लिख देगा।

चेतावनी! कोड अनुकूलित नहीं है, इसे सबसे छोटा व्यवहार्य उत्पाद मानते हैं।

नियमों का एक उदाहरण बैचमैर्क भंडार में पाया जा सकता है।

PullRequest, IssueRequest -

UPD द्वारा स्वीकार किया गया : लेखन नियमों के लिए js को सबसे व्यापक रूप से वितरित (एक पुस्तकालय वातावरण में, सहित) भाषा के रूप में चुना गया है

Source: https://habr.com/ru/post/hi395377/


All Articles