しょーがないので、Google Code の OAuth を使うことにした

Rubygem の oauth を coffee に移植したいなーって思ったんだけど、時間かかりすぎ感あったので、 http://code.google.com/p/oauth/ を使うことにした。
以下は理解するために書いた oauth.js のコードを coffee-script に直してみたもの。

percentEncode: (s) ->
    return "" unless s?
    if s instanceof Array
        e = ""
        for i in s
            e += '&' unless e == ""
            e += OAuth.percentEncode s[i]
        return e

    s = s.replace /\!/g, "%21"
    s = s.replace /\*/g, "%2A"
    s = s.replace /\'/g, "%27"
    s = s.replace /\(/g, "%28"
    s = s.replace /\)/g, "%29"
    s

ぱーせんとえんこーど。

formEncode: (parameters...) ->
    form = ""
    list = OAuth.getParameterList parameter

    for param in list
        value = list[p][1]
        value = "" if value == null
        form += '&' unless form == ""
        form += OAuth.percentEncode( list[p][0] ) + '=' + OAuth.percentEncode( value )
    form

ふぉーむえんこーど。

addToURL: (url, parameters...) ->
    new_url = url
    unless parameters == null
        to_add = OAuth.formEncode parameters
        if to_add.length > 0
            query_index = url.indexOf '?'
            if query_index < 0
                new_url += '?'
            else
                new_url += '&'
            new_url += to_add
    new_url

URL とパラメーターをまぜまぜしていい感じの URL を返す。