OSDN Git Service

Version 0.6.182, fix X.UA.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 06_XString.js
index 58ec770..aa7d1f2 100644 (file)
@@ -9,6 +9,7 @@ var X_String_CRLF = String.fromCharCode( 13 ) + String.fromCharCode( 10 );
 // ------------------------------------------------------------------------- //\r
 \r
 /**\r
+ * 文字列に関する関数を集めたものです。\r
  * @namespace X.String\r
  * @alias X.String\r
  */\r
@@ -32,8 +33,15 @@ X[ 'String' ] = {
 // ------------------------------------------------------------------------- //\r
 // --- implements ---------------------------------------------------------- //\r
 // ------------------------------------------------------------------------- //\r
+/**\r
+ * 文字列を数値、NaN,Infinity,-Infinity,bool値、null,undefinedに変換します。1e3等には未対応です。\r
+ * @alias X.String.parse\r
+ * @param {string}\r
+ * @return {*}\r
+ */\r
 function X_String_parse( v ){\r
-       var _v, n;\r
+       var _v;\r
+       \r
        if( X_Type_isString( v ) ){\r
                switch( v ){\r
                        case ''          : return v;\r
@@ -50,34 +58,63 @@ function X_String_parse( v ){
                        case 'undefined' : return;\r
                };\r
                _v = v.split( ' ' ).join( '' );\r
-               n  = _v - 0;\r
-               if( '' + n === _v || '' + n === '0' + _v  ) return n;\r
+               if( X_String_isNumberString( _v ) ) return _v - 0;\r
        };\r
        return v;\r
 };\r
-       \r
+\r
+/**\r
+ * <p>空白文字を半角スペースに変換します。\n\r,\t,\r,\n,\f,\b\r
+ * <p>2つ以上の連続する半角スペースを一つの半角スペースにします。\r
+ * <p>undefined, null が与えられた場合は '' を返します。\r
+ * <p>数値,Object が与えられた場合は toString します。\r
+ * @alias X.String.cleanupWhiteSpace\r
+ * @param {string}\r
+ * @return {string}\r
+ */\r
 function X_String_cleanupWhiteSpace( text ){\r
-       var _ = ' ', __ = '  ', CRLF = X_String_CRLF;\r
+       var _ = ' ', __ = '  '; //, CRLF = X_String_CRLF;\r
+       \r
+       if( text == null || text === '' ) return '';\r
+       \r
        //text.indexOf( CRLF )   !== -1 && ( text = text.split( CRLF ).join( _ ) );\r
-       text.indexOf( '\n\r' ) !== -1 && ( text = text.split( '\n\r' ).join( _ ) );\r
+       /*text.indexOf( '\n\r' ) !== -1 && ( text = text.split( '\n\r' ).join( _ ) );\r
        text.indexOf( '\t' )   !== -1 && ( text = text.split( '\t' ).join( _ ) );\r
        text.indexOf( '\r' )   !== -1 && ( text = text.split( '\r' ).join( _ ) );\r
        text.indexOf( '\n' )   !== -1 && ( text = text.split( '\n' ).join( _ ) );\r
        text.indexOf( '\f' )   !== -1 && ( text = text.split( '\f' ).join( _ ) );\r
-       text.indexOf( '\b' )   !== -1 && ( text = text.split( '\b' ).join( _ ) );\r
-       while( text.indexOf( __ ) !== -1 ){\r
-               text = text.split( __ ).join( _ );\r
+       text.indexOf( '\b' )   !== -1 && ( text = text.split( '\b' ).join( _ ) ); */\r
+       \r
+       text = text.toString()\r
+                       .split( X_String_CRLF ).join( _ )\r
+                       .split( '\r' ).join( _ )\r
+                       .split( '\n' ).join( _ )\r
+                       .split( '\t' ).join( _ )\r
+                       .split( '\f' ).join( _ )\r
+                       .split( '\b' ).join( _ );\r
+\r
+       while( true ){\r
+               text = text.split( __ );\r
+               if( text.length < 2 ) return text[ 0 ];\r
+               text = text.join( _ );\r
        };\r
-       return text;\r
 };\r
 \r
+/**\r
+ * 空白文字列を &lt;br&gt; に変換します。タブを &amp;nbsp; 4つに変換します。\r
+ * <p>undefined, null が与えられた場合は '' を返します。\r
+ * <p>数値,Object が与えられた場合は toString します。\r
+ * @alias X.String.whiteSpaceToTag\r
+ * @param {string}\r
+ * @return {string} html文字列\r
+ */\r
 function X_String_whiteSpaceToTag( text ){\r
-    if( text == null ) return '';\r
+    if( text == null || text === '' ) return '';\r
     return text.toString()\r
        //.split( '\r\n\r\n' ).join( '<br>' )\r
        //.split( '\n\r\n\r' ).join( '<br>' )\r
        //.split( '\r\n' ).join( '<br>' )\r
-       .split( '\n\r' ).join( '<br>' )\r
+       .split( X_String_CRLF ).join( '<br>' )\r
        .split( '\r' ).join( '<br>' )\r
        .split( '\n' ).join( '<br>' )\r
        .split( '\t' ).join( '&nbsp;&nbsp;&nbsp;&nbsp;' )\r
@@ -85,51 +122,81 @@ function X_String_whiteSpaceToTag( text ){
        .split( '\b' ).join( '' );\r
 };\r
 \r
+/**\r
+ * 一部の文字実体参照をデコードします。&quot;, &amp;, &lt;, &gt;, &nbsp;\r
+ * <p>undefined, null が与えられた場合は '' を返します。\r
+ * <p>数値,Object が与えられた場合は toString します。\r
+ * @alias X.String.chrReferanceTo\r
+ * @param {string}\r
+ * @return {string} html文字列\r
+ */\r
 function X_String_chrReferanceTo( str ){\r
-    if( str == null ) return '';\r
+    if( str == null || str === '' ) return '';\r
     return str.toString()\r
-       .split( '&quot;' ).join( '"' ) // first!\r
-       .split( '&amp;' ).join( '&' )\r
-       .split( '&lt;' ).join( '<' )\r
-       .split( '&gt;' ).join( '>' )\r
-       .split( '&nbsp;' ).join( ' ' );\r
+       .split( '&quot;' ).join( '"' )\r
+       .split( '&apos;' ).join( "'" )\r
+       .split( '&lt;'   ).join( '<' )\r
+       .split( '&gt;'   ).join( '>' )\r
+       .split( '&nbsp;' ).join( ' ' )\r
+       .split( '&amp;'  ).join( '&' ); // last!\r
 };\r
 \r
+/**\r
+ * htmlタグで使われる文字を文字実体参照に変換します。&quot;, &amp;, &lt;, &gt;, &nbsp;\r
+ * <p>undefined, null が与えられた場合は '' を返します。\r
+ * <p>数値,Object が与えられた場合は toString します。\r
+ * @alias X.String.chrReferanceTo\r
+ * @param {string}\r
+ * @return {string}\r
+ */\r
 function X_String_toChrReferance( str ){\r
-    if( str == null ) return '';\r
-    str += '';\r
+    if( str == null || str === '' ) return '';\r
     return str.toString()\r
-       .split( '&' ).join( '&amp;' )\r
+       .split( '&' ).join( '&amp;' ) // first!\r
        .split( '"' ).join( '&quot;' )\r
+       .split( "'" ).join( '&apos;' )\r
        .split( '<' ).join( '&lt;' )\r
        .split( '>' ).join( '&gt;' )\r
        .split( ' ' ).join( '&nbsp;' );\r
 };\r
 \r
+/**\r
+ * 文字列化した数値か?調べます。\r
+ * @alias X.String.isNumberString\r
+ * @param {string}\r
+ * @return {boolean}\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
+/**\r
+ * postdata のために object を文字列に変換します。\r
+ * https://github.com/jquery/jquery/blob/master/src/serialize.js\r
+ * @alias X.String.serialize\r
+ * @param {object}\r
+ * @param {boolean} [traditional=]\r
+ * @return {string}\r
+ */\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
+       //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
+       //} 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
+                       X_String_serialize_buildParams( list, prefix, a[ prefix ], !!traditional );\r
                }\r
-       }\r
+       //}\r
 \r
        // Return the resulting serialization\r
        return list.join( '&' ).split( '%20' ).join( '+' );\r
@@ -176,9 +243,3 @@ function X_String_serialize_buildParams( list, prefix, obj, traditional ) {
        };\r
 };\r
 \r
-/*\r
- * 信頼できる文字列だけに対して json 文字列のパースを行います\r
- */\r
-function X_String_parseTrustedJsonString( jsonString ){\r
-       return window.JSON ? JSON.parse( jsonString ) : eval( '(' + jsonString + ')' );\r
-};\r