-
-
Notifications
You must be signed in to change notification settings - Fork 96
Transform attribute names to proper casing #199
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from 5 commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
859dff5
Decamelize html attributes
gpoitch 14b0ca6
Apply later so it leaves jsx mode untouched
gpoitch 3455e63
Support colon attrs
gpoitch 2c5657c
Support bool attrs
gpoitch 0ff6093
Add more svg & rss attrs
gpoitch 697cb20
Review pass 1
gpoitch b566b91
add changeset
JoviDeCroock c52a601
Merge remote-tracking branch 'upstream/master' into gp/decamel
gpoitch 7cd597a
Merge remote-tracking branch 'upstream/master' into gp/decamel
gpoitch 61cd8c2
Merge remote-tracking branch 'upstream/master' into gp/decamel
gpoitch File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -17,6 +17,12 @@ const UNNAMED = []; | |
|
||
const VOID_ELEMENTS = /^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/; | ||
|
||
const DASHED_ATTRS = /^(acceptC|httpE|(clip|color|fill|font|glyph|marker|stop|stroke|text|vert)[A-Z])/; | ||
const CAMEL_ATTRS = /^(isP|viewB)/; | ||
const COLON_ATTRS = /^(xlink|xml|xmlns)[A-Z]/; | ||
gpoitch marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
const CAPITAL_REGEXP = /([A-Z])/g; | ||
|
||
const UNSAFE_NAME = /[\s\n\\/='"\0<>]/; | ||
|
||
const noop = () => {}; | ||
|
@@ -281,6 +287,8 @@ function _renderToString(vnode, context, opts, inner, isSvgMode, selectValue) { | |
// <textarea value="a&b"> --> <textarea>a&b</textarea> | ||
propChildren = v; | ||
} else if ((v || v === 0 || v === '') && typeof v !== 'function') { | ||
name = getAttributeNameInHtmlCase(name); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Likely faster if this is done on L310: - s += ` ${name}="${encodeEntities(v)}"`;
+ s += ` ${getAttributeNameInHtmlCase(name)}="${encodeEntities(v)}"`; There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Need the transformed name for the |
||
|
||
if (v === true || v === '') { | ||
v = name; | ||
// in non-xml mode, allow boolean attributes | ||
|
@@ -298,6 +306,7 @@ function _renderToString(vnode, context, opts, inner, isSvgMode, selectValue) { | |
s += ` selected`; | ||
} | ||
} | ||
|
||
s += ` ${name}="${encodeEntities(v)}"`; | ||
} | ||
} | ||
|
@@ -426,6 +435,19 @@ function getFallbackComponentName(component) { | |
} | ||
return name; | ||
} | ||
|
||
function getAttributeNameInHtmlCase(name) { | ||
if (CAMEL_ATTRS.test(name)) return name; | ||
|
||
if (DASHED_ATTRS.test(name)) | ||
return name.replace(CAPITAL_REGEXP, (w) => '-' + w.toLowerCase()); | ||
|
||
if (COLON_ATTRS.test(name)) | ||
return name.replace(CAPITAL_REGEXP, (w) => ':' + w.toLowerCase()); | ||
|
||
return name.toLowerCase(); | ||
} | ||
gpoitch marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
renderToString.shallowRender = shallowRender; | ||
|
||
export default renderToString; | ||
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.