跳轉到內容

Rebol 程式設計/exists-thru?

來自華夏公益教科書,開放的書籍,開放的世界
EXISTS-THRU? url /check info 

檢查磁碟快取中是否存在檔案。返回:none,false(已過期)或檔案

EXISTS-THRU? 是一個函式值。

  • url -- (型別:url 檔案)
  • /check -- 檢查快取檔案的版本、校驗和/安全、日期和/或大小。
    • info -- (型別:塊 元組 二進位制 邏輯 日期 none)

原始碼

[編輯 | 編輯原始碼]
exists-thru?: func [
    {Checks if a file is in the disk cache. Returns: none, false (out of date), or file} 
    url [url! file!] 
    /check {Checks version, checksum/secure, date, and/or size of cached file.} 
    info [block! tuple! binary! logic! date! none!] 
    /local file data date
][
    if not file: path-thru url [return none] 
    if not exists? file [return false] 
    if not check [return file] 
    if none? info [return file] 
    if tuple? info [
        if not data: attempt [load/header script? file] [return none] 
        if all [
            object? data: data/1 
            tuple? data/version 
            data/version >= info
        ] [return file] 
        return false
    ] 
    if binary? info [
        if not data: attempt [read/binary file] [return none] 
        if info = checksum/secure data [return file] 
        return false
    ] 
    if not block? info [info: reduce [info]] 
    foreach item info [
        if date? item [
            date: get-modes file 'modification-date 
            if (date + 0:00:03) < item [return false]
        ] 
        if integer? item [
            if item <> size? file [return false]
        ]
    ] 
    file
]
華夏公益教科書