Changeset 7888

Show
Ignore:
Timestamp:
03/13/08 16:52:30 (7 years ago)
Author:
motemen
Message:
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/vim/hatena/plugin/hatena.vim

    r7654 r7888  
    385385    let [base_url, user, cookie_file] = a:login_info 
    386386 
    387     if base_url =~ 'g[.]hatena' 
    388         let fenc = 'utf-8' 
    389     else 
    390         let fenc = 'euc-jp' 
    391     endif 
     387    "if base_url =~ 'g[.]hatena' 
     388    "    let fenc = 'utf-8' 
     389    "else 
     390    "    let fenc = 'utf-8' 
     391    "endif 
     392    let fenc = 'utf-8' 
     393 
     394    let paste_save = &paste 
    392395 
    393396    if has_key(a:entry, 'body_file') 
     
    400403        let body_file = tempname() 
    401404        execute 'new ' . body_file 
    402         call append(0, a:entry.body) 
     405        set paste 
     406        normal! C=a:entry.body 
    403407        let &fileencoding = fenc 
    404408        write 
     
    408412    let title_file = tempname() 
    409413    execute 'new ' . title_file 
     414    set paste 
    410415    normal! C=a:entry.title 
    411416    let &fileencoding = fenc 
    412417    write 
     418    bdelete 
     419 
     420    let &paste = paste_save 
    413421 
    414422    let post_url = base_url . user . '/' 
    415423    if has_key(a:entry, 'date') && has_key(a:entry, 'timestamp') 
    416         let post_url += a:entry.date . '/' . a:entry.timestamp . '/' 
    417     endif 
    418  
    419     return system(printf('%s %s -b "%s" -F "rkm=%s" -F "title=<%s" -F "body=<%s" -D -', 
     424        let post_url .= a:entry.date . '/' . a:entry.timestamp 
     425    endif 
     426 
     427    let g:post_files = [title_file, body_file] 
     428 
     429    let json = system(printf('%s %s -b "%s" -F "rkm=%s" -F "title=<%s" -F "body=<%s" -D -', 
    420430                \ s:curl_cmd, 
    421431                \ post_url, 
     
    425435                \ body_file 
    426436                \ )) 
     437 
     438    let m = matchlist(json, '\v''path'':''/[^/]+/([^/]{-})/([^/]{-})''') 
     439    return { 'date': m[1], 'timestamp': m[2] } 
     440endfunction 
     441 
     442" はてなダイアリー/グループに新しいエントリを投稿する 
     443" login_info: HatenaLogin() で得られるもの 
     444" rkm: HatenaGetRKM() などで得られるもの 
     445" entry: エントリの情報、以下のキーを持つ 
     446"  * date 
     447"  * timestamp 
     448function! HatenaGetEntry(login_info, rkm, entry) 
     449    let [base_url, user, cookie_file] = a:login_info 
     450 
     451    if base_url =~ 'g[.]hatena' 
     452        let fenc = 'utf-8' 
     453    else 
     454        let fenc = 'euc-jp' 
     455    endif 
     456 
     457    let get_url = base_url . user . '/' . a:entry.date . '/' . a:entry.timestamp . '?mode=json' 
     458    let json = system(printf('%s %s -b "%s"', 
     459                \ s:curl_cmd, 
     460                \ get_url, 
     461                \ cookie_file, 
     462                \ )) 
     463 
     464    let json = iconv(json, fenc, &encoding) 
     465 
     466    let m = matchlist(json, '\v.*''body'':''(.{-})''&.*''title'':''(.{-})''') 
     467 
     468    if len(m) 
     469        let [body, title] = m[1:2] 
     470        let body = substitute(body, '\\n', "\n", 'g') 
     471        return { 'date': a:entry.date, 'timestamp': a:entry.timestamp, 'body': body, 'title': title } 
     472    else 
     473        return { } 
     474    endif 
    427475endfunction 
    428476