You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by mh...@apache.org on 2011/05/11 09:01:26 UTC
svn commit: r1101764 - in /shindig/trunk/features: ./
src/main/javascript/features/ src/main/javascript/features/core.util.dom/
src/main/javascript/features/core.util.string/
src/main/javascript/features/core.util/ src/test/javascript/features/
Author: mhermanto
Date: Wed May 11 07:01:25 2011
New Revision: 1101764
URL: http://svn.apache.org/viewvc?rev=1101764&view=rev
Log:
Further refactoring for core dom and string
... and fix string concat.
http://codereview.appspot.com/4540042/
Modified:
shindig/trunk/features/pom.xml
shindig/trunk/features/src/main/javascript/features/core.util.dom/dom.js
shindig/trunk/features/src/main/javascript/features/core.util.string/feature.xml
shindig/trunk/features/src/main/javascript/features/core.util.string/string.js
shindig/trunk/features/src/main/javascript/features/core.util.string/taming.js
shindig/trunk/features/src/main/javascript/features/core.util/feature.xml
shindig/trunk/features/src/main/javascript/features/core.util/taming.js
shindig/trunk/features/src/main/javascript/features/core.util/util.js
shindig/trunk/features/src/main/javascript/features/features.txt
shindig/trunk/features/src/test/javascript/features/alltests.js
Modified: shindig/trunk/features/pom.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/features/pom.xml?rev=1101764&r1=1101763&r2=1101764&view=diff
==============================================================================
--- shindig/trunk/features/pom.xml (original)
+++ shindig/trunk/features/pom.xml Wed May 11 07:01:25 2011
@@ -115,6 +115,8 @@
<source>core.json/json-jsimpl.js</source>
<source>core.json/json-flatten.js</source>
<source>shindig.auth/auth.js</source>
+ <source>core.util.dom/dom.js</source>
+ <source>core.util.string/string.js</source>
<source>core.util.urlparams/urlparams.js</source>
<source>core.util/util.js</source>
<source>core.prefs/prefs.js</source>
Modified: shindig/trunk/features/src/main/javascript/features/core.util.dom/dom.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.util.dom/dom.js?rev=1101764&r1=1101763&r2=1101764&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.util.dom/dom.js (original)
+++ shindig/trunk/features/src/main/javascript/features/core.util.dom/dom.js Wed May 11 07:01:25 2011
@@ -66,4 +66,4 @@ gadgets.util = gadgets.util || {};
return document.documentElement || document;
};
-})();
\ No newline at end of file
+})();
Modified: shindig/trunk/features/src/main/javascript/features/core.util.string/feature.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.util.string/feature.xml?rev=1101764&r1=1101763&r2=1101764&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.util.string/feature.xml (original)
+++ shindig/trunk/features/src/main/javascript/features/core.util.string/feature.xml Wed May 11 07:01:25 2011
@@ -23,6 +23,8 @@
<script src="string.js"/>
<script src="taming.js" caja="1"/>
<api>
+ <exports type="js">gadgets.util.escape</exports>
+ <exports type="js">gadgets.util.escapeString</exports>
<exports type="js">gadgets.util.unescapeString</exports>
</api>
</all>
Modified: shindig/trunk/features/src/main/javascript/features/core.util.string/string.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.util.string/string.js?rev=1101764&r1=1101763&r2=1101764&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.util.string/string.js (original)
+++ shindig/trunk/features/src/main/javascript/features/core.util.string/string.js Wed May 11 07:01:25 2011
@@ -31,6 +31,47 @@ gadgets.util = gadgets.util || {};
(function() {
/**
+ * @enum {boolean}
+ * @const
+ * @private
+ * Maps code points to the value to replace them with.
+ * If the value is "false", the character is removed entirely, otherwise
+ * it will be replaced with an html entity.
+ */
+ var escapeCodePoints = {
+ // nul; most browsers truncate because they use c strings under the covers.
+ 0 : false,
+ // new line
+ 10 : true,
+ // carriage return
+ 13 : true,
+ // double quote
+ 34 : true,
+ // single quote
+ 39 : true,
+ // less than
+ 60 : true,
+ // greater than
+ 62 : true,
+ // backslash
+ 92 : true,
+ // line separator
+ 8232 : true,
+ // paragraph separator
+ 8233 : true,
+ // fullwidth quotation mark
+ 65282 : true,
+ // fullwidth apostrophe
+ 65287 : true,
+ // fullwidth less-than sign
+ 65308 : true,
+ // fullwidth greater-than sign
+ 65310 : true,
+ // fullwidth reverse solidus
+ 65340 : true
+ };
+
+ /**
* Regular expression callback that returns strings from unicode code points.
*
* @param {Array} match Ignored.
@@ -59,7 +100,70 @@ gadgets.util = gadgets.util || {};
// ((value === 0) ? '' : '\ufffd');
return String.fromCharCode(value);
}
-
+
+ /**
+ * Escapes the input using html entities to make it safer.
+ *
+ * If the input is a string, uses gadgets.util.escapeString.
+ * If it is an array, calls escape on each of the array elements
+ * if it is an object, will only escape all the mapped keys and values if
+ * the opt_escapeObjects flag is set. This operation involves creating an
+ * entirely new object so only set the flag when the input is a simple
+ * string to string map.
+ * Otherwise, does not attempt to modify the input.
+ *
+ * @param {Object} input The object to escape.
+ * @param {boolean=} opt_escapeObjects Whether to escape objects.
+ * @return {Object} The escaped object.
+ * @private Only to be used by the container, not gadgets.
+ */
+ gadgets.util.escape = function(input, opt_escapeObjects) {
+ if (!input) {
+ return input;
+ } else if (typeof input === 'string') {
+ return gadgets.util.escapeString(input);
+ } else if (typeof input === 'array') {
+ for (var i = 0, j = input.length; i < j; ++i) {
+ input[i] = gadgets.util.escape(input[i]);
+ }
+ } else if (typeof input === 'object' && opt_escapeObjects) {
+ var newObject = {};
+ for (var field in input) {
+ if (input.hasOwnProperty(field)) {
+ newObject[gadgets.util.escapeString(field)] =
+ gadgets.util.escape(input[field], true);
+ }
+ }
+ return newObject;
+ }
+ return input;
+ };
+
+ /**
+ * Escapes the input using html entities to make it safer.
+ *
+ * Currently not in the spec -- future proposals may change
+ * how this is handled.
+ *
+ * @param {string} str The string to escape.
+ * @return {string} The escaped string.
+ */
+ gadgets.util.escapeString = function(str) {
+ if (!str) return str;
+ var out = [], ch, shouldEscape;
+ for (var i = 0, j = str.length; i < j; ++i) {
+ ch = str.charCodeAt(i);
+ shouldEscape = escapeCodePoints[ch];
+ if (shouldEscape === true) {
+ out.push('&#', ch, ';');
+ } else if (shouldEscape !== false) {
+ // undefined or null are OK.
+ out.push(str.charAt(i));
+ }
+ }
+ return out.join('');
+ };
+
/**
* Reverses escapeString
*
Modified: shindig/trunk/features/src/main/javascript/features/core.util.string/taming.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.util.string/taming.js?rev=1101764&r1=1101763&r2=1101764&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.util.string/taming.js (original)
+++ shindig/trunk/features/src/main/javascript/features/core.util.string/taming.js Wed May 11 07:01:25 2011
@@ -23,6 +23,8 @@
*/
tamings___.push(function(imports) {
caja___.whitelistFuncs([
+ [gadgets.util, 'escape'],
+ [gadgets.util, 'escapeString'],
[gadgets.util, 'unescapeString']
]);
});
Modified: shindig/trunk/features/src/main/javascript/features/core.util/feature.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.util/feature.xml?rev=1101764&r1=1101763&r2=1101764&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.util/feature.xml (original)
+++ shindig/trunk/features/src/main/javascript/features/core.util/feature.xml Wed May 11 07:01:25 2011
@@ -37,9 +37,6 @@
<exports type="js">gadgets.util.runOnLoadHandlers</exports>
<exports type="js">gadgets.util.attachBrowserEvent</exports>
<exports type="js">gadgets.util.removeBrowserEvent</exports>
- <!-- TODO: move to core.util.string -->
- <exports type="js">gadgets.util.escape</exports>
- <exports type="js">gadgets.util.escapeString</exports>
<!-- TODO: move to core.util.dom -->
<exports type="js">gadgets.util.createIframeElement</exports>
</api>
Modified: shindig/trunk/features/src/main/javascript/features/core.util/taming.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.util/taming.js?rev=1101764&r1=1101763&r2=1101764&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.util/taming.js (original)
+++ shindig/trunk/features/src/main/javascript/features/core.util/taming.js Wed May 11 07:01:25 2011
@@ -23,8 +23,6 @@
*/
tamings___.push(function(imports) {
caja___.whitelistFuncs([
- [gadgets.util, 'escape'],
- [gadgets.util, 'escapeString'],
[gadgets.util, 'getFeatureParameters'],
[gadgets.util, 'hasFeature'],
[gadgets.util, 'registerOnLoadHandler']
Modified: shindig/trunk/features/src/main/javascript/features/core.util/util.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.util/util.js?rev=1101764&r1=1101763&r2=1101764&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.util/util.js (original)
+++ shindig/trunk/features/src/main/javascript/features/core.util/util.js Wed May 11 07:01:25 2011
@@ -44,77 +44,24 @@ gadgets.util = gadgets.util || {};
}
function stringifyElement(tagName, opt_attribs) {
- var arr = [];
- arr.push('<').push(tagName);
+ var arr = ['<', tagName];
var attribs = opt_attribs || {};
for (var attrib in attribs) {
if (attribs.hasOwnProperty(attrib)) {
- var value = escapeString(attribs[attrib]);
- arr.push(' ').push(attrib).push('="').push(value).push('"');
+ arr.push(' ');
+ arr.push(attrib);
+ arr.push('="');
+ arr.push(gadgets.util.escapeString(attribs[attrib]));
+ arr.push('"');
}
}
- arr.push('></').push(tagName).push('>');
+ arr.push('></');
+ arr.push(tagName);
+ arr.push('>');
return arr.join('');
}
/**
- * @enum {boolean}
- * @const
- * @private
- * Maps code points to the value to replace them with.
- * If the value is "false", the character is removed entirely, otherwise
- * it will be replaced with an html entity.
- */
- var escapeCodePoints = {
- // nul; most browsers truncate because they use c strings under the covers.
- 0 : false,
- // new line
- 10 : true,
- // carriage return
- 13 : true,
- // double quote
- 34 : true,
- // single quote
- 39 : true,
- // less than
- 60 : true,
- // greater than
- 62 : true,
- // backslash
- 92 : true,
- // line separator
- 8232 : true,
- // paragraph separator
- 8233 : true,
- // fullwidth quotation mark
- 65282 : true,
- // fullwidth apostrophe
- 65287 : true,
- // fullwidth less-than sign
- 65308 : true,
- // fullwidth greater-than sign
- 65310 : true,
- // fullwidth reverse solidus
- 65340 : true
- };
-
- function escapeString(str) {
- if (!str) return str;
- var out = [], ch, shouldEscape;
- for (var i = 0, j = str.length; i < j; ++i) {
- ch = str.charCodeAt(i);
- shouldEscape = escapeCodePoints[ch];
- if (shouldEscape === true) {
- out.push('&#', ch, ';');
- } else if (shouldEscape !== false) {
- // undefined or null are OK.
- out.push(str.charAt(i));
- }
- }
- return out.join('');
- }
-
- /**
* Initializes feature parameters.
*/
function init(config) {
@@ -230,56 +177,6 @@ gadgets.util = gadgets.util || {};
};
/**
- * Escapes the input using html entities to make it safer.
- *
- * If the input is a string, uses gadgets.util.escapeString.
- * If it is an array, calls escape on each of the array elements
- * if it is an object, will only escape all the mapped keys and values if
- * the opt_escapeObjects flag is set. This operation involves creating an
- * entirely new object so only set the flag when the input is a simple
- * string to string map.
- * Otherwise, does not attempt to modify the input.
- *
- * @param {Object} input The object to escape.
- * @param {boolean=} opt_escapeObjects Whether to escape objects.
- * @return {Object} The escaped object.
- * @private Only to be used by the container, not gadgets.
- */
- gadgets.util.escape = function(input, opt_escapeObjects) {
- // TODO: move to core.util.string.
- if (!input) {
- return input;
- } else if (typeof input === 'string') {
- return gadgets.util.escapeString(input);
- } else if (typeof input === 'array') {
- for (var i = 0, j = input.length; i < j; ++i) {
- input[i] = gadgets.util.escape(input[i]);
- }
- } else if (typeof input === 'object' && opt_escapeObjects) {
- var newObject = {};
- for (var field in input) {
- if (input.hasOwnProperty(field)) {
- newObject[gadgets.util.escapeString(field)] = gadgets.util.escape(input[field], true);
- }
- }
- return newObject;
- }
- return input;
- };
-
- /**
- * Escapes the input using html entities to make it safer.
- *
- * Currently not in the spec -- future proposals may change
- * how this is handled.
- *
- * @param {string} str The string to escape.
- * @return {string} The escaped string.
- */
- // TODO: move to core.util.string.
- gadgets.util.escapeString = escapeString;
-
- /**
* Attach an event listener to given DOM element (Not a gadget standard)
*
* @param {Object} elem DOM element on which to attach event.
Modified: shindig/trunk/features/src/main/javascript/features/features.txt
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/features.txt?rev=1101764&r1=1101763&r2=1101764&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/features.txt (original)
+++ shindig/trunk/features/src/main/javascript/features/features.txt Wed May 11 07:01:25 2011
@@ -36,8 +36,8 @@ features/core.log/feature.xml
features/core.none/feature.xml
features/core.prefs/feature.xml
features/core.util/feature.xml
-features/core.util.dom/feature.xml
features/core.util.string/feature.xml
+features/core.util.dom/feature.xml
features/core.util.urlparams/feature.xml
features/core/feature.xml
features/dynamic-height.height/feature.xml
Modified: shindig/trunk/features/src/test/javascript/features/alltests.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/test/javascript/features/alltests.js?rev=1101764&r1=1101763&r2=1101764&view=diff
==============================================================================
--- shindig/trunk/features/src/test/javascript/features/alltests.js (original)
+++ shindig/trunk/features/src/test/javascript/features/alltests.js Wed May 11 07:01:25 2011
@@ -39,8 +39,8 @@ if (!this.JsUtil) {
eval(JsUtil.prototype.include(srcDir + '/core.json/json-native.js'));
eval(JsUtil.prototype.include(srcDir + '/core.json/json-jsimpl.js'));
eval(JsUtil.prototype.include(srcDir + '/core.json/json-flatten.js'));
- eval(JsUtil.prototype.include(srcDir + '/core.util.string/string.js'));
eval(JsUtil.prototype.include(srcDir + '/core.util.dom/dom.js'));
+ eval(JsUtil.prototype.include(srcDir + '/core.util.string/string.js'));
eval(JsUtil.prototype.include(srcDir + '/core.util.urlparams/urlparams.js'));
eval(JsUtil.prototype.include(srcDir + '/core.util/util.js'));
eval(JsUtil.prototype.include(srcDir + '/core.prefs/prefs.js'));