basyura's blog

あしたになったらほんきだす。

hatena.vim を読む その13

function! s:HatenaUpdate(...) " 更新する
    " 日時を取得
    " バッファスコープのそれぞれの変数が存在しない場合は終了
    if !exists('b:hatena_login_info') 
            || !exists('b:year') 
            || !exists('b:month') 
            || !exists('b:day') 
            || !exists('b:day_title') 
            || !exists('b:rkm')
        echoerr ':HatanaEdit してから :HatenaUpdate して下さい'
        return
    endif

    " ログイン
    " バッファスコープのログイン情報が存在しない場合
    if !exists('b:hatena_login_info')
        " ログイン処理を行う
        let b:hatena_login_info = s:HatenaLogin()
        " ログインできなかった場合は終了
        if !len(b:hatena_login_info)
            return
        endif
    endif
    " ログイン情報を各変数に格納
    let [base_url, user, cookie_file] = b:hatena_login_info
    " 関数に渡された引数の数が 0 より大きい場合
    if a:0 > 0
        " 一つ目の引数を day_title として設定
        let b:day_title = a:1
    "else
    "   let b:day_title = input('タイトル: ', b:day_title)
    endif
    " 変更があった場合
    if &modified
        " バッファの内容を書き出す
        write
    endif
    " ファイル名を格納する
    " expand({expr} [, {flag}])
    "       ワイルドカードと{expr}内の特殊なキーワードを展開する。
    "       戻り値は文字列。
    "       %  現在のファイル名
    let body_file = expand('%')
    " ディクショナリを生成
    let diary={'timestamp':b:timestamp, 
               'rkm':b:rkm, 
               'year':b:year,
               'month':b:month, 
               'day':b:day, 
               'day_title':b:day_title}
    " 入力内容をポストする
    let result=HatenaPost(
        base_url,user,cookie_file,diary,body_file)

    echo '更新しました'
endfunction