ATOM Editor で Amazon Associate ID を含んだ商品 URL を生成する
昔,結城浩さんが Amazon の商品 URL を変換する秀丸マクロを公開されていて
これがとても便利で重宝していたのだが, ATOM Editor では使えないためどうしたものかと思っていた。
で,先日 init.coffee
に簡単なコマンドを書く方法を習ったので,上の秀丸マクロを ATOM Editor に移植してみた。
以下が init.coffee
に追記する内容。
# Amazon Associate ID を含んだ商品 URL を生成する
# クリップボードの内容を読み込み,変換してセットする
# http(s)://www.amazon.co.jp/... から始まる文字列を想定
# /dp/XXXXXXXXXX または /ASIN/XXXXXXXXXX のパタンを探す
# 変換できない場合はクリップボードの内容をそのままセットする
# refs http://d.hatena.ne.jp/hyuki/20120413/amazon
amazonUrl = (id) ->
url = atom.clipboard.read()
re = /^htt(?:p|ps):\/\/www.amazon.co.jp\//
if !re.test(url)
return url
result = url.match(/\/(?:dp|ASIN)\/(.{10})/)
if result == null
return url
else if result.length < 2
return url
asin = result[1]
if id == ""
"https://www.amazon.co.jp/exec/obidos/ASIN/#{asin}/"
else
"https://www.amazon.co.jp/exec/obidos/ASIN/#{asin}/#{id}/"
insertText = (str) ->
return unless editor = atom.workspace.getActiveTextEditor()
selection = editor.getLastSelection()
selection.insertText(str)
atom.commands.add 'atom-text-editor', 'my-tools:amazon', ->
id = '' # Amazon Associate ID
insertText(amazonUrl(id))
コードがやっつけでダサいのはご勘弁ということで1。
insertText
関数は前のときの使い回し。
これで id
に Associate ID (たとえば私の baldandersinf-22
)をセットして
https://www.amazon.co.jp/%E6%95%B0%E5%AD%A6%E3%82%AC%E3%83%BC%E3%83%AB-%E7%B5%90%E5%9F%8E-%E6%B5%A9/dp/4797341378
をクリップボードにコピーした状態でコマンドパレットから「My Tools: Amazon」を起動すると
https://www.amazon.co.jp/exec/obidos/ASIN/4797341378/baldandersinf-22/
と出力される。 変換できない場合はクリップボードの内容をそのまま出力する。
よーし,うむうむ,よーし。
参考
-
CoffeeScript は慣れん。 ↩︎