From f48c57d771b6e16e4ed12dff6e0e978db960f6d2 Mon Sep 17 00:00:00 2001 From: Kensuke Matsuzaki Date: Fri, 4 Apr 2014 17:29:51 +0900 Subject: [PATCH] add jsrender/jsrender.d.ts --- README.md | 1 + jsrender/jsrender-tests.ts | 50 ++++++++++++++++++++++++++++++++++ jsrender/jsrender.d.ts | 56 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 jsrender/jsrender-tests.ts create mode 100644 jsrender/jsrender.d.ts diff --git a/README.md b/README.md index f8a103dd1..3b34ef2ec 100755 --- a/README.md +++ b/README.md @@ -172,6 +172,7 @@ List of Definitions * [JSDeferred](http://cho45.stfuawsc.com/jsdeferred/) (by [Daisuke Mino](https://github.com/minodisk)) * [JSONEditorOnline](https://github.com/josdejong/jsoneditoronline) (by [Vincent Bortone](https://github.com/vbortone/)) * [JSON-Pointer](https://www.npmjs.org/package/json-pointer) (by [Bart van der Schoor](https://github.com/Bartvds)) +* [JsRender](http://www.jsviews.com/#jsrender) (by [Kensuke MATSUZAKI](https://github.com/zakki)) * [jStorage](http://www.jstorage.info/) (by [Danil Flores](https://github.com/dflor003/)) * [JWPlayer](http://developer.longtailvideo.com/trac/) (by [Martin Duparc](https://github.com/martinduparc/)) * [KeyboardJS](https://github.com/RobertWHurst/KeyboardJS) (by [Vincent Bortone](https://github.com/vbortone/)) diff --git a/jsrender/jsrender-tests.ts b/jsrender/jsrender-tests.ts new file mode 100644 index 000000000..8b0fdd57f --- /dev/null +++ b/jsrender/jsrender-tests.ts @@ -0,0 +1,50 @@ +/// +/// + +$.views.converters("upper", function(val) { + return val.toUpperCase(); +}); + +$.views.converters({ + upper: (val: string) => val.toUpperCase(), + lower: (val: string) => val.toLowerCase() +}); + +$.views.converters.html("< > ' \" &"); +$.views.converters.attr( "< > ' \" &"); +$.views.converters.url("<_>_\"_ "); + +function renderBoldP(value: any): string { + return "

" + value + "

"; +} + +$.views.tags("boldp", renderBoldP); +$.views.tags("boldp", { + template: "

{{:~tag.tagCtx.args[0]}}

" +}); + +function myFormatFunction(value: string, upper: string): string { + return upper ? value.toUpperCase() : value.toLowerCase(); +} +$.views.helpers("format", myFormatFunction); +$.views.helpers({format: myFormatFunction}); + +var person = { + name: "Adriana" +}; + +$.templates("personTmpl", " {{:name}}"); +var html = $.render["personTmpl"](person); +console.log(html); + +var myTmpl = $.templates(" {{:name}}"); +var html = myTmpl.render(person); +console.log(html); + +$.templates({ + personTmpl: "#personTemplate", + labelTmpl: "Name:" +}); + +var html = $("#personTemplate").render(person); +console.log(html); diff --git a/jsrender/jsrender.d.ts b/jsrender/jsrender.d.ts new file mode 100644 index 000000000..8cdfa13a1 --- /dev/null +++ b/jsrender/jsrender.d.ts @@ -0,0 +1,56 @@ +// Type definitions for JsRender +// Project: http://www.jsviews.com/#jsrender +// Definitions by: https://github.com/zakki +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module JsRender { + interface Converters { + (name: string, converterFn: (value: any) => any): any; + (namedConverters: any, parentTemplate?: any): any; + + html(valueToEncode: string): string; + attr(valueToEncode: string): string; + url(valueToEncode: string): string; + } + + interface Views { + converters: Converters; + + tags(name: string, tagFn: (value: any) => any): any; + tags(name: string, tagOptions: any): any; + tags(namedTags: any): any; + + helpers(name: string, helper: any): any; + helpers(namedHelpers: any, parentTemplate?: any): any; + } + + interface Template { + render(data?: any): string; + } + + interface NamedTemplate { + (data?: any): string; + } + + interface Render { + (data?: any, helpersOrContext?: any): string; + } + + interface RenderStatic { + [index: string]: NamedTemplate; + } +} + +interface JQuery { + render: JsRender.Render; +} + +interface JQueryStatic { + render: JsRender.RenderStatic; + views: JsRender.Views; + templates(markupOrSelector: string): JsRender.Template; + templates(name: string, markupOrSelector: string): JsRender.Template; + templates(namedTemplates: any): any; +}