1
1
var dop = require ( 'dop' )
2
2
var enc = encodeURIComponent
3
3
4
- export function create ( url , object , prop ) {
4
+ exports . createLocation = function createLocation ( url , object , prop ) {
5
5
var shallWeEmit = false
6
6
var location
7
7
var urlparsed = parse ( url )
8
8
prop = prop || 'location'
9
9
10
10
if ( object !== null && typeof object == 'object' ) {
11
- if ( dop . isRegistered ( object ) )
12
- dop . set ( object , prop , urlparsed )
11
+ if ( dop . isRegistered ( object ) ) dop . set ( object , prop , urlparsed )
13
12
else {
14
13
object [ prop ] = urlparsed
15
14
object = dop . register ( object )
16
15
}
17
16
18
17
location = object [ prop ]
19
- }
20
- else
21
- location = dop . register ( urlparsed )
18
+ } else location = dop . register ( urlparsed )
22
19
23
20
location . toString = function ( ) {
24
21
return location . href
@@ -31,7 +28,10 @@ export function create(url, object, prop) {
31
28
pushState ( mutation . value )
32
29
setHref ( getWindowLocation ( ) )
33
30
} else if ( mutation . prop === 'pathname' ) {
34
- var href = mutation . value . split ( '/' ) . map ( enc ) . join ( '/' )
31
+ var href = mutation . value
32
+ . split ( '/' )
33
+ . map ( enc )
34
+ . join ( '/' )
35
35
if ( mutation . value [ 0 ] !== '/' ) href = '/' + href
36
36
href = href + location . search + location . hash
37
37
object . pathname = mutation . oldValue
@@ -100,7 +100,11 @@ export function create(url, object, prop) {
100
100
object [ mutation . prop ] = enc ( path [ mutation . prop ] )
101
101
var href =
102
102
'/' +
103
- path . filter ( function ( p ) { return p !== undefined } ) . join ( '/' ) +
103
+ path
104
+ . filter ( function ( p ) {
105
+ return p !== undefined
106
+ } )
107
+ . join ( '/' ) +
104
108
location . search +
105
109
location . hash
106
110
if ( href !== location . pathname ) {
@@ -155,7 +159,8 @@ export function create(url, object, prop) {
155
159
newquery = newlocation . query ,
156
160
query = location . query
157
161
for ( prop in newquery ) dop . set ( query , prop , newquery [ prop ] )
158
- for ( prop in query ) if ( ! newquery . hasOwnProperty ( prop ) ) dop . del ( query , prop )
162
+ for ( prop in query )
163
+ if ( ! newquery . hasOwnProperty ( prop ) ) dop . del ( query , prop )
159
164
160
165
// emit
161
166
shallWeEmit = false
@@ -193,7 +198,9 @@ function parse(url) {
193
198
protocol : match [ 2 ] ,
194
199
host : match [ 3 ] ,
195
200
pathname : match [ 4 ] ,
196
- path : match [ 4 ] . split ( '/' ) . filter ( function ( item ) { return item . length > 0 } ) ,
201
+ path : match [ 4 ] . split ( '/' ) . filter ( function ( item ) {
202
+ return item . length > 0
203
+ } ) ,
197
204
search : match [ 5 ] ,
198
205
query : query ,
199
206
hash : match [ 6 ] || ''
@@ -202,16 +209,19 @@ function parse(url) {
202
209
location . href = getHref ( location )
203
210
204
211
if ( location . search . length > 1 ) {
205
- location . search . substr ( 1 ) . split ( '&' ) . forEach ( function ( item ) {
206
- if ( item . length > 0 ) {
207
- var equal = item . indexOf ( '=' )
208
- equal > - 1
209
- ? ( location . query [ item . substr ( 0 , equal ) ] = item . substr (
210
- equal + 1
211
- ) )
212
- : ( location . query [ item ] = '' )
213
- }
214
- } )
212
+ location . search
213
+ . substr ( 1 )
214
+ . split ( '&' )
215
+ . forEach ( function ( item ) {
216
+ if ( item . length > 0 ) {
217
+ var equal = item . indexOf ( '=' )
218
+ equal > - 1
219
+ ? ( location . query [ item . substr ( 0 , equal ) ] = item . substr (
220
+ equal + 1
221
+ ) )
222
+ : ( location . query [ item ] = '' )
223
+ }
224
+ } )
215
225
}
216
226
217
227
return location
0 commit comments