-
Notifications
You must be signed in to change notification settings - Fork 0
/
iframeify.R
46 lines (37 loc) · 1.45 KB
/
iframeify.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
## iframeify.R
## by Steve Myles / https://stevemyles.site/
## 10 February 2019
##
## converts a markdown file into an iframe-able html file for embedding in
## another site such as tumblr
## load knitr and stringr packages
library(knitr)
library(stringr)
iframeify <- function(filename, stylesheet = "styles.css", styles = "styles.txt") {
## add markdown and html extensions to filename
md_filename <- paste0(filename, ".md")
html_filename <- paste0(filename, ".html")
## check whether stylesheet exists; if not, set to blank
if (!file.exists(stylesheet))
stylesheet = ""
## knit
knit2html(md_filename, html_filename, stylesheet = stylesheet)
## read the html and styles files into memory; if styles does not exist,
## replace it with opening html <style> tag
html <- readLines(html_filename)
if (file.exists(styles)) {
styles <- paste(readLines(styles), collapse = "\n")
} else {
styles = '<style type="text/css">'
}
## replace the title, add the styles, and add 'target="_parent"' to html tags
html <- html %>%
str_c() %>%
str_replace_all(c('<title>(.*?)</title>' = paste0('<title>', filename, '</title>'),
'<style type="text/css">' = styles,
'a href' = 'a target="_parent" href'))
## write results back to the html file
writeLines(html, con = html_filename)
## remove interim .txt file
file.remove(paste0(filename, ".txt"))
}