mirror of
https://github.com/wassname/DefinitelyTyped.git
synced 2026-09-06 16:20:26 +08:00
Fix Ember/Handlebars
This commit is contained in:
committed by
Jed Hunsaker
parent
7469c06f42
commit
a63e5a7e1e
+52
-47
@@ -1,20 +1,21 @@
|
||||
/// <reference path="ember.d.ts" />
|
||||
/// <reference path="../handlebars/handlebars.d.ts" />
|
||||
|
||||
|
||||
var App;
|
||||
|
||||
App = Em.Application.create();
|
||||
|
||||
App.president = Em.Object.create({
|
||||
name: "Barack Obama"
|
||||
name: 'Barack Obama'
|
||||
});
|
||||
App.country = Em.Object.create({
|
||||
presidentNameBinding: 'MyApp.president.name'
|
||||
});
|
||||
App.country.get('presidentName');
|
||||
App.president = Em.Object.create({
|
||||
firstName: "Barack",
|
||||
lastName: "Obama",
|
||||
firstName: 'Barack',
|
||||
lastName: 'Obama',
|
||||
fullName: function () {
|
||||
return this.get('firstName') + ' ' + this.get('lastName');
|
||||
}.property()
|
||||
@@ -24,47 +25,51 @@ App.president.get('fullName');
|
||||
declare class MyPerson extends Em.Object {
|
||||
static createMan(): MyPerson;
|
||||
}
|
||||
var Person = Em.Object.extend<typeof MyPerson>({
|
||||
|
||||
var Person1 = Em.Object.extend<typeof MyPerson>({
|
||||
say: (thing) => {
|
||||
alert(thing);
|
||||
}
|
||||
});
|
||||
|
||||
declare class MyPerson2 extends Em.Object {
|
||||
helloWorld(): void;
|
||||
}
|
||||
var tom = Person.create<MyPerson2>({
|
||||
name: "Tom Dale",
|
||||
helloWorld: () => {
|
||||
this.say("Hi my name is " + this.get('name'));
|
||||
var tom = Person1.create<MyPerson2>({
|
||||
name: 'Tom Dale',
|
||||
helloWorld: function() {
|
||||
this.say('Hi my name is ' + this.get('name'));
|
||||
}
|
||||
});
|
||||
tom.helloWorld();
|
||||
|
||||
Person.reopen({ isPerson: true });
|
||||
Person.create().get('isPerson');
|
||||
Person1.reopen({ isPerson: true });
|
||||
Person1.create<Em.Object>().get('isPerson');
|
||||
|
||||
Person.reopenClass({
|
||||
Person1.reopenClass({
|
||||
createMan: () => {
|
||||
return Person.create({ isMan: true })
|
||||
return Person1.create({ isMan: true });
|
||||
}
|
||||
});
|
||||
Person.createMan().get('isMan');
|
||||
// ReSharper disable once DuplicatingLocalDeclaration
|
||||
declare var Person1: typeof MyPerson;
|
||||
Person1.createMan().get('isMan');
|
||||
|
||||
var person = Person.create({
|
||||
firstName: "Yehuda",
|
||||
lastName: "Katz"
|
||||
var person = Person1.create<Em.Object>({
|
||||
firstName: 'Yehuda',
|
||||
lastName: 'Katz'
|
||||
});
|
||||
person.addObserver('fullName', () => { });
|
||||
person.set('firstName', "Brohuda");
|
||||
person.addObserver('fullName', null, () => { });
|
||||
person.set('firstName', 'Brohuda');
|
||||
|
||||
App.todosController = Em.Object.create({
|
||||
todos: [
|
||||
Em.Object.create({ isDone: false })
|
||||
],
|
||||
remaining: () => {
|
||||
remaining: (function() {
|
||||
var todos = this.get('todos');
|
||||
return todos.filterProperty('isDone', false).get('length');
|
||||
}.property('todos.@each.isDone')
|
||||
}).property('todos.@each.isDone')
|
||||
});
|
||||
|
||||
var todos = App.todosController.get('todos');
|
||||
@@ -86,29 +91,29 @@ App.husband.set('householdIncome', 90000);
|
||||
App.wife.get('householdIncome');
|
||||
|
||||
App.user = Em.Object.create({
|
||||
fullName: "Kara Gates"
|
||||
fullName: 'Kara Gates'
|
||||
});
|
||||
App.userView = Em.View.create({
|
||||
userNameBinding: Em.Binding.oneWay('App.user.fullName')
|
||||
});
|
||||
App.user.set('fullName', "Krang Gates");
|
||||
App.userView.set('userName', "Truckasaurus Gates");
|
||||
App.user.set('fullName', 'Krang Gates');
|
||||
App.userView.set('userName', 'Truckasaurus Gates');
|
||||
App.user.get('fullName');
|
||||
|
||||
App = Em.Application.create({
|
||||
rootElement: '#sidebar'
|
||||
});
|
||||
|
||||
var view = Em.View.create({
|
||||
var view = Em.View.create<Em.View>({
|
||||
templateName: 'say-hello',
|
||||
name: "Bob"
|
||||
name: 'Bob'
|
||||
});
|
||||
view.appendTo('#container');
|
||||
view.append();
|
||||
view.remove();
|
||||
|
||||
App.AlertView = Em.View.extend({
|
||||
priority: "p4",
|
||||
priority: 'p4',
|
||||
isUrgent: true
|
||||
});
|
||||
|
||||
@@ -121,21 +126,21 @@ App.ListingView = Em.View.extend({
|
||||
|
||||
App.userController = Em.Object.create({
|
||||
content: Em.Object.create({
|
||||
firstName: "Albert",
|
||||
lastName: "Hofmann",
|
||||
firstName: 'Albert',
|
||||
lastName: 'Hofmann',
|
||||
posts: 25,
|
||||
hobbies: "Riding bicycles"
|
||||
hobbies: 'Riding bicycles'
|
||||
})
|
||||
});
|
||||
|
||||
Handlebars.registerHelper('highlight', (property, options) => {
|
||||
Handlebars.registerHelper('highlight', function(property, options) {
|
||||
var value = Em.Handlebars.get(this, property, options);
|
||||
return new Handlebars.SafeString('<span class="highlight">' + value + '</span>');
|
||||
});
|
||||
|
||||
App.MyText = Em.TextField.extend({
|
||||
formBlurredBinding: 'App.adminController.formBlurred',
|
||||
change: (evt) => {
|
||||
change: function() {
|
||||
this.set('formBlurred', true);
|
||||
}
|
||||
});
|
||||
@@ -145,26 +150,26 @@ var textArea = Em.TextArea.create({
|
||||
});
|
||||
|
||||
App.ClickableView = Em.View.extend({
|
||||
click: (evt) => {
|
||||
alert("ClickableView was clicked!");
|
||||
click: () => {
|
||||
alert('ClickableView was clicked!');
|
||||
}
|
||||
});
|
||||
|
||||
var container = Em.ContainerView.create();
|
||||
var container = Em.ContainerView.create<Em.ContainerView>();
|
||||
container.append();
|
||||
var coolView = App.CoolView.create(),
|
||||
childViews = container.get('childViews');
|
||||
childViews.pushObject(coolView);
|
||||
|
||||
Person = Em.Object.extend({
|
||||
sayHello: () => {
|
||||
console.log("Hello from " + this.get('name'));
|
||||
var Person2 = Em.Object.extend<typeof Em.Object>({
|
||||
sayHello: function() {
|
||||
console.log('Hello from ' + this.get('name'));
|
||||
}
|
||||
});
|
||||
var people = [
|
||||
Person.create({ name: "Juan" }),
|
||||
Person.create({ name: "Charles" }),
|
||||
Person.create({ name: "Majd" })
|
||||
Person2.create({ name: 'Juan' }),
|
||||
Person2.create({ name: 'Charles' }),
|
||||
Person2.create({ name: 'Majd' })
|
||||
];
|
||||
people.invoke('sayHello');
|
||||
|
||||
@@ -172,19 +177,19 @@ var arr = [Em.Object.create(), Em.Object.create()];
|
||||
arr.setEach('name', 'unknown');
|
||||
arr.getEach('name');
|
||||
|
||||
Person = Em.Object.extend({
|
||||
var Person3 = Em.Object.extend<typeof Em.Object>({
|
||||
name: null,
|
||||
isHappy: false
|
||||
});
|
||||
var people2 = [
|
||||
Person.create({ name: 'Yehuda', isHappy: true }),
|
||||
Person.create({ name: 'Majd', isHappy: false })
|
||||
Person3.create({ name: 'Yehuda', isHappy: true }),
|
||||
Person3.create({ name: 'Majd', isHappy: false })
|
||||
];
|
||||
people2.every((person, index, self) => {
|
||||
if (person.get('isHappy')) { return true; }
|
||||
people2.every((person: Em.Object) => {
|
||||
return !!person.get('isHappy');
|
||||
});
|
||||
people2.some((person, index, self) => {
|
||||
if (person.get('isHappy')) { return true; }
|
||||
people2.some((person: Em.Object) => {
|
||||
return !!person.get('isHappy');
|
||||
});
|
||||
people2.everyProperty('isHappy', true);
|
||||
people2.someProperty('isHappy', true);
|
||||
|
||||
Vendored
+151
-771
File diff suppressed because it is too large
Load Diff
@@ -1,77 +1,79 @@
|
||||
/// <reference path="handlebars.d.ts" />
|
||||
import Handlebars = require('handlebars');
|
||||
|
||||
|
||||
var context = {
|
||||
author: { firstName: "Alan", lastName: "Johnson" },
|
||||
body: "I Love Handlebars",
|
||||
author: { firstName: 'Alan', lastName: 'Johnson' },
|
||||
body: 'I Love Handlebars',
|
||||
comments: [{
|
||||
author: { firstName: "Yehuda", lastName: "Katz" },
|
||||
body: "Me too!"
|
||||
author: { firstName: 'Yehuda', lastName: 'Katz' },
|
||||
body: 'Me too!'
|
||||
}]
|
||||
};
|
||||
Handlebars.registerHelper('fullName', (person) => {
|
||||
return person.firstName + " " + person.lastName;
|
||||
return person.firstName + ' ' + person.lastName;
|
||||
});
|
||||
|
||||
Handlebars.registerHelper('agree_button', () => {
|
||||
Handlebars.registerHelper('agree_button', function() {
|
||||
return new Handlebars.SafeString(
|
||||
"<button>I agree. I " + this.emotion + " " + this.name + "</button>"
|
||||
'<button>I agree. I ' + this.emotion + ' ' + this.name + '</button>'
|
||||
);
|
||||
});
|
||||
|
||||
var source = "<p>Hello, my name is {{name}}. I am from {{hometown}}. I have " +
|
||||
"{{kids.length}} kids:</p>" +
|
||||
"<ul>{{#kids}}<li>{{name}} is {{age}}</li>{{/kids}}</ul>";
|
||||
var source = '<p>Hello, my name is {{name}}. I am from {{hometown}}. I have ' +
|
||||
'{{kids.length}} kids:</p>' +
|
||||
'<ul>{{#kids}}<li>{{name}} is {{age}}</li>{{/kids}}</ul>';
|
||||
var template = Handlebars.compile(source);
|
||||
var data = { "name": "Alan", "hometown": "Somewhere, TX",
|
||||
"kids": [{"name": "Jimmy", "age": "12"}, {"name": "Sally", "age": "4"}]};
|
||||
var data = { 'name': 'Alan', 'hometown': 'Somewhere, TX',
|
||||
'kids': [{'name': 'Jimmy', 'age': '12'}, {'name': 'Sally', 'age': '4'}]};
|
||||
var result = template(data);
|
||||
|
||||
Handlebars.registerHelper('link_to', (context) => {
|
||||
return "<a href='" + context.url + "'>" + context.body + "</a>";
|
||||
return '<a href="' + context.url + '">' + context.body + '</a>';
|
||||
});
|
||||
|
||||
var context2 = { posts: [{url: "/hello-world", body: "Hello World!"}] };
|
||||
var source2 = "<ul>{{#posts}}<li>{{{link_to this}}}</li>{{/posts}}</ul>"
|
||||
var context2 = { posts: [{url: '/hello-world', body: 'Hello World!'}] };
|
||||
var source2 = '<ul>{{#posts}}<li>{{{link_to this}}}</li>{{/posts}}</ul>';
|
||||
|
||||
var template2 = Handlebars.compile(source2);
|
||||
template2(context2);
|
||||
|
||||
Handlebars.registerHelper('link_to', (title, context) => {
|
||||
return "<a href='/posts" + context.url + "'>" + title + "!</a>"
|
||||
return '<a href="/posts' + context.url + '">' + title + '!</a>';
|
||||
});
|
||||
|
||||
var context3 = { posts: [{url: "/hello-world", body: "Hello World!"}] };
|
||||
var source3 = '<ul>{{#posts}}<li>{{{link_to "Post" this}}}</li>{{/posts}}</ul>'
|
||||
var context3 = { posts: [{url: '/hello-world', body: 'Hello World!'}] };
|
||||
var source3 = '<ul>{{#posts}}<li>{{{link_to "Post" this}}}</li>{{/posts}}</ul>';
|
||||
var template3 = Handlebars.compile(source3);
|
||||
template3(context3);
|
||||
|
||||
var source4 = "<ul>{{#people}}<li>{{#link}}{{name}}{{/link}}</li>{{/people}}</ul>";
|
||||
Handlebars.registerHelper('link', (context, options) => {
|
||||
var source4 = '<ul>{{#people}}<li>{{#link}}{{name}}{{/link}}</li>{{/people}}</ul>';
|
||||
Handlebars.registerHelper('link', function(context) {
|
||||
return '<a href="/people/' + this.id + '">' + context.fn(this) + '</a>';
|
||||
});
|
||||
var template4 = Handlebars.compile(source4);
|
||||
var data2 = { "people": [
|
||||
{ "name": "Alan", "id": 1 },
|
||||
{ "name": "Yehuda", "id": 2 }
|
||||
var data2 = { 'people': [
|
||||
{ 'name': 'Alan', 'id': 1 },
|
||||
{ 'name': 'Yehuda', 'id': 2 }
|
||||
]};
|
||||
template4(data2);
|
||||
|
||||
var source5 = "<ul>{{#people}}<li>{{> link}}</li>{{/people}}</ul>";
|
||||
Handlebars.registerPartial('link', '<a href="/people/{{id}}">{{name}}</a>')
|
||||
var source5 = '<ul>{{#people}}<li>{{> link}}</li>{{/people}}</ul>';
|
||||
Handlebars.registerPartial('link', '<a href="/people/{{id}}">{{name}}</a>');
|
||||
var template5 = Handlebars.compile(source5);
|
||||
var data3 = { "people": [
|
||||
{ "name": "Alan", "id": 1 },
|
||||
{ "name": "Yehuda", "id": 2 }
|
||||
var data3 = { 'people': [
|
||||
{ 'name': 'Alan', 'id': 1 },
|
||||
{ 'name': 'Yehuda', 'id': 2 }
|
||||
]};
|
||||
template5(data3);
|
||||
|
||||
Handlebars.registerHelper('list', (items, fn) => {
|
||||
var out = "<ul>";
|
||||
var out = '<ul>';
|
||||
for(var i=0, l=items.length; i<l; i++) {
|
||||
out = out + "<li>" + fn(items[i]) + "</li>";
|
||||
out = out + '<li>' + fn(items[i]) + '</li>';
|
||||
}
|
||||
return out + "</ul>";
|
||||
return out + '</ul>';
|
||||
});
|
||||
Handlebars.registerHelper('fullName', (person) => {
|
||||
return person.firstName + " " + person.lastName;
|
||||
});
|
||||
return person.firstName + ' ' + person.lastName;
|
||||
});
|
||||
|
||||
Vendored
+32
-23
@@ -4,30 +4,39 @@
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
|
||||
declare module Handlebars {
|
||||
function registerHelper(name: string, fn: Function, inverse?: boolean): void;
|
||||
function registerPartial(name: string, str: any): void;
|
||||
function K(): void;
|
||||
function createFrame(object: any): any;
|
||||
function Exception(message: string): void;
|
||||
class SafeString {
|
||||
constructor(str: string);
|
||||
static toString(): string;
|
||||
}
|
||||
function parse(input: string): boolean;
|
||||
var logger: Logger;
|
||||
function log(level: number, obj: any): void;
|
||||
function compile(input: any, options?: any): (context: any, options?: any) => string;
|
||||
declare var Handlebars: HandlebarsStatic;
|
||||
|
||||
interface Logger {
|
||||
DEBUG: number;
|
||||
INFO: number;
|
||||
WARN: number;
|
||||
ERROR: number;
|
||||
level: number;
|
||||
interface HandlebarsStatic {
|
||||
registerHelper(name: string, fn: Function, inverse?: boolean): void;
|
||||
registerPartial(name: string, str: any): void;
|
||||
K(): void;
|
||||
createFrame(object: any): any;
|
||||
Exception(message: string): void;
|
||||
SafeString: typeof SafeString;
|
||||
parse(input: string): boolean;
|
||||
logger: Logger;
|
||||
log(level: number, obj: any): void;
|
||||
compile(input: any, options?: any): (context: any, options?: any) => string;
|
||||
Logger: typeof Logger;
|
||||
}
|
||||
|
||||
methodMap: { [level: number]: string };
|
||||
declare class SafeString {
|
||||
constructor(str: string);
|
||||
static toString(): string;
|
||||
}
|
||||
|
||||
log(level: number, obj: string): void;
|
||||
}
|
||||
interface Logger {
|
||||
DEBUG: number;
|
||||
INFO: number;
|
||||
WARN: number;
|
||||
ERROR: number;
|
||||
level: number;
|
||||
|
||||
methodMap: { [level: number]: string };
|
||||
|
||||
log(level: number, obj: string): void;
|
||||
}
|
||||
|
||||
declare module "handlebars" {
|
||||
export = Handlebars;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user