Magic mirror for html; minor changes; escape for add footnote
diff --git a/R/footnote.R b/R/footnote.R
index be0ea04..e995af1 100644
--- a/R/footnote.R
+++ b/R/footnote.R
@@ -14,9 +14,10 @@
 #' "number", "alphabet" and "symbol".
 #'
 #' @export
-add_footnote <- function(input, label = NULL, notation = "alphabet",
+add_footnote <- function(input, label = NULL, notation = "alphabet", escape = T,
                          threeparttable = F) {
   if (is.null(label)){return(input)}
+
   # Define available id list
   if (!notation %in% c("number", "alphabet", "symbol")){
     warning('Please select your notation within "number", "alphabet" and ',
@@ -43,26 +44,32 @@
       "&sect;&sect;&sect;&sect;", "&para;&para;&para;&para;"
     ),
     symbol.markdown = c(
-      "\\*", "†", "‡", "§", "¶",
-      "\\*\\*", "††", "‡‡", "§§", "¶¶",
-      "\\*\\*\\*", "†††", "‡‡‡", "§§§", "¶¶¶",
-      "\\*\\*\\*\\*", "††††", "‡‡‡‡", "§§§§", "¶¶¶¶"
+      "\\*", "\u2020", "\u2021", "\u00A7", "\u00B6",
+      "\\*\\*", "\u2020\u2020", "\u2021\u2021", "\u00A7\u00A7", "\u00B6\u00B6",
+      "\\*\\*\\*", "\u2020\u2020\u2020", "\u2021\u2021\u2021",
+      "\u00A7\u00A7\u00A7", "\u00B6\u00B6\u00B6",
+      "\\*\\*\\*\\*", "\u2020\u2020\u2020\u2020", "\u2021\u2021\u2021\u2021",
+      "\u00A7\u00A7\u00A7\u00A7", "\u00B6\u00B6\u00B6\u00B6"
     ),
     symbol.pandoc = c(
-      "\\*", "†", "‡", "§", "¶",
-      "\\*\\*", "††", "‡‡", "§§", "¶¶",
-      "\\*\\*\\*", "†††", "‡‡‡", "§§§", "¶¶¶",
-      "\\*\\*\\*\\*", "††††", "‡‡‡‡", "§§§§", "¶¶¶¶"
+      "\\*", "\u2020", "\u2021", "\u00A7", "\u00B6",
+      "\\*\\*", "\u2020\u2020", "\u2021\u2021", "\u00A7\u00A7", "\u00B6\u00B6",
+      "\\*\\*\\*", "\u2020\u2020\u2020", "\u2021\u2021\u2021",
+      "\u00A7\u00A7\u00A7", "\u00B6\u00B6\u00B6",
+      "\\*\\*\\*\\*", "\u2020\u2020\u2020\u2020", "\u2021\u2021\u2021\u2021",
+      "\u00A7\u00A7\u00A7\u00A7", "\u00B6\u00B6\u00B6\u00B6"
     )
   )
   ids <- ids.ops[,notation]
   # pandoc cannot recognize ^*^ as * is a special character. We have to use ^\*^
   ids.intable <- gsub("\\*", "\\\\*", ids)
   ids.simple <- c(
-    "*", "†", "‡", "§", "¶",
-    "**", "††", "‡‡", "§§", "¶¶",
-    "***", "†††", "‡‡‡", "§§§", "¶¶¶",
-    "****", "††††", "‡‡‡‡", "§§§§", "¶¶¶¶"
+    "*", "\u2020", "\u2021", "\u00A7", "\u00B6",
+    "**", "\u2020\u2020", "\u2021\u2021", "\u00A7\u00A7", "\u00B6\u00B6",
+    "***", "\u2020\u2020\u2020", "\u2021\u2021\u2021",
+    "\u00A7\u00A7\u00A7", "\u00B6\u00B6\u00B6",
+    "****", "\u2020\u2020\u2020\u2020", "\u2021\u2021\u2021\u2021",
+    "\u00A7\u00A7\u00A7\u00A7", "\u00B6\u00B6\u00B6\u00B6"
   )
 
   #count the number of items in label and intable notation
@@ -117,6 +124,9 @@
 
   # Generate latex table footnote --------------------------------
   if(attr(input, "format")=="latex"){
+    # Clean the entry for labels when escape is enabled
+    if (escape = T){label <- knitr:::escape_latex(label)}
+
     kable_info <- magic_mirror(input)
     if(kable_info$tabular == "longtable"){
       if(notation != "number"){
@@ -220,6 +230,3 @@
   }
   return(export)
 }
-
-
-
diff --git a/R/magic_mirror.R b/R/magic_mirror.R
index d9d78d1..9995180 100644
--- a/R/magic_mirror.R
+++ b/R/magic_mirror.R
@@ -1,7 +1,8 @@
 #' Magic mirror that returns kable's attributes
 #'
 #' @param input The output of kable
-#'
+#' @importFrom knitr kable
+#' @import stringr
 #' @export
 
 magic_mirror <- function(input){
@@ -19,7 +20,8 @@
   return(kable_info)
 }
 
-#' Magic mirror for latex tables
+#' Magic mirror for latex tables --------------
+#' @param input The output of kable
 magic_mirror_latex <- function(input){
   kable_info <- list(tabular = NULL, booktabs = NULL, align = NULL,
                      ncol=NULL, nrow=NULL, colnames = NULL, rownames = NULL,
@@ -56,3 +58,46 @@
   kable_info$rownames <- str_extract(kable_info$contents, "^[^ &]*")
   return(kable_info)
 }
+
+#' Magic Mirror for html table --------
+#'
+#' @param input The output of kable
+#'
+#' @importFrom XML readHTMLTable
+magic_mirror_html <- function(input){
+  kable_info <- list(table.attr = NULL, align = NULL,
+                     ncol=NULL, nrow=NULL, colnames = NULL, rownames = NULL,
+                     caption = NULL, contents = NULL)
+  kable_data <- readHTMLTable(input[1])
+  # Caption
+  kable_info$caption <- names(kable_data)
+  # Contents
+  kable_info$contents <- kable_data[[1]]
+  # colnames
+  kable_info$colnames <- str_replace_all(
+    str_trim(names(kable_data[[1]])), "V[0-9]{1,2}", ""
+  )
+  # rownames
+  kable_info$rownames <- as.character(kable_data[[1]][,1])
+  if(str_trim(names(kable_data[[1]])[1]) != "V1"){
+    kable_info$rownames <- c(str_trim(names(kable_data[[1]])[1]),
+                             kable_info$rownames)}
+  # ncol
+  kable_info$ncol <- length(kable_info$colnames)
+  # nrow
+  kable_info$nrow <- length(kable_info$rownames)
+  # table.attr
+  kable_info$table.attr <- str_match(input, "<table class = '(.*)'>")[2]
+  # align
+  kable_info$align <- str_match_all(
+    input, 'style=\\"text-align:([^;]*);'
+    )[[1]][,2]
+  kable_info$align <- paste0(
+    str_extract(tail(kable_info$align, kable_info$ncol), "."), collapse = ""
+  )
+  return(kable_info)
+}
+
+#' @export
+magrittr::`%>%`
+