diff options
author | anekos | 2011-08-26 22:53:16 +0900 |
---|---|---|
committer | anekos | 2011-08-26 22:53:16 +0900 |
commit | 94e2f57de9c3384a1a1ce4a68dbff4c393a296b2 (patch) | |
tree | 84555056035938c4dd0bd227cc81db41cf35ba57 | |
parent | 2962193f17e7f07556e5a38d2615c50fefd291e3 (diff) | |
download | vimperator-plugins-94e2f57de9c3384a1a1ce4a68dbff4c393a296b2.tar.bz2 |
平文(?)にもどす関数をひっそり追加
-rw-r--r-- | morse.js | 41 |
1 files changed, 34 insertions, 7 deletions
@@ -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: |