ng-typeview
Advanced tools
Comparing version 0.0.25 to 0.0.26
@@ -33,2 +33,3 @@ import { CodegenHelper } from "./view-ngexpression-parser"; | ||
* @param attrValue The value for the attribute | ||
* @param allAttribs The value of all the attributes on that node | ||
* @param codegenHelpers Object containing helper functions | ||
@@ -39,3 +40,5 @@ * to assist with typescript code generation | ||
*/ | ||
handleAttribute(attrName: string, attrValue: string, codegenHelpers: CodegenHelper): DirectiveResponse | undefined; | ||
handleAttribute(attrName: string, attrValue: string, allAttribs: { | ||
[type: string]: string; | ||
}, codegenHelpers: CodegenHelper): DirectiveResponse | undefined; | ||
} | ||
@@ -42,0 +45,0 @@ /** |
@@ -9,3 +9,3 @@ "use strict"; | ||
forAttributes: ["ng-required", "ng-disabled", "ng-trim", "ng-checked"], | ||
handleAttribute: function (attrName, val, codegenHelpers) { | ||
handleAttribute: function (attrName, val, allAttribs, codegenHelpers) { | ||
return ({ source: codegenHelpers.declareVariable("boolean", val) }); | ||
@@ -18,3 +18,3 @@ } | ||
forAttributes: ["ng-show", "ng-if"], | ||
handleAttribute: function (attrName, val, codegenHelpers) { | ||
handleAttribute: function (attrName, val, allAttribs, codegenHelpers) { | ||
return ({ | ||
@@ -30,3 +30,3 @@ source: codegenHelpers.declareVariable("boolean", val) + | ||
"ng-submit", "ng-class", "ng-style", "ng-init", "ng-grid"], | ||
handleAttribute: function (attrName, val, codegenHelpers) { | ||
handleAttribute: function (attrName, val, allAttribs, codegenHelpers) { | ||
return ({ source: codegenHelpers.declareVariable("any", val) }); | ||
@@ -38,7 +38,7 @@ } | ||
forAttributes: ["ng-form"], | ||
handleAttribute: function (attrName, val, codegenHelpers) { return ({ source: "" }); } | ||
handleAttribute: function (attrName, val, allAttribs, codegenHelpers) { return ({ source: "" }); } | ||
}; | ||
var stringAttrHandler = { | ||
forAttributes: ["ng-include", "ng-src"], | ||
handleAttribute: function (attrName, val, codegenHelpers) { | ||
handleAttribute: function (attrName, val, allAttribs, codegenHelpers) { | ||
return ({ source: codegenHelpers.declareVariable("string", val) }); | ||
@@ -49,3 +49,3 @@ } | ||
forAttributes: ["ng-maxlength"], | ||
handleAttribute: function (attrName, val, codegenHelpers) { | ||
handleAttribute: function (attrName, val, allAttribs, codegenHelpers) { | ||
return ({ source: codegenHelpers.declareVariable("number", val) }); | ||
@@ -56,3 +56,3 @@ } | ||
forAttributes: ["ng-bind", "ng-bind-html"], | ||
handleAttribute: function (attrName, attrValue, codegenHelpers) { | ||
handleAttribute: function (attrName, attrValue, allAttribs, codegenHelpers) { | ||
return { source: view_ngexpression_parser_1.filterExpressionToTypescript(attrValue, codegenHelpers) }; | ||
@@ -74,22 +74,29 @@ } | ||
} | ||
function handleNgRepeat(attrValue, codegenHelpers) { | ||
var ngRepeatData = parseNgRepeat().parse(attrValue); | ||
if (!ngRepeatData.status) { | ||
console.warn("failed parsing a ng-repeat clause!"); | ||
console.warn(attrValue); | ||
console.warn(ngRepeatData); | ||
return null; | ||
} | ||
var enumerable = view_ngexpression_parser_1.ngFilterExpressionToTypeScriptEmbedded(ngRepeatData.value.expression, codegenHelpers); | ||
var source = "angular.forEach(" + enumerable + ", " + codegenHelpers.registerVariable(ngRepeatData.value.variable) + " => {" + | ||
("let " + codegenHelpers.registerVariable('$index') + " = 0;") + | ||
("let " + codegenHelpers.registerVariable('$first') + " = true;") + | ||
("let " + codegenHelpers.registerVariable('$middle') + " = true;") + | ||
("let " + codegenHelpers.registerVariable('$last') + " = true;") + | ||
("let " + codegenHelpers.registerVariable('$even') + " = true;") + | ||
("let " + codegenHelpers.registerVariable('$odd') + " = false;") + | ||
(ngRepeatData.value.trackingExpression ? | ||
"" + codegenHelpers.declareVariable('any', ngRepeatData.value.trackingExpression) : ""); | ||
return source; | ||
} | ||
var ngRepeatAttrDirectiveHandler = { | ||
forAttributes: ["ng-repeat"], | ||
handleAttribute: function (attrName, attrValue, codegenHelpers) { | ||
var ngRepeatData = parseNgRepeat().parse(attrValue); | ||
if (!ngRepeatData.status) { | ||
console.warn("failed parsing a ng-repeat clause!"); | ||
console.warn(attrValue); | ||
console.warn(ngRepeatData); | ||
handleAttribute: function (attrName, attrValue, allAttribs, codegenHelpers) { | ||
var source = handleNgRepeat(attrValue, codegenHelpers); | ||
if (source === null) { | ||
return { source: "" }; | ||
} | ||
var enumerable = view_ngexpression_parser_1.ngFilterExpressionToTypeScriptEmbedded(ngRepeatData.value.expression, codegenHelpers); | ||
var source = "angular.forEach(" + enumerable + ", " + codegenHelpers.registerVariable(ngRepeatData.value.variable) + " => {" + | ||
("let " + codegenHelpers.registerVariable('$index') + " = 0;") + | ||
("let " + codegenHelpers.registerVariable('$first') + " = true;") + | ||
("let " + codegenHelpers.registerVariable('$middle') + " = true;") + | ||
("let " + codegenHelpers.registerVariable('$last') + " = true;") + | ||
("let " + codegenHelpers.registerVariable('$even') + " = true;") + | ||
("let " + codegenHelpers.registerVariable('$odd') + " = false;") + | ||
(ngRepeatData.value.trackingExpression ? | ||
"" + codegenHelpers.declareVariable('any', ngRepeatData.value.trackingExpression) : ""); | ||
return { | ||
@@ -101,2 +108,31 @@ source: source, | ||
}; | ||
var ngRepeatStartAttrDirectiveHandler = { | ||
forAttributes: ["ng-repeat-start"], | ||
handleAttribute: function (attrName, attrValue, allAttribs, codegenHelpers) { | ||
var source = handleNgRepeat(attrValue, codegenHelpers); | ||
if (source === null) { | ||
return { source: "" }; | ||
} | ||
if (allAttribs["ng-repeat-end"] !== undefined) { | ||
return { | ||
source: source, | ||
closeSource: function () { return "});"; } | ||
}; | ||
} | ||
return { | ||
source: source | ||
}; | ||
} | ||
}; | ||
var ngRepeatEndAttrDirectiveHandler = { | ||
forAttributes: ["ng-repeat-end"], | ||
handleAttribute: function (attrName, attrValue, allAttribs, codegenHelpers) { | ||
if (allAttribs["ng-repeat-start"] !== undefined) { | ||
return { source: "" }; | ||
} | ||
return { | ||
source: "});" | ||
}; | ||
} | ||
}; | ||
function parseNgOptions() { | ||
@@ -136,3 +172,3 @@ return view_ngexpression_parser_1.parseNgFilterExpression() | ||
forAttributes: ["ng-options"], | ||
handleAttribute: function (attrName, attrValue, codegenHelpers) { | ||
handleAttribute: function (attrName, attrValue, allAttribs, codegenHelpers) { | ||
var ngOptionsData = parseNgOptions().parse(attrValue); | ||
@@ -160,3 +196,3 @@ if (!ngOptionsData.status) { | ||
forAttributes: ["ng-blur", "ng-mouseenter", "ng-mouseleave", "ng-click"], | ||
handleAttribute: function (attrName, attrValue, codegenHelpers) { | ||
handleAttribute: function (attrName, attrValue, allAttribs, codegenHelpers) { | ||
return { source: "const " + codegenHelpers.getNewVariableName() + ": any = (" + codegenHelpers.registerVariable('$event') + ": any) => " + | ||
@@ -168,3 +204,3 @@ codegenHelpers.addScopeAccessors(attrValue) + ";" }; | ||
forAttributes: ["ng-model-options"], | ||
handleAttribute: function (attrName, attrValue, codegenHelpers) { | ||
handleAttribute: function (attrName, attrValue, allAttribs, codegenHelpers) { | ||
var typeDef = "{updateOn?: string, debounce?: number," + | ||
@@ -177,3 +213,3 @@ "allowInvalid?: boolean, getterSetter?: boolean, timezone?: string}"; | ||
forAttributes: ["ng-pattern"], | ||
handleAttribute: function (attrName, attrValue, codegenHelpers) { | ||
handleAttribute: function (attrName, attrValue, allAttribs, codegenHelpers) { | ||
return { source: codegenHelpers.declareVariable("RegExp|string", attrValue) }; | ||
@@ -304,3 +340,5 @@ } | ||
ngBindAttrDirectiveHandler, | ||
ngRepeatAttrDirectiveHandler, ngOptions, ngWithEvent, | ||
ngRepeatAttrDirectiveHandler, ngRepeatStartAttrDirectiveHandler, | ||
ngRepeatEndAttrDirectiveHandler, | ||
ngOptions, ngWithEvent, | ||
ngModelOptions, ngPattern, passThroughAttrHandler]; | ||
@@ -307,0 +345,0 @@ /** |
@@ -93,3 +93,3 @@ "use strict"; | ||
if (!handlers.isEmpty()) { | ||
var attrDirectiveResps = listKeepDefined(handlers.map(function (handler) { return handler.handleAttribute(attrName, attrValue, codegenHelpersAttr); })); | ||
var attrDirectiveResps = listKeepDefined(handlers.map(function (handler) { return handler.handleAttribute(attrName, attrValue, attribs, codegenHelpersAttr); })); | ||
expressions += attrDirectiveResps.map(function (x) { return x.source; }).join(""); | ||
@@ -96,0 +96,0 @@ activeScopes = activeScopes.unshiftAll(handleDirectiveResponses(xpath, codegenHelpersAttr, attrDirectiveResps)); |
{ | ||
"name": "ng-typeview", | ||
"version": "0.0.25", | ||
"version": "0.0.26", | ||
"description": "library to enable type-checking of angular views when using typescript", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
220330
2939