Fix case normalization for w-on migration (#1475)

This commit is contained in:
Dylan Piercey 2020-01-14 16:30:33 -08:00 committed by GitHub
parent 2c6bcf7d6f
commit 32693baca4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 50 additions and 8 deletions

View File

@ -19,9 +19,21 @@ module.exports = function migrate(el, context) {
context.setMigrationFlag("legacyWidgetAttrsWithoutBind");
}
name = name.substring("w-on".length);
if (name.startsWith("-")) name = name.substring("-".length);
attr.name = `on${name.charAt(0).toUpperCase() + name.slice(1)}`;
name = name.slice("w-on".length);
const isNativeTag = el.tagDef && el.tagDef.html;
const isCamelCase = name[0] !== "-";
if (isNativeTag) {
name = name.toLowerCase();
} else if (isCamelCase) {
name = name[0].toLowerCase() + name.slice(1);
}
if (isCamelCase) {
name = "-" + name;
}
attr.name = `on${name}`;
attr.argument = printJS(attr.value, context);
attr.value = null;
});

View File

@ -0,0 +1 @@
<div/>

View File

@ -1,7 +1,21 @@
<!-- test/migrate/fixtures/w-on/template.marko -->
<marko-migration-flags legacyWidgetAttrsWithoutBind/>
<div onClick("handleClick")>
<input onChange("handleChange")/>
<div
on-click("handleClick")
on-change("handleChange")
on-dash-case("...")
on-dash-case("...")
on-camelcase("...")
on-pascalcase("...")>
Hello World
</div>
<some-tag
on-click("handleClick")
on-change("handleChange")
on-dash-case("...")
on-dash-case("...")
on-camelCase("...")
on-PascalCase("...")>
Hello World
</some-tag>

View File

@ -1,4 +1,19 @@
<div w-on-click="handleClick">
<input w-onChange="handleChange"/>
<div
w-on-click="handleClick"
w-onChange="handleChange"
w-on-dash-case="..."
w-onDash-case="..."
w-onCamelCase="..."
w-on-PascalCase="...">
Hello World
</div>
</div>
<some-tag
w-on-click="handleClick"
w-onChange="handleChange"
w-on-dash-case="..."
w-onDash-case="..."
w-onCamelCase="..."
w-on-PascalCase="...">
Hello World
</some-tag>