#  POČET SLOV Z HLAVNÉHO RMD BEZ ÚPRAV ZDROJA 
# Názov hlavného Rmd tu:
master_path <- "zadanieData.Rmd"

# Knižnice
suppressPackageStartupMessages({
  library(rmarkdown)
  library(xml2)
  library(rvest)
  library(stringr)
  library(dplyr)
  library(gt)
})

stopifnot(file.exists(master_path))

out_dir  <- tempdir()
out_html <- file.path(out_dir, "wc_tmp.html")
rmarkdown::render(
  master_path,
  output_format = html_document(self_contained = FALSE),
  output_file   = out_html,
  quiet         = TRUE,
  clean         = TRUE,
  envir         = new.env()   # izolované prostredie
)

# 2) Načítanie HTML a odstránenie kódu/widgetov
doc <- xml2::read_html(out_html)
xml_find_all(doc, ".//pre|.//code|.//div[contains(@class,'sourceCode')]|
                     .//script|.//style") |> xml_remove()

# 3) Extrakcia viditeľného textu a čistenie
txt <- rvest::html_text2(doc)
txt <- stringr::str_replace_all(txt, "https?://\\S+|www\\.[^\\s]+", " ") # preč URL
txt <- stringr::str_squish(txt)

# 4) Metríky
n_chars <- nchar(txt, type = "chars")
n_words <- if (nzchar(txt)) length(strsplit(txt, "\\s+")[[1]]) else 0L

# 5) Výstup – pekná zelená tabuľka
emerald_head  <- "#D1FAE5"; emerald_light <- "#ECFDF5"; emerald_text <- "#065F46"

tbl <- tibble::tibble(
  Metrika = c("Počet slov", "Počet znakov"),
  Hodnota = c(n_words, n_chars)
)

gt(tbl) |>
  cols_label(Metrika = "Metrika", Hodnota = "Hodnota") |>
  fmt_number(columns = Hodnota, decimals = 0) |>
  tab_header(title = md("**Počet slov v dokumente**"),
             subtitle = basename(master_path)) |>
  tab_style(
    style = list(cell_fill(color = emerald_head),
                 cell_text(color = emerald_text, weight = "bold")),
    locations = cells_column_labels(everything())
  ) |>
  tab_style(
    style = list(cell_fill(color = emerald_light),
                 cell_text(color = emerald_text)),
    locations = cells_body(everything())
  ) |>
  tab_source_note(md("Text je rátaný zo zrenderovaného HTML po odstránení kódu a URL."))
Počet slov v dokumente
zadanieData.Rmd
Metrika Hodnota
Počet slov 4,303
Počet znakov 29,062
Text je rátaný zo zrenderovaného HTML po odstránení kódu a URL.