کاربر:Behaafarid/FootNoteTools.js

از ویکی‌پدیا، دانشنامهٔ آزاد.

نکته: پس از ذخیره‌سازی ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را خالی کنید. موزیلا / فایرفاکس / Safari: کلید Shift را نگه‌دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-Shift-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های Cmd-Shift-Rاینترنت اکسپلورر: کلید Ctrl نگه‌دارید و روی دکمهٔ Refresh کلیک‌ کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید؛ Konqueror: روی دکمهٔ Reload کلیک کنید و یا کلید F5 را فشار دهید؛ اُپرا: کاربران اُپرا ممکن است لازم باشد که بطور کامل حافظهٔ نهانی مرورگر را در منوی Tools→Preferences خالی کنند.

<pre>
function Sorter(obj)
{

var ref = "ref"; //name of ref tag
var Note= "Note"; //name of Note tag

var s = obj.value;
var ss = new Array();
var notes=new Array();
var counter = 0;
var sl; //left substring
var sr; //right substring

//Find First occurence of Notes (used later)
var noteplace1 = s.indexOf("{{"+Note+"|");

//extract keys
posa=s.indexOf("{{"+ref+"|");
posb = s.indexOf("}}",posa);
a = posa+6;
b = posb;

while (posa>-1){
  ss.push(s.slice(a,b));
  posa=s.indexOf("{{"+ref+"|",posb);
  posb = s.indexOf("}}",posa);
  a = posa+6;
  b = posb;
  }

//Find the corresponding footnotes
 posa=s.indexOf("#{{"+Note+"|"+ss.pop()+"}}");
 posb=s.indexOf("\n",posa);
 
while  (posa>-1){
  
  notes.push(s.slice(posa,posb));
  counter = counter + 1;
  //remove that string:
  sl=s.slice(0,posa);
  sr=s.slice(posb+1);//+1 to remove newline character as well.
  s = sl+sr;
  
  posa=s.indexOf("#{{"+Note+"|"+ss.pop()+"}}");
  posb=s.indexOf("\n",posa);
}

//put the strings back

//first slice string from the 1st occurence of Notes
//to make room for notes insertion

if (noteplace1 > -1)
{
  sl = s.slice(0,noteplace1);
  sr = s.slice(noteplace1);
}
while (counter>0){
sl = sl + notes.pop() + "\n";
counter = counter -1;
}

s = sl+sr;

//update string.
obj.value=s;
alert("SUCCESS");
}
</pre>