fix: dots can now be used in module names (#7655)

Only known extensions are stripped from the end of module names
This commit is contained in:
Nicu
2019-08-21 00:01:53 +03:00
committed by Svetoslav
parent b0d1c9106a
commit b6ff4d376a
3 changed files with 18 additions and 6 deletions

1
.gitignore vendored
View File

@ -21,6 +21,7 @@ package-lock.json
.c9/
*.launch
.settings/
.atom
# IDE - VSCode
.vscode/*

View File

@ -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";
@ -36,3 +38,13 @@ 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`);
}
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");
}

View File

@ -10,10 +10,9 @@ 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;