Kurso de Raku / Regulesprimoj kaj gramatikoj / Gramatikoj / Agoklasoj / Exercises / Faru daton homlegebla

Solvo: Faru daton homlegebla

Jen ebla solvo de la tasko.

Kodo

grammar Date {
    token TOP   { <year> '-' <month> '-' <day> }
    token year  { \d ** 4 }
    token month { \d ** 2 }
    token day   { \d ** 2 }
}

class Humanise {
    method year($/)  { make $/.Int }
    method month($/) { make <January February March April May June
                             July August September October November December>[$/ - 1] }
    method day($/)   { make $/.Int }
    method TOP($/)   { make "{$<day>.made} {$<month>.made} {$<year>.made}" }
}

say Date.parse('2026-07-05', actions => Humanise.new).made;

🦋 Vi povas trovi la fontkodon en la dosiero humanise-a-date.raku.

Eligo

5 July 2026

Komentoj

  1. Malsame ol simpla aritmetika ago, la ĵetonaj metodoj faras valorojn de malsamaj specoj: year kaj day faras entjerojn, sed month faras ĉenon, uzante sian numeran valoron kiel indekson en liston de monatnomoj. $/ - 1 nombrigas la duciferan kongruon (077) kaj ŝovas al nul-bazita indekso, do monato 07 faras July.

  2. La metodo TOP neniam reekzamenas la krudan tekston. Ĝi nur legas la tri valorojn, kiujn la submetodoj jam faris — $<day>.made, $<month>.made, $<year>.made — kaj interpolas ilin en la finan ĉenon. Relegi 5 el day ankaŭ forigas la antaŭan nulon senpage.

  3. Jen la ĉiutaga laboro de agoklaso: analizi strukturitan enigon unufoje, poste lasi ĉiun metodon transformi sian propran pecon en tion, kion la resto de la programo bezonas.

Kursa navigado

Faru daton homlegebla   |   Funkcia, samtempa, reaktiva kaj reta programado