From 9f6e110f0afa4143637254edae2cc5c5dfb4d110 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Jameux Date: Sun, 10 Oct 2021 18:40:01 +0200 Subject: [PATCH] Parser de questions fonctionnels ! --- elm-stuff/0.19.1/QCM.elmi | Bin 9178 -> 9952 bytes elm-stuff/0.19.1/QCM.elmo | Bin 71115 -> 71379 bytes elm-stuff/0.19.1/d.dat | Bin 1626 -> 1626 bytes src/QCM.elm | 51 ++++++++++++++++++++++++++++++++++---- 4 files changed, 46 insertions(+), 5 deletions(-) diff --git a/elm-stuff/0.19.1/QCM.elmi b/elm-stuff/0.19.1/QCM.elmi index b38fe7084134505ff312b00613c41fe6a04fb416..65835a4e748ca417aa78c43dcaf77590b25b8922 100644 GIT binary patch delta 243 zcmccR{=j#F7^BHXaczmoj$)CMDZQ;Q}C3Mfq8Cq4s+MJD%)xB{g` zU~EwlxH6Z-ykeh3-^Api{K*q!WG7z|FMt{bSFNQ9SM8G+mROXTn3R(mkXQubY5 K+FU7>$O!;{H&$5y delta 128 zcmaFhd&_--7^BffaczmorII3(4@jC#{vap8s5AMzjJRlOaadwbYH3liOJZKJPoi^1 zVrE|IOSQSy3wuE20!N&%L26r#a)b+lBlH(Wwa^Q(pGr5fd@~M#;J_#AP)M6T;|iC zXkbhzdru&P$NwTYuaokS%CYVFk+}iI*Ce~vutT!!r2=vGISw+r5P~>P$FjKpBZRl7 zr00Jjim#2-3303(f-w6P0umW%g$u_?bu4sl|RB`}61>7~J`=r_=Dej1*50)oEU$V&C zx!t@7Gng+Xp~9tJ8$D>=F&}Q3OVn=BwYE9Dh!b)>z}4omsADYbnGX3r{iQKroZbu1 z*C%ZC+{tym?57TwF;C)>$X7>EDCXo~^FD2DIJz|dZy<#i;qOik@7*LU8-p{rQy{pQ zD&P!>fy8rShY|$Y+XP(2Td626pCxP$fP4&#u%HQv0Gn4J%PJ9=3-hb7xspnMlSSYQ zRPjyyyfc0g_E>=@a@B#WOjn@>Rd!c}MYd`<1L?nTHLXLPebXS54w=r4Zkx7fwk@f- ZX`6C`K3X$Hi?TxvX4oqQ&aq_!tp6AT7mEM@ delta 1339 zcmah}&ubGw6rQ)Ulg)3E-E5MQ#u#Z8F_88m-Wt@CR4iD$wo6=XF-hZYnxj9Co}@h5 zJt@75U{UbwMFsUFcoRJNF9=4|o!K8vb=mG=cX;#7H{W~jd;9sh{Nb7W;*PqSUAsDG znf+nU=$cl7cn_q)kRJ&?Kn}NZeo&%@Wz*5v*67-J!ChcJRhB@)gVQsVNCcaYO8EHC z*=9gOC`YTZ`?7-=@E8`8IzDKpos$Vra6d2OidMj6GgrSpvNi{|6UK084sQBqfF-&c z#^%68L({P{$vEviC`*jXVLrL)LxO7#zp)zXS{Cn3H0)$#+)pPViw76$wOUw})vfK( zWn*A3oAxD7!jnl=iIS6n}3Nc2dO-M4V={)y=U`LFMGSi86$ zggJT(AaUTJdSa}UdC%hhY`M+`pA0045T^JO@J-$GGPw|$iGN1YnPgbJBw`^-8&W*g zTCooQqV?m7b-WRaKT6ncq+jlpUVR6~@wp>^A0F{;C`TqCj)Yc@ZW-r@&0^=5-Z-YE a2=7Z+o2aj4fF+d)3psCeck=pWxb+tY=6=oq diff --git a/elm-stuff/0.19.1/d.dat b/elm-stuff/0.19.1/d.dat index 35e503b6996cef6e251e59c7dda16b3e4904bd79..c292b836566f4aacfd0fcf6e38a949a42baca6ef 100644 GIT binary patch delta 40 scmcb`bBkw!K4aiU10N<1hiCi?4DM~5G`WRoJ7)j`1O#q&VHRTs034tT$N&HU delta 40 scmcb`bBkw!KBMnO10N=i1^cE>2-uQ2VR8%8c20K&2=LwP!YsxN0487z5dZ)H diff --git a/src/QCM.elm b/src/QCM.elm index 4b99dc3..5c64d8f 100644 --- a/src/QCM.elm +++ b/src/QCM.elm @@ -154,7 +154,15 @@ voirMacro macro voirTexteVariable txtvar = case txtvar of Texte txt -> txt - Variable var -> var + Variable var -> + let expressionParseePotentielle = PM.parseMaths var + in + case expressionParseePotentielle of + Err erreur -> "L'expression est mal formée." + Ok expressionParsee -> + case Maybe.map F.teX <| PM.evaluer <| expressionParsee of + Just a -> a + Nothing -> "Les puissances non-entières ne sont pas acceptées." texteSansVariables : Parser TexteVariable texteSansVariables @@ -206,7 +214,21 @@ type alias Aremplacer = , vals : List String } -remplacer : List Aremplacer -> List TexteVariable -> List String +remplacer : List Aremplacer -> Macro -> List String +remplacer ars macro = + remplacerBis ars [macro] + |> L.map voirMacro + +remplacerBis : List Aremplacer -> List Macro -> List Macro +remplacerBis ars macros = + case ars of + [] -> macros + ar :: arss -> + L.map (remplacerDansLaMacro ar) macros + |> L.concat + |> remplacerBis arss + +{-- remplacer ars tvs = case tvs of [] -> [""] @@ -217,9 +239,9 @@ remplacer ars tvs = , remplacer ars tvss ] |> L.map S.concat +--} - - +{-- remplacerToutDansLesChaines : List Aremplacer -> List String -> List String remplacerToutDansLesChaines ars chaines = case ars of @@ -237,6 +259,24 @@ remplacerToutDansLesChaines ars chaines = remplacerDansLeTexteVariable ar t |> --} +--} + +remplacerDansLaMacro : Aremplacer -> Macro -> List Macro +remplacerDansLaMacro ar macro = + let + f val = remplacerLaVariableParLaValeurDansLaMacro ar.var val macro + in + L.map f ar.vals + +remplacerLaVariableParLaValeurDansLaMacro : String -> String -> Macro -> Macro +remplacerLaVariableParLaValeurDansLaMacro var val macro = + L.map (remplacerLaVariableParLaValeurDansLeTexteVariable var val) macro + +remplacerLaVariableParLaValeurDansLeTexteVariable var val tv = + case tv of + Texte chaine -> Texte chaine + Variable chaine -> Variable <| S.replace var val chaine + {-- remplacerDansLeTexteVariable : Aremplacer -> TexteVariable -> List String remplacerDansLeTexteVariable a t = @@ -245,6 +285,7 @@ remplacerDansLeTexteVariable a t = Variable tt -> remplacerLaVariableParLesValeursDansLaChaine a.var a.vals tt --} +{-- remplacerLaVariableParLesValeursDansLaChaine : String -> List String -> String -> List String remplacerLaVariableParLesValeursDansLaChaine var vals chaine = case vals of @@ -252,7 +293,7 @@ remplacerLaVariableParLesValeursDansLaChaine var vals chaine = val :: valss -> S.replace var val chaine :: remplacerLaVariableParLesValeursDansLaChaine var valss chaine - +--} {-