@samitouri / QOS-React / commits / a2b471e098

Allow all characters (except astral) specified in XML specs. fixes #2329

Dmitriy Rozhkov committed Oct 19, 2015 at 23:36 UTC a2b471e09850f1546fd2526149fc04992cb85b80
3 files changed +7 -3
src/renderers/dom/shared/DOMProperty.js
+5
@@ -151,6 +151,8 @@ var DOMPropertyInjection = {
151 };
152 var defaultValueCache = {};
153
154 +var ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD';
155 +
156 /**
157 * DOMProperty exports lookup objects that can be used like functions:
158 *
@@ -168,6 +170,9 @@ var DOMProperty = {
170
171 ID_ATTRIBUTE_NAME: 'data-reactid',
172
173 + ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,
174 + ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\-.0-9\\uB7\\u0300-\\u036F\\u203F-\\u2040',
175 +
176 /**
177 * Map from property "standard name" to an object with info about how to set
178 * the property in the DOM. Each object contains:
src/renderers/dom/shared/DOMPropertyOperations.js
+1 -2
@@ -18,8 +18,7 @@ var ReactPerf = require('ReactPerf');
18 var quoteAttributeValueForBrowser = require('quoteAttributeValueForBrowser');
19 var warning = require('warning');
20
21 -// Simplified subset
22 -var VALID_ATTRIBUTE_NAME_REGEX = /^[a-zA-Z_][\w\.\-]*$/;
21 +var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');
22 var illegalAttributeNameCache = {};
23 var validatedAttributeNameCache = {};
24
src/renderers/dom/shared/HTMLDOMPropertyConfig.js
+1 -1
@@ -39,7 +39,7 @@ if (ExecutionEnvironment.canUseDOM) {
39
40 var HTMLDOMPropertyConfig = {
41 isCustomAttribute: RegExp.prototype.test.bind(
42 - /^(data|aria)-[a-z_][a-z\d_.\-]*$/
42 + new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')
43 ),
44 Properties: {
45 /**