Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixing example file copy over function #72

Merged
merged 17 commits into from
Sep 28, 2021
Merged
2 changes: 1 addition & 1 deletion NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export(replace_html)
export(replace_single_html)
export(set_knitr_image_path)
export(simple_references)
importFrom(fs,dir_copy)
importFrom(magrittr,"%>%")
importFrom(readr,write_tsv)
importFrom(utils,download.file)
importFrom(utils,unzip)
1 change: 1 addition & 0 deletions R/coursera.R
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ convert_coursera_quizzes <- function(input_quiz_dir = "quizzes",
#' @export
#' @rdname coursera
#'
#' @importFrom utils download.file
#'
render_coursera <- function(
output_dir = file.path("docs", "coursera"),
Expand Down
93 changes: 37 additions & 56 deletions R/example_data.R
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
good_quiz_path <- function() {
list.files(
pattern = "quiz_good.md$",
recursive = TRUE,
system.file("extdata", package = "leanbuild"),
full.names = TRUE
)
Expand All @@ -25,6 +26,7 @@ good_quiz_path <- function() {
bad_quiz_path <- function() {
list.files(
pattern = "quiz_bad.md$",
recursive = TRUE,
system.file("extdata", package = "leanbuild"),
full.names = TRUE
)
Expand All @@ -35,80 +37,59 @@ bad_quiz_path <- function() {
#' @param dest_dir The destination directory you would like the example repo files to be placed. By default is current directory.
#' @export
#'
#' @importFrom utils download.file
#' @importFrom utils unzip
#' @importFrom fs dir_copy
#' @examples
#' # Run this to get the files we need
#' example_files <- leanbuild::example_repo_setup()
#'
#' example_repo_setup()
example_repo_setup <- function(dest_dir = ".") {

zip_file <- file.path(dest_dir, "example-repo.zip")
bookdown_path <- list.files(
pattern = "_bookdown.yml$",
system.file("extdata/", package = "leanbuild"),
full.names = TRUE
)

# Copy over whole directory
fs::dir_copy(dirname(bookdown_path), dest_dir, overwrite = TRUE)

if (!dir.exists(dest_dir)) {
dir.create(dest_dir)
}
download.file(url = "https://github.com/jhudsl/DaSL_Course_Template_Leanpub/raw/main/example-repo.zip",
destfile = zip_file)
copied_files <- list.files(dirname(bookdown_path), full.names = TRUE)

# See what unzip is being used
operating_system <- Sys.info()[1]
message(operating_system)
if (operating_system == "Windows" ){
# Unzip function doesn't always work for windows
system(paste("7z a -tzip", zip_file, dest_dir))
} else {
# Unzip the folder
utils::unzip(zip_file, exdir = dest_dir)
}
return(copied_files)
}

#' Clean up example repo files
#'
#' @param dir What directory to delete the example files from
#' @param files_to_remove List of example files to delete.
#' @param verbose TRUE/FALSE would you like progress messages?
#' @export
#'
#' @examples
#'
#' example_repo_cleanup()
#' # Run this to get the files we need
#' example_files <- leanbuild::example_repo_setup()
#'
example_repo_cleanup <- function(dir = ".") {

file_list <- file.path(dir, "resources", "needed_leanbuild_files.txt")
if (file.exists(file_list)) {
file_list <- readLines(file.path(dir, "resources", "needed_leanbuild_files.txt"))
} else {
file_list <- NULL
}
# Find example folder file
files_to_remove <- c(
file_list,
"_bookdown.yml",
"_output.yml",
"01-intro.Rmd",
"02-chapter_of_course.Rmd",
"About.Rmd",
"assets",
"docs",
"example-repo.zip",
"index.Rmd",
"quizzes",
"resources",
"Course_Name.rds",
"manuscript",
"question_error_report.tsv",
"packages.bib")

#' # Run this to delete them
#' example_repo_cleanup(files_to_remove = basename(example_files))
#'
example_repo_cleanup <- function(files_to_remove, verbose = FALSE) {

message("Cleaning up and removing example repo files")

# Now remove it all
lapply(files_to_remove, function(file) {
if (file.exists(file) | dir.exists(file)) {
system(paste0("chmod +w -R", file))
system(paste0("sudo rm -r ", file))
files_to_remove <- c(list.files("quizzes", recursive = TRUE, full.names = TRUE),
list.files("docs", recursive = TRUE, full.names = TRUE),
list.files("manuscript", recursive = TRUE, full.names = TRUE),
list.files("resources", recursive = TRUE, full.names = TRUE),
files_to_remove,
"question_error_report.tsv",
"Course_Name.rds"
)

lapply(files_to_remove, function(file2remove, verbose = verbose) {
if (file.exists(file2remove)) {
message(paste0("Removing: ", file2remove))
file.remove(file2remove)
}
})
}

# save(bad_quiz, bad_quiz, file = "bad_quiz.RData")
# save(good_quiz, good_quiz, file = "good_quiz.RData")
}
20 changes: 20 additions & 0 deletions inst/extdata/01-intro.Rmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
title: "Course Title"
---

```{r, include = FALSE}
leanbuild::set_knitr_image_path()
```

# Introduction

## Motivation
This course will cover

**Target Audience:**
The course is intended for

**Curriculum:**
The curriculum will cover

This course was funded by
111 changes: 111 additions & 0 deletions inst/extdata/02-example-chapter.Rmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
---
title: "Example Chapter"
---

# Example Chapter

Every chapter needs to start out with this chunk of code:

```{r, include = FALSE}
leanbuild::set_knitr_image_path()
```

### Code examples

You can demonstrate code like this:

```{r}
output_dir <- file.path("resources", "code_output")
if (!dir.exists(output_dir)) {
dir.create(output_dir)
}
```

And make plots too:

```{r}
hist_plot <- hist(iris$Sepal.Length)
```

You can also save these plots to file:

```{r}
png(file.path(output_dir, "test_plot.png"))
hist_plot
dev.off()
```

### Image example


How to include a Google slide.

```{r, fig.align='center', echo = FALSE, fig.alt= "Major point!! example image"}
leanbuild::include_slide("https://docs.google.com/presentation/d/1YmwKdIy9BeQ3EShgZhvtb3MgR8P6iDX4DfFD65W_gdQ/edit#slide=id.gcc4fbee202_0_141")
```

But if you have the slide or some other image locally downloaded you can also use html like this:

<img src="resources/images/02-example-chapter_files/figure-html//1YmwKdIy9BeQ3EShgZhvtb3MgR8P6iDX4DfFD65W_gdQ_gcc4fbee202_0_141.png" title="Major point!! example image" alt="Major point!! example image" style="display: block; margin: auto;" />


### Video examples

You can use `knitr::include_url()` like this:

```{r}
knitr::include_url("https://www.youtube.com/embed/VOCYL-FNbr0")
```

OR this works:

<iframe src="https://www.youtube.com/embed/VOCYL-FNbr0" width="672" height="400px"></iframe>

### Links to files

This works:

```{r, fig.align="center", echo=FALSE}
knitr::include_url("https://www.messiah.edu/download/downloads/id/921/Microaggressions_in_the_Classroom.pdf", height = "800px")
```

Or this:

[This works](https://www.messiah.edu/download/downloads/id/921/Microaggressions_in_the_Classroom.pdf).

Or this:

<iframe src="https://www.messiah.edu/download/downloads/id/921/Microaggressions_in_the_Classroom.pdf" width="672" height="800px"></iframe>

### Links to websites

Examples of including a website link.

This works:

```{r, fig.align="center"}
knitr::include_url("https://yihui.org")
```

OR this:

![Another link](https://yihui.org)

OR this:

<iframe src="https://yihui.org" width="672" height="400px"></iframe>

### Citation examples

We can put citations at the end of a sentence like this [@R-bookdown].
Or multiple citations [@R-bookdown, @R-rmarkdown].

but they need a ; separator [@R-bookdown, @R-rmarkdown].

In text, we can put citations like this @R-rmarkdown.

## Print out session info

```{r}
sessionInfo()
```
13 changes: 13 additions & 0 deletions inst/extdata/_bookdown.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
book_filename: "Course_Name"
chapter_name: "Chapter "
repo: https://github.com/jhudsl/DaSL_Course_Template_Bookdown/
rmd_files: ["index.Rmd",
"01-intro.Rmd",
"02-example-chapter.Rmd"]
new_session: yes
bibliography: "references.bib"
delete_merged_file: true
language:
ui:
chapter_name: "Chapter"
output_dir: "docs"
6 changes: 6 additions & 0 deletions inst/extdata/index.Rmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
date: "`r format(Sys.time(), '%B, %Y')`"
link-citations: yes
---

# About this Course
85 changes: 85 additions & 0 deletions inst/extdata/references.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
@Manual{R-base,
title = {R: A Language and Environment for Statistical Computing},
author = {{R Core Team}},
organization = {R Foundation for Statistical Computing},
address = {Vienna, Austria},
year = {2020},
url = {https://www.R-project.org/},
}

@Manual{R-bookdown,
title = {bookdown: Authoring Books and Technical Documents with R Markdown},
author = {Yihui Xie},
year = {2021},
note = {https://github.com/rstudio/bookdown,
https://pkgs.rstudio.com/bookdown/},
}

@Manual{R-knitr,
title = {knitr: A General-Purpose Package for Dynamic Report Generation in R},
author = {Yihui Xie},
year = {2021},
note = {R package version 1.33},
url = {https://yihui.org/knitr/},
}

@Manual{R-rmarkdown,
title = {rmarkdown: Dynamic Documents for R},
author = {JJ Allaire and Yihui Xie and Jonathan McPherson and Javier Luraschi and Kevin Ushey and Aron Atkins and Hadley Wickham and Joe Cheng and Winston Chang and Richard Iannone},
year = {2021},
note = {https://github.com/rstudio/rmarkdown,
https://pkgs.rstudio.com/rmarkdown/},
}

@Book{bookdown2016,
title = {bookdown: Authoring Books and Technical Documents with {R} Markdown},
author = {Yihui Xie},
publisher = {Chapman and Hall/CRC},
address = {Boca Raton, Florida},
year = {2016},
note = {ISBN 978-1138700109},
url = {https://bookdown.org/yihui/bookdown},
}

@Book{knitr2015,
title = {Dynamic Documents with {R} and knitr},
author = {Yihui Xie},
publisher = {Chapman and Hall/CRC},
address = {Boca Raton, Florida},
year = {2015},
edition = {2nd},
note = {ISBN 978-1498716963},
url = {https://yihui.org/knitr/},
}

@InCollection{knitr2014,
booktitle = {Implementing Reproducible Computational Research},
editor = {Victoria Stodden and Friedrich Leisch and Roger D. Peng},
title = {knitr: A Comprehensive Tool for Reproducible Research in {R}},
author = {Yihui Xie},
publisher = {Chapman and Hall/CRC},
year = {2014},
note = {ISBN 978-1466561595},
url = {http://www.crcpress.com/product/isbn/9781466561595},
}

@Book{rmarkdown2018,
title = {R Markdown: The Definitive Guide},
author = {Yihui Xie and J.J. Allaire and Garrett Grolemund},
publisher = {Chapman and Hall/CRC},
address = {Boca Raton, Florida},
year = {2018},
note = {ISBN 9781138359338},
url = {https://bookdown.org/yihui/rmarkdown},
}

@Book{rmarkdown2020,
title = {R Markdown Cookbook},
author = {Yihui Xie and Christophe Dervieux and Emily Riederer},
publisher = {Chapman and Hall/CRC},
address = {Boca Raton, Florida},
year = {2020},
note = {ISBN 9780367563837},
url = {https://bookdown.org/yihui/rmarkdown-cookbook},
}

Loading