2016-04-08 13 views
3

Mit Handlebars.Net möchte ich einen HandlebarsHelper erstellen, der Wagenrücklaufzeichen und Zeilenumbrüche durch <br> Tags ersetzt. Es sollte wie folgt aussehen:Was ist die Syntax zum Erstellen von HandleBars Helper Server-Seite?

string pattern = @"/(\r\n|\n|\r)/gm"; 
string replacement = "<br>"; 
Regex rgx = new Regex(pattern); 

Handlebars.RegisterHelper("link_to", (string text) => 
{ 
    text = rgx.Replace(text, replacement); 
}); 

Der Compiler (oder resharper) sagt mir, dass es nicht sagen kann, ob ich versuche HandlebarsBlockHelper oder HandlebarsHelper zu verwenden, und ich Argumente in jedem Fall fehlen.

  1. Was ist der Unterschied zwischen den beiden?
  2. Ich kann nicht scheinen, viel Dokumentation für irgendetwas davon zu finden. Gibt es eine Dokumentation für die oben genannten beiden Objekte sowie HelperOptions und wie man TextWriter, den dynamischen Kontext und die Argumentobjektliste verwendet?

Antwort

2

Es endete wie folgt aussehen mit ein wenig Hilfe von der C# Regex-Klasse:

var newlineRegx = new Regex("(\\r\\n|\\n|\\r)",RegexOptions.Multiline); 

Handlebars.RegisterHelper("handleNewLines", (output, context, arguments) => 
{ 
    var str = newlineRegx.Replace((string)arguments[0], "<br>"); 
    output.Write(str); 
}); 

Um meine Fragen zu beantworten:

  1. HandleBarsBlockHelper stellt einen Mechanismus für einen Helfer Aufruf mit ein Block der Vorlage. Blockhelfer können diesen Block dann mit jedem beliebigen Kontext null oder mehrmals aufrufen. Weitere Informationen finden Sie in der Beschreibung für Helpers (unten sehen Sie eine Schaltfläche mit der Bezeichnung "Weitere Informationen: Block Helpers").

    • TextWriter.Write gibt Ihren transformierten Text aus.
    • Kontext ist im Wesentlichen das JSON-Objekt, das Sie an den Delegaten übergeben haben, den Sie mit Handlebars.Compile() erstellt haben.
    • Das Argument Objektlisten enthält die Argumente, die an der Seite erscheinen die Helfer Sie definieren, die Sie in Ihrem HTML-Vorlage

Zum besseren Verständnis der Liste Argument Objekt zu verstehen, wird es verwenden werden Hilfe, um zu sehen, wie ich diese Helfer in meiner HTML-Vorlage verwendet:

<div> 
    <p>{{{handleNewLines StringVariable}}}</p> 
</div> 

Wo „string“ ist ein Mitglied des JSON-Objekts ich in die Delegierten kam ich mit Handlebars.Compile() erstellt