Skricle ist eine schnelle, leistungsstarke, sichere und leichte Textvorlagensprache und -motor für .NET mit einem Kompatibilitätsmodus zum Analysieren liquid
.
Skricle ist eine direkte Gabelung und Erweiterung von Scriban und erbt somit alle großartigen Funktionen, während sie Unterstützung für Layouts und Abschnitte (ähnlich wie .NET Razor's) (siehe unten).
Das Folgende gilt gleichermaßen für scriptic und scriban:
// Parse a scriban template
var template = Template . Parse ( " Hello {{name}}! " ) ;
var result = template . Render ( new { Name = " World " } ) ; // => "Hello World!"
Scriban ist eine schnelle, leistungsstarke, sichere und leichte Textvorlagensprache und -motor für .NET mit einem Kompatibilitätsmodus zum Analysieren liquid
.
// Parse a scriban template
var template = Template . Parse ( " Hello {{name}}! " ) ;
var result = template . Render ( new { Name = " World " } ) ; // => "Hello World!"
Analysieren Sie eine flüssige Vorlage mit der flüssigen Sprache:
// Parse a liquid template
var template = Template . ParseLiquid ( " Hello {{name}}! " ) ;
var result = template . Render ( new { Name = " World " } ) ; // => "Hello World!"
Die Sprache ist sehr vielseitig, einfach zu lesen und zu verwenden, ähnlich wie Flüssigkeitsvorlagen:
var template = Template . Parse ( @"
<ul id='products'>
{{ for product in products }}
<li>
<h2>{{ product.name }}</h2>
Price: {{ product.price }}
{{ product.description | string.truncate 15 }}
</li>
{{ end }}
</ul>
" ) ;
var result = template . Render ( new { Products = this . ProductList } ) ;
BEACHTEN
Standardmäßig werden Eigenschaften und Methoden von .NET -Objekten automatisch mit Kleinbuchstaben und
_
Namen ausgesetzt. Es bedeutet, dass eine Eigenschaft wieMyMethodIsNice
alsmy_method_is_nice
freigelegt wird. Dies ist die Standardkonvention, die ursprünglich dem Verhalten von Flüssigkeitsvorlagen entspricht. Wenn Sie dieses Verhalten ändern möchten, müssen Sie einenMemberRenamer
-Delegierter verwenden
Template.ToText
liquid
unter Verwendung der Template.ParseLiquid
-Methodeliquid
Sprache weniger leistungsfähig ist als Scriban, ermöglicht dieser Modus leicht, von liquid
zu scriban
-Sprache leicht zu migrierenliquid
Skript mit Template.ToText
in eine mit Vorlage analysierte Vorlage in ein Scriban -Skript konvertieren Template.ParseLiquid
if
/ else
/ for
/ while
, Ausdrücke ( x = 1 + 2
), Bedingungen ... usw.myvar | string.capitalize
)func
-Anweisung und ermöglichen Sie Funktion Zeiger/Delegierte über die alias @ directive
x = {mymember: 1}
) und Arrays (z. B. x = [1,2,3,4]
)wrap
-Anweisung verwendet wirdarrays functions
date
html
maths functions
object
regex functions
string functions
timespan
{{...}}
anzunehmen müssenSie können die Scriban -Erweiterung für den Visual Studio -Code installieren, um Syntaxfärben für Scriban -Skripte (ohne HTML) und Scriban -HTML -Dateien zu erhalten. Beachten Sie, dass die Erweiterung skünstliche Funktionen auf Scriban nicht erkennt.
Skricy fügt der Skriptsprache ein paar zusätzliche Schlüsselwörter hinzu:
layout
- Beispielsweise gibt die Anweisung {{layout "_main_layout.htmls"}}
die Layout -Datei für die aktuelle Seite an. Layouts können verschachtelt werden, dh eine Layout -Datei kann selbst eine layout
-Anweisung haben. In einer bestimmten Datei kann jedoch nur eine layout
-Anweisung vorhanden sein. Das gesamte Layout -Konzept ist nach .NET -Rasierer -Ansichten modelliert.body
- Ein Platzhalter in einer Layoutdatei, die angibt, wo der Seiteninhalt gerendert wird.section
- Zum Beispiel {{section "main-menu}"}}
in einer Seite ist ein benannter, wiederverwendbarer Ausschnitt von HTML und scriptic. Der Inhalt eines Abschnitts wird überall dort gerendert, wo eine entsprechende render
platziert wird.render
- zum Beispiel {{render "main-menu"}}
gibt an, wo ein bestimmter genannter Abschnitt in einer Layout -Datei gerendert werden soll. Abschnitte können auch auf derselben Seite definiert und gerendert werden. Der gleiche Abschnitt kann mehrmals gerendert werden, was es zu einer bequemen Möglichkeit macht, kleine, wiederverwendbare Markup -Ausschnitte zu isolieren.markdown
- kann auf zwei verschiedene Arten verwendet werden:{{markdown}} <markdown text goes here> {{end}}
. In diesem Fall wird der Text im markdown-end
-Paar als reiner Markdown behandelt (es darf keine skünstlichen Ausdrücke enthalten){{markdown "mdfilename.md"}}
, in diesem Fall wird die angegebene externe Markdown-Datei eingezogen; Die Markdown -Datei kann auch skünstliche Anweisungen und Ausdrücke enthalten. Sie werden bewertet, bevor die Markdown -Syntax verarbeitet wird. Das Kennzeichen markdown
funktioniert nur, wenn Sie einen Markdown -Text -Renderer angeben. Dies geschieht ähnlich wie die Angaben der externen Vorlagenlader:
context . Markdown = new MarkdownRenderer ( ) ;
Wo MarkdownRenderer
die IStringTransformer
-Schnittstelle implementiert:
public interface IStringTransformer
{
string Render ( string text ) ;
}
Der Transformator kann eine willkürliche Reihe von Transformationen im Text durchführen, aber es sollte gut mit einem Markdown -Prozessor wie Markdig
zusammenarbeiten (interessanterweise vom selben Autor wie Scriban).
Scriban ist seit einiger Zeit als Nuget -Paket erhältlich :. Die Schrift ist auf Nuget noch nicht verfügbar.
Die Schrift arbeitet immer noch in der Arbeit. Es hat nicht das gleiche Maß an Stabilität und Reife erreicht wie Scriban. Die Schrift ist jedoch nur eine geringfügige Erweiterung von Scriban, sodass sie viele Vorteile seiner reifen Codebasis genießen. Möglicherweise haben wir jedoch versehentlich etwas gebrochen ... sowieso verwenden wir Skriptic für die Produktionsarbeit. Ymmv. Verwenden Sie auf eigenes Risiko.
Skricle/Scriban lodert schnell ! Weitere Informationen finden Sie im Benchmarks -Dokument.
Diese Software wird unter der Lizenz BSD-Clause 2 veröffentlicht.
Das Skriptlogo, das eindeutig von Scribans Puzzle inspiriert ist, ist dennoch die ursprüngliche Arbeit von Andrew J. Wozniewicz (inklusive Quelle CorelDraw -Datei).
Scriban wurde erstellt und wird von Alexandre Mutel alias Xoofx aufrechterhalten. Die Schrift wurde aus Scriban gegabelt und von Andrew J. Wozniewicz (auch bekannt als ANCZ) erweitert.