Changeset 11817 in project


Ignore:
Timestamp:
08/31/08 01:29:31 (12 years ago)
Author:
Ivan Raikov
Message:

Fixed to uri->string and absolute-uri.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/3/uri-generic/trunk/uri-generic.scm

    r11744 r11817  
    643643
    644644(define (absolute-uri s)
    645   (match (scheme s)
    646          ((us rst) 
    647           (match-let (((ua up rst)  (hier-part rst))
    648                       ((uq rst)     (match rst ((#\? . rst)  (query rst))
    649                                            (else (list (list) rst)))))
    650                      (make-URI scheme: us authority: ua path: up query: uq fragment: #f)))))
     645  (let ((s (if (string? s) (uri-string->char-list s) s)))
     646    (match (scheme s)
     647           ((us rst) 
     648            (match-let (((ua up rst)  (hier-part rst))
     649                        ((uq rst)     (match rst ((#\? . rst)  (query rst))
     650                                             (else (list (list) rst)))))
     651                       (make-URI scheme: (string->symbol (list->string us)) authority: ua
     652                                 path: (map uri-char-list->string up) query: (and uq (filter-map query->string uq))
     653                                 fragment: #f))))))
    651654                     
    652655
     
    662665            (string-append
    663666             ((lambda (x) (or (and x (string-append (->string x) ":")) ""))  scheme)
    664              (if authority (string-append (uri-auth->string authority userinfomap) "/") "")
     667             (if authority (string-append (uri-auth->string authority userinfomap) 
     668                                          (if (or (null? path) (not (string-prefix? "/" (car path)))) "/" ""))
     669                 "")
    665670             (string-concatenate path)
    666671             (if query (string-concatenate (cons "?" (intersperse query "&"))) "")
Note: See TracChangeset for help on using the changeset viewer.