#lang scheme/base
(require (planet bzlib/base)
(planet bzlib/shp)
scheme/string
(planet bzlib/file)
)
(define flash-base-path (make-parameter "/flash"))
(define (path->id path)
(string-join (path-helper path) "_"))
(define (path-helper path)
(cond ((pair? path) path)
((string? path) (regexp-split #px"\\/" path ))
((path? path) (path-helper (path->string path)))))
(define (flash-path path)
(build-path* ($htdocs) (flash-base-path) path))
(define (flash-url path)
(string-join (cons (flash-base-path) (path-helper path)) "/"))
(define (flash (path ($pathinfo)) #:id (id #f) #:base (base (flash-base-path)) #:height (height 400) #:width (width 400))
(define (helper path id width height)
`(object ((width ,width)
(height ,height)
(id ,id))
(param ((name "movie") (value ,path)) "")
(param ((name "allowscriptaccess") (value "always")) "")
(embed ((src ,path)
(width ,width)
(height ,height)
(name ,id)
(type "application/x-shockwave-flash")
(allowscriptaccess "always")
) "")))
(helper (flash-url path)
(if (not id) (path->id path) id)
(number->string width)
(number->string height)))
(provide/contract
(flash (->* ()
((or/c path-string? (listof string?))
#:id (or/c false/c string?)
#:base path-string?
#:height exact-positive-integer?
#:width exact-positive-integer?)
any))
(flash-base-path (parameter/c path-string?))
(flash-path (-> (or/c path-string? (listof string?)) path-string?))
(flash-url (-> (or/c path-string? (listof string?)) path-string?))
)