X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=_source%2Fcore%2Ftools.js;h=2492beb2a16a63539e9b2119d341bf063d199d51;hb=48b1db88210b4160dce439c6e3e32e14af8c106b;hp=c9d9877dc1c1e5fb410427c1b9a9301a71800936;hpb=7cd80714081a8ffdf4a1a8d2c72f120ed5ef3d6d;p=ckeditor.git
diff --git a/_source/core/tools.js b/_source/core/tools.js
index c9d9877..2492beb 100644
--- a/_source/core/tools.js
+++ b/_source/core/tools.js
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
@@ -12,6 +12,11 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
{
var functions = [];
+ CKEDITOR.on( 'reset', function()
+ {
+ functions = [];
+ });
+
/**
* Utility functions.
* @namespace
@@ -96,7 +101,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
|| ( obj instanceof String )
|| ( obj instanceof Number )
|| ( obj instanceof Boolean )
- || ( obj instanceof Date ) )
+ || ( obj instanceof Date )
+ || ( obj instanceof RegExp) )
{
return obj;
}
@@ -114,6 +120,15 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
},
/**
+ * Turn the first letter of string to upper-case.
+ * @param {String} str
+ */
+ capitalize: function( str )
+ {
+ return str.charAt( 0 ).toUpperCase() + str.substring( 1 ).toLowerCase();
+ },
+
+ /**
* Copy the properties from one object to another. By default, properties
* already present in the target object are not overwritten.
* @param {Object} target The object to be extended.
@@ -205,6 +220,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
return ( !!object && object instanceof Array );
},
+ /**
+ * Whether the object contains no properties of it's own.
+ * @param object
+ */
isEmpty : function ( object )
{
for ( var i in object )
@@ -214,6 +233,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
}
return true;
},
+
/**
* Transforms a CSS property name to its relative DOM style name.
* @param {String} cssName The CSS property name.
@@ -245,6 +265,27 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
} )(),
/**
+ * Build the HTML snippet of a set of <style>/<link>.
+ * @param css {String|Array} Each of which are url (absolute) of a CSS file or
+ * a trunk of style text.
+ */
+ buildStyleHtml : function ( css )
+ {
+ css = [].concat( css );
+ var item, retval = [];
+ for ( var i = 0; i < css.length; i++ )
+ {
+ item = css[ i ];
+ // Is CSS style text ?
+ if ( /@import|[{}]/.test(item) )
+ retval.push('');
+ else
+ retval.push('');
+ }
+ return retval.join( '' );
+ },
+
+ /**
* Replace special HTML characters in a string with their relative HTML
* entity values.
* @param {String} text The string to be encoded.
@@ -292,16 +333,16 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
},
/**
- * Replace characters can't be represented through CSS Selectors string
- * by CSS Escape Notation where the character escape sequence consists
- * of a backslash character (\) followed by the orginal characters.
- * Ref: http://www.w3.org/TR/css3-selectors/#grammar
- * @param cssSelectText
- * @return the escaped selector text.
+ * Replace special HTML characters in HTMLElement's attribute with their relative HTML entity values.
+ * @param {String} The attribute's value to be encoded.
+ * @returns {String} The encode value.
+ * @example
+ * element.setAttribute( 'title', '' );
+ * alert( CKEDITOR.tools.htmlEncodeAttr( element.getAttribute( 'title' ) ); // ">a " b <"
*/
- escapeCssSelector : function( cssSelectText )
+ htmlEncodeAttr : function( text )
{
- return cssSelectText.replace( /[\s#:.,$*^\[\]()~=+>]/g, '\\$&' );
+ return text.replace( /"/g, '"' ).replace( //g, '>' );
},
/**
@@ -323,6 +364,20 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
})(),
/**
+ * Gets a unique ID for CKEditor's interface elements. It returns a
+ * string with the "cke_" prefix and a progressive number.
+ * @function
+ * @returns {String} A unique ID.
+ * @example
+ * alert( CKEDITOR.tools.getNextId() ); // "cke_1" (e.g.)
+ * alert( CKEDITOR.tools.getNextId() ); // "cke_2"
+ */
+ getNextId : function()
+ {
+ return 'cke_' + this.getNextNumber();
+ },
+
+ /**
* Creates a function override.
* @param {Function} originalFunction The function to be overridden.
* @param {Function} functionBuilder A function that returns the new
@@ -509,7 +564,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
*