From e7125f32eff077954abbf157942a76831923fec2 Mon Sep 17 00:00:00 2001 From: halfnelson Date: Thu, 1 Oct 2020 20:28:12 +1000 Subject: [PATCH] only apply skipped steps on unknown namespaces --- package.json | 2 +- .../render_dom/wrappers/Element/Attribute.ts | 15 +++++++-------- .../attribute-casing-unknown-namespace/_config.js | 4 ++-- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index b93da0d5f4a4..0fd3f16a7725 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "posttest": "agadoo internal/index.mjs", "prepublishOnly": "npm run lint && PUBLISH=true npm test", "tsd": "tsc -p src/compiler --emitDeclarationOnly && tsc -p src/runtime --emitDeclarationOnly", - "lint": "eslint '{src,test}/**/*.{ts,js}'" + "lint": "eslint \"{src,test}/**/*.{ts,js}\"" }, "repository": { "type": "git", diff --git a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts index 57582f8dc54f..73a89c90e89c 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/Attribute.ts @@ -8,7 +8,7 @@ import Expression from '../../../nodes/shared/Expression'; import Text from '../../../nodes/Text'; import handle_select_value_binding from './handle_select_value_binding'; import { Identifier, Node } from 'estree'; -import { namespaces, valid_namespaces } from '../../../../utils/namespaces'; +import { valid_namespaces } from '../../../../utils/namespaces'; export class BaseAttributeWrapper { node: Attribute; @@ -68,13 +68,13 @@ export default class AttributeWrapper extends BaseAttributeWrapper { } const namespace = this.parent.node.namespace; - // some processing only applies to html namespace (and not MathML, SVG, or Svelte Native etc) - if (namespace && namespace != 'html' && namespace != namespaces.html) { - // attributes outside of the html namespace may be case sensitive - // namespaces for which we don't have case corrections, are left in their original case (required for svelte-native) - this.name = (valid_namespaces.indexOf(namespace) >= 0) ? fix_attribute_casing(this.node.name) : this.node.name; + + // some processing only applies to known namespaces + if (namespace && !valid_namespaces.includes(namespace)) { + // attributes outside of the valid namespace may be case sensitive (eg svelte native). We leave them in their current case + this.name = this.node.name; + this.metadata = this.get_metadata(); this.is_indirectly_bound_value = false; - this.metadata = null; this.property_name = null; this.is_select_value_attribute = false; this.is_input_value = false; @@ -92,7 +92,6 @@ export default class AttributeWrapper extends BaseAttributeWrapper { this.is_src = this.name === 'src'; // TODO retire this exception in favour of https://github.com/sveltejs/svelte/issues/3750 this.should_cache = should_cache(this); - } render(block: Block) { diff --git a/test/runtime/samples/attribute-casing-unknown-namespace/_config.js b/test/runtime/samples/attribute-casing-unknown-namespace/_config.js index bb6989e655f9..478d779e062a 100644 --- a/test/runtime/samples/attribute-casing-unknown-namespace/_config.js +++ b/test/runtime/samples/attribute-casing-unknown-namespace/_config.js @@ -12,7 +12,7 @@ export default { test({ assert, target }) { const attr = sel => target.querySelector(sel).attributes[0].name; - assert.equal(attr('page'), "horizontalAlignment"); - assert.equal(attr('button'), "textWrap"); + assert.equal(attr('page'), 'horizontalAlignment'); + assert.equal(attr('button'), 'textWrap'); } };