OSDN Git Service

Version 0.6.94...
authoritozyun <itozyun@user.sourceforge.jp>
Tue, 7 Oct 2014 13:27:51 +0000 (22:27 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Tue, 7 Oct 2014 13:27:51 +0000 (22:27 +0900)
0.6.x/js/01_core/04_XObject.js [new file with mode: 0644]
0.6.x/js/01_core/05_XString.js [new file with mode: 0644]
0.6.x/js/01_core/06_XURL.js [new file with mode: 0644]

diff --git a/0.6.x/js/01_core/04_XObject.js b/0.6.x/js/01_core/04_XObject.js
new file mode 100644 (file)
index 0000000..3e57b52
--- /dev/null
@@ -0,0 +1,92 @@
+\r
+var X_Object_inObject = X.UA.IE < 5.5 ? // TODO JScript で判定\r
+       (function( name, obj ){\r
+               var p;\r
+               if( obj[ name ] ) return true;\r
+               name += ''; // 数値も許可\r
+               for( p in obj ){\r
+                       if( p === name ) return true;\r
+               };\r
+               return false;\r
+       }) :\r
+       new Function( 'a,b', 'return a in b' );// なぜか ie5 でもerror\r
+\r
+\r
+X.Object = {\r
+       \r
+       clone      : X_Object_clone,\r
+       \r
+       deepCopy   : X_Object_deepCopy,\r
+       \r
+       cloneArray : X_Object_cloneArray,\r
+       \r
+       isEmpty    : X_Object_isEmpty,\r
+       \r
+       inObject   : X_Object_inObject\r
+};\r
+       \r
+function X_Object_clone( src ){\r
+       var ret, k;\r
+       if( typeof src !== 'object' ) return src;\r
+       ret = {};\r
+       for( k in src ){\r
+               ret[ k ] = src[ k ];\r
+       };\r
+       return ret;\r
+};\r
+\r
+function X_Object_deepCopy( src ){             \r
+       return X_Object_deepCopy_( src, [], [], -1 );\r
+};\r
+\r
+function X_Object_deepCopy_( src, objSrc, objCopy, n ) {\r
+       var ret, i, key;\r
+       if( !src ){ // 0, "", null, undefined, NaN, false\r
+               return src;\r
+       } else\r
+       if( X.Type.isArray( src ) ){\r
+               i = objSrc.indexOf( src );\r
+               if( i !== -1 ) return objCopy[ i ];\r
+               objSrc[ ++n ] = src;\r
+               objCopy[ n ]  = ret = [];\r
+       } else\r
+       if( X.Type.isObject( src ) ){\r
+               i = objSrc.indexOf( src );\r
+               if( i !== -1 ) return objCopy[ i ];\r
+               objSrc[ ++n ] = src;\r
+               objCopy[ n ]  = ret = {};\r
+       } else {\r
+               // string, number, true\r
+               return src;\r
+       };\r
+       for( key in src ){\r
+               ret[ key ] = clone( src[ key ], objSrc, objCopy, n );\r
+       };\r
+       return ret;\r
+};\r
+\r
+function X_Object_cloneArray( ary ){\r
+       var ret = [], i = ary.length;\r
+       if( !i ) return ret;\r
+       for( ; i; ){\r
+               ret[ --i ] = ary[ i ];\r
+       };\r
+       return ret;\r
+};\r
+       \r
+function X_Object_isEmpty( v ){\r
+       var p;\r
+       for( p in v ){\r
+               return false;//if( v.hasOwnProperty && v.hasOwnProperty( p ) ) return false; ie4 で動かない、、、\r
+       };\r
+       return true;\r
+};\r
+\r
+/*     \r
+X.matchTest = function( array1, array2 ){\r
+       var i = array2.length;\r
+       for( ; i; ){\r
+               if( array1.indexOf( array2[ --i ] ) === -1 ) return false;\r
+       };\r
+       return true;\r
+}; */\r
diff --git a/0.6.x/js/01_core/05_XString.js b/0.6.x/js/01_core/05_XString.js
new file mode 100644 (file)
index 0000000..86a2043
--- /dev/null
@@ -0,0 +1,86 @@
+\r
+// ------------------------------------------------------------------------- //\r
+// ------------ local variables -------------------------------------------- //\r
+// ------------------------------------------------------------------------- //\r
+var X_String_CRLF = String.fromCharCode( 13 ) + String.fromCharCode( 10 );\r
+\r
+// ------------------------------------------------------------------------- //\r
+// --- interface ----------------------------------------------------------- //\r
+// ------------------------------------------------------------------------- //\r
+X.String = {\r
+       \r
+       parse             : X_String_parse,\r
+       \r
+       cleanupWhiteSpace : X_String_cleanupWhiteSpace,\r
+       \r
+       whiteSpaceToTag   : X_String_whiteSpaceToTag,\r
+       \r
+       chrReferanceTo    : X_String_chrReferanceTo\r
+       \r
+};\r
+\r
+// ------------------------------------------------------------------------- //\r
+// --- implements ---------------------------------------------------------- //\r
+// ------------------------------------------------------------------------- //\r
+function X_String_parse( v ){\r
+       var _v, n;\r
+       if( X.Type.isString( v ) ){\r
+               switch( v ){\r
+                       case ''          : return v;\r
+                       //case '{}'        : return {};\r
+                       //case '[]'        : return [];\r
+                       case 'NaN'       : return NaN;\r
+                       case 'null'      : return null;\r
+                       case 'true'      : return true;\r
+                       case 'false'     : return false;\r
+                       case 'Infinity'  : return  1 / 0;//Number.POSITIVE_INFINITY;\r
+                       case '-Infinity' : return -1 / 0;//Number.NEGATIVE_INFINITY;\r
+                       //case 'void(0)'   :\r
+                       //case 'void 0'    :\r
+                       case 'undefined' : return;\r
+               };\r
+               _v = v.split( ' ' ).join( '' );\r
+               n  = _v - 0;\r
+               if( '' + n === _v || '' + n === '0' + _v  ) return n;\r
+       };\r
+       return v;\r
+};\r
+       \r
+function X_String_cleanupWhiteSpace( text ){\r
+       var _ = ' ', __ = '  ', CRLF = X_String_CRLF;\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( '\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
+       };\r
+       return text;\r
+};\r
+\r
+function X_String_whiteSpaceToTag( text ){\r
+    if( text == null ) 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( '\r' ).join( '<br>' )\r
+       .split( '\n' ).join( '<br>' )\r
+       .split( '\t' ).join( '&nbsp;&nbsp;&nbsp;&nbsp;' )\r
+       .split( '\f' ).join( '' )\r
+       .split( '\b' ).join( '' );\r
+};\r
+\r
+function X_String_chrReferanceTo( str ){\r
+    if( str == null ) return '';\r
+    return str.toString()\r
+       .split( '&amp;' ).join( '&' )\r
+       .split( '&lt;' ).join( '<' )\r
+       .split( '&gt;' ).join( '>' )\r
+       .split( '&nbsp;' ).join( ' ' );\r
+};\r
+\r
diff --git a/0.6.x/js/01_core/06_XURL.js b/0.6.x/js/01_core/06_XURL.js
new file mode 100644 (file)
index 0000000..96be643
--- /dev/null
@@ -0,0 +1,53 @@
+\r
+var X_URL_BASE_URL = ( function( parts ){\r
+               var last = 1 < parts.length && parts[ parts.length - 1 ];\r
+               if( last !== false && ( last === '' || //末尾が/で終わるとき\r
+                       last.indexOf( '.' ) !== -1 ) ){//末尾がファイル名で終わる時\r
+                       \r
+                       --parts.length;\r
+               };\r
+               return parts.join( '/' );\r
+       })( location.href.split( '?' )[ 0 ].split( '#' )[ 0 ].split( '/' ) ),\r
+       \r
+       X_URL_IS_LOCAL = location.protocol === 'file:' || location.hostname === 'localhost' || location.hostname === '127.0.0.1';\r
+\r
+\r
+X.URL = {\r
+\r
+       BASE_URL : X_URL_BASE_URL,\r
+       \r
+       IS_LOCAL : X_URL_IS_LOCAL,\r
+       \r
+       toAbsolutePath : X_URL_toAbsolutePath\r
+};\r
+\r
+\r
+\r
+       /*\r
+        * original\r
+        * AS3で相対パスを絶対パスに変換する\r
+        * http://www.shin-go.net/motionlab/?p=449\r
+        */\r
+function X_URL_toAbsolutePath( path ){\r
+       var s  = '/',\r
+               ss = '//',\r
+               _ary, ary, i = 0;\r
+\r
+       if( 'http:file:https:'.indexOf( path.substr( 0, 4 ) ) !== -1 ) return path;\r
+       \r
+       _ary = X_URL_BASE_URL.split( ss );\r
+       ary  = _ary[ 1 ].split( s );\r
+\r
+       if( path.charAt( 0 ) === s ) return [ _ary[ 0 ], ss, ary[ 0 ], path ].join( '' );\r
+               \r
+       if( path.substr( 0, 2 ) === './' ){\r
+               path = path.substr( 2 );\r
+       } else {\r
+               while( path.substr( i, 3 ) === '../' ){\r
+                       --ary.length;\r
+                       i += 3;\r
+               };\r
+               if( i ) path = path.substr( i );\r
+       };\r
+       return [ _ary[ 0 ], ss, ary.join( s ), s, path ].join( '' );\r
+};
\ No newline at end of file