The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME / NOMO

Lingua::EO::Orthography::EO - Konvertilo de ortografio/substituaĵo por Esperantaj signoj

VERSIO

Ĉi tiu dokumento priskribas Lingua::EO::Orthography de versio 0.03.

Tradukaĵoj

en: La Angla lingvo

Lingua::EO::Orthography

eo: Esperanto

Lingua::EO::Orthography::EO (Ĉi tiu dokumento)

ja: La Japana lingvo

Lingua::EO::Orthography::JA

SINOPTIKO

    use utf8;
    use Lingua::EO::Orthography;

    my ($converter, $original, $converted);

    # ortografias...
    $converter = Lingua::EO::Orthography->new;
    $original  = q(C^i-momente, la songha h'orajxo ^sprucigas aplauwdon.);
    $converted = $converter->convert($original);

    # substituas ... (X-sistemo)
    $converter->sources([qw(orthography)]); # (akceptas multajn grafismojn)
    $converter->target('postfix_x');
        # estas la sama kiel super:
        # $converter = Lingua::EO::Orthography->new(
        #     sources => [qw(orthography)],
        #     target  => 'postfix_x',
        # );
    $original  = q(Ĉi-momente, la sonĝa ĥoraĵo ŝprucigas aplaŭdon);
    $converted = $converter->convert($original);

EKSPLIKO

6 signoj en la Esperanta alfabeto ne ekzistas en Askio (en: ASCII). Ilia signoj, kiuj havas supersignoj, estas ofte literumata en surogataj skribosistemoj historie, tio estas, de la epokoj de tipografio kaj tajpilo. Nuntempe, literumi ilin en ortografio ne estas nekutima de disvastigo de Unikodo (en: Unicode). Tamen, nun ankoraŭ estas multajn mediojn, kie enigi ilin kun klavaro esas malfacila, kaj oni povas manipuli malnovan dokumenton, kiu estas skribita en surogataj skribosistemoj.

Ĉi tiu objektema modjulo provizas vin per konverto de iliaj grafismoj.

Averto

Ĉi tiu modjulo estas sur ellasaĵo de "beta", kaj la API (eo: interfaco por aplikaprogramado, en: Application Programming Interface) eble estas ŝanĝata. Via opinio estas bonvena.

Katalogo de grafismoj

La sekvanta nomoj de grafismoj estas uzebla en new(), add_sources(), kaj tiel plu.

Mi etendos API en la estonteco, kaj vi povos adicii grafismojn alia ol ili.

orthography
    Ĉ ĉ Ĝ ĝ Ĥ ĥ Ĵ ĵ Ŝ ŝ Ŭ ŭ

    (\x{108} \x{109} \x{11C} \x{11D} \x{124} \x{125}
     \x{134} \x{135} \x{15C} \x{15D} \x{16C} \x{16D})

Ĝi estas la ortografio de Esperanta alfabeto. La konvertilo manipulas literon kun supersigno, kiu ekzistas en Unikodo. La signara enkodigo estas UTF-8.

Vi hodiaŭ devas uzi la ortografion krom se estas ia speciala motivo ĉar Unikodo sufiĉe disvastiĝas. Perl 5.8.1 aŭ pli malfrua ankaŭ manipulas ĝin ĝuste.

Mi rekomendas ke vi manipulas UTF-8 flagata ĉenon en ĉie en la via programo kaj konvertas ĉenon nur kiam enigi de ekstero aŭ eligi al ekstero (laŭpete), por ĝuste labori funkciojn kiel length() en la stato kiu enŝaltas eron de utf8. Ĝi estas la sama kiel la principo de Encode kaj tavolo de enigo kaj eligo por Perl.

zamenhof
    Ch ch Gh gh Hh hh Jh jh Sh sh U  u

Ĝi estas surogata grafismo, kiu lokas h kiel prefikso, tamen, ne lokas ĝin por u.

Ĝi estis proponata de D-ro Zamenhof, la patro de Esperanto, en Fundamento de Esperanto kaj oni nomas ĝin Zamenhofa sistemo (en: Zamenhof system). Pro tio, oni ankaŭ nomas ĝin la dua ortografio, sed ĝi ne estas tre uzata hodiaŭ.

Ĝi havas problemon, ke ĉeno kiu ampleksas inter radikoj (kiel 'flug/haven/o') ŝajnas kiel surogata ĉeno en diversaj vortoj kiel 'flughaveno'. Ĉi tiu modjulo ne evitas tian problemon nuntempe.

capital_zamenhof
    CH ch GH gh HH hh JH jh SH sh U  u

Ĝi estas varianto de 'capital_zamenhof' grafismo.

Ĝi lokas majusklan H kiel prefikso de majusklan alfabeton.

postfix_h
    Ch ch Gh gh Hh hh Jh jh Sh sh Uw uw

Ĝi estas etendita grafismo de 'capital_zamenhof' grafismo.

Ĝi lokas w kiel prefikso de u.

Oni nomas ĝin H-sistemo (en: H-system).

postfix_capital_h
    CH ch GH gh HH hh JH jh SH sh UW uw

Ĝi estas varianto de 'postfix_h' grafismo.

Ĝi lokas majusklan HW kiel prefikso de majusklan alfabeton.

postfix_x
    Cx cx Gx gx Hx hx Jx jx Sx sx Ux ux

Ĝi estas surogata grafismo, kiu lokas x kiel prefikso.

Oni nomas ĝin X-sistemoiksa sistemo (en: X-system).

Oni larĝe uzas ĝin kiel surogata grafismo, ĉar X ne ekzistas en la Esperanta alfabeto, kaj ne estas uzata ekskluzive por la afero de priskribi ne-Esperantan vorton kiel la originala lingvo.

postfix_capital_x
    CX cx GX gx HX hx JX jx SX sx UX ux

Ĝi estas varianto de 'postfix_x' grafismo.

Ĝi lokas majusklan X kiel prefikso de majusklan alfabeton.

postfix_caret
    C^ c^ G^ g^ H^ h^ J^ j^ S^ s^ U^ u^

Ĝi estas surogata grafismo, kiu lokas cirkumfleksan signon ^ kiel prefikso.

Oni nomas ĝin ĉapelita sistemo (en: caret system), ĉar cirkumfleksa signo havas la saman formon kiel cirkumflekso.

Ĉi tiu modjulo nuntempe ne subtenas rimedon, kiu priskribas u~ kiel u^.

postfix_apostrophe
    C' c' G' g' H' h' J' j' S' s' U' u'

Ĝi estas surogata grafismo, kiu lokas apostrofon ' kiel prefikso.

prefix_caret
    ^C ^c ^G ^g ^H ^h ^J ^j ^S ^s ^U ^u

Ĝi estas surogata grafismo, kiu lokas cirkumflekson ^ kiel prefikso.

Komparo kun Lingua::EO::Supersignoj

Estas Lingua::EO::Supersignoj en CPAN. Ĝi provizas nin per ekvivalentaj funkcioj de ĉi tiu modjulo.

Mi komparas ilin de sekvanta listo:

 Vidpunktoj                 ::Supersignoj   ::Orthography               Noto
 -------------------------- --------------- --------------------------- ----
 Versio                     0.02            0.03
 Povas konverti @lines      Jes             Ne                          *1
 Havas alirilojn            Jes             Jes, kaj ĝi havas
                                              utilecajn metodojn        *2
 Povas ŝanĝi grafismon      Nur 'u'         Ne (intere de pesi)         *3
 Povas manipuli             Ne              Ne (intere de pesi)         *4
   'flughaveno'
 Lingvo de API              eo: Esperanto   en: la Angla lingvo
 Povas konverti kiel N:1    Ne              Jes                         *5
 Rapideco                   Sata            Pli rapida ĉirkaŭ 400%      *6
 Tujaj dependaĵoj           1 (0 en kerno)  6 (2 en kerno)              *7
 Tutaj dependaĵoj           1 (0 en kerno)  15 (8 en kerno)             *7
 Nombro de testa kazo       3               93                          *8
 License                    Nekonata        Perl (Artistic aŭ GNU GPL)
 Laste modifita en          Mar. 2003       Mar. 2010
  1. Pro konverti @lines de Lingua::EO::Orthography:

        @converted_lines = map { $converter->convert($_) } @original_lines;
  2. Lingua::EO::Orthography havas utilecajn metodojn, kiu estas all_sources(), add_sources() kaj remove_sources().

  3. Mi planas fasoni la API de ĉi tiu funkciojn:

        $converter = Lingua::EO::Orthography->new(
            notations => {
                postfix_asterisk => [qw(C* c* G* g* H* h* J* j* S* s* U* u*)],
            },
        );
    
        $notations_ref = $converter->notations;
    
        @notations = $converter->all_notations;
    
        @notations = $converter->notations({
            postfix_underscore => [qw(C_ c_ G_ g_ H_ h_ J_ j_ S_ s_ U_ u_)],
        });
    
        $converter->add_notations(
            postfix_diacritics => [qw(C^ c^ G^ g^ H^ h^ J^ j^ S^ s^ U~ u~)],
        );
  4. Mi planas fasoni la API de ĉi tiu funkciojn:

        $converter = Lingua::EO::Orthography->new(
            ignore_words => [qw(
                bushaltejo flughaveno Kinghaio ...
            )],
        );
    
        $ignore_words_ref = $converter->ignore_words;
    
        @ignore_words = $converter->all_ignore_words;
    
        @ignore_words = $converter->ignore_words([qw(kuracherbo)]);
    
        $converter->add_ignore_words([qw(
            longhara navighalto ...
        )]);
  5. Mi supozas, ke vi povas fasoni vian praktikan aplikaĵon kiel ĝi akceptas oblajn grafismojn, de mia travivaĵo.

    Mi inkluzivas ekzemplon en la distribuaĵo. Lingua::EO::Orthography povas konverti ĉenon al la ortografio unufoje, kiel examples/converter.pl. La ekvivalento en Lingua::EO::Supersignoj estas examples/correspondent.pl. Tiuokaze, vi devas konverti ĉenon dum vi anstataŭigas fontan grafismon.

  6. Lingua::EO::Orthography povas konverti ĉenon pli rapida ĉirkaŭ 400% ol Lingua::EO::Supersignoj.

    La kaŭzo de la diferenco estas kaŝmemori ŝablonan rekonon de regula esprimo kaj signan konveran tablon por anstataŭigi ĉenon, de Memoize. Plue, Lingua::EO::Orthography povas konverti signojn de oblaj grafismoj unufoje.

    Vidu examples/benchmark.pl en ĉi tiu distribuaĵo.

  7. La fonto de dependaĵoj estas http://deps.cpantesters.org/.

    Tia numero ekskluzivas modjulojn por kunmeti kaj testi.

    Ĉiu dependaĵoj de Lingua::EO::Orthography havas certan favoran opinion. Mi sufiĉe aprobas tiujn rekomendojn.

    Tamen, mi pesas redukti dependaĵojn. I jam rezignis, ke dependigi ĉi tiun modjulon de namespace::clean, namespace::autoclean, kaj tiel plu.

  8. Tia numero ekskluzivas testojn de aŭtoro.

METODOJ

Konstruilo

new

    $converter = Lingua::EO::Orthography->new(%init_arg);

Liveras objekton de Lingua::EO::Orthography, kiu estas konvertilo.

Akceptas hakettipon (en: hash) kiel konverta ĝisrandigo. Vi povas atribui sources kaj/aŭ target kiel klavo de la hakettipo.

sources => \@source_notations

Liveras referencon al tabeltipo (en: array reference) aŭ :all kiel fontaj grafismoj.

:all estas ekvivalento al zamenhof, capital_zamenhof, postfix_h, postfix_capital_h, postfix_x, postfix_capital_x, postfix_caret, postfix_apostrophe kaj prefix_caret.

Se vi nefaras atribui ĝin, la konvertilo konsideras ke vi atribuas :all al ĝi.

Se vi atribuas valoron ekskluzive de :all kaj referenco al tabeltipo, numero de grafismaj elementoj estas 0 aŭ grafismaj elementoj havas nekonatan grafismon aŭ undef, la konvertilo ĵetas escepton.

target => $target_notation

Liveras ĉenon kiel cela grafismo.

Se vi nefaras atribui ĝin, la konvertilo konsideras ke vi atribuas orthography al ĝi.

Se vi atribuas nekonatan grafismon aŭ undef, la konvertilo ĵetas escepton.

Aliriloj

sources

    $source_notations_ref = $converter->sources;

Liveras fontajn grafismojn kiel referenco al tabeltipo. Se vi deziras akiri ĝin kiel referenco al tabeltipo, vi povas uzi all_sources().

    $source_notations_ref = $converter->sources(\@notations);

Akceptas referencon al tabeltipo kiel fontaj grafismoj. Vi povas uzi grafismojn kiel konstruilo new().

Liveraĵo estas la sama kiel kiam argumento ne estas liverata.

target

    $target_notation = $converter->target;

Liveras celan grafismon kiel skalaro (en: scalar).

    $target_notation = $converter->target($notation);

Akceptas ĉenon kiel cela grafismo. Vi povas uzi grafismojn kiel konstruilo new().

Liveraĵo estas la sama kiel kiam argumento ne estas liverata.

Konvertilo

convert

    $converted_string = $converter->convert($original_string);

Akceptas ĉenon, konvertas ĝin, kaj liveras ĉenon. Argumenta ĉeno ne estas poluata de ĉi tiu metodo, tio estas, argumenta ĉeno ne estas ŝanĝata de kromefiko de ĉi tiu metodo. Konvertado de ĉeno estas bazita sur grafismoj, kiuj estas atribuita ĉe konstruilo new() aŭ aliriloj de sources() kaj target().

Ĉeno estas usklecodistinga (en: case-sensitive). Tio estas, la konvertilo ne konsideras cX kiel surogataj grafismoj en 'postfix_x' grafismo, kaj ne konvertas ĝin.

Ĉeno de argumento devas enŝalti flagon de UTF8. Ĉeno de liversaĵo ankaŭ enŝaltiĝas.

URL aŭ adreso de retpoŝto havas permeson de ĉeno, kiu estas konfuzata sin kaj surogatan grafismon. Se vi ne deziras konverti ĝin, rulu convert() ĉiuvorte, poste dividi (per split()) frazon en vortojn. Ĉi tio ekskluzivigas al la konvertilo ĉenon, kiu inkluzivas ://@, de la celo de la konvertado. Vidu RFC 2396 kaj 3986 por URI, kaj vidu RFC 5321 kaj 5322 por adreso de retpoŝto. Mi priskribis konkretan ekzemplon ĉe examples/ignore_addresses.pl en la distribuaĵo.

Utilecaj methodoj

all_sources

    @all_source_notations = $converter->all_sources;

Liveras fontajn grafismojn kiel listo. Se vi deziras akiri ĝin kiel referenco al tabeltipo, vi povas uzi sources().

add_sources

    $source_notations_ref = $converter->add_sources(@adding_notations);

Adicii transdonitajn grafismojn kiel listo en fontajn grafismojn. Vi povas uzi grafismojn kiel konstruilo new().

Liveras restajn fontajn grafismojn kiel referenco al tabeltipo.

remove_sources

    $source_notations_ref = $converter->remove_sources(@removing_notations);

Forigas transdonitajn grafismojn kiel listo de fontaj grafismoj. Vi povas uzi grafismojn kiel konstruilo new().

Liveras restajn fontajn grafismojn kiel referenco al tabeltipo.

Forigitaj grafismoj devas konservi sin almenaŭ 1. Se vi forigas tutajn grafismojn, la konvertilo ĵetas escepton.

VIDU ANKAŬ

MALKONGRUECO

Estas ne raportata.

CIMOJ KAJ LIMIGADOJ

Neniaj cimoj estas raportata.

Fari sugestojn kaj raporti cimojn

Bonvole raportu ĉiajn trovitajn cimojn, petegojn por trajtoj, kaj ideojn por plibonigo al <bug-lingua-eo-orthography at rt dot cpan dot org>, aŭ tra la reta interfaco ĉe http://rt.cpan.org/Public/Bug/Report.html?Queue=Lingua-EO-Orthography. Mi estos avizata, kaj poste vi estos avizata de plibonstatiĝo aŭtomate pri viaj cimoj/petegoj kiel mi fari ŝanĝojn.

Kiam raporti cimojn, se eble, bonvole adiciu specimenon tiel malgranda kiel vi povas fari la kodon, kiu produktas la cimon. Kaj kompreneble, sugestoj kaj flikaĵoj estas bonvena.

SUBTENO

Vi povas trovi dokumentojn por ĉi tiu modjulo per la perldoc komando.

    % perldoc Lingua::EO::Orthography

La Esperanta eldono de dokumento estas havebla.

    % perldoc Lingua::EO::Orthography::EO

Vi povas ankaŭ trovi la Japana lingva eldono de dokumento por ĉi tiu modjulo per la perldocjp komando de Pod::PerldocJp.

    % perldocjp Lingua::EO::Orthography::JA

Vi povas ankaŭ rigardi informon ĉe:

RT: CPAN's request tracker

http://rt.cpan.org/Public/Dist/Display.html?Name=Lingua-EO-Orthography

AnnoCPAN: Annotated CPAN documentation

http://annocpan.org/dist/Lingua-EO-Orthography

Search CPAN

http://search.cpan.org/dist/Lingua-EO-Orthography

CPAN Ratings

http://cpanratings.perl.org/dist/Lingua-EO-Orthography

VERSIKONTROLO

Ĉi tiu modjulo estas konservata kun git. Vi povas akiri la lastan version ĉe git://github.com/gardejo/p5-lingua-eo-orthography.git.

EKZAMENKAMPO EN KODO

Mi uzas Devel::Cover por ekzameni la ekzamenkampon de miaj testoj, la subo estas la resuma raporto de Devel::Cover pri kompleto de testoj de ĉi tiu distribuaĵo.

 ---------------------------- ------ ------ ------ ------ ------ ------ ------
 File                           stmt   bran   cond    sub    pod   time  total
 ---------------------------- ------ ------ ------ ------ ------ ------ ------
 .../Lingua/EO/Orthography.pm  100.0  100.0  100.0  100.0  100.0  100.0  100.0
 Total                         100.0  100.0  100.0  100.0  100.0  100.0  100.0
 ---------------------------- ------ ------ ------ ------ ------ ------ ------

FARENDAĴOJ

  • Pluaj testoj

  • Malpluaj dependaĵoj

  • Provizi API por adicii grafismon de uzanto

  • Ĝuste manipuli vortojn kiel flughaveno (flug/haven/o) en 'postfix_h' grafismo kun leksikono de uzanto

  • Ĝuste manipuli vortojn kiel ankaŭ en 'zamenhof' grafismo kun leksikono de uzanto

  • Eldoni Moose-eblan klason kiel Lingua::EO::Orthography::Moosified

AŬTORO

MORIJA Masaki, alinome Gardejo (en: MORIYA Masaki, alias Gardejo)

<moriya at cpan dot org>, http://gardejo.org/

Ekzegezo: Tradukinto

MORIJA Masaki, alinome Gardejo (en: MORIYA Masaki, alias Gardejo)

<moriya at cpan dot org>, http://gardejo.org/

AGNOSKOJ

AŬTORRAJTO KAJ LICENCO

Aŭtorrajto (c) 2010 MORIJA Masaki, alinome Gardejo

Ĉi tiu modjulo estas libera programaro; vi povas redistribui ĝin kaj/aŭ modifi ĝin laŭ la sama kondiĉo kiel Perl mem. Vidu perlgpl kaj perlartistic.

La plena teksto de la licenco estas povata trovi en la LICENSE dosiero, kiu estas inkluzivata kun ĉi tiu distribuaĵo.

Ekzegezo: Originala teksto de AŬTORRAJTO KAJ LICENCO

Copyright (c) 2010 MORIYA Masaki, alias Gardejo

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlgpl and perlartistic.

The full text of the license can be found in the LICENSE file included with this distribution.