diff --git a/.gitignore b/.gitignore index a0598a0171..919c953623 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ package-lock.json .c9/ *.launch .settings/ +.atom # IDE - VSCode .vscode/* diff --git a/tests/app/ui/builder/builder-tests.ts b/tests/app/ui/builder/builder-tests.ts index 32cb83b955..d6f303549d 100644 --- a/tests/app/ui/builder/builder-tests.ts +++ b/tests/app/ui/builder/builder-tests.ts @@ -1,4 +1,6 @@ import { createViewFromEntry } from "tns-core-modules/ui/builder"; +import { sanitizeModuleName } from "tns-core-modules/ui/builder/module-name-sanitizer"; + import { assertEqual, assertNull, assertThrows, assertNotNull } from "../../tk-unit"; const COMPONENT_MODULE = "ui/builder/component-module"; @@ -35,4 +37,14 @@ export function test_create_view_from_entry_with_path_with_slash() { export function test_create_view_from_entry_with_path_with_tilde() { const view = getViewComponent("~/" + COMPONENT_MODULE); assertNotNull(view, `Module starting with "~/" could not be loaded`); -} \ No newline at end of file +} + +export function test_sanitize_module_name_with_removable_extension() { + const moduleName = sanitizeModuleName("./xml-declaration/mainPage.xml"); + assertEqual(moduleName, "./xml-declaration/mainPage"); +} + +export function test_sanitize_module_name_with_non_removable_extension() { + const moduleName = sanitizeModuleName("app/views/main.page"); + assertEqual(moduleName, "app/views/main.page"); +} diff --git a/tns-core-modules/ui/builder/module-name-sanitizer.ts b/tns-core-modules/ui/builder/module-name-sanitizer.ts index ee90ab8d84..9ed5ef0ad2 100644 --- a/tns-core-modules/ui/builder/module-name-sanitizer.ts +++ b/tns-core-modules/ui/builder/module-name-sanitizer.ts @@ -10,11 +10,10 @@ export function sanitizeModuleName(moduleName: string, removeExtension: boolean } if (removeExtension) { - const lastDot = moduleName.lastIndexOf("."); - if (lastDot > 0) { - moduleName = moduleName.substr(0, lastDot); - } + const extToRemove = ["js", "ts", "xml", "html", "css", "scss"]; + const extensionRegEx = new RegExp(`(.*)\\.(?:${extToRemove.join("|")})`, "i"); + moduleName = moduleName.replace(extensionRegEx, "$1"); } return moduleName; -} \ No newline at end of file +}