Merge branch 'master'
This commit is contained in:
commit
1b316c5315
5 changed files with 363 additions and 84 deletions
|
@ -0,0 +1,106 @@
|
|||
code.highlight {
|
||||
font-weight: bold;
|
||||
color: #0000BB;
|
||||
}
|
||||
|
||||
code.block {
|
||||
display: inline-block;
|
||||
border: thin dotted #44F;
|
||||
padding: 0.4ex 1.5ex 0.5ex 1.5ex;
|
||||
margin: 0.2ex 1ex 0.2ex 1ex;
|
||||
box-shadow: 1px 1px 1px #CCC;
|
||||
background: rgba(255, 255, 255, 0.5);
|
||||
white-space: pre;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
code.page {
|
||||
margin-left: 8%;
|
||||
box-shadow: 3px 3px 3px #DBD;
|
||||
font-size: 11pt;
|
||||
background: #F0FFFF;
|
||||
}
|
||||
|
||||
span.comment {
|
||||
color: rgba(0, 110, 0, 0.7);
|
||||
font-style: italic;
|
||||
font-family: sans;
|
||||
font-size: 105%;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
span.semi {
|
||||
font-weight: bold;
|
||||
color: rgba(196, 0, 128, 0.6);
|
||||
}
|
||||
|
||||
span.operator {
|
||||
color: #840;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.highcomment {
|
||||
font-style: italic;
|
||||
font-family: sans;
|
||||
font-size: 105%;
|
||||
white-space: pre;
|
||||
font-size: 110%;
|
||||
font-weight: bold;
|
||||
color: rgba(0, 110, 0, 0.9);
|
||||
margin: 0.25ex 0ex 0.25ex 0ex;
|
||||
}
|
||||
|
||||
span.highercomment {
|
||||
font-style: italic;
|
||||
font-family: sans;
|
||||
font-size: 105%;
|
||||
white-space: pre;
|
||||
font-size: 105%;
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
background: #DDD;
|
||||
padding: 0ex 4.5ex 0ex 4.5ex;
|
||||
margin: 0.25ex 0ex 2.5ex -4ex;
|
||||
border: thin solid black;
|
||||
}
|
||||
|
||||
span.label {
|
||||
font-style: italic;
|
||||
color: #44F;
|
||||
}
|
||||
|
||||
span.letvar {
|
||||
color: #0000A0;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
span.uident {
|
||||
font-weight: bold;
|
||||
font-size: 110%;
|
||||
color: #080;
|
||||
}
|
||||
|
||||
span.string, span.char {
|
||||
color: #E22;
|
||||
white-space: pre;
|
||||
font-family: serif;
|
||||
font-size: 92%;
|
||||
}
|
||||
|
||||
span.kw, code.kw {
|
||||
display: inline;
|
||||
font-weight: bold;
|
||||
color: #600080;
|
||||
}
|
||||
|
||||
span.type {
|
||||
font-weight: bold;
|
||||
color: #069;
|
||||
}
|
||||
|
||||
span.fname {
|
||||
font-variant: small-caps;
|
||||
font-weight: bold;
|
||||
font-size: 110%;
|
||||
color: #050;
|
||||
}
|
154
Y/Ada-S2/Programmes/exos-preparatoires/mission1.html
Normal file
154
Y/Ada-S2/Programmes/exos-preparatoires/mission1.html
Normal file
|
@ -0,0 +1,154 @@
|
|||
<html class="ada2" lang="fr" id="h" xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>mission1.adb</title>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
|
||||
<link media="all" href="../../../ystyle.css" rel="stylesheet" />
|
||||
<script src="../../../Scripts/yfold.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="header" id="header">
|
||||
<h1 id="title">mission1.adb</h1>
|
||||
</div>
|
||||
<main><code class="page block"><span class="kw">with</span> <span class="ident">Gada.Text_IO</span> ;<span class="eols">
|
||||
|
||||
</span><span class="kw">procedure</span> <span class="fname">Mission1</span> <span class="kw">is</span><span class="eols">
|
||||
|
||||
</span> <span class="kw">package</span> <span class="fname">Txt</span> <span class="kw">renames</span> <span class="ident">GAda.Text_IO</span> ;<span class="eols">
|
||||
|
||||
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Ligne</span> (<span class="ident">Long</span> : <span class="type">Integer</span>) <span class="kw">is</span>
|
||||
<span class="kw">begin</span>
|
||||
<span class="comment">-- Tracer n fois le caractère # puis passer à la ligne.
|
||||
</span> <span class="kw">for</span> <span class="ident">Colonne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Long</span> <span class="kw">loop</span>
|
||||
<span class="ident">Txt.Put</span>(<span class="string">"#"</span>) ;
|
||||
<span class="kw">end</span> <span class="kw">loop</span> ;
|
||||
<span class="ident">Txt.New_Line</span> ;
|
||||
<span class="kw">end</span> <span class="fname">Tracer_Ligne</span> ;<span class="eols">
|
||||
|
||||
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Rectangle</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span
|
||||
class="kw">is</span>
|
||||
<span class="kw">begin</span>
|
||||
<span class="comment">-- Première ligne, pleine
|
||||
</span> <span class="ident">Tracer_Ligne</span>(<span class="ident">Largeur</span>) ;<span class="eols">
|
||||
|
||||
</span> <span class="comment">-- Les lignes suivantes (de 2 à Hauteur-1) ne contiennent que
|
||||
</span> <span class="comment">-- le caractère # du début et celui de la fin.
|
||||
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">2</span>..<span class="ident">Hauteur</span> - <span class="number">1</span> <span class="kw">loop</span>
|
||||
<span class="ident">Txt.Put</span>(<span class="string">"#"</span>) ;<span class="eols">
|
||||
|
||||
</span> <span class="comment">-- Des espaces au milieu.
|
||||
</span> <span class="kw">for</span> <span class="ident">Col</span> <span class="kw">in</span> <span class="number">2</span>..<span class="ident">Largeur</span> - <span class="number">1</span> <span class="kw">loop</span>
|
||||
<span class="ident">Txt.Put</span>(<span class="string">" "</span>) ;
|
||||
<span class="kw">end</span> <span class="kw">loop</span> ;<span class="eols">
|
||||
|
||||
</span> <span class="ident">Txt.Put</span>(<span class="string">"#"</span>) ;
|
||||
<span class="ident">Txt.New_Line</span> ;
|
||||
<span class="kw">end</span> <span class="kw">loop</span> ;<span class="eols">
|
||||
|
||||
</span> <span class="comment">-- La dernière ligne est pleine.
|
||||
</span> <span class="ident">Tracer_Ligne</span>(<span class="ident">Largeur</span>) ;
|
||||
<span class="ident">Txt.New_Line</span> ;
|
||||
<span class="kw">end</span> <span class="fname">Tracer_Rectangle</span> ;<span class="eols">
|
||||
|
||||
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Quadrillage</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span
|
||||
class="kw">is</span>
|
||||
<span class="kw">begin</span>
|
||||
<span class="comment">-- On dessine ligne par ligne, colonne par colonne.
|
||||
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Hauteur</span> <span class="kw">loop</span>
|
||||
<span class="kw">for</span> <span class="ident">Col</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Largeur</span> <span class="kw">loop</span>
|
||||
<span class="comment">-- Il suffit de tracer les lignes impaires et les colonnes impaires.
|
||||
</span> <span class="kw">if</span> (<span class="ident">Ligne</span> <span class="kw">mod</span> <span class="number">2</span> = <span class="number">1</span>) <span class="kw">or</span> (<span class="ident">Col</span> <span
|
||||
class="kw">mod</span> <span class="number">2</span> = <span class="number">1</span>) <span class="kw">then</span>
|
||||
<span class="ident">Txt.Put</span>(<span class="string">"#"</span>) ;
|
||||
<span class="kw">else</span>
|
||||
<span class="ident">Txt.Put</span>(<span class="string">" "</span>) ;
|
||||
<span class="kw">end</span> <span class="kw">if</span> ;
|
||||
<span class="kw">end</span> <span class="kw">loop</span> ;
|
||||
<span class="ident">Txt.New_Line</span> ;
|
||||
<span class="kw">end</span> <span class="kw">loop</span> ;
|
||||
<span class="ident">Txt.New_Line</span> ;
|
||||
<span class="kw">end</span> <span class="fname">Tracer_Quadrillage</span> ;<span class="eols">
|
||||
|
||||
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Damier</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span
|
||||
class="kw">is</span>
|
||||
<span class="kw">begin</span>
|
||||
<span class="comment">-- Même principe que Tester_Quadrillage
|
||||
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Hauteur</span> <span class="kw">loop</span>
|
||||
<span class="kw">for</span> <span class="ident">Col</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Largeur</span> <span class="kw">loop</span>
|
||||
<span class="comment">-- Il suffit de tracer les cases telles que x+y est pair.
|
||||
</span> <span class="kw">if</span> (<span class="ident">Ligne</span> + <span class="ident">Col</span>) <span class="kw">mod</span> <span class="number">2</span> = <span class="number">0</span> <span class="kw">then</span>
|
||||
<span class="ident">Txt.Put</span>(<span class="string">"#"</span>) ;
|
||||
<span class="kw">else</span>
|
||||
<span class="ident">Txt.Put</span>(<span class="string">" "</span>) ;
|
||||
<span class="kw">end</span> <span class="kw">if</span> ;
|
||||
<span class="kw">end</span> <span class="kw">loop</span> ;
|
||||
<span class="ident">Txt.New_Line</span> ;
|
||||
<span class="kw">end</span> <span class="kw">loop</span> ;
|
||||
<span class="ident">Txt.New_Line</span> ;
|
||||
<span class="kw">end</span> <span class="fname">Tracer_Damier</span> ;<span class="eols">
|
||||
|
||||
</span> <span class="kw">procedure</span> <span class="fname">Tracer_Gros_Damier</span> (<span class="ident">Largeur</span> : <span class="type">Integer</span> ; <span class="ident">Hauteur</span> : <span class="type">Integer</span>) <span
|
||||
class="kw">is</span>
|
||||
<span class="kw">begin</span>
|
||||
<span class="comment">-- Même principe, mais en divisant les coordonnées par 2 pour faire des paquets de 2x2.
|
||||
</span> <span class="kw">for</span> <span class="ident">Ligne</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Hauteur</span> <span class="kw">loop</span>
|
||||
<span class="kw">for</span> <span class="ident">Col</span> <span class="kw">in</span> <span class="number">1</span>..<span class="ident">Largeur</span> <span class="kw">loop</span><span class="eols">
|
||||
|
||||
</span> <span class="comment">-- On soustrait 1 car sinon le damier commence au milieu d'un paquet de 2x2 et ce n'est pas joli.
|
||||
</span> <span class="kw">if</span> ((<span class="ident">Ligne</span>-<span class="number">1</span>)/<span class="number">2</span> + (<span class="ident">Col</span>-<span class="number">1</span>)/<span class="number">2</span>) <span
|
||||
class="kw">mod</span> <span class="number">2</span> = <span class="number">1</span> <span class="kw">then</span>
|
||||
<span class="ident">Txt.Put</span>(<span class="string">"#"</span>) ;
|
||||
<span class="kw">else</span>
|
||||
<span class="ident">Txt.Put</span>(<span class="string">" "</span>) ;
|
||||
<span class="kw">end</span> <span class="kw">if</span> ;
|
||||
<span class="kw">end</span> <span class="kw">loop</span> ;
|
||||
<span class="ident">Txt.New_Line</span> ;
|
||||
<span class="kw">end</span> <span class="kw">loop</span> ;
|
||||
<span class="ident">Txt.New_Line</span> ;
|
||||
<span class="kw">end</span> <span class="fname">Tracer_Gros_Damier</span> ;<span class="eols">
|
||||
|
||||
</span><span class="kw">begin</span><span class="eols">
|
||||
|
||||
</span> <span class="ident">Txt.Put_Line</span>(<span class="string">"Test de Tracer_Ligne : "</span>) ;
|
||||
<span class="ident">Txt.New_Line</span> ;<span class="eols">
|
||||
|
||||
</span> <span class="ident">Tracer_Ligne</span>(<span class="number">3</span>) ;
|
||||
<span class="ident">Tracer_Ligne</span>(<span class="number">8</span>) ;
|
||||
<span class="ident">Tracer_Ligne</span>(<span class="number">20</span>) ;<span class="eols">
|
||||
|
||||
</span> <span class="ident">Txt.New_Line</span> ;
|
||||
<span class="ident">Txt.Put_Line</span>(<span class="string">"Test de Tracer_Rectangle : "</span>) ;
|
||||
<span class="ident">Txt.New_Line</span> ;<span class="eols">
|
||||
|
||||
</span> <span class="ident">Tracer_Rectangle</span>(<span class="number">5</span>, <span class="number">5</span>) ;
|
||||
<span class="ident">Tracer_Rectangle</span>(<span class="number">14</span>, <span class="number">2</span>) ;
|
||||
<span class="ident">Tracer_Rectangle</span>(<span class="number">4</span>, <span class="number">6</span>) ;<span class="eols">
|
||||
|
||||
</span> <span class="ident">Txt.New_Line</span> ;
|
||||
<span class="ident">Txt.Put_Line</span>(<span class="string">"Test de Tracer_Quadrillage : "</span>) ;
|
||||
<span class="ident">Txt.New_Line</span> ;<span class="eols">
|
||||
|
||||
</span> <span class="ident">Tracer_Quadrillage</span>(<span class="number">19</span>, <span class="number">11</span>) ;<span class="eols">
|
||||
|
||||
</span> <span class="ident">Txt.New_Line</span> ;
|
||||
<span class="ident">Txt.Put_Line</span>(<span class="string">"Test de Tracer_Damier : "</span>) ;
|
||||
<span class="ident">Txt.New_Line</span> ;<span class="eols">
|
||||
|
||||
</span> <span class="ident">Tracer_Damier</span>(<span class="number">18</span>, <span class="number">10</span>) ;<span class="eols">
|
||||
|
||||
</span> <span class="ident">Txt.New_Line</span> ;
|
||||
<span class="ident">Txt.Put_Line</span>(<span class="string">"Test de Tracer_Gros_Damier : "</span>) ;
|
||||
<span class="ident">Txt.New_Line</span> ;<span class="eols">
|
||||
|
||||
</span> <span class="ident">Tracer_Gros_Damier</span>(<span class="number">18</span>, <span class="number">10</span>) ;<span class="eols">
|
||||
|
||||
</span><span class="kw">end</span> <span class="fname">Mission1</span> ;
|
||||
</code></main>
|
||||
<footer><small class="pcom"><a class="caml_c" href="../../../yversion.html" data-eliom-c-onclick="GdR46hGdWKzn">Version information</a></small><a target="_blank" href="http://www.insa-toulouse.fr"><img title="INSA Toulouse"
|
||||
style="width:73px;height:28px;" alt="INSA logo" src="../../../Images/logo-insa-light.jpg" /></a><a target="_blank" href="http://jigsaw.w3.org/css-validator/check/referer"><img title="Validate css stylesheet" style="width:28px;height:32px;"
|
||||
alt="CSS3 logo" src="../../../Images/css3.png" /></a><a target="_blank" href="http://validator.w3.org/check/referer"><img title="Validate html5 content" style="width:32px;height:32px;" alt="HTML5 logo" src="../../../Images/html5.png" /></a>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,80 @@
|
|||
<html class="ada2" lang="fr" id="h" xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>mission2.ml</title>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
|
||||
<link media="all" href="../../../ystyle.css" rel="stylesheet" />
|
||||
<script src="../../../Scripts/yfold.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="header" id="header">
|
||||
<h1 id="title">mission2.ml</h1>
|
||||
</div>
|
||||
<main><code class="page block"><span class="comment">(* Version OCaml de l'exercice sur les intervalles *)</span>
|
||||
|
||||
<span class="kw">type</span> t_intervalle =
|
||||
{ inf: float ;
|
||||
sup: float }
|
||||
|
||||
<span class="kw">let</span> <span class="letvar">sof</span> x = string_of_int (int_of_float x)
|
||||
|
||||
<span class="comment">(* Les trois premières fonctions demandées. *)</span>
|
||||
<span class="kw">let</span> <span class="letvar">intervalle_image</span> it = <span class="string">"["</span> ^ sof it.inf ^ <span class="string">", "</span> ^ sof it.sup ^ <span class="string">"]"</span>
|
||||
<span class="kw">let</span> <span class="letvar">est_inclus</span> a b = (a.inf >= b.inf && a.sup <= b.sup)
|
||||
<span class="kw">let</span> <span class="letvar">disjoints</span> a b = (a.sup < b.inf || a.inf > b.sup)
|
||||
|
||||
<span class="comment">(* Fonction d'affichage générique qui marchera pour t_intervalle et pour t_prod. *)</span>
|
||||
<span class="kw">let</span> <span class="letvar">affichage_gen</span> f_inclus f_disjoint f_image i1 i2 =
|
||||
<span class="kw">let</span> <span class="letvar">s1</span> = f_image i1
|
||||
<span class="kw">and</span> <span class="letvar">s2</span> = f_image i2 <span class="kw">in</span>
|
||||
|
||||
<span class="kw">if</span> f_inclus i1 i2 <span class="kw">then</span> <span class="uident">Printf</span>.printf <span class="string">"%s est inclus dans %s\n"</span> s1 s2
|
||||
<span class="kw">else</span> <span class="kw">if</span> f_inclus i2 i1 <span class="kw">then</span> <span class="uident">Printf</span>.printf <span class="string">"%s est inclus dans %s\n"</span> s2 s1
|
||||
<span class="kw">else</span> <span class="kw">if</span> f_disjoint i1 i2 <span class="kw">then</span> <span class="uident">Printf</span>.printf <span class="string">"%s et %s sont disjoints\n"</span> s1 s2
|
||||
<span class="kw">else</span> <span class="uident">Printf</span>.printf <span class="string">"%s et %s ne sont pas disjoints, ni inclus\n"</span> s1 s2
|
||||
|
||||
<span class="comment">(* Afficher_relation pour les intervalles. *)</span>
|
||||
<span class="kw">let</span> <span class="letvar">afficher_relation</span> = affichage_gen est_inclus disjoints intervalle_image
|
||||
|
||||
<span class="comment">(* Produit cartésien *)</span>
|
||||
<span class="kw">type</span> t_prod =
|
||||
{ left: t_intervalle ;
|
||||
right: t_intervalle }
|
||||
|
||||
<span class="comment">(* Les trois premières fonctions pour les produits cartésiens. *)</span>
|
||||
<span class="kw">let</span> <span class="letvar">prod_image</span> p = intervalle_image p.left ^ <span class="string">" x "</span> ^ intervalle_image p.right
|
||||
<span class="kw">let</span> <span class="letvar">prod_est_inclus</span> a b = est_inclus a.left b.left && est_inclus a.right b.right
|
||||
<span class="kw">let</span> <span class="letvar">prod_disjoints</span> a b = disjoints a.left b.left || disjoints a.right b.right
|
||||
|
||||
<span class="comment">(* La fonction d'affichage demandée. *)</span>
|
||||
<span class="kw">let</span> <span class="letvar">prod_afficher_relation</span> = affichage_gen prod_est_inclus prod_disjoints prod_image
|
||||
|
||||
<span class="kw">let</span> <span class="letvar">prod</span> a b = { left = a ; right = b }
|
||||
|
||||
<span class="comment">(* Test *)</span>
|
||||
<span class="kw">let</span> () =
|
||||
<span class="kw">let</span> <span class="letvar">c</span> = { inf = <span class="number">5.0</span> ; sup = <span class="number">10.0</span> }
|
||||
<span class="kw">and</span> <span class="letvar">d</span> = { inf = <span class="number">7.0</span> ; sup = <span class="number">8.0</span> }
|
||||
<span class="kw">and</span> <span class="letvar">e</span> = { inf = <span class="number">4.0</span> ; sup = <span class="number">6.0</span> }
|
||||
<span class="kw">in</span>
|
||||
|
||||
afficher_relation c d ;
|
||||
afficher_relation d c ;
|
||||
afficher_relation c e ;
|
||||
afficher_relation d e ;
|
||||
|
||||
prod_afficher_relation (prod c c) (prod d d) ;
|
||||
prod_afficher_relation (prod c d) (prod d c) ;
|
||||
prod_afficher_relation (prod d c) (prod e c) ;
|
||||
()
|
||||
|
||||
|
||||
</code></main>
|
||||
<footer><small class="pcom"><a class="caml_c" href="../../../yversion.html" data-eliom-c-onclick="UJHGP0o9lEGA">Version information</a></small><a target="_blank" href="http://www.insa-toulouse.fr"><img title="INSA Toulouse"
|
||||
style="width:73px;height:28px;" alt="INSA logo" src="../../../Images/logo-insa-light.jpg" /></a><a target="_blank" href="http://jigsaw.w3.org/css-validator/check/referer"><img title="Validate css stylesheet" style="width:28px;height:32px;"
|
||||
alt="CSS3 logo" src="../../../Images/css3.png" /></a><a target="_blank" href="http://validator.w3.org/check/referer"><img title="Validate html5 content" style="width:32px;height:32px;" alt="HTML5 logo" src="../../../Images/html5.png" /></a>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
26
Y/ystyle.css
26
Y/ystyle.css
|
@ -218,7 +218,7 @@ code {
|
|||
margin-left: 3vw;
|
||||
margin-top: 20px;
|
||||
font-family: monospace;
|
||||
display: inline-block;
|
||||
display: block;
|
||||
color: #ffffcc;
|
||||
|
||||
tab-size: 2;
|
||||
|
@ -240,11 +240,31 @@ code * {
|
|||
span.comment {
|
||||
font-style: italic;
|
||||
color: rgb(128, 139, 150);
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
span.kw {
|
||||
color: rgb(203, 67, 53);
|
||||
font-weight: bold;
|
||||
color: rgb(227,99,99);
|
||||
}
|
||||
|
||||
span.type {
|
||||
color: rgb(203, 128, 53);
|
||||
}
|
||||
|
||||
span.fname {
|
||||
color: rgb(203, 203, 53);
|
||||
}
|
||||
|
||||
span.string {
|
||||
color: rgb(53, 203, 128);
|
||||
}
|
||||
|
||||
span.letvar {
|
||||
color: rgb(128, 203, 53);
|
||||
}
|
||||
|
||||
span.uident{
|
||||
color: rgb(203, 203, 53);
|
||||
}
|
||||
|
||||
|
||||
|
|
81
script.js
81
script.js
|
@ -1,81 +0,0 @@
|
|||
|
||||
//
|
||||
// Show/hide some sections by clicking on the title.
|
||||
//
|
||||
// Can be replaced by <details>, <summary> once it is supported by most browsers.
|
||||
//
|
||||
|
||||
function saveStatus(id, shown) {
|
||||
if (typeof(Storage) !== "undefined") {
|
||||
localStorage.setItem("yfold-shown-" + id, shown) ;
|
||||
}
|
||||
}
|
||||
|
||||
// record : (when clicked), record the status in local storage
|
||||
function setStatus(id, shown, content, record) {
|
||||
|
||||
// console.log ("setStatus (" + id + ", " + shown + ")") ;
|
||||
|
||||
var span = document.getElementById("arrow-" + id) ;
|
||||
|
||||
if (shown) {
|
||||
content.classList.remove("anim-hide") ;
|
||||
content.classList.remove("hidden") ;
|
||||
span.innerHTML = "▾" ;
|
||||
if (record) { content.classList.add("anim-show") ; }
|
||||
else { content.classList.add("shown") ; }
|
||||
}
|
||||
else {
|
||||
content.classList.remove("anim-show") ;
|
||||
content.classList.remove("shown") ;
|
||||
span.innerHTML = "▸" ;
|
||||
if (record) { content.classList.add("anim-hide") ; }
|
||||
else { content.classList.add("hidden") ; }
|
||||
}
|
||||
|
||||
if (record) { saveStatus(id, shown) ; }
|
||||
}
|
||||
|
||||
// Invoked at load-time once for every yfold section.
|
||||
function initYfold(id) {
|
||||
|
||||
// console.log ("initYfold (" + id + ")") ;
|
||||
|
||||
// console.log ("unknown " + id)
|
||||
var shown = true ;
|
||||
var content = document.getElementById("content-" + id) ;
|
||||
|
||||
// Sets the state according to local storage or default value.
|
||||
|
||||
if (typeof(Storage) !== "undefined") {
|
||||
var local = localStorage.getItem("yfold-shown-" + id) ;
|
||||
// console.log ("using storage value = " + local)
|
||||
|
||||
if (local === 'true') {
|
||||
shown = true ;
|
||||
}
|
||||
else if (local === 'false') {
|
||||
shown = false ;
|
||||
}
|
||||
else {
|
||||
// Get default value
|
||||
var defv = content.getAttribute("data-yfold-default") ;
|
||||
if (defv === 'hide') {
|
||||
shown = false ;
|
||||
}
|
||||
// console.log ("using default value = " + shown)
|
||||
}
|
||||
}
|
||||
|
||||
setStatus(id, shown, content, false) ;
|
||||
}
|
||||
|
||||
// Function invoked when the title is clicked.
|
||||
function toggleYfold(id) {
|
||||
|
||||
// console.log ("toggleYfold (" + id + ")") ;
|
||||
|
||||
var content = document.getElementById("content-" + id) ;
|
||||
var expand = content.classList.contains("anim-hide") || content.classList.contains("hidden") ;
|
||||
setStatus(id, expand, content, true) ;
|
||||
}
|
Loading…
Reference in a new issue