Skip to content

Commit

Permalink
Merge pull request #54 from xhtmlboi/some-chores-post-release
Browse files Browse the repository at this point in the history
Some chores post release
  • Loading branch information
xhtmlboi authored Oct 20, 2024
2 parents dfe950b + 0ce1761 commit 54aedd7
Show file tree
Hide file tree
Showing 8 changed files with 118 additions and 12 deletions.
9 changes: 9 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
### v2.0.1 2024-10-20 Nantes (France)

#### yocaml

- Fix Table of contents computation when the first index is lower than followers by [xvw](https://github.com/xvw)
- Remove `charset` of the computed `meta` (since it does not follow the form `name => content`) by [xvw](https://github.com/xvw)
- Move some modules (`Datetime` and `Toc`) at the Toplevel of `Yocaml` by [xvw](https://github.com/xvw)


### v2.0.0 2024-10-04 Nantes (France)

#### yocaml
Expand Down
6 changes: 1 addition & 5 deletions lib/core/archetype.ml
Original file line number Diff line number Diff line change
Expand Up @@ -342,11 +342,7 @@ module Page = struct
])
]

let meta_list p =
to_meta "charset" p#page_charset
@ to_meta "description" p#description
@ to_meta_kwd p#tags

let meta_list p = to_meta "description" p#description @ to_meta_kwd p#tags
let has_toc obj = obj#display_toc && Option.is_some obj#toc

let normalize_parameters obj =
Expand Down
7 changes: 5 additions & 2 deletions lib/core/markup.ml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ module Toc = struct
type 'a element = { content : 'a; children : 'a t }
and 'a t = 'a element list

let from_list labels =
let rec from_list labels =
let rec aux depth acc = function
| [] -> (List.rev acc, [])
| (level, _) :: _ as labels when level < depth -> (List.rev acc, labels)
Expand All @@ -34,7 +34,10 @@ module Toc = struct
in
match labels with
| [] -> []
| (level, _) :: _ -> labels |> aux level [] |> fst
| (level, _) :: _ -> (
match labels |> aux level [] with
| labels, [] -> labels
| labels, xs -> labels @ from_list xs)

let to_labelled_list toc =
let rec aux current_index elements =
Expand Down
2 changes: 2 additions & 0 deletions lib/core/yocaml.ml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ module Slug = Slug
module Reader = Reader
module Make = Make
module Markup = Markup
module Toc = Markup.Toc
module Datetime = Archetype.Datetime

module Sexp = struct
include Sexp
Expand Down
2 changes: 2 additions & 0 deletions lib/core/yocaml.mli
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ module Metadata = Metadata
module Archetype = Archetype
module Cmd = Cmd
module Slug = Slug
module Toc = Markup.Toc
module Datetime = Archetype.Datetime

(** {1 Building tasks}
Expand Down
8 changes: 4 additions & 4 deletions plugins/yocaml_syndication/datetime.ml
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. *)

type t = Tz.t * Yocaml.Archetype.Datetime.t
type t = Tz.t * Yocaml.Datetime.t

let make ?(tz = Tz.Gmt) date = (tz, date)

let to_string (tz, dt) =
let tz = Tz.to_string tz in
Format.asprintf "%a" (Yocaml.Archetype.Datetime.pp_rfc822 ~tz ()) dt
Format.asprintf "%a" (Yocaml.Datetime.pp_rfc822 ~tz ()) dt

let to_string_rfc3339 (tz, dt) =
let tz = Tz.to_string_rfc3339 tz in
Format.asprintf "%a" (Yocaml.Archetype.Datetime.pp_rfc3339 ~tz ()) dt
Format.asprintf "%a" (Yocaml.Datetime.pp_rfc3339 ~tz ()) dt

let compare (_, a) (_, b) = Yocaml.Archetype.Datetime.compare a b
let compare (_, a) (_, b) = Yocaml.Datetime.compare a b
2 changes: 1 addition & 1 deletion plugins/yocaml_syndication/datetime.mli
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ val compare : t -> t -> int
Timezone (because we expect that every RSS/Atom elements are published on
the same Timezone). *)

