basyura's blog

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

hatena.vim を読む その12

function! s:HatenaParseContent(content)
    " タイトルを抽出
    let diary_title = matchstr(
        a:content, '<title>\zs.\{-}\ze</title>')
    "  日付タイトルを取得
    let day_title   = matchstr(
        a:content, '<input .\{-}name="title" .\{-}value="\zs.\{-}\ze"')
    " タイムスタンプを取得
    let timestamp   = matchstr(
        a:content, 'name="timestamp"\s*value="\zs[^"]*\ze"')
    " セションIDを取得
    let rkm         = matchstr(
        a:content, 'name="rkm"\s*value="\zs[^"]*\ze"')
    " ボディ部を取得
    let body        = s:HtmlUnescape(
        matchstr(a:content, 
        '<textarea.\{-}name="body"[^>]*>\zs.\{-}\ze</textarea>'))
    " ディクショナリに登録して返却
    let result={}
    let result['diary_title']=diary_title
    let result['day_title']=day_title
    let result['timestamp']=timestamp
    let result['rkm']=rkm
    let result['body']=body
    return result
endfunction