OSDN Git Service

Version 0.6.95, fix X.Timer, fix xhr @opera11-, fix for touch device.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 06_XURL.js
1 \r
2 // ------------------------------------------------------------------------- //\r
3 // ------------ local variables -------------------------------------------- //\r
4 // ------------------------------------------------------------------------- //\r
5 var X_URL_BASE_URL = ( function( parts ){\r
6                 var last = 1 < parts.length && parts[ parts.length - 1 ];\r
7                 if( last !== false && ( last === '' || //末尾が/で終わるとき\r
8                         last.indexOf( '.' ) !== -1 ) ){    //末尾がファイル名で終わる時\r
9                         --parts.length;\r
10                 };\r
11                 return parts.join( '/' );\r
12         })( location.href.split( '?' )[ 0 ].split( '#' )[ 0 ].split( '/' ) ),\r
13         \r
14         X_URL_IS_FILE  = location.protocol === 'file:',\r
15         \r
16         X_URL_IS_LOCAL = X_URL_IS_FILE || location.hostname === 'localhost' || location.hostname === '127.0.0.1';\r
17 \r
18 // ------------------------------------------------------------------------- //\r
19 // --- interface ----------------------------------------------------------- //\r
20 // ------------------------------------------------------------------------- //\r
21 X.URL = {\r
22 \r
23         BASE_URL : X_URL_BASE_URL,\r
24         \r
25         IS_FILE  : X_URL_IS_FILE,\r
26         \r
27         IS_LOCAL : X_URL_IS_LOCAL,\r
28         \r
29         toAbsolutePath : X_URL_toAbsolutePath\r
30 };\r
31 \r
32 // ------------------------------------------------------------------------- //\r
33 // --- implements ---------------------------------------------------------- //\r
34 // ------------------------------------------------------------------------- //\r
35 /*\r
36  * original\r
37  * AS3で相対パスを絶対パスに変換する\r
38  * http://www.shin-go.net/motionlab/?p=449\r
39  */\r
40 function X_URL_toAbsolutePath( path ){\r
41         var s  = '/',\r
42                 ss = '//',\r
43                 _ary, ary, i = 0;\r
44 \r
45         if( 'http:file:https:'.indexOf( path.substr( 0, 4 ) ) !== -1 ) return path;\r
46         \r
47         _ary = X_URL_BASE_URL.split( ss );\r
48         ary  = _ary[ 1 ].split( s );\r
49 \r
50         if( path.charAt( 0 ) === s ) return [ _ary[ 0 ], ss, ary[ 0 ], path ].join( '' );\r
51                 \r
52         if( path.substr( 0, 2 ) === './' ){\r
53                 path = path.substr( 2 );\r
54         } else {\r
55                 while( path.substr( i, 3 ) === '../' ){\r
56                         --ary.length;\r
57                         i += 3;\r
58                 };\r
59                 if( i ) path = path.substr( i );\r
60         };\r
61         return [ _ary[ 0 ], ss, ary.join( s ), s, path ].join( '' );\r
62 };