‘fusen’ v0.6.0 (beta) : un nouveau parseur Rmd/Qmd avec ‘lightparser’ à tester avant release

banner with sticker logo of fusen package
Author : Sébastien Rochette
Tags : développement, fusen, package, thinkrverse
Date :

{fusen} s’appuie désormais sur {lightparser} pour détecter les différentes parties d’un fichier Rmd ou Qmd avant de gonfler votre fichier plat en tant que package R. Avant la sortie sur CRAN, j’ai besoin que vous testiez la version de développement et me signaliez les cas particuliers avec vos fichiers plats.

Pas l’temps d’tout lire

Veuillez essayer la version préliminaire de {fusen} avec {lightparser}, afin que je puisse identifier les cas particuliers avant la sortie sur CRAN.

  • Installez {fusen} et {lightparser} depuis r-universe :
install.packages('lightparser', repos = c('https://thinkr-open.r-universe.dev', 'https://cloud.r-project.org'))
install.packages('fusen', repos = c('https://thinkr-open.r-universe.dev', 'https://cloud.r-project.org'))
fusen::inflate_all()

Merci !

fusen 0.6.0 avec un nouveau parseur

hex log of fusen package{fusen} utilise maintenant {lightparser} au lieu de {parsermd} pour détecter les différentes parties d’un fichier Rmd ou Qmd avant de gonfler votre fichier plat en tant que package R.

Le changement de parseur a été motivé par des problèmes d’installation rencontrés avec {fusen} et {parsermd} sur CentOS ou sur Windows.

Error : C++14 standard requested but CXX14 is not defined

Vous pouvez essayer cette nouvelle version de {fusen} sur vos projets actuels. Je vous suggère de créer une nouvelle branche git sur votre projet pour tester cette version de {fusen}.

Installez {fusen} et {lightparser} depuis r-universe :

install.packages('lightparser', repos = c('https://thinkr-open.r-universe.dev', 'https://cloud.r-project.org'))
install.packages('fusen', repos = c('https://thinkr-open.r-universe.dev', 'https://cloud.r-project.org'))

Gonflez tous vos fichiers plats en cours, ou bien tous les fichiers plats en même temps :

fusen::inflate_all()

Il y aura des différences connues dans les sorties :

  • Le fichier DESCRIPTION stockera le nouveau numéro de version de {fusen}.
  • Les vignettes seront réécrites avec le paramètre de chunk en tant que liste Quarto (#| eval: false) à l’intérieur du chunk, au lieu de l’ancien paramètre {r, eval = FALSE} dans l’appel du chunk, quelle que soit la manière dont vous les avez déclarées dans le fichier plat.
  • Vous verrez probablement des différences dans le nombre de lignes vides dans les vignettes en raison de la façon dont les différentes sections sont détectées et restaurées par {lightparser}.

Veuillez signaler tout comportement suspect en ajoutant un commentaire dans ce ticket #237 sur le repo {fusen} avec un exemple reproductible avant que je ne publie cette version sur CRAN.

En théorie, cela ne devrait affecter que le processus de copier-coller de votre fichier plat dans les fichiers R, de test et de vignettes résultants.
Selon la version de {fusen} que vous utilisiez auparavant, les changements peuvent être plus importants.
Veuillez consulter l’historique des modifications :

Notez qu’il y a d’autres changements dans cette version de {fusen} :

lightparser 0.0.1, le nouveau parseur pour les fichiers Rmd/Qmd

{lightparser} est une version légère de ce que {parsermd} faisait, mais sans C++. Il a été conçu pour être utilisé avec {fusen}, mais peut également être utilisé indépendamment.

Cela me permettra également de maintenir {lightparser} en fonction des besoins de {fusen}.

Installez {lightparser} depuis r-universe :

install.packages('lightparser', repos = c('https://thinkr-open.r-universe.dev', 'https://cloud.r-project.org'))

Séparer votre Rmd ou Qmd en section dans un tibble :

library(lightparser)
file <- system.file(
  "dev-template-parsing.Rmd",
  package = "lightparser"
)
tbl_rmd <- split_to_tbl(file)
tbl_rmd
#> # A tibble: 35 × 8
#>    type    label       params       text     code  heading heading_level section
#>    <chr>   <chr>       <list>       <named > <lis> <chr>           <dbl> <chr>  
#>  1 yaml    <NA>        <named list> <lgl>    <lgl> <NA>               NA <NA>   
#>  2 inline  <NA>        <lgl [1]>    <chr>    <lgl> <NA>               NA <NA>   
#>  3 block   development <named list> <lgl>    <chr> <NA>               NA <NA>   
#>  4 inline  <NA>        <lgl [1]>    <chr>    <lgl> <NA>               NA <NA>   
#>  5 heading <NA>        <lgl [1]>    <chr>    <lgl> Descri…             1 Descri…
#>  6 inline  <NA>        <lgl [1]>    <chr>    <lgl> <NA>               NA Descri…
#>  7 block   description <named list> <lgl>    <chr> <NA>               NA Descri…
#>  8 inline  <NA>        <lgl [1]>    <chr>    <lgl> <NA>               NA Descri…
#>  9 heading <NA>        <lgl [1]>    <chr>    <lgl> Read d…             1 Read d…
#> 10 inline  <NA>        <lgl [1]>    <chr>    <lgl> <NA>               NA Read d…
#> # ℹ 25 more rows

Vous pouvez recréer le fichier Rmd/Qmd à partir du tibble renvoyé par split_to_tbl().
Avant de combiner le tibble en tant que nouveau fichier, vous pouvez modifier son contenu en supprimant ou ajoutant des lignes, en remplaçant du contenu, etc.

file <- system.file("dev-template-parsing.Rmd",
  package = "lightparser"
)
# split first
tbl_rmd <- split_to_tbl(file)
# apply your filters on any part you'd like to remove
tbl_rmd_filtered <- tbl_rmd[-5, ]
# combine then
combine_tbl_to_file(tbl_rmd_filtered, tempfile(fileext = ".Rmd"))

Qu’est-ce qui se passe après ?

Je vais publier cette version de {fusen} sur CRAN dans quelques jours si aucun problème n’est signalé.
J’espère que ces changements faciliteront l’installation de {fusen} pour tout le monde, en particulier pour les utilisateurs de Windows et de CentOS.

Au cas où vous l’auriez manqué, les dernières versions de {fusen} ont apporté quelques améliorations :


Comments


Also read