diff options
author | anekos | 2008-11-07 11:58:20 +0000 |
---|---|---|
committer | anekos | 2008-11-07 11:58:20 +0000 |
commit | 26e7a3b656e1f9853cde1f7010afa3c21ffeaae5 (patch) | |
tree | 2ecb96e3e94ae55c34dbe5bae530407002aae626 /memo.js | |
parent | 94fb1e9f847f99e2f31ee41228d1232990485b93 (diff) | |
download | vimperator-plugins-26e7a3b656e1f9853cde1f7010afa3c21ffeaae5.tar.bz2 |
コマンドラインから指定のテキストファイルにメモを書き込めるプラグイン
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@22952 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'memo.js')
-rw-r--r-- | memo.js | 87 |
1 files changed, 87 insertions, 0 deletions
@@ -0,0 +1,87 @@ +// @name memo +// @description to write a memo +// @description-ja メモを書く +// @license Creative Commons 2.1 (Attribution + Share Alike) +// @version 1.0 +// @author anekos (anekos@snca.net) +// @maxVersion 2.0pre +// @minVersion 2.0pre +// ==/VimperatorPlugin== +// +// Usage: +// :memo +// show the memo that was written. +// :memo fooooobar! +// write "fooooobar!" to the specified memo file. +// +// Usage-ja: +// :memo +// 書かれたメモを表示する +// :memo fooooobar! +// "fooooobar!" と、メモに書く +// +// Links: +// +// References: +// http://developer.mozilla.org/index.php?title=Ja/Code_snippets/File_I%2F%2FO + +(function () { + let localfilepath = liberator.globalVariables.memo_filepath || io.expandPath('~/.vimpmemo'); + let charset = 'UTF-8' + + //ネタ的 + let lz = function(s,n)(s+'').replace(new RegExp('^.{0,'+(n-1)+'}$'),function(s)lz('0'+s,n)); + + function dateTime () { + with (new Date()) + return lz(getYear() + 1900, 4) + '/' + + lz(getMonth(), 2) + '/' + + lz(getDate(), 2) + ' ' + + lz(getHours(), 2) + ':' + + lz(getMinutes(), 2) ; + } + + function filepath () { + let result = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile); + result.initWithPath(localfilepath); + return result; + } + + function puts (line) { + line = dateTime() + "\t" + line + "\n"; + let out = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream); + let conv = Cc['@mozilla.org/intl/converter-output-stream;1']. + createInstance(Ci.nsIConverterOutputStream); + out.init(filepath(), 0x02 | 0x10 | 0x08, 0664, 0); + conv.init(out, charset, line.length, + Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER); + conv.writeString(line); + conv.close(); + out.close(); + } + + function gets () { + let file = Cc['@mozilla.org/network/file-input-stream;1'].createInstance(Ci.nsIFileInputStream); + file.init(filepath(), 1, 0, false); + let conv = Cc['@mozilla.org/intl/converter-input-stream;1'].createInstance(Ci.nsIConverterInputStream); + conv.init(file, charset, file.available(), conv.DEFAULT_REPLACEMENT_CHARACTER); + let result = {}; + conv.readString(file.available(), result); + conv.close(); + file.close(); + return result.value; + } + + commands.addUserCommand( + ['memo'], + 'Write memo', + function (arg) { + if (arg.string) { + puts(arg.string); + } else { + liberator.echo(gets()); + } + } + ); + +})(); |