aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoranekos2008-11-07 11:58:20 +0000
committeranekos2008-11-07 11:58:20 +0000
commit26e7a3b656e1f9853cde1f7010afa3c21ffeaae5 (patch)
tree2ecb96e3e94ae55c34dbe5bae530407002aae626
parent94fb1e9f847f99e2f31ee41228d1232990485b93 (diff)
downloadvimperator-plugins-26e7a3b656e1f9853cde1f7010afa3c21ffeaae5.tar.bz2
コマンドラインから指定のテキストファイルにメモを書き込めるプラグイン
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@22952 d0d07461-0603-4401-acd4-de1884942a52
-rw-r--r--memo.js87
1 files changed, 87 insertions, 0 deletions
diff --git a/memo.js b/memo.js
new file mode 100644
index 0000000..33a96b4
--- /dev/null
+++ b/memo.js
@@ -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());
+ }
+ }
+ );
+
+})();