Script.NET
| {{#if: Script.NET | Script.NET | {{#invoke:WLink|getArticleBase}} }} | |||
|---|---|---|---|
colspan="2" class="notheme" style="text-align:center; background-color:#Vorlage:Standardfarbe;" | |
{{#if: {{#invoke:Wikidata|claim|P154}} |
|
[[Datei:{{#invoke:Wikidata|claim|P154}}|150px]]
}} }} | ||
| {{{Screenshot}}}{{#if: Skriptsprache | Skriptsprache }}| }} | |||
| Basisdaten | |||
| Paradigmen: | Skriptsprache
}} | ||
| Erscheinungsjahr: |
{{#if: {{#invoke:Wikidata|claim|P571}} |
|
Erscheinungsjahr: | claim|P571|references=ja}}
}} }} |
| Designer: |
{{#if: {{#invoke:Wikidata|claim|P287}} |
|
Designer: | claim|P287|parameter=link|references=ja|list=, }}
}} }} |
| Entwickler: |
{{#if: {{#invoke:Wikidata|claim|P178}} |
|
Entwickler: | claim|P178|parameter=link|references=ja|list=, }}
}} }} |
| Aktuelle Version: | Beta 17122007 (17. Dezember 2007) |
{{#if: {{#invoke:Wikidata|claim|P348}} | |
Aktuelle Version | {{#invoke:Wikidata|claim|P348|references=ja}}{{#if: {{#invoke:Wikidata|claim|Version|qualifier=P577}} | ({{#invoke:Wikidata|claim|Version|qualifier=P577}})}}}}
}} |
| Aktuelle Vorabversion: | {{{AktuelleVorabVersion}}} ({{{AktuelleVorabVersionFreigabeDatum}}})
}} | ||
| Typisierung: | schwach, dynamisch, Duck-Typing
}} | ||
| Wichtige Implementierungen: |
}} | ||
| Dialekte: |
}} | ||
| Standardisierungen: | {{{Standardisierungen}}}
}} | ||
| Beeinflusst von: | JavaScript |
{{#if: {{#invoke:Wikidata|claim|P737}} |
|
Beeinflusst von: | claim|P737|parameter=link|references=ja|list=, }}
}} }} |
| Beeinflusste: |
}} | ||
| Betriebssystem: | alle mit CLR |
{{#if: {{#invoke:Wikidata|claim|P306}} |
|
Betriebssystem: | claim|P306|parameter=link|references=ja|list=, }}
}} }} |
| Lizenz: | GNU Lesser General Public License (LGPL) |
{{#if: {{#invoke:Wikidata|claim|P275}} |
|
Lizenz: | claim|P275|parameter=link|references=ja|list=, }}
}} }} |
https://www.protsyk.com/scriptdotnet/ |
{{#if: {{#invoke:Wikidata|claim|P856}} |
| |||
{{#invoke: WLink | formatURL | {{#invoke:Wikidata|claim|P856|parameter=link}}}}
}} }} | |||
Script .NET bzw. S# ist eine Programmiersprache, die sich Mechanismen der Metaprogrammierung bedient. Sie stellt dabei Funktionalitäten zur Verfügung, die es erlauben, Skripte in der Common Language Runtime (CLI) des .Net-Frameworks auszuführen und während der Laufzeit zu verändern. Die Syntax ist sehr stark von JavaScript beeinflusst.
Metaprogrammierung
In Script .NET existiert u. a. der spezielle Operator <[ Programmcode ]>, der den Abstract Syntax Tree (AST) eines Programms zurückgibt. Auf den AST des aktuellen Programms kann über das Objekt prog zugegriffen werden, wie das folgende Beispiel zeigt:
<syntaxhighlight lang="javascript"> // AST erstellen, der eine MessageBox mit dem Ausdruck "Guten Tag!" ausgibt ast = <[ MessageBox.Show('Guten Tag!'); ]>;
// Programmcode dem aktuellen Programm anfügen prog.AppendAst(ast); </syntaxhighlight>
Beispiele
Hallo, Welt!
<syntaxhighlight lang="javascript"> MessageBox.Show('Hallo, Welt!'); </syntaxhighlight>
Bubblesort
<syntaxhighlight lang="javascript"> zahlen = [5, 9, 1979, 23, 9, 1979];
for (i = 0; i < zahlen.Length; i++) {
for (j = i + 1; j < zahlen.Length; j++) {
if ( zahlen[j] < zahlen[i] ) {
// tauschen
temp = zahlen[i];
zahlen[i] = zahlen[j];
zahlen[j] = temp;
}
}
}
// Ausgabe erstellen ausgabe = 'Ergebnis: '; for (i = 0; i < zahlen.Length; i++) {
if (i > 0) {
ausgabe = ausgabe + ', ';
}
ausgabe = ausgabe + zahlen[i];
}
MessageBox.Show(ausgabe); </syntaxhighlight>
RSS-Web-Feeds
<syntaxhighlight lang="javascript"> rss = new XmlDocument(); rss.Load('https://www.tagesschau.de/xml/tagesschau-meldungen/');
MessageBox.Show('tagesschau.de Meldungen: ');
// Titel aller vorhandenen Themen/Meldungen ausgeben foreach (feed in rss.SelectNodes('/rss/channel/item/title'))
MessageBox.Show(feed.InnerText);
</syntaxhighlight>
Weblinks
- Homepage von Script.NET
- Script.NET bei GitHub
- <templatestyles src="Webarchiv/styles.css" />{{#if:20120714235701
| {{#ifeq: 20120714235701 | *
| {{#if: Script.NET On-Line | {{#invoke:WLink|getEscapedTitle|Script.NET On-Line}} | {{#invoke:Webarchiv|getdomain|http://www.protsyk.com/scriptdotnet/runcode.html}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20120714235701}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Script.NET On-Line | {{#invoke:WLink|getEscapedTitle|Script.NET On-Line}} | {{#invoke:Webarchiv|getdomain|http://www.protsyk.com/scriptdotnet/runcode.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20120714235701}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Script.NET On-Line | {{#invoke:WLink|getEscapedTitle|Script.NET On-Line}} | {{#invoke:Webarchiv|getdomain|http://www.protsyk.com/scriptdotnet/runcode.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Script.NET On-Line | {{#invoke:WLink|getEscapedTitle|Script.NET On-Line}} | {{#invoke:Webarchiv|getdomain|http://www.protsyk.com/scriptdotnet/runcode.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Script.NET On-Line | {{#invoke:WLink|getEscapedTitle|Script.NET On-Line}} | {{#invoke:Webarchiv|getdomain|http://www.protsyk.com/scriptdotnet/runcode.html}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Script.NET On-Line | {{#invoke:WLink|getEscapedTitle|Script.NET On-Line}} | {{#invoke:Webarchiv|getdomain|http://www.protsyk.com/scriptdotnet/runcode.html}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20120714235701|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.protsyk.com/scriptdotnet/runcode.html}}
|| {{#if: || }}
}}{{#if: Script.NET On-Line
| {{#if: {{#invoke:WLink|isBracketedLink|Script.NET On-Line}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://www.protsyk.com/scriptdotnet/runcode.html%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.protsyk.com/scriptdotnet/runcode.html%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://www.protsyk.com/scriptdotnet/runcode.html }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}