Մասնակից:ATaguhi/getDatesFromArticleText.js

Վիքիպեդիայից՝ ազատ հանրագիտարանից

Ծանուցում. Հիշելուց հետո կատարված փոփոխությունները տեսնելու համար մաքրեք ձեր զննարկիչի հիշապահեստը. Mozilla / Firefox / Safari՝ Ctrl+Shift+R (Cmd+Shift+R Mac OS X-ում) Konqueror՝ F5 Opera՝ Tools→Preferences ընտրացանկից։ Internet Explorer՝ Ctrl+F5

var WikiAutoDates=WikiAutoDates || {};
WikiAutoDates.getDatesFromArticleText=function(text){
    debugger;
    var DayObject=function() {
        this.day=null;
        this.month=null;
        this.year=null;
    };
    var men={
        birth:new DayObject,                      //ծննդյան տվյալներ
        death:new DayObject                       //մահվան տվյալներ
    };
    var IndexFirstText=text.indexOf("'''");

    var textbiog=text.substring(IndexFirstText,IndexFirstText+195);           //առանձնացնում ենք կենսագրությունը
    textbiog=textbiog.toLowerCase();

    var monthArray=["հունվար","փետրվար","մարտ","ապրիլ","մայիս","հունիս","հուլիս","օգոստոս","սեպտեմբեր","հոկտեմբեր","նոյեմբեր","դեկտեմբեր"];

    /////////////////////////////
    var monthDay=null;
    var birthYear=null;
    var birthMonth=null;
    var birthDay=null;
    var deathYear=null;
    var deathMonth=null;
    var deathDay=null;
    var birthDatas;     /// tsnndyan tvyalner ete bolory tverov en trvac
    var deathDatas;     /// mahvan tvyalner  ete bolory tverov en trvac
    //stugenq taretiv ka te che
    if(/[0-9]{3,4}/g.test(textbiog))
    {
        var yearGlobal=textbiog.match(/[0-9]{3,4}/g);   //gtnum enq 3 kam 4 nishanoc tvery
        birthYear=yearGlobal[0];                        // hamarenq tsnndyan taretiv
        if(yearGlobal[1]){                             //hamarenq mahvan taretiv
            deathYear=yearGlobal[1];
        }
    }

    if(/([0-9]{1,2})?\s*?(հունվար|փետրվար|մարտ|ապրիլ|մայիս|հունիս|հուլիս|օգոստոս|սեպտեմբեր|հոկտեմբեր|նոյեմբեր|դեկտեմբեր)ի?(\s*[0-9]{1,2})?/g.test(textbiog))
    {
        monthDay = textbiog.match(/([0-9]{1,2})?\s*?(հունվար|փետրվար|մարտ|ապրիլ|մայիս|հունիս|հուլիս|օգոստոս|սեպտեմբեր|հոկտեմբեր|նոյեմբեր|դեկտեմբեր)ի?(\s*[0-9]{1,2})?/g);
        //amboxj textbiogu-um gtnum enq amis -amsatvery
        var birthMonthDay = null;
        var deathMonthDay = null;
         if (monthDay.length === 2)
         {
            birthMonthDay = monthDay[0];
            deathMonthDay = monthDay[1];
        } else
        // ete mi hat amis-amsativ e apa da tsnndyann e;  ,isk mahvan chka
        if (monthDay.length === 1 || monthDay[0]===monthDay[1]) {

           birthMonthDay= monthDay[0];

        }
        //tsnndyan tvyalner//
        birthDatas=birthMonthDay.split(" ");   // ապա ըստ պռոբելի կտրենք
        birthMonth=birthDatas[0];           //birthMonth=ստացված "ամիսը"
        birthDay=birthDatas[1];              //birthDay=ստացված "օրը"
        if(birthMonth.length<4){

            var swap1=birthMonth;           //ստուգել եթե ամսվա երկարությունը <4 ապա դա ամսաթիվն է
            birthMonth=birthDay;
            birthDay=swap1;
        }
     //mahvan tvyalner//
        if(deathMonthDay)        //// stugenq ete mahvan tvyaln[er kan nor sharunakenq
        {                         /// hakarak depqum mahvan amis amsativ@ kmna NULL;
            deathDatas = deathMonthDay.split(" "); //ապա ըստ պռոբելի կտրենք

            deathMonth = deathDatas[0];     //այս 2 տողերը Birth-ի նման
            deathDay = deathDatas[1];
            //"ամիս" "օրը" հնարավոր է հակառակը լինեն

            if (deathMonth.length < 4) {
                var swap2 = deathMonth;
                deathMonth = deathDay;
                deathDay = swap2;
            }
        }
        // stugenq ete amsva verjum ի tary ka jnjenq
        if(birthMonth[birthMonth.length-1]==="ի"){         //եթե ամիսը վերյանում է ի տառով ապա
            birthMonth=birthMonth.substring(0,birthMonth.length-1);//այդ ի տառը հանում ենք
            if(deathMonth) {
                deathMonth = deathMonth.substring(0, deathMonth.length - 1);
            }
        }
       /// amisy poxenq tverov
        for(var i=0;i<monthArray.length;i++){
            if(birthMonth===monthArray[i]){
                birthMonth=i+1;}
            if(deathMonth===monthArray[i]){
                deathMonth=i+1;}
        }

    } 

    
    ///
    //ete voch mi hat amis-amsativ chi gtnvel apa porcenq man gal tveri tesqov;
     else {

        var rezultTest=0;
        if (/[0-9]{3,4}\|[0-9]{1,2}\|[0-9]{1,2}/g.test(textbiog)) {
            rezultTest = 1;                /// tiv|tiv|tiv
        }
        else if(/[0-9]{3,4}\.[0-9]{1,2}\.[0-9]{1,2}/.test(textbiog)){
            rezultTest=2;               /// tiv.tiv.tiv
        }
        if(rezultTest===1){

            monthDay=textbiog.match(/[0-9]{3,4}\|[0-9]{1,2}\|[0-9]{1,2}/g);
             }
        else if(rezultTest===2){
            monthDay=textbiog.match(/[0-9]{3,4}\.[0-9]{1,2}\.[0-9]{1,2}/g);
            monthDay[0]=monthDay[0].replace(".","|");
        }
        if(rezultTest) {
            birthDatas = monthDay[0].split("|");
            birthYear = birthDatas[0];
            birthMonth = birthDatas[1];
            birthDay = birthDatas[2];
            if (monthDay.length === 2)       //aysinqn hamvan tvyalnern el kan
            {
                monthDay[1] = monthDay[1].replace(".", "|");
                deathDatas = monthDay[1].split("|");
                deathYear = deathDatas[0];
                deathMonth = deathDatas[1];
                deathDay = deathDatas[2];

            }
        }
    }
    if(birthYear===deathYear){
        deathYear=null;
    }
//
    men.birth.year=birthYear;
    men.birth.month=birthMonth;
    men.birth.day=birthDay;
    men.death.year=deathYear;
    men.death.month=deathMonth;
    men.death.day=deathDay;


    return men;
}