2 // ------------------------------------------------------------------------- //
\r
3 // ------------ local variables -------------------------------------------- //
\r
4 // ------------------------------------------------------------------------- //
\r
5 var X_String_CRLF = String.fromCharCode( 13 ) + String.fromCharCode( 10 );
\r
7 // ------------------------------------------------------------------------- //
\r
8 // --- interface ----------------------------------------------------------- //
\r
9 // ------------------------------------------------------------------------- //
\r
12 * 文字列に関する関数を集めたものです。
\r
13 * @namespace X.String
\r
18 'parse' : X_String_parse,
\r
20 'cleanupWhiteSpace' : X_String_cleanupWhiteSpace,
\r
22 'whiteSpaceToTag' : X_String_whiteSpaceToTag,
\r
24 'chrReferanceTo' : X_String_chrReferanceTo,
\r
26 'toChrReferance' : X_String_toChrReferance,
\r
28 'isNumberString' : X_String_isNumberString,
\r
30 'serialize' : X_String_serialize
\r
33 // ------------------------------------------------------------------------- //
\r
34 // --- implements ---------------------------------------------------------- //
\r
35 // ------------------------------------------------------------------------- //
\r
37 * 文字列を数値、NaN,Infinity,-Infinity,bool値、null,undefinedに変換します。1e3等には未対応です。
\r
38 * @alias X.String.parse
\r
42 function X_String_parse( v ){
\r
44 if( X_Type_isString( v ) ){
\r
47 //case '{}' : return {};
\r
48 //case '[]' : return [];
\r
49 case 'NaN' : return NaN;
\r
50 case 'null' : return null;
\r
51 case 'true' : return true;
\r
52 case 'false' : return false;
\r
53 case 'Infinity' : return 1 / 0;//Number.POSITIVE_INFINITY;
\r
54 case '-Infinity' : return -1 / 0;//Number.NEGATIVE_INFINITY;
\r
57 case 'undefined' : return;
\r
59 _v = v.split( ' ' ).join( '' );
\r
61 if( '' + n === _v || '' + n === '0' + _v ) return n;
\r
67 * <p>空白文字を半角スペースに変換します。\n\r,\t,\r,\n,\f,\b
\r
68 * <p>2つ以上の連続する半角スペースを一つの半角スペースにします。
\r
69 * @alias X.String.cleanupWhiteSpace
\r
73 function X_String_cleanupWhiteSpace( text ){
\r
74 var _ = ' ', __ = ' ', CRLF = X_String_CRLF;
\r
75 //text.indexOf( CRLF ) !== -1 && ( text = text.split( CRLF ).join( _ ) );
\r
76 text.indexOf( '\n\r' ) !== -1 && ( text = text.split( '\n\r' ).join( _ ) );
\r
77 text.indexOf( '\t' ) !== -1 && ( text = text.split( '\t' ).join( _ ) );
\r
78 text.indexOf( '\r' ) !== -1 && ( text = text.split( '\r' ).join( _ ) );
\r
79 text.indexOf( '\n' ) !== -1 && ( text = text.split( '\n' ).join( _ ) );
\r
80 text.indexOf( '\f' ) !== -1 && ( text = text.split( '\f' ).join( _ ) );
\r
81 text.indexOf( '\b' ) !== -1 && ( text = text.split( '\b' ).join( _ ) );
\r
82 //while( text.indexOf( __ ) !== -1 ){
\r
83 // text = text.split( __ ).join( _ );
\r
87 text = text.split( __ );
\r
88 if( text.length < 2 ) return text.join( _ );
\r
89 text = text.join( _ );
\r
94 * 空白文字列を <br> に変換します。タブを &nbsp; 4つに変換します。
\r
95 * @alias X.String.whiteSpaceToTag
\r
97 * @return {string} html文字列
\r
99 function X_String_whiteSpaceToTag( text ){
\r
100 if( text == null ) return '';
\r
101 return text.toString()
\r
102 //.split( '\r\n\r\n' ).join( '<br>' )
\r
103 //.split( '\n\r\n\r' ).join( '<br>' )
\r
104 //.split( '\r\n' ).join( '<br>' )
\r
105 .split( '\n\r' ).join( '<br>' )
\r
106 .split( '\r' ).join( '<br>' )
\r
107 .split( '\n' ).join( '<br>' )
\r
108 .split( '\t' ).join( ' ' )
\r
109 .split( '\f' ).join( '' )
\r
110 .split( '\b' ).join( '' );
\r
114 * 一部の文字実体参照をデコードします。", &, <, >,
\r
115 * @alias X.String.chrReferanceTo
\r
117 * @return {string} html文字列
\r
119 function X_String_chrReferanceTo( str ){
\r
120 if( str == null ) return '';
\r
121 return str.toString()
\r
122 .split( '"' ).join( '"' ) // first!
\r
123 .split( '&' ).join( '&' )
\r
124 .split( '<' ).join( '<' )
\r
125 .split( '>' ).join( '>' )
\r
126 .split( ' ' ).join( ' ' );
\r
130 * htmlタグで使われる文字を文字実体参照に変換します。", &, <, >,
\r
131 * @alias X.String.chrReferanceTo
\r
135 function X_String_toChrReferance( str ){
\r
136 if( str == null ) return '';
\r
138 return str.toString()
\r
139 .split( '&' ).join( '&' )
\r
140 .split( '"' ).join( '"' )
\r
141 .split( '<' ).join( '<' )
\r
142 .split( '>' ).join( '>' )
\r
143 .split( ' ' ).join( ' ' );
\r
147 * htmlタグで使われる文字を文字実体参照に変換します。", &, <, >,
\r
148 * @alias X.String.isNumberString
\r
150 * @return {boolean}
\r
152 function X_String_isNumberString( v ){
\r
154 return '' + n === v || '' + n === '0' + v;
\r
158 * postdata のために object を文字列に変換します。
\r
159 * https://github.com/jquery/jquery/blob/master/src/serialize.js
\r
160 * @alias X.String.serialize
\r
162 * @param {boolean} [traditional=]
\r
165 function X_String_serialize( a, traditional ) {
\r
169 // If an array was passed in, assume that it is an array of form elements.
\r
170 //if ( X_Type_isArray( a ) && false ) {
\r
171 // Serialize the form elements
\r
172 //jQuery.each( a, function() {
\r
173 // X_String_serialize_addParam( list, this.name, this.value );
\r
177 // If traditional, encode the 'old' way (the way 1.3.2 or older
\r
178 // did it), otherwise encode params recursively.
\r
179 for ( prefix in a ) {
\r
180 X_String_serialize_buildParams( list, prefix, a[ prefix ], !!traditional );
\r
184 // Return the resulting serialization
\r
185 return list.join( '&' ).split( '%20' ).join( '+' );
\r
188 function X_String_serialize_addParam( list, key, value ){
\r
189 // If value is a function, invoke it and return its value
\r
190 value = X_Type_isFunction( value ) ? value() : ( value == null ? '' : value );
\r
191 list[ list.length ] = encodeURIComponent( key ) + '=' + encodeURIComponent( value );
\r
194 function X_String_serialize_buildParams( list, prefix, obj, traditional ) {
\r
197 if ( X_Type_isArray( obj ) ) {
\r
198 // Serialize array item.
\r
199 for( i = 0, l = obj.length; i < l; ++i ){
\r
201 if ( traditional || prefix === '[]' ) {
\r
202 // Treat each array item as a scalar.
\r
203 X_String_serialize_addParam( list, prefix, v );
\r
206 // Item is non-scalar (array or object), encode its numeric index.
\r
207 X_String_serialize_buildParams(
\r
209 prefix + '[' + ( X_Type_isObject( v ) ? i : '' ) + ']',
\r
217 if ( !traditional && X_Type_isObject( obj ) ) {
\r
218 // Serialize object item.
\r
219 for ( name in obj ) {
\r
220 X_String_serialize_buildParams( list, prefix + '[' + name + ']', obj[ name ], traditional );
\r
224 // Serialize scalar item.
\r
225 X_String_serialize_addParam( list, prefix, obj );
\r