diff --git a/R/knit2wpCrayon.R b/R/knit2wpCrayon.R index 7b84a8157d966b42814af11f04c8f8ae17bb2067..6c4f45c99d27418628154967abf61e9c0054dc8b 100644 --- a/R/knit2wpCrayon.R +++ b/R/knit2wpCrayon.R @@ -65,23 +65,39 @@ knit2wpCrayon <- function(input, title="A post from knitr", ..., stop("`markdown` needed for this function to work. Please install it.", call.=FALSE) } - if (!requireNamespace("RWordPress", quietly=TRUE)){ + if (!requireNamespace("RWordPress", quietly=TRUE)){ stop("`RWordPress` needed for this function to work. Please install it.", call.=FALSE) } + ## + ##------------------------------------------- + ## knitr:::native_encode(). + ## + native_encode <- function (x, to = ""){ + idx = Encoding(x) == "UTF-8" + x2 = iconv(x, if (any(idx)) "UTF-8" else "", to) + if (!any(is.na(x2))) + return(x2) + warning("some characters may not work under the current locale") + x + } + ## + ##------------------------------------------- + ## Modifed body of the knit2wp(). + ## out <- knitr::knit(input, encoding=encoding) on.exit(unlink(out)) con <- file(out, encoding=encoding) on.exit(close(con), add=TRUE) - content <- knitr:::native_encode(readLines(con, warn=FALSE)) + content <- native_encode(readLines(con, warn=FALSE)) content <- paste(content, collapse="\n") content <- markdown::markdownToHTML(text=content, fragment.only=TRUE) content <- gsub( pattern="<pre><code class=\"([[:alpha:]]+)\">(.+?)</code></pre>", replacement="<pre class=\"lang:\\1 decode:true\">\\2</pre>", x=content) - content=knitr:::native_encode(content, "UTF-8") - title=knitr:::native_encode(title, "UTF-8") + content=native_encode(content, "UTF-8") + title=native_encode(title, "UTF-8") if (write){ writeLines(text=content, con=gsub(x=out, pattern="\\.md$", replacement=".html")) @@ -96,3 +112,7 @@ knit2wpCrayon <- function(input, title="A post from knitr", ..., print(do.call(action, args=WPargs)) } } + + +library(knitr) +knitr:::native_encode