Эта первая функция возвращает объект списка
advices_text <- function(prioriteit){
tekst <- list()
switch(prioriteit,
"Priority" = {
tekst$titel <- "Priority"
tekst$advies <- list()
tekst$advies$a1 <- "a"
tekst$advies$a2 <- "b"
tekst$advies$a3 <- "c"
tekst$hulp <- list()
tekst$hulp$h1 <- list()
tekst$hulp$h1$niv1 <- "d"
tekst$hulp$h1$niv2 <- list()
tekst$hulp$h1$niv2$opl1 <- list()
tekst$hulp$h1$niv2$opl1$opl <- "Wish to know something (g)?"
tekst$hulp$h1$niv2$opl1$inh <- "Look it up!"
tekst$hulp$h1$niv2$opl1$info <- list()
tekst$hulp$h1$niv2$opl1$info$i1 <- "More info: "
tekst$hulp$h1$niv2$opl1$info$i2 <- "google.be"
tekst$hulp$h1$niv2$opl1$link$i2 <- "https://www.google.be"
tekst$hulp$h1$niv2$opl2 <- list()
tekst$hulp$h1$niv2$opl2$opl <- "Wish to know something (y)?"
tekst$hulp$h1$niv2$opl2$inh <- "Look it up!"
tekst$hulp$h1$niv2$opl2$info <- list()
tekst$hulp$h1$niv2$opl2$info$i1 <- "More info: "
tekst$hulp$h1$niv2$opl2$info$i2 <- "yahoo.com"
tekst$hulp$h1$niv2$opl2$link$i2 <- "https://www.yahoo.com"
tekst$hulp$h1$niv2$opl3 <- list()
tekst$hulp$h1$niv2$opl3$opl <- "Wish to know something (b)?"
tekst$hulp$h1$niv2$opl3$inh <- "Look it up!"
tekst$hulp$h1$niv2$opl3$info <- list()
tekst$hulp$h1$niv2$opl3$info$i1 <- "More info: "
tekst$hulp$h1$niv2$opl3$info$i2 <- "bing.com"
tekst$hulp$h1$niv2$opl3$link$i2 <- "https://www.bing.com"
})
return(tekst)
}
Эта вторая функция просматривает список и помещает его в объект do c
advices_function <- function(doc, tekst){
doc1 <- doc %>%
body_add_par(tekst$titel, style = "heading 3")
for(i in 1:length(tekst$advies)){
doc1 <- doc1 %>%
body_add_par(tekst$advies[[paste0("a", i)]], style = "centered")
}
for(i in 1:length(tekst$hulp)){
if(class(tekst$hulp[[paste0("h", i)]]) == "list"){
doc1 <- doc1 %>%
body_add_par(tekst$hulp[[paste0("h", i)]][["niv1"]], style = "centered")
for(j in 1:length(tekst$hulp[[paste0("h", i)]][["niv2"]])){
doc1 <- doc1 %>%
body_add_fpar(fpar(ftext(tekst$hulp[[paste0("h", i)]][["niv2"]][[paste0("opl", j)]][["opl"]], prop = fp_text(color = "#7843A5"))), style = "centered") %>%
body_add_par(tekst$hulp[[paste0("h", i)]][["niv2"]][[paste0("opl", j)]][["inh"]], style = "centered")
if(class(tekst$hulp[[paste0("h", i)]][["niv2"]][[paste0("opl", j)]][["info"]]) == "list"){
doc1 <- doc1 %>%
body_add_par(tekst$hulp[[paste0("h", i)]][["niv2"]][[paste0("opl", j)]][["info"]][["i1"]], style = "centered") %>%
slip_in_text(tekst$hulp[[paste0("h", i)]][["niv2"]][[paste0("opl", j)]][["info"]][["i2"]], hyperlink = tekst$hulp[[paste0("h", i)]][["niv2"]][[paste0("opl", j)]][["link"]][["i2"]], pos = "after", style = "Default Paragraph Font")
if(!is.null(tekst$hulp[[paste0("h", i)]][["niv2"]][[paste0("opl", j)]][["info"]][["i3"]])){
doc1 <- doc1 %>%
slip_in_text(" en ", pos = "after") %>%
slip_in_text(tekst$hulp[[paste0("h", i)]][["niv2"]][[paste0("opl", j)]][["info"]][["i3"]], hyperlink = tekst$hulp[[paste0("h", i)]][["niv2"]][[paste0("opl", j)]][["link"]][["i3"]], pos = "after", style = "Default Paragraph Font")
}
} else {
doc1 <- doc1 %>%
body_add_par(tekst$hulp[[paste0("h", i)]][["niv2"]][[paste0("opl", j)]][["info"]], style = "centered")
}
}
} else {
doc1 <- doc1 %>%
body_add_par(tekst$hulp[[paste0("h", i)]], style = "centered")
}
}
return(doc1)
}
Третья функция создает docx.
advices <- function(){
tekst1 <- advices_text(prioriteit = "Priority")
doc <- read_docx() %>%
body_add_par("Advice", style = "heading 2") %>%
body_add_par("Global advice", style = "heading 3") %>%
body_add_par("Priorities:", style = "Normal") %>%
body_add_fpar(fpar(ftext("Help!", prop = fp_text(color = "#7843A5"))), style = "centered") %>%
body_add_par("Would you like help?", style = "centered") %>%
body_add_par("More info: ", style = "centered") %>%
body_add_par("Other solutions are found via ", style = "Normal") %>%
slip_in_text("google.be", pos = "after", hyperlink = "https://www.google.be", style = "Default Paragraph Font") %>%
advices_function(tekst1) %>%
advices_function(tekst1) %>%
print(target = "temp.docx")
}
Почему
- slip_in_text в функции advices () показывает правильную гиперссылку?
- slip_in_text в advices_function (), вызываемой в advices () выбрасывает ссылку Yahoo из списка на google.be?
- документ содержит нечитаемое содержимое, когда advices_function () вызывается несколько раз?
- последний абзац, добавленный через функцию advices_function ( ) не содержит ни одной гиперссылки?