library(RKorAPClient)
library(httr)
library(httpuv)
library(tidyverse)
library(scales)
library(idsThemeR)
library(kableExtra)
library(DT)

nkjp = new("KorAPConnection",  KorAPUrl = "https://korap.ids-mannheim.de/instance/nkjp1m-sgjp")
wordsFromQuery <- function (query) {
  v <- str_split(query, "([! )(\uc2\uab,.:?\u201e\u201c\'\"]+|&quot;)") %>% unlist() %>%  unique()
  v <- v[str_detect(v, '^[:alnum:]+-?[:alnum:]*$')]
  v[order(nchar(v), v, decreasing = T)]
}

po2en <- function(text) {
  deeplr::translate2(
    text,
    target_lang = "EN",
    source_lang = "PO",
    auth_key = "87372412-770c-73c5-cdb9-2c6bee43afc4:fx"
  )
}

ro2en <- function(text) {
  deeplr::translate2(
    text,
    target_lang = "EN",
    source_lang = "RO",
    auth_key = "87372412-770c-73c5-cdb9-2c6bee43afc4:fx"
  )
}

de2en <- function(text) {
  deeplr::translate2(
    text,
    target_lang = "EN",
    source_lang = "DE",
    auth_key = "87372412-770c-73c5-cdb9-2c6bee43afc4:fx"
  )
}

highliteSubstrings <- function (string, substrings) {
  what = paste0('(', paste0(substrings, collapse="|"), ')')
  with = '<b>\\1</b>'
  str_replace_all(string, what, with)
}

deleteFillers <- function (string) {
  string %>%
    str_replace_all('</b> +<b>', ' ') %>%
    str_replace_all('</b>[^<]+<b>', ' ... ') %>%
    str_replace_all('^[^<]*<b>', '') %>%
    str_replace_all('</b>[^<]*$', '')

}

show_table <- function(df) {
  df %>%
    mutate(Collocate=sprintf('<a href="%s">%s</a>', webUIRequestUrl, collocate)) %>%
    mutate(example=str_replace(example, ".*(\\W+\\w+\\W+\\w+\\W+<mark.*/mark>.*)", "\\1")) %>%
    mutate(example=str_replace(example, "(.*<mark.*/mark>\\W+\\w+\\W+\\w+).*", "\\1")) %>%
#    rowwise() %>%
#    mutate(Example=highliteSubstrings(example, wordsFromQuery(query))) %>%
    mutate(Example=example) %>%
    select(Collocate, EN, Example, logDice, pmi) %>%
#    head(50) %>%
    datatable(escape = F, rownames = FALSE) %>%
    formatRound(columns=~logDice + pmi, digits=2)
}


show_lvc_table <- function(df, pageLength = 10) {
  df %>%
#    mutate(Collocate=sprintf('<a href="%s">%s</a>', webUIRequestUrl, collocate)) %>%
    select(LVC, EN, logDice, pmi, ll) %>%
    datatable(options = list(pageLength = pageLength), escape = F, rownames = FALSE) %>%
    formatRound(columns=~logDice + pmi + ll, digits=2)
}

show_simple_table_tr <- function(df, pageLength = 20) {
  df %>%
    mutate(Collocate=sprintf('<a href="%s">%s</a>', webUIRequestUrl, collocate)) %>%
    select(Collocate, en, logDice, pmi, ll) %>%
    datatable(options = list(pageLength = pageLength), escape = F) %>%
    formatRound(columns=~logDice + pmi + ll, digits=2)
}

show_simple_table <- function(df, pageLength = 20) {
  df %>%
    mutate(Collocate=sprintf('<a href="%s">%s</a>', webUIRequestUrl, collocate)) %>%
    select(Collocate, logDice, pmi, ll) %>%
    datatable(options = list(pageLength = pageLength), escape = F) %>%
    formatRound(columns=~logDice + pmi + ll, digits=2)
}
