From 5bb52f545df914ab51272345e40f8dcd5395fecd Mon Sep 17 00:00:00 2001 From: Vladimir Enchev Date: Thu, 23 Jul 2015 16:46:12 +0300 Subject: [PATCH 1/2] Support lower-case-dashed component declaration in the XML added --- apps/tests/xml-declaration/xml-declaration-tests.ts | 11 +++++++++++ ui/builder/component-builder.ts | 3 +++ 2 files changed, 14 insertions(+) diff --git a/apps/tests/xml-declaration/xml-declaration-tests.ts b/apps/tests/xml-declaration/xml-declaration-tests.ts index 8d9f20354..6c8f92697 100644 --- a/apps/tests/xml-declaration/xml-declaration-tests.ts +++ b/apps/tests/xml-declaration/xml-declaration-tests.ts @@ -19,6 +19,7 @@ import helper = require("../ui/helper"); import viewModule = require("ui/core/view"); import platform = require("platform"); import gesturesModule = require("ui/gestures"); +import segmentedBar = require("ui/segmented-bar"); export function test_load_IsDefined() { TKUnit.assert(types.isFunction(builder.load), "ui/builder should have load method!"); @@ -322,6 +323,16 @@ export function test_parse_CanBindBackgroundImage() { TKUnit.assert(sw.backgroundImage === expected, "Expected result: " + expected + "; Actual result: " + sw.backgroundImage); }; +export function test_parse_ShouldParseLowerCaseDashedComponentDeclaration() { + var p = builder.parse(''); + var ctrl = p.content; + + TKUnit.assert(ctrl instanceof stackLayoutModule.StackLayout, "Expected result: StackLayout!; Actual result: " + ctrl); + TKUnit.assert(ctrl.getChildAt(0) instanceof labelModule.Label, "Expected result: Label!; Actual result: " + ctrl.getChildAt(0)); + TKUnit.assert(ctrl.getChildAt(1) instanceof segmentedBar.SegmentedBar, "Expected result: Label!; Actual result: " + ctrl.getChildAt(0)); +}; + + export function test_parse_ShouldParseCustomComponentWithoutXml() { var p = builder.parse(''); var ctrl = p.content; diff --git a/ui/builder/component-builder.ts b/ui/builder/component-builder.ts index 7337216a2..a8d4fae81 100644 --- a/ui/builder/component-builder.ts +++ b/ui/builder/component-builder.ts @@ -35,6 +35,9 @@ export function getComponentModule(elementName: string, namespace: string, attri var instanceModule: Object; var componentModule: definition.ComponentModule; + // Support lower-case-dashed component declaration in the XML (https://github.com/NativeScript/NativeScript/issues/309). + elementName = elementName.split("-").map(s => { return s[0].toUpperCase() + s.substring(1) }).join(""); + // Get module id. var moduleId = MODULES[elementName] || UI_PATH + (elementName.toLowerCase().indexOf("layout") !== -1 ? "layouts/" : "") + From aced089cd1e2ff244bb4a9c83ec3fcde66179c1d Mon Sep 17 00:00:00 2001 From: Vladimir Enchev Date: Fri, 24 Jul 2015 09:49:39 +0300 Subject: [PATCH 2/2] lint error fixed --- apps/tests/xml-declaration/xml-declaration-tests.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/tests/xml-declaration/xml-declaration-tests.ts b/apps/tests/xml-declaration/xml-declaration-tests.ts index 6c8f92697..8a030799c 100644 --- a/apps/tests/xml-declaration/xml-declaration-tests.ts +++ b/apps/tests/xml-declaration/xml-declaration-tests.ts @@ -332,7 +332,6 @@ export function test_parse_ShouldParseLowerCaseDashedComponentDeclaration() { TKUnit.assert(ctrl.getChildAt(1) instanceof segmentedBar.SegmentedBar, "Expected result: Label!; Actual result: " + ctrl.getChildAt(0)); }; - export function test_parse_ShouldParseCustomComponentWithoutXml() { var p = builder.parse(''); var ctrl = p.content;