val make : ?tz:Tz.t -> Yocaml.Archetype.Datetime.t -> t
val make : ?tz:Tz.t -> Yocaml.Datetime.t -> t
(** [make ?tz datetime] build a [datetime] associated with a Timezone. *)

val to_string : t -> string
Expand Down
94 changes: 94 additions & 0 deletions test/yocaml-expect/toc_test.ml
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,100 @@ let%expect_test "generate toc - from xvw.lol articles - 2" =
5-Pour conclure
|}]

let%expect_test "generate toc - from xvw.lol articles - 3" =
print_toc_str ~check_label:false
@@ from_markdown_title
[
"### Mise en contexte"
; "#### Simple, mais pas sur tous les aspects"
; "#### Découverte des règles via Internet"
; "## Le Tetra Master"
; "### Les cartes dans l'histoire"
; "### La collecte des cartes"
; "#### Une brève note sur l'aléatoire"
; "### Les règles selon le manuel"
; "#### Défier un adversaire"
; "#### Règles basiques"
; "##### Gagner une carte"
; "##### Récompenses et pénalités"
; "#### Nombre limite de cartes et menu"
; "#### Conclusion de la lecture du manuel"
; "### Règles détaillées"
; "#### Initiation d'une partie"
; "#### Plateau de jeu"
; "#### Prise de cartes simple"
; "#### Bataille"
; "##### Batailles multiples"
; "##### Anatomie d'une carte"
; "##### Lire les statistiques d'une carte"
; "##### Interprétation des statistiques hexadécimales"
; "##### Déroulé de la bataille, toujours plus d'aléas"
; "##### Calcul des probabilités de victoire en duel"
; "##### Les combos"
; "#### Pré-conclusion sur les règles"
; "### Expérience et évolution des cartes"
; "#### Evolution de l'attaque et des défenses"
; "#### Evolution du type de cartes"
; "#### Liste des cartes"
; "### Le niveau de collectionneur"
; "#### Les différents niveaux"
; "#### Sur la distinction des cartes"
; "#### Les points attribués par cartes"
; "##### Note sur les permutations de motifs"
; "#### La cerise sur le gateau"
; "## Pour conclure, enfin"
; "### Qu'en tirer"
; "### La suite"
; "### Remerciements"
; "### L'ultime mot de la fin"
];
[%expect
{|
TOC:
1-Mise en contexte
1.1-Simple, mais pas sur tous les aspects
1.2-Découverte des règles via Internet
2-Le Tetra Master
2.1-Les cartes dans l'histoire
2.2-La collecte des cartes
2.2.1-Une brève note sur l'aléatoire
2.3-Les règles selon le manuel
2.3.1-Défier un adversaire
2.3.2-Règles basiques
2.3.2.1-Gagner une carte
2.3.2.2-Récompenses et pénalités
2.3.3-Nombre limite de cartes et menu
2.3.4-Conclusion de la lecture du manuel
2.4-Règles détaillées
2.4.1-Initiation d'une partie
2.4.2-Plateau de jeu
2.4.3-Prise de cartes simple
2.4.4-Bataille
2.4.4.1-Batailles multiples
2.4.4.2-Anatomie d'une carte
2.4.4.3-Lire les statistiques d'une carte
2.4.4.4-Interprétation des statistiques hexadécimales
2.4.4.5-Déroulé de la bataille, toujours plus d'aléas
2.4.4.6-Calcul des probabilités de victoire en duel
2.4.4.7-Les combos
2.4.5-Pré-conclusion sur les règles
2.5-Expérience et évolution des cartes
2.5.1-Evolution de l'attaque et des défenses
2.5.2-Evolution du type de cartes
2.5.3-Liste des cartes
2.6-Le niveau de collectionneur
2.6.1-Les différents niveaux
2.6.2-Sur la distinction des cartes
2.6.3-Les points attribués par cartes
2.6.3.1-Note sur les permutations de motifs
2.6.4-La cerise sur le gateau
3-Pour conclure, enfin
3.1-Qu'en tirer
3.2-La suite
3.3-Remerciements
3.4-L'ultime mot de la fin
|}]

let%expect_test "from toc to html" =
print_html [];
[%expect {| <div class='hidden'></div> |}]
Expand Down

0 comments on commit 54aedd7

Please sign in to comment.