почему слип_in_text от офицера в некоторых случаях выдает неожиданные гиперссылки? - PullRequest
0 голосов
/ 04 марта 2020

Эта первая функция возвращает объект списка

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 ( ) не содержит ни одной гиперссылки?
...