MediaWiki:Gadget-edittools-magnitudo.js

E Vicipaedia

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
$(function() {

   if (location.href.indexOf("action=edit") == -1 && location.href.indexOf("action=submit") == -1) { return; }
   var wikitext;
   {
     var editbox = document.getElementById('wpTextbox1');
     if (editbox == null) { return; }
     wikitext = editbox.defaultValue;
   }

   function outputWeight1000(outputtext) {
     var box = document.getElementById('mw-editTools');
     if(!box) { return; }
     var box2 = document.createElement("div");
     box2.appendChild(document.createTextNode(outputtext));
     box2.setAttribute("id", "weight1000");
     box.appendChild(box2);
   }

   function getInterwikiLength(article) {
     var interwiki_len   = 0;
     var interwiki_last  = 0;
     var interwiki_colon = 0;
     var interwiki_nl    = 0;
     var interwiki_first = article.indexOf('[[', interwiki_last);
     while (interwiki_last > -1 && interwiki_first > -1) {
       interwiki_last  = article.indexOf(']]', interwiki_first);
       interwiki_colon = article.indexOf(':',  interwiki_first);
       if (interwiki_colon > -1 && interwiki_colon < interwiki_last) {
         var curlang = article.substring(interwiki_first+2, interwiki_colon);
         if (isValidLanguageCode(curlang)) {
           var interwiki_nl = article.indexOf('\n', interwiki_last);
           if (interwiki_nl > -1) {
             interwiki_len += (interwiki_nl - interwiki_first) + 1;
           } else {
             interwiki_len += (interwiki_last - interwiki_first) + 2;
           }
         }
       }
       interwiki_first = article.indexOf('[[', interwiki_last);
     }
     return interwiki_len;
   }

   function getCommentLength(article) {
     var comment_len   = 0;
     var comment_last  = 0;
     var comment_first = article.indexOf('<!--', comment_last);
     while (comment_first > -1) {
       comment_last = article.indexOf('-->', comment_first);
         if (comment_last == -1) {
           comment_last = comment_first + 4;
         }
       comment_len += (comment_last - comment_first) - 4;
       comment_first = article.indexOf('<!--', comment_last);
     }
     return comment_len;
   }

   var languageCodes = '$en$de$fr$pl$ja$it$nl$pt$es$sv$ru$zh$no$fi$vo$' +
     'ca$ro$tr$uk$eo$cs$hu$sk$da$id$he$lt$sr$sl$ko$ar$bg$et$hr$new$te$' +
     'vi$th$gl$fa$nn$ceb$el$ms$simple$eu$bpy$bs$lb$is$ka$sq$la$br$az$' +
     'hi$bn$ht$mk$mr$sh$tl$io$cy$pms$lv$su$ta$jv$nap$oc$nds$scn$ast$' +
     'ku$be$wa$af$be-x-old$tg$an$fy$vec$roa-tara$cv$zh-yue$ur$ksh$sw$' +
     'qu$uz$mi$ga$bat-smg$ml$gd$yo$co$kn$pam$yi$hsb$nah$ia$li$sa$hy$' +
     'tt$als$roa-rup$lmo$map-bms$am$nrm$zh-min-nan$pag$wuu$fo$vls$' +
     'nds-nl$se$rm$ne$war$fur$lij$nov$bh$sco$dv$pi$diq$ilo$kk$os$frp$' +
     'zh-classical$mt$lad$fiu-vro$pdc$csb$kw$bar$to$haw$mn$ps$ang$km$' +
     'gv$tk$ln$ie$tpi$crh$jbo$wo$ay$zea$eml$si$sc$or$ig$mg$cbk-zam$gu$' +
     'ky$kg$ty$glk$arc$mo$gn$kab$so$ks$stq$mzn$cu$ce$udm$tet$sd$pap$ba$' +
     'pa$rmy$lo$na$bcl$kaa$gan$iu$myv$szl$sah$my$ext$hif$bo$srn$got$' +
     'dsb$bm$sm$cdo$chr$mdf$om$ee$as$ti$ug$kv$zu$av$nv$ss$pih$ts$cr$ve$' +
     'ch$bi$xh$rw$dz$tn$kl$bug$ik$bxr$st$xal$ny$ak$ab$fj$lg$tw$ha$za$' +
     'ff$lbe$ki$sn$tum$sg$ii$chy$rn$cho$mh$aa$ng$kj$ho$mus$kr$hz$arz$' +
     'pnt$mhr$ace$ckb$mwl$pnb$pcd$krc$frr$bjn$mrj$koi$gag$pfl$rue$ltg$' +
     'kbd$xmf$nso$hak$';

   function isValidLanguageCode(code) {
      return languageCodes.indexOf("$" + code + "$") > -1;
   }

   var raw_article_size = wikitext.length;
   var interwiki_len    = getInterwikiLength(wikitext);
   var comment_len      = getCommentLength(wikitext);
   var article_size     = (raw_article_size - interwiki_len - comment_len);

   var lang_weight      = 1.1;

   var weighted_size    = Math.round(article_size * lang_weight * 10)/10;

   outputWeight1000("Magnitudo: " + (weighted_size));

 });