| result_pad <- sprintf("pad%02d", max_pad_level - 3) | result_pad <- sprintf("pad%02d", max_pad_level - 3) | ||||
| } | } | ||||
| } | } | ||||
| paste("<p class='results", result_pad, "'>", resi, "</p>") | |||||
| paste('<p class="results', result_pad, '">', resi, "</p>") | |||||
| }) | }) | ||||
| res <- paste(res, collapse = "") | res <- paste(res, collapse = "") | ||||
| if (!nchar(pattern)) res <- paste("<p class='results'>", text, "</p>") | if (!nchar(pattern)) res <- paste("<p class='results'>", text, "</p>") | ||||
| tmp_html <- suppressWarnings( | tmp_html <- suppressWarnings( | ||||
| rmarkdown::render( | rmarkdown::render( | ||||
| tmp, | tmp, | ||||
| output_format = rmarkdown::html_document(css = c(system.file("styles", 'skeleton.css', package='regexplain'), | |||||
| system.file("styles", 'view_regex.css', package='regexplain'), | |||||
| system.file("styles", 'groups.css', package='regexplain')), | |||||
| theme = NULL, | |||||
| md_extensions = "-autolink_bare_uris"), | |||||
| output_format = rmarkdown::html_document( | |||||
| css = c(system.file("styles", 'skeleton.css', package='regexplain'), | |||||
| system.file("styles", 'view_regex.css', package='regexplain'), | |||||
| system.file("styles", 'groups.css', package='regexplain')), | |||||
| theme = NULL, | |||||
| md_extensions = "-autolink_bare_uris"), | |||||
| quiet = TRUE | quiet = TRUE | ||||
| )) | )) | ||||
| rstudioapi::viewer(tmp_html) | rstudioapi::viewer(tmp_html) |
| m <- regex(text, pattern, global = TRUE) | m <- regex(text, pattern, global = TRUE) | ||||
| expect_equal(unique(m[[1]]$idx$pass), c(1L, 2L)) | expect_equal(unique(m[[1]]$idx$pass), c(1L, 2L)) | ||||
| }) | }) | ||||
| test_that("view_regex generall works", { | |||||
| result <- "<p class=\"results \"> <span class=\"group g00\"><span class=\"group g01\">t</span>e</span><span class=\"group g00\"><span class=\"group g01\">s</span>t</span> </p>" | |||||
| expect_equal(view_regex("test", "(\\w)\\w", render = FALSE), result) | |||||
| }) |
| expect_equal(wrap_regex("((?:a(b))c)"), | expect_equal(wrap_regex("((?:a(b))c)"), | ||||
| "<span class=\"g01\">((?:a<span class=\"g02\">(b)</span>)c)</span>") | "<span class=\"g01\">((?:a<span class=\"g02\">(b)</span>)c)</span>") | ||||
| }) | }) | ||||
| test_that("wrap_regex returns text if no matches", { | |||||
| expect_equal( | |||||
| wrap_result(list(text = "no result")), | |||||
| "no result" | |||||
| ) | |||||
| }) |
| ) | ) | ||||
| expect_equal(wrap_result(regex(text, pattern, global = TRUE)[[1]]), result) | expect_equal(wrap_result(regex(text, pattern, global = TRUE)[[1]]), result) | ||||
| }) | }) | ||||
| test_that("handles escaped parentheses", { | |||||
| expect_equal( | |||||
| wrap_regex("\\((word)\\)"), | |||||
| '\\\\(<span class=\"g01\">(word)</span>\\\\)' | |||||
| ) | |||||
| }) | |||||
| test_that("wrap_result with exact = TRUE", { | |||||
| # input/output standard R characters | |||||
| expect_equal( | |||||
| wrap_result(regex("a\\b", "\\\\")[[1]]), | |||||
| "a<span class=\"group g00\">\\</span>b" | |||||
| ) | |||||
| # input is "literal", output is R string to match literal input | |||||
| expect_equal( | |||||
| wrap_result(regex("a\\b", "\\\\")[[1]], exact = TRUE), | |||||
| "a<span class=\"group g00\">\\\\</span>b" | |||||
| ) | |||||
| }) |