RegEx - Dokumentation und dazugehörige Funktion auslesen

ZimTis

Grünschnabel
Hallo,

ich suche mir mit der Funktion exec(), aus einer .js Datei alle Funktionen mit Namen und Parametern und alle Kommentare die mit /** eingeleitet werden, raus.

Dazu nutze ich :
Javascript:
var functionsPattern=/function[\t\v ]+?(\w+?)[\t\v ]*?\(([\w, \t\v]*?)\)/g;
var docPattern =/\/\*\*[\s\S]*?\*\//g;
Für sich genommen arbeiten die beiden Ausdrücke wunderbar.
Nun habe ich versucht diese beiden zu verbinden, damit ich die passenden Kommentare gleich mit der dazugehörigen Funktion bekomme.

Mein Versuch:
Javascript:
var functionsPattern=/(\/\*\*[\s\S]*?\*\/)? ?[\t\r\n\v ]*?function[\t\v ]+?(\w+?)[\t\v ]*?\(([\w, \t\v]*?)\)/g;
(Die beiden Fragezeichen gehören natürlich ohne Leerzeichen nebeneinander, aber aus irgend einem Grund macht er mir hier daraus immer ****)

Wenn ich jetzt folgendes Testfile untersuchen lasse:
Javascript:
/**
* sdf
* sdf
* sdf
sdf
*/


var blub = ssdf;


/**
* Bla bla Blub
* 
*@package pa.ck.age
*/	 
function TestClass(sdfsdf, sdfsd){
	
}

function getBlablabl(){
}

/**
* This function blubs something
*
* @param id id of the element that should be blubed
*/
TestClass.prototype.Blub = function(id){
}
Erkennt er das erste Kommentar bis zur ersten Funktion, egal was dazwischen ist. Nichteinmal */ konnte das verhindern.
Ich glaube das der Fehler bei der Anweisung [\s\S] liegt, konnte ihn aber nicht beheben, wenn denn dort der Fehler liegt.

Ich hoffe das ihr mir einen Tipp geben könnt.

Danke schon mal im voraus.
 
Zuletzt bearbeitet von einem Moderator:
Genau das meinte ich, er findet in Zeile 9 kein function und sollte doch eigentlich abbrechen und beim nächsten erscheinen von "/**"neu anfangen.

Ich habe nochmal einen Test gemacht und interessant ist, das er nicht das function sucht sondern das "*/function"
Javascript:
/**
* sdf
* sdf
* sdf
sdf
*/
 
 
var blub = ssdf;

function asd(a,s,d){
}
 
/**
* Bla bla Blub
* 
*@package pa.ck.age
*/   
function TestClass(sdfsdf, sdfsd){
    
}
 
function getBlablabl(){
}
 
/**
* This function blubs something
*
* @param id id of the element that should be blubed
*/
TestClass.prototype.Blub = function(id){
}
Er erkennt Zeile 1 bis Zeile 19 als eins, obwohl eine Funktion dazwischen ist.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück