aboutsummaryrefslogtreecommitdiffstats
path: root/morse.js
diff options
context:
space:
mode:
authoranekos2011-08-26 22:53:16 +0900
committeranekos2011-08-26 22:53:16 +0900
commit94e2f57de9c3384a1a1ce4a68dbff4c393a296b2 (patch)
tree84555056035938c4dd0bd227cc81db41cf35ba57 /morse.js
parent2962193f17e7f07556e5a38d2615c50fefd291e3 (diff)
downloadvimperator-plugins-94e2f57de9c3384a1a1ce4a68dbff4c393a296b2.tar.bz2
平文(?)にもどす関数をひっそり追加
Diffstat (limited to 'morse.js')
-rw-r--r--morse.js41
1 files changed, 34 insertions, 7 deletions
diff --git a/morse.js b/morse.js
index af5f908..9543307 100644
--- a/morse.js
+++ b/morse.js
@@ -120,7 +120,7 @@ let INFO =
9: '----.',
0: '-----',
'.': '.-.-.-',
- '': '--..--',
+ ',': '--..--',
'?': '..--..',
' ': '-...-',
'-': '-....-',
@@ -199,9 +199,24 @@ let INFO =
'\u30BB': '.---.',
'\u30B9': '---.-',
'\u30F3': '.-.-.',
+ '゛': '..',
+ '゜': '..--.'
};
- let [short, long, interval] = [100, 400, 200];
+ let codeTableIAlphabet = {};
+ let codeTableIKana = {};
+
+ for (let [n, v] in Iterator(codeTable)) {
+ if (/[\w.,? \-\/@]/.test(n))
+ codeTableIAlphabet[v] = n;
+ }
+
+ for (let [n, v] in Iterator(codeTable)) {
+ if (/[^a-z]/.test(n))
+ codeTableIKana[v] = n;
+ }
+
+ let [defaultShort, defaultLong, defaultInterval] = [100, 400, 200];
let keybd_event =
(function () {
@@ -251,6 +266,18 @@ let INFO =
function toCode (text)
Array.slice(text).map(function (c) codeTable[c.toLowerCase()] || '').join(' ');
+ function fromCode (text, kana, char) {
+ if (char) {
+ let re = new RegExp(util.escapeRegex(char[0]) + '|' + util.escapeRegex(char[1]), 'g');
+ text = text.replace(re, function (m) (m === char[0] ? '.' : '-'));
+ }
+
+ let table = kana ? codeTableIKana : codeTableIAlphabet;
+ let result = '';
+ text.split(/\s+/).forEach(function (c) (result += table[c]));
+ return result;
+ }
+
commands.addUserCommand(
['morse'],
'Mooooooooooooorse',
@@ -260,11 +287,11 @@ let INFO =
args['-clipboard'] && util.copyToClipboard(code);
args['-echo'] && liberator.echo(code);
- [short, long, interval] =
+ let [short, long, interval] =
[
- args['-short'] || short,
- args['-long'] || long,
- args['-interval'] || interval
+ args['-short'] || defaultShort,
+ args['-long'] || defaultLong,
+ args['-interval'] || defaultInterval
];
Morse(short, long, interval)(code);
@@ -277,13 +304,13 @@ let INFO =
[['-short', '-s'], commands.OPTION_INT],
[['-long', '-l'], commands.OPTION_INT],
[['-interval', '-i'], commands.OPTION_INT],
+ [['-char', '-char'], commands.OPTION_STRING],
[['-raw', '-r'], commands.OPTION_NOARG]
],
},
true
);
-
})();
// vim:sw=2 ts=2 et si fdm=marker: