Files
akaza/developers/azik.pl
Tokuhiro Matsuno fcebd87b07 Support AZIK (#238)
2023-01-26 11:33:26 +09:00

219 lines
7.7 KiB
Perl
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

use strict;
use warnings FATAL => "all";
use v5.10.0;
use utf8;
# romkan/azik.yml の生成スクリプト
binmode STDOUT, ":utf8";
binmode STDERR, ":utf8";
sub run {
my ($name, $s) = @_;
my @s = split /\n/, $s;
my @shiins = split /\s+/, shift @s;
if ($shiins[0] eq "") {
shift @shiins;
}
say " # $name";
for my $i (0..@shiins-1) {
# 「あ」行用の特別処置
$shiins[$i] = "" if $shiins[$i] eq "*";
}
for my $cols (@s) {
my @cols = split /\s+/, $cols;
my $boin = shift @cols;
for my $i (0..@cols-1) {
my $col = $cols[$i];
next if !defined($col) || $col eq "" || $col eq "*";
say " @{[$shiins[$i]]}$boin: $col";
}
}
say"";
}
say "---";
say "mapping:";
say " # generated by developers/azik.pl";
say " # http://hp.vector.co.jp/authors/VA002116/azik/azikinfo.htm";
run('清音(あ行〜わ行)', <<'EOT');
* k s t n h f m y r w
a
i
u
e
o
EOT
run('撥音拡張', <<'EOT');
k s t n h f m y r w
z かん さん たん なん はん ふぁん まん やん らん わん
n かん さん たん はん ふぁん * やん らん わん
k きん しん ちん にん ひん ふぃん みん りん うぃん
j くん すん つん ぬん ふん ふん むん ゆん るん
d けん せん てん ねん へん ふぇん めん れん うぇん
l こん そん とん のん ほん ふぉん もん よん ろん うぉん
EOT
run('二重母音拡張', <<'EOT');
k s t n h f m y r w
q かい さい たい ない はい ふぁい まい やい らい わい
h くう すう つう ぬう ふう ふう むう ゆう るう
w けい せい てい ねい へい ふぇい めい れい
p こう そう とう のう ほう ふぉー もう よう ろう うぉー
EOT
#  発音拡張キーのZは左手小指のため多少打ちにくい。このため、Nを発音拡張キーの互換キーとして割り当てている。(mnは例外的に、特殊拡張として【もの】が入力される)
run('撥音拡張互換キー', <<'EOT');
k s t n h f m y r w
n かん さん たん はん ふぁん もの やん らん わん
EOT
run('濁音、半濁音 撥音拡張、二重母音拡張', <<'EOT');
g z d b p
a
i
u
e
o
EOT
run('濁音、半濁音 撥音拡張、二重母音拡張', <<'EOT');
g z d b p
z がん ざん だん ばん ぱん
n がん ざん だん ばん ぱん
k ぎん じん ぢん びん ぴん
j ぐん ずん づん ぶん ぷん
d げん ぜん でん べん ぺん
l ごん ぞん どん ぼん ぽん
EOT
run('濁音、半濁音 撥音拡張、二重母音拡張', <<'EOT');
g z d b p
q がい ざい だい ばい ぱい
h ぐう ずう づう ぶう ぷう
w げい ぜい でい べい ぺい
p ごう ぞう どう ぼう ぽう
EOT
run('ザ行は打ちにくいので以下のようにしても打てるようにする。', <<'EOT');
z
c
v ざい
x ぜい
EOT
run('拗音、拗音互換', <<'EOT');
ky kg sy x ty c ny ng hy hg my mg ry
a きゃ きゃ しゃ しゃ ちゃ ちゃ にゃ にゃ ひゃ ひゃ みゃ みゃ りゃ
u きゅ きゅ しゅ しゅ ちゅ ちゅ にゅ にゅ ひゅ ひゅ みゅ みゅ りゅ
e きぇ きぇ しぇ しぇ ちぇ ちぇ にぇ にぇ ひぇ ひぇ みぇ みぇ りぇ
o きょ きょ しょ しょ ちょ ちょ にょ にょ ひょ ひょ みょ みょ りょ
EOT
run('拗音、拗音互換', <<'EOT');
ky kg sy x ty c ny ng hy hg my mg ry
z きゃん きゃん しゃん しゃん ちゃん ちゃん にゃん にゃん ひゃん ひゃん みゃん みゃん りゃん
n きゃん きゃん しゃん しゃん ちゃん ちゃん にゃん にゃん ひゃん ひゃん みゃん みゃん りゃん
j きゅん きゅん しゅん しゅん ちゅん ちゅん にゅん にゅん ひゅん ひゅん みゅん みゅん りゅん
d きぇん きぇん しぇん しぇん ちぇん ちぇん にぇん にぇん ひぇん ひぇん みぇん みぇん りぇん
l きょん きょん しょん しょん ちょん ちょん にょん にょん ひょん ひょん みょん みょん りょん
EOT
run('拗音、拗音互換', <<'EOT');
ky kg sy x ty c ny ng hy hg my mg ry
q きゃい きゃい しゃい しゃい ちゃい ちゃい にゃい にゃい ひゃい ひゃい みゃい みゃい りゃい
h きゅう きゅう しゅう しゅう ちゅう ちゅう にゅう にゅう ひゅう ひゅう みゅう みゅう りゅう
w きぇい きぇい しぇい しぇい ちぇい ちぇい にぇい にぇい ひぇい ひぇい みぇい みぇい りぇい
p きょう きょう しょう しょう ちょう ちょう にょう にょう ひょう ひょう みょう みょう りょう
EOT
run('拗音 (濁音、半濁音)', <<'EOT');
gy zy j by py pg
a ぎゃ じゃ じゃ びゃ ぴゃ ぴゃ
u ぎゅ じゅ じゅ びゅ ぴゅ ぴゅ
e ぎぇ じぇ じぇ びぇ ぴぇ ぴぇ
o ぎょ じょ じょ ぴょ ぴょ ぴょ
EOT
run('拗音 (濁音、半濁音)', <<'EOT');
gy zy j by py pg
z ぎゃん じゃん じゃん びゃん ぴゃん ぴゃん
n ぎゃん じゃん じゃん びゃん ぴゃん ぴゃん
j ぎゅん じゅん じゅん びゅん ぴゅん ぴゅん
d ぎぇん じぇん じぇん びぇん ぴぇん ぴぇん
l ぎょん じょん じょん びょん ぴょん ぴょん
EOT
run('拗音 (濁音、半濁音)', <<'EOT');
gy zy j by py pg
q ぎゃい じゃい じゃい びゃい ぴゃい ぴゃい
h ぎゅう じゅう じゅう びゅう ぴゅう ぴゅう
w ぎぇい じぇい じぇい びぇい ぴぇい ぴぇい
p ぎょう じょう じょう びょう ぴょう ぴょう
EOT
run('拗音 (外来語、他)', <<'EOT');
f v tg dc w ws l ly
a ふぁ
i ふぃ てぃ でぃ うぃ
u とぅ どぅ
e ふぇ うぇ
o ふぉ うぉ
EOT
# 撥音拡張、二重母音拡張
run('拗音 (外来語、他)', <<'EOT');
f v tg dc w ws l ly
z ふぁん ぁん
k ふぃん ぃん てぃん でぃん うぃん ぃん
j ふん とぅん どぅん ぅん ゅん
d ふぇん ぇん うぇん ぇん
l ふぉん ぉん をん うぉん ぉん ょん
n ふぁん ぁん
EOT
# 二重母音拡張
run('拗音 (外来語、他)', <<'EOT');
f v tg dc w ws l ly
q ふぁい ぁい ぁい ゃい
h ふう とぅう どぅう ぅう ゅう
w ふぇい ぇい うぇい ぇい
p ふぉお ぉお をお うぉお ぉお ょお
EOT
say " # 促音、撥音、長音符";
say " \";\": っ";
say " q: ん";
say " \"-\": ー";
say " \":\": ー";
say "";
# 特殊拡張
my $t = <<'EOT';
  こと   した     たち     ひと  
  わた    もの    ます    です 
  かも    ため    でも    から 
  する    たら    なる    よる 
  られ    ざる    また    たび 
  ねば    びと    がら    ごと 
  にち    だち    われ     
EOT
$t =~ tr/[-]/[a-z]/;
say " # 特殊拡張";
for my $line (split /\n/, $t) {
my @cells = split /\s+/, $line;
while (@cells) {
my $k = shift @cells;
my $v = shift @cells;
say " $k: $v";
}
}