キャメル・ヘンカン

作ってみました。増井さんのromakana.plを使ってみました。

出力例:
C:\>perl krtest.pl ニンゲン・ナンテ・ララーラーララララー?
ニンゲン・ナンテ・ララーラーララララー? -> NingenNanteRara-ra-rararara-

C:\>perl krtest.pl NingenNanteRara-ra-rararara-
(Ningen:Nante:Rara-ra-rararara-)
NingenNanteRara-ra-rararara- -> ニンゲン・ナンテ・ララーラーララララー?

実行結果をみて思ったんですが、小文字を_で繋ぐ今のURLの方が読みやすいですね。--シマダ・ケーキ
母音が多すぎるからですかねぇ。--カモノハ・シ

変換文字列の話題はカナ・ロマ・ヘンカンにて

以下、ソースと実行結果

http://clan.sakura.ne.jp/storage/KanaRoma.20060226.zip
perl rklist2rk.pl rklist.txt > rkheader.pl
perl krtest.pl キャメル・ヘンカン
perl krtest.pl KyameruHenkan

----
#!perl


require 'getopts.pl';
require 'rkheader.pl';
require 'romakana.pl';
use Jcode;
my $scriptcode = 'euc';
my $consolecode = 'sjis';

sub usage {
    print STDERR "krtest - test Roma-Kana\n";
    print STDERR " % krtest word\n";
    print STDERR " % krtest -f wordsfile\n";
    exit;
}


my $word;

&usage unless &Getopts('f');
&usage unless $word = shift;

$options = join(' ', @ARGV);

&main;


sub main {
    my $result;
    if($opt_f) {
        open(table, "$word") || die "Can't open words file.";
        while(<table>){
            chop;
            next if /^#/;
            
            $result = &camel_convert($_);
            my $test = &camel_convert($result);
            if($_ eq $test) {
                print "OK : $_ -> $result\n";
            } else {
                print "NG : $_ -> $result -> $test\n";
            }
        }
        close table;
    } else {
        $result = &camel_convert($word);
        print "$word -> $result\n";
    }
}

sub camel_convert {
    my ($word) = @_; 
    my $source = &trim_spaces($word);
    my $result;
    
    &code_convert(\$source, $scriptcode, $consolecode);
    if(&Jcode::getcode($source) eq 'ascii') {
        $source =~ s/[A-Z]/:$&/g;
        $source =~ s/^://g;
        print "($source)\n" unless($opt_f);
        my @p = split(/:/, $source);
        my @r;
        foreach ( @p ) {
            my $w = &roma2kana($_);
            push @r, $w;
        }
        $result = join '・', @r;
        &code_convert(\$result, $consolecode, $scriptcode);
    } else {
        my @p = split('・', $source);
        foreach ( @p ) {
            my $w = &kana2roma($_);
            print "<$w>" unless($opt_f);
            split( /,/, $w );
            $w = @_[0];
            $result .= "\L\u$w";
        }
    }
    return $result;
}

sub code_convert {
    my ($contentref, $outcode, $incode) = @_;
    $incode = $scriptcode unless(defined $incode);
    &Jcode::convert($contentref, $outcode, $incode) if($outcode ne $incode);
    return $contentref;
}

sub trim_spaces {
    my ( $src ) = @_;
    
    $src =~ s/^\s*(.*?)\s*$/$1/;        # trim space
    return $src;
}

----
現ページ一覧で可逆テストしてみました。
OK : キャメル・ヘンカン -> KyameruHenkan
OK : キチノ・バグ -> KitinoBagu
OK : カモノハ・シ -> KamonohaShi
OK : カナウィキノ・ヨウボウ -> KanawikinoYoubou
OK : コスタ・リカ -> KosutaRika
OK : コノウィキデ・アソブ・ヒトタチ -> KonowikideAsobuHitotati
OK : ナカグロ・モンダイ -> NakaguroMondai
OK : ユレ・モンダイ -> YureMondai
OK : ニタモノ・ケンサク -> NitamonoKensaku
OK : ネタ・ページ -> NetaPe-ji
OK : コメント・ページ -> KomentoPe-ji
OK : エスエヌエス・ミクシィ -> EsuenuesuMikusyi
OK : コビト・レンジャー -> KobitoRenja-
OK : ナカグロ・ページヘノ・イコウ -> NakaguroPe-jihenoIkou
OK : シマダ・ケーキ -> ShimadaKe-ki
OK : サイキンノ・コウシン -> SaikinnoKoushin
OK : ブラケット・ネーム -> BurakettoNe-mu
OK : ウィキネームノ・ニホンゴカ -> Wikine-munoNihongoka
OK : エーゴ・ウラヤマシス -> E-goUrayamashisu
OK : カタカナ・キホウ -> KatakanaKihou
OK : ローマジ・ヘンカン・ルール -> Ro-majiHenkanRu-ru
OK : ウィキ・ヤロウ -> WikiYarou
OK : ウィキ・エンジン -> WikiEnjin
OK : ウィキページ・ファイル -> Wikipe-jiFairu
OK : スタティック・ページ -> SutathikkuPe-ji
OK : エディット・リンク -> EdhittoRinku
OK : バトルフィーバー・ジェイ -> Batorufi-ba-Jei
OK : ページ・サクジョ・キノウ -> Pe-jiSakujoKinou
OK : カナ・ウィキ -> KanaWiki
OK : ナカグロ・ユウコウ -> NakaguroYuukou
OK : ケータイ・ティッシュ・ハンカチ -> Ke-taiThisshuHankati
OK : デイビッド・フリーア -> DeibiddoFuri-a
OK : ギョウギョウシ -> Gyougyoushi
OK : テレカクシ -> Terekakushi
OK : ドキュメント -> Dokyumento
OK : バトルシャーク -> Batorusha-ku
OK : ワンタイムパスワード -> Wantaimupasuwa-do
OK : ノープロブレム -> No-puroburemu
OK : コクミンセイ -> Kokuminsei
OK : コンテンツ -> Kontentsu
OK : タイムラグ -> Taimuragu
OK : ショボンヌ -> Shobonnu
OK : ショボーン -> Shobo-n
OK : ブランケット -> Buranketto
OK : テクノロジー -> Tekunoroji-
OK : コンピュータ -> Konpyu-ta
OK : プログラム -> Puroguramu
OK : ブラケット -> Buraketto
OK : ツカモト -> Tsukamoto
OK : ツカモトマキオ -> Tsukamotomakio

ギャクリンク:カモノハ・シ:カナウィキ・ドット・ネット:キャメル・ヘンカン:カナ・ロマ・ヘンカン
[Edit][PageList][RSS]
KanaWiki
HTML convert time to 0s