OSDN Git Service

Version 0.5.151, fix X.Timer.remove & X.OAuth2 is working.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 05_XString.js
index 86a2043..b77d19f 100644 (file)
@@ -7,16 +7,26 @@ var X_String_CRLF = String.fromCharCode( 13 ) + String.fromCharCode( 10 );
 // ------------------------------------------------------------------------- //\r
 // --- interface ----------------------------------------------------------- //\r
 // ------------------------------------------------------------------------- //\r
-X.String = {\r
+\r
+/**\r
+ * @namespace X.String\r
+ * @alias X.String\r
+ */\r
+X[ 'String' ] = {\r
+       \r
+       'parse'             : X_String_parse,\r
        \r
-       parse             : X_String_parse,\r
+       'cleanupWhiteSpace' : X_String_cleanupWhiteSpace,\r
        \r
-       cleanupWhiteSpace : X_String_cleanupWhiteSpace,\r
+       'whiteSpaceToTag'   : X_String_whiteSpaceToTag,\r
        \r
-       whiteSpaceToTag   : X_String_whiteSpaceToTag,\r
+       'chrReferanceTo'    : X_String_chrReferanceTo,\r
        \r
-       chrReferanceTo    : X_String_chrReferanceTo\r
+       'toChrReferance'    : X_String_toChrReferance,\r
        \r
+       'isNumberString'    : X_String_isNumberString,\r
+       \r
+       'serialize'         : X_String_serialize\r
 };\r
 \r
 // ------------------------------------------------------------------------- //\r
@@ -24,7 +34,7 @@ X.String = {
 // ------------------------------------------------------------------------- //\r
 function X_String_parse( v ){\r
        var _v, n;\r
-       if( X.Type.isString( v ) ){\r
+       if( X_Type_isString( v ) ){\r
                switch( v ){\r
                        case ''          : return v;\r
                        //case '{}'        : return {};\r
@@ -78,9 +88,96 @@ function X_String_whiteSpaceToTag( text ){
 function X_String_chrReferanceTo( str ){\r
     if( str == null ) return '';\r
     return str.toString()\r
+       .split( '"' ).join( '"' )\r
        .split( '&' ).join( '&' )\r
        .split( '&lt;' ).join( '<' )\r
        .split( '&gt;' ).join( '>' )\r
        .split( '&nbsp;' ).join( ' ' );\r
 };\r
 \r
+function X_String_toChrReferance( str ){\r
+    if( str == null ) return '';\r
+    return str.toString()\r
+       .split( '"' ).join( '&quot;' )\r
+       .split( '&' ).join( '&amp;' )\r
+       .split( '<' ).join( '&lt;' )\r
+       .split( '>' ).join( '&gt;' )\r
+       .split( ' ' ).join( '&nbsp;' );\r
+};\r
+\r
+function X_String_isNumberString( v ){\r
+       var n = v - 0;\r
+       return '' + n === v || '' + n === '0' + v;\r
+};\r
+\r
+// https://github.com/jquery/jquery/blob/master/src/serialize.js\r
+function X_String_serialize( a, traditional ) {\r
+       var prefix,\r
+               list = [];\r
+\r
+       // If an array was passed in, assume that it is an array of form elements.\r
+       if ( X_Type_isArray( a ) && false ) {\r
+               // Serialize the form elements\r
+               //jQuery.each( a, function() {\r
+               //      X_String_serialize_addParam( list, this.name, this.value );\r
+               //});\r
+\r
+       } else {\r
+               // If traditional, encode the 'old' way (the way 1.3.2 or older\r
+               // did it), otherwise encode params recursively.\r
+               for ( prefix in a ) {\r
+                       X_String_serialize_buildParams( list, prefix, a[ prefix ], traditional );\r
+               }\r
+       }\r
+\r
+       // Return the resulting serialization\r
+       return list.join( '&' ).split( '%20' ).join( '+' );\r
+};\r
+\r
+function X_String_serialize_addParam( list, key, value ){\r
+       // If value is a function, invoke it and return its value\r
+       value = X_Type_isFunction( value ) ? value() : ( value == null ? '' : value );\r
+       list[ list.length ] = encodeURIComponent( key ) + '=' + encodeURIComponent( value );\r
+};\r
+\r
+function X_String_serialize_buildParams( list, prefix, obj, traditional ) {\r
+       var name;\r
+\r
+       if ( X_Type_isArray( obj ) ) {\r
+               // Serialize array item.\r
+               for( i = 0, l = obj.length; i < l; ++i ){\r
+                       v = obj[ i ];\r
+                       if ( traditional || prefix === '[]' ) {\r
+                               // Treat each array item as a scalar.\r
+                               X_String_serialize_addParam( list, prefix, v );\r
+\r
+                       } else {\r
+                               // Item is non-scalar (array or object), encode its numeric index.\r
+                               X_String_serialize_buildParams(\r
+                                       list,\r
+                                       prefix + '[' + ( X_Type_isObject( v ) ? i : '' ) + ']',\r
+                                       v,\r
+                                       traditional\r
+                               );\r
+                       };              \r
+               };\r
+\r
+       } else\r
+       if ( !traditional && X_Type_isObject( obj ) ) {\r
+               // Serialize object item.\r
+               for ( name in obj ) {\r
+                       X_String_serialize_buildParams( list, prefix + '[' + name + ']', obj[ name ], traditional );\r
+               };\r
+\r
+       } else {\r
+               // Serialize scalar item.\r
+               X_String_serialize_addParam( list, prefix, obj );\r
+       };\r
+};\r
+\r
+/*\r
+ * 信頼できる文字列だけに対して json 文字列のパースを行います\r
+ */\r
+function X_String_parseTrustedJsonString( jsonString ){\r
+       return window.JSON ? JSON.parse( jsonString ) : eval( '(' + jsonString + ')' );\r
+};\r