---
title: "Finding Applied Examples of Ready4 Modules and Sub-modules"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Finding Applied Examples of Ready4 Modules and Sub-modules}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, warning = FALSE)
```

```{r message=FALSE, warning=FALSE}
library(ready4)
```

## Motivation
When considering whether to use a model module, it is useful to first see tutorials about appropriate use of that module. 

## Implementation
A table itemising individual model modules and sub-modules authored with `ready4` can be generated using `make_modules_tb`. This function scrapes relevant data from the websites of module libraries that have been developed within a specified project's GitHub organisation.

## Use
In this example, we are going to examine modules from the [readyforwhatsnext model](https://readyforwhatsnext.org/). The value supplied to the `gh_repo_1L_chr` argument specifies the repository in which a dataset of readyforwhatsnext module libraries is stored. Note, the following command may take a couple of minutes to execute.

```{r}
modules_tb <- make_modules_tb(gh_repo_1L_chr = "ready4-dev/ready4")
```

A slightly quicker method to achieve a similar result is to use the `get_modules_tb` function. This function retrieves an archived version (and therefore potentially less up to date) of the modules summary table.

```{r eval=FALSE}
# Not run
# modules_tb <- get_modules_tb(gh_repo_1L_chr = "ready4-dev/ready4")
```

The `modules_tb` object itemises both model [modules (which always use R's "S4" class type) and sub-modules ("S3" class type)](https://www.ready4-dev.com/docs/tutorials/develop-models/modularity/). 

To display a HTML summary of just model modules, you can use the `print_modules` function. 

```{r eval=FALSE}
print_modules(modules_tb, what_1L_chr = "S4")
```

```{r echo=FALSE}
print_modules(modules_tb, what_1L_chr = "S4")
```

You can use the same function to display only model sub-modules.

```{r eval=FALSE}
print_modules(modules_tb, what_1L_chr = "S3")
```

```{r echo=FALSE}
print_modules(modules_tb, what_1L_chr = "S3")
```

## Related content
Details of how to search for themed collections of modules is described in [another article](https://www.ready4-dev.com/docs/tutorials/use-models/finding-modules/collections/).