concrete TimeRus of Time = NumeralsRus ** 
  open Prelude, CategoriesRus
--, ParadigmsRus
, MorphoRus in {

flags  coding=utf8 ;

lincat
-- SS does not work for Russian, 
-- например, "первое мая, суббота" - "парад состоялся первоГО мая, в субботУ" : 
Date = N ;
Weekday = N ;
Hour = {s: Case => Str} ;
Minute = {s: Case => Str};
Time = SS ;

lin
DayDate day = day ;
DayTimeDate day time = {s=\\sf => day.s ! sf  ++ "," ++ time.s; g=day.g; anim=day.anim; lock_N=<>} ;

-- The formulation (strings in between) depends on the number
-- например, "один час" - "двенадцать часОВ" 
-- so all the definitions that deal with "Time" are only partially correct:
FormalTime h m = ss (h.s!Nom ++ "часов" ++ m.s!Nom ++ "минут") ;
PastTime h m = ss (m.s!Nom++ "минут"++h.s!Gen) ;
ToTime h m = ss ("без"++m.s!Gen ++ "минут" ++ h.s!Nom) ;
ExactTime h = ss (h.s!Nom ++ "ровно") ;

-- "Numerals.gf" is not refined enough to give the time categories:  
NumHour n = {s = \\_ => n.s ! attr ! Masc} ; 
NumMinute n = {s =\\_ => n.s ! attr ! Fem } ;

monday = ponedelnik ** {lock_N=<>};
tuesday = vtornik ** {lock_N=<>};
wednesday = sreda ** {lock_N=<>};
thursday = chetverg ** {lock_N=<>};
friday = pyatnica ** {lock_N=<>};
saturday = subbota ** {lock_N=<>};
sunday = voskresenje ** {lock_N=<>};

} ;

