Dzięki za podpowiedź ;-)
Poświęciłem chwilę czasu i stworzyłem wyrażenie regularne, które rozpoznaje komentarze w stylu C# oraz połączoną z nim poprawnie zadeklarowaną funkcję w JavaScript.
Przykładowe dane:
<script language="javascript" type="text/javascript">
/// <summary> Wypisuje argumenty w nowej linii </summary>
/// <param name="a">1 argument</param>
/// <param name="bbb">2 argument</param>
/// <param name="_c">3 argument</param>
/// <returns>Cos tam zwraca</returns>
function WriteLine( a, bbb, _c) {
var newLine = "<br></br>";
document.write( a + " "+ b + " " + c + newLine);
return newLine;
}
///<summary>Sumuje liczby</summary>
/// <param name="x">1 argument</param>
/// <param name="y">2 argument</param>
/// <returns>Suma liczb</returns>
function add(x , y) {
return x + y;
}
///<summary>zmienne</summary>
/// <param name="i">i</param>
/// <param name="j">j</param>
var i = 12, j = 10;
function message() {
return Ala ma kota !;
}
</script>
Wyrażenie regularne:((///\s*[^\n]*\s+)+)?function\s+([^\W0-9]\w+)\((\s*[^\W0-9]\w*\s*,?)*\)
Kod w C#:
const string regularExp = @"((///\s*[^\n]*\s+)+)?function\s+([^\W0-9]\w+)\((\s*[^\W0-9]\w*\s*,?)*\)";
const string fileName = @"test.txt";
string text = File.ReadAllText(fileName);
Regex regex = new Regex(regularExp, RegexOptions.Compiled);
for (Match match = regex.Match(text); match.Success; match = match.NextMatch())
{
Console.WriteLine(Regex.Replace(match.Value.Replace("///", String.Empty), @"[\r \t]{2,}", String.Empty));
Console.WriteLine(Environment.NewLine + "------------" + Environment.NewLine);
}
Wynik działania:
<summary> Wypisuje argumenty w nowej linii </summary>
<param name="a">1 argument</param>
<param name="bbb">2 argument</param>
<param name="_c">3 argument</param>
<returns>Cos tam zwraca</returns>
function WriteLine(a, bbb, _c)
------------
<summary>Sumuje liczby</summary>
<param name="x">1 argument</param>
<param name="y">2 argument</param>
<returns>Suma liczb</returns>
function add(x , y)
------------
function message()
------------
Jeśli ktoś by miał jakieś uwagi odnośnie wyrażenia regularnego, lub propozycje uproszczenia - proszę pisać ;-)