OSDN Git Service

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