# 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. |