From e86b8429329ed909d245b7f4fb6e2fbe58a34ca0 Mon Sep 17 00:00:00 2001 From: olivroy Date: Fri, 30 Aug 2024 14:40:51 -0400 Subject: [PATCH 01/11] refactor applying footnote marks to title and subtitle --- R/utils_render_grid.R | 4 ++-- R/utils_render_html.R | 8 ++++---- R/utils_render_latex.R | 4 ++-- R/utils_render_rtf.R | 2 -- R/utils_render_xml.R | 9 +++++---- 5 files changed, 13 insertions(+), 14 deletions(-) diff --git a/R/utils_render_grid.R b/R/utils_render_grid.R index f3644b83d6..af811484c6 100644 --- a/R/utils_render_grid.R +++ b/R/utils_render_grid.R @@ -129,7 +129,7 @@ create_heading_component_g <- function(data) { footnote_title_marks <- footnote_mark_to_html( data = data, - mark = footnote_title_marks$fs_id_c + mark = footnote_title_marks ) } footnote_subtitle_marks <- "" @@ -142,7 +142,7 @@ create_heading_component_g <- function(data) { footnote_subtitle_marks <- footnote_mark_to_html( data = data, - mark = footnote_subtitle_marks$fs_id_c + mark = footnote_subtitle_marks ) } diff --git a/R/utils_render_html.R b/R/utils_render_html.R index ae8471b1ac..ba129086d6 100644 --- a/R/utils_render_html.R +++ b/R/utils_render_html.R @@ -237,8 +237,8 @@ coalesce_marks <- function( locname, delimiter = "," ) { - filtered_tbl <- dplyr::filter(fn_tbl, locname == !!locname) - dplyr::summarize(filtered_tbl, fs_id_c = paste(fs_id, collapse = delimiter)) + fs_ids <- vctrs::vec_slice(fn_tbl$fs_id, fn_tbl$locname == locname) + paste(fs_ids, collapse = delimiter) } # Get the attributes for the table tag @@ -415,7 +415,7 @@ create_heading_component_h <- function(data) { footnote_title_marks <- footnote_mark_to_html( data = data, - mark = footnote_title_marks$fs_id_c + mark = footnote_title_marks ) } else { @@ -449,7 +449,7 @@ create_heading_component_h <- function(data) { footnote_subtitle_marks <- footnote_mark_to_html( data = data, - mark = footnote_subtitle_marks$fs_id_c + mark = footnote_subtitle_marks ) } else { diff --git a/R/utils_render_latex.R b/R/utils_render_latex.R index c54975226a..71cefe8570 100644 --- a/R/utils_render_latex.R +++ b/R/utils_render_latex.R @@ -342,7 +342,7 @@ create_heading_component_l <- function(data) { footnote_title_marks <- footnote_mark_to_latex( data = data, - mark = footnote_title_marks$fs_id_c + mark = footnote_title_marks ) } else { @@ -361,7 +361,7 @@ create_heading_component_l <- function(data) { footnote_subtitle_marks <- footnote_mark_to_latex( data = data, - mark = footnote_subtitle_marks$fs_id_c + mark = footnote_subtitle_marks ) } else { diff --git a/R/utils_render_rtf.R b/R/utils_render_rtf.R index 2d78e30fbc..955ab14eb1 100644 --- a/R/utils_render_rtf.R +++ b/R/utils_render_rtf.R @@ -1046,14 +1046,12 @@ create_heading_component_rtf <- function(data) { if ("title" %in% footnotes_tbl$locname) { footnote_title_marks <- coalesce_marks(fn_tbl = footnotes_tbl, locname = "title") - footnote_title_marks <- footnote_title_marks$fs_id_c } else { footnote_title_marks <- "" } if ("subtitle" %in% footnotes_tbl$locname) { footnote_subtitle_marks <- coalesce_marks(fn_tbl = footnotes_tbl, locname = "subtitle") - footnote_subtitle_marks <- footnote_subtitle_marks$fs_id_c } else { footnote_subtitle_marks <- "" } diff --git a/R/utils_render_xml.R b/R/utils_render_xml.R index 7721c248c1..5a61daa7d7 100644 --- a/R/utils_render_xml.R +++ b/R/utils_render_xml.R @@ -1244,7 +1244,7 @@ create_table_caption_component_xml <- function( footnote_title_marks <- footnote_mark_to_xml( data = data, - mark = footnote_title_marks$fs_id_c + mark = footnote_title_marks ) footnote_title_marks <- as_xml_node(footnote_title_marks)[[1L]] @@ -1301,7 +1301,8 @@ create_table_caption_component_xml <- function( footnote_subtitle_marks <- footnote_mark_to_xml( data = data, - mark = footnote_subtitle_marks$fs_id_c) + mark = footnote_subtitle_marks + ) footnote_subtitle_marks <- as_xml_node(footnote_subtitle_marks)[[1]] xml_add_child( @@ -1396,7 +1397,7 @@ create_heading_component_xml <- function( footnote_title_marks <- footnote_mark_to_xml( data = data, - mark = footnote_title_marks$fs_id_c + mark = footnote_title_marks ) footnote_title_marks <- as_xml_node(footnote_title_marks)[[1L]] @@ -1426,7 +1427,7 @@ create_heading_component_xml <- function( footnote_subtitle_marks <- footnote_mark_to_xml( data = data, - mark = footnote_subtitle_marks$fs_id_c + mark = footnote_subtitle_marks ) footnote_subtitle_marks <- as_xml_node(footnote_subtitle_marks)[[1L]] From 373bc8cf52837f5d2e5b86b92184ce54efc49914 Mon Sep 17 00:00:00 2001 From: olivroy Date: Fri, 30 Aug 2024 14:39:56 -0400 Subject: [PATCH 02/11] Refactor to use htmltools --- R/utils_render_html.R | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/R/utils_render_html.R b/R/utils_render_html.R index ba129086d6..c100330926 100644 --- a/R/utils_render_html.R +++ b/R/utils_render_html.R @@ -71,25 +71,24 @@ footnote_mark_to_html <- function( font_weight <- "normal" } - paste0( - "", - if (is_sup) { - paste0("", mark, "") + class = if (is_sup) { + sup_class } else { - mark + NULL }, - "" + style = htmltools::css( + `white-space` = "nowrap", + `font-style` = font_style, + `font-weight` = font_weight, + `line-height` = 0 + ), + .noWS = "before-end" ) } @@ -248,13 +247,11 @@ get_table_defs <- function(data) { # Get the `table-layout` value, which is set in `_options` table_style <- - paste0( - "table-layout: ", - dt_options_get_value( + htmltools::css( + `table-layout` = dt_options_get_value( data = data, option = "table_layout" - ), - ";" + ) ) # In the case that column widths are not set for any columns, From f708fbe68c70c5168dc51491b0323e1c675a3050 Mon Sep 17 00:00:00 2001 From: olivroy Date: Fri, 30 Aug 2024 15:26:25 -0400 Subject: [PATCH 03/11] Refactoring test --- tests/testthat/test-extract_body.R | 64 +++++++++++++++--------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/tests/testthat/test-extract_body.R b/tests/testthat/test-extract_body.R index 9d114880f4..a532103492 100644 --- a/tests/testthat/test-extract_body.R +++ b/tests/testthat/test-extract_body.R @@ -54,8 +54,8 @@ test_that("Extraction of the table body works well", { # test each of the vectors within each extracted table body tbl_body_1_1 <- gt_tbl_1 %>% extract_body(build_stage = "init") expect_true(all(is.na(tbl_body_1_1 %>% unlist() %>% unname()))) - expect_equal( - colnames(tbl_body_1_1), + expect_named( + tbl_body_1_1, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -101,8 +101,8 @@ test_that("Extraction of the table body works well", { NA ) ) - expect_equal( - colnames(tbl_body_1_2), + expect_named( + tbl_body_1_2, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -149,8 +149,8 @@ test_that("Extraction of the table body works well", { NA ) ) - expect_equal( - colnames(tbl_body_1_3), + expect_named( + tbl_body_1_3, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -199,8 +199,8 @@ test_that("Extraction of the table body works well", { "NA" ) ) - expect_equal( - colnames(tbl_body_1_4), + expect_named( + tbl_body_1_4, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -252,8 +252,8 @@ test_that("Extraction of the table body works well", { tbl_body_1_5[["ltr_1"]], c("a", "b", "c", "d d d", "e e e", "f f f", "g g g") ) - expect_equal( - colnames(tbl_body_1_5), + expect_named( + tbl_body_1_5, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -305,8 +305,8 @@ test_that("Extraction of the table body works well", { tbl_body_1_6[["ltr_1"]], c("a", "b", "c", "d d d", "e e e", "f f f", "g g g") ) - expect_equal( - colnames(tbl_body_1_6), + expect_named( + tbl_body_1_6, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -358,8 +358,8 @@ test_that("Extraction of the table body works well", { tbl_body_1_7[["ltr_1"]], c("a", "b", "c", "d d d", "e e e", "f f f", "g g g") ) - expect_equal( - colnames(tbl_body_1_7), + expect_named( + tbl_body_1_7, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -425,8 +425,8 @@ test_that("Extraction of the table body works well", { tbl_body_1_8[["ltr_1"]], c("a", "b", "c", "d d d", "e e e", "f f f", "g g g") ) - expect_equal( - colnames(tbl_body_1_8), + expect_named( + tbl_body_1_8, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -492,8 +492,8 @@ test_that("Extraction of the table body works well", { tbl_body_1_8_b[["ltr_1"]], c("a", "b", "c", "d d d", "e e e", "f f f", "g g g") ) - expect_equal( - colnames(tbl_body_1_8_b), + expect_named( + tbl_body_1_8_b, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -537,8 +537,8 @@ test_that("Extraction of the table body works well", { # test each of the vectors within each extracted table body tbl_body_2_1 <- gt_tbl_2 %>% extract_body(build_stage = "init") expect_true(all(is.na(tbl_body_2_1 %>% unlist() %>% unname()))) - expect_equal( - colnames(tbl_body_2_1), + expect_named( + tbl_body_2_1, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -584,8 +584,8 @@ test_that("Extraction of the table body works well", { NA ) ) - expect_equal( - colnames(tbl_body_2_2), + expect_named( + tbl_body_2_2, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -632,8 +632,8 @@ test_that("Extraction of the table body works well", { NA ) ) - expect_equal( - colnames(tbl_body_2_3), + expect_named( + tbl_body_2_3, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -682,8 +682,8 @@ test_that("Extraction of the table body works well", { "NA" ) ) - expect_equal( - colnames(tbl_body_2_4), + expect_named( + tbl_body_2_4, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -735,8 +735,8 @@ test_that("Extraction of the table body works well", { tbl_body_2_5[["ltr_1"]], c("a", "b", "c", "d d d", "e e e", "f f f", "g g g") ) - expect_equal( - colnames(tbl_body_2_5), + expect_named( + tbl_body_2_5, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -857,8 +857,8 @@ test_that("Extraction of the table body works well", { tbl_body_2_7[["ltr_1"]], c("a", "b", "e e e", "g g g", "c", "d d d", "f f f") ) - expect_equal( - colnames(tbl_body_2_7), + expect_named( + tbl_body_2_7, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) @@ -925,8 +925,8 @@ test_that("Extraction of the table body works well", { tbl_body_2_8[["ltr_1"]], c("a", "b", "e e e", "g g g", "c", "d d d", "f f f") ) - expect_equal( - colnames(tbl_body_2_8), + expect_named( + tbl_body_2_8, c("labels", "num_1", "num_2", "int_1", "int_2", "sci_2", "ltr_1", "ltr_2", "ltr_3", "group", "sci_1") ) From 6f361681cd4694ca085342d02e973afdc13aae20 Mon Sep 17 00:00:00 2001 From: olivroy Date: Fri, 30 Aug 2024 15:38:40 -0400 Subject: [PATCH 04/11] Move `fmt_date()`, `fmt_datetime()` and `fmt_time()` in own file. --- R/fmt_date_time.R | 1681 +++++++++++++++++++++++++++++++++++++++++++++ R/format_data.R | 1659 +------------------------------------------- 2 files changed, 1682 insertions(+), 1658 deletions(-) create mode 100644 R/fmt_date_time.R diff --git a/R/fmt_date_time.R b/R/fmt_date_time.R new file mode 100644 index 0000000000..54c3692b56 --- /dev/null +++ b/R/fmt_date_time.R @@ -0,0 +1,1681 @@ +#------------------------------------------------------------------------------# +# +# /$$ +# | $$ +# /$$$$$$ /$$$$$$ +# /$$__ $$|_ $$_/ +# | $$ \ $$ | $$ +# | $$ | $$ | $$ /$$ +# | $$$$$$$ | $$$$/ +# \____ $$ \___/ +# /$$ \ $$ +# | $$$$$$/ +# \______/ +# +# This file is part of the 'rstudio/gt' project. +# +# Copyright (c) 2018-2024 gt authors +# +# For full copyright and license information, please look at +# https://gt.rstudio.com/LICENSE.html +# +#------------------------------------------------------------------------------# + + +# fmt_date() ------------------------------------------------------------------- +#' Format values as dates +#' +#' @description +#' +#' Format input values to time values using one of 41 preset date styles. Input +#' can be in the form of `POSIXt` (i.e., datetimes), the `Date` type, or +#' `character` (must be in the ISO 8601 form of `YYYY-MM-DD HH:MM:SS` or +#' `YYYY-MM-DD`). +#' +#' @inheritParams fmt_number +#' +#' @param date_style *Predefined style for dates* +#' +#' `scalar|scalar(1<=val<=41)` // *default:* `"iso"` +#' +#' The date style to use. By default this is the short name `"iso"` which +#' corresponds to ISO 8601 date formatting. There are 41 date styles in total +#' and their short names can be viewed using [info_date_style()]. +#' +#' @return An object of class `gt_tbl`. +#' +#' @section Compatibility of formatting function with data values: +#' +#' `fmt_date()` is compatible with body cells that are of the `"Date"`, +#' `"POSIXt"` or `"character"` types. Any other types of body cells are ignored +#' during formatting. This is to say that cells of incompatible data types may +#' be targeted, but there will be no attempt to format them. +#' +#' @section Compatibility of arguments with the `from_column()` helper function: +#' +#' [from_column()] can be used with certain arguments of `fmt_date()` to obtain +#' varying parameter values from a specified column within the table. This means +#' that each row could be formatted a little bit differently. These arguments +#' provide support for [from_column()]: +#' +#' - `date_style` +#' - `pattern` +#' - `locale` +#' +#' Please note that for each of the aforementioned arguments, a [from_column()] +#' call needs to reference a column that has data of the correct type (this is +#' different for each argument). Additional columns for parameter values can be +#' generated with [cols_add()] (if not already present). Columns that contain +#' parameter data can also be hidden from final display with [cols_hide()]. +#' Finally, there is no limitation to how many arguments the [from_column()] +#' helper is applied so long as the arguments belong to this closed set. +#' +#' @section Formatting with the `date_style` argument: +#' +#' We need to supply a preset date style to the `date_style` argument. The date +#' styles are numerous and can handle localization to any supported locale. A +#' large segment of date styles are termed flexible date formats and this means +#' that their output will adapt to any `locale` provided. That feature makes the +#' flexible date formats a better option for locales other than `"en"` (the +#' default locale). +#' +#' The following table provides a listing of all date styles and their output +#' values (corresponding to an input date of `2000-02-29`). +#' +#' | | Date Style | Output | Notes | +#' |----|-----------------------|-------------------------|---------------| +#' | 1 | `"iso"` | `"2000-02-29"` | ISO 8601 | +#' | 2 | `"wday_month_day_year"`| `"Tuesday, February 29, 2000"` | | +#' | 3 | `"wd_m_day_year"` | `"Tue, Feb 29, 2000"` | | +#' | 4 | `"wday_day_month_year"`| `"Tuesday 29 February 2000"` | | +#' | 5 | `"month_day_year"` | `"February 29, 2000"` | | +#' | 6 | `"m_day_year"` | `"Feb 29, 2000"` | | +#' | 7 | `"day_m_year"` | `"29 Feb 2000"` | | +#' | 8 | `"day_month_year"` | `"29 February 2000"` | | +#' | 9 | `"day_month"` | `"29 February"` | | +#' | 10 | `"day_m"` | `"29 Feb"` | | +#' | 11 | `"year"` | `"2000"` | | +#' | 12 | `"month"` | `"February"` | | +#' | 13 | `"day"` | `"29"` | | +#' | 14 | `"year.mn.day"` | `"2000/02/29"` | | +#' | 15 | `"y.mn.day"` | `"00/02/29"` | | +#' | 16 | `"year_week"` | `"2000-W09"` | | +#' | 17 | `"year_quarter"` | `"2000-Q1"` | | +#' | 18 | `"yMd"` | `"2/29/2000"` | flexible | +#' | 19 | `"yMEd"` | `"Tue, 2/29/2000"` | flexible | +#' | 20 | `"yMMM"` | `"Feb 2000"` | flexible | +#' | 21 | `"yMMMM"` | `"February 2000"` | flexible | +#' | 22 | `"yMMMd"` | `"Feb 29, 2000"` | flexible | +#' | 23 | `"yMMMEd"` | `"Tue, Feb 29, 2000"` | flexible | +#' | 24 | `"GyMd"` | `"2/29/2000 A"` | flexible | +#' | 25 | `"GyMMMd"` | `"Feb 29, 2000 AD"` | flexible | +#' | 26 | `"GyMMMEd"` | `"Tue, Feb 29, 2000 AD"`| flexible | +#' | 27 | `"yM"` | `"2/2000"` | flexible | +#' | 28 | `"Md"` | `"2/29"` | flexible | +#' | 29 | `"MEd"` | `"Tue, 2/29"` | flexible | +#' | 30 | `"MMMd"` | `"Feb 29"` | flexible | +#' | 31 | `"MMMEd"` | `"Tue, Feb 29"` | flexible | +#' | 32 | `"MMMMd"` | `"February 29"` | flexible | +#' | 33 | `"GyMMM"` | `"Feb 2000 AD"` | flexible | +#' | 34 | `"yQQQ"` | `"Q1 2000"` | flexible | +#' | 35 | `"yQQQQ"` | `"1st quarter 2000"` | flexible | +#' | 36 | `"Gy"` | `"2000 AD"` | flexible | +#' | 37 | `"y"` | `"2000"` | flexible | +#' | 38 | `"M"` | `"2"` | flexible | +#' | 39 | `"MMM"` | `"Feb"` | flexible | +#' | 40 | `"d"` | `"29"` | flexible | +#' | 41 | `"Ed"` | `"29 Tue"` | flexible | +#' +#' We can call [info_date_style()] in the console to view a similar table +#' of date styles with example output. +#' +#' @section Adapting output to a specific `locale`: +#' +#' This formatting function can adapt outputs according to a provided `locale` +#' value. Examples include `"en"` for English (United States) and `"fr"` for +#' French (France). Note that a `locale` value provided here will override any +#' global locale setting performed in [gt()]'s own `locale` argument (it is +#' settable there as a value received by all other functions that have a +#' `locale` argument). As a useful reference on which locales are supported, we +#' can call [info_locales()] to view an info table. +#' +#' @section Examples: +#' +#' Let's use the [`exibble`] dataset to create a simple, two-column **gt** table +#' (keeping only the `date` and `time` columns). With `fmt_date()`, we'll format +#' the `date` column to display dates formatted with the `"month_day_year"` +#' date style. +#' +#' ```r +#' exibble |> +#' dplyr::select(date, time) |> +#' gt() |> +#' fmt_date( +#' columns = date, +#' date_style = "month_day_year" +#' ) +#' ``` +#' +#' \if{html}{\out{ +#' `r man_get_image_tag(file = "man_fmt_date_1.png")` +#' }} +#' +#' Again using the [`exibble`] dataset, let's format the `date` column to have +#' mixed date formats, where dates after April 1st will be different than the +#' others because of the expressions used in the `rows` argument. This will +#' involve two calls of `fmt_date()` with different statements provided for +#' `rows`. In the first call (dates after the 1st of April) the date style +#' `"m_day_year"` is used; for the second call, `"day_m_year"` is the named +#' date style supplied to `date_style`. +#' +#' ```r +#' exibble |> +#' dplyr::select(date, time) |> +#' gt() |> +#' fmt_date( +#' columns = date, +#' rows = as.Date(date) > as.Date("2015-04-01"), +#' date_style = "m_day_year" +#' ) |> +#' fmt_date( +#' columns = date, +#' rows = as.Date(date) <= as.Date("2015-04-01"), +#' date_style = "day_m_year" +#' ) +#' ``` +#' +#' \if{html}{\out{ +#' `r man_get_image_tag(file = "man_fmt_date_2.png")` +#' }} +#' +#' Use the [`exibble`] dataset to create a single-column **gt** table (with only +#' the `date` column). Format the date values using the `"yMMMEd"` date style +#' (which is one of the 'flexible' styles). Also, we'll set the locale to `"nl"` +#' to get the dates in Dutch. +#' +#' ```r +#' exibble |> +#' dplyr::select(date) |> +#' gt() |> +#' fmt_date( +#' date_style = "yMMMEd", +#' locale = "nl" +#' ) +#' ``` +#' +#' \if{html}{\out{ +#' `r man_get_image_tag(file = "man_fmt_date_3.png")` +#' }} +#' +#' @family data formatting functions +#' @section Function ID: +#' 3-13 +#' +#' @section Function Introduced: +#' `v0.2.0.5` (March 31, 2020) +#' +#' @seealso The vector-formatting version of this function: [vec_fmt_date()]. +#' +#' @export +fmt_date <- function( + data, + columns = everything(), + rows = everything(), + date_style = "iso", + pattern = "{x}", + locale = NULL +) { + + # Perform input object validation + stop_if_not_gt_tbl(data = data) + + # + # Begin support for `from_column()` objects passed to compatible arguments + # + + # Supports parameters: + # + # - date_style + # - pattern + # - locale + + arg_vals <- + mget( + get_arg_names( + function_name = "fmt_date", + all_args_except = c("data", "columns", "rows") + ) + ) + + if (args_have_gt_column_obj(arg_vals = arg_vals)) { + + # Resolve the row numbers using `resolve_vars()` + resolved_rows_idx <- + resolve_rows_i( + expr = {{ rows }}, + data = data + ) + + param_tbl <- + generate_param_tbl( + data = data, + arg_vals = arg_vals, + resolved_rows_idx = resolved_rows_idx + ) + + for (i in seq_len(nrow(param_tbl))) { + + p_i <- as.list(param_tbl[i, ]) + + data <- + fmt_date( + data = data, + columns = {{ columns }}, + rows = resolved_rows_idx[i], + date_style = p_i$date_style %||% date_style, + pattern = p_i$pattern %||% pattern, + locale = p_i$locale %||% locale + ) + } + + return(data) + } + + # + # End support for `from_column()` objects passed to compatible arguments + # + + # Stop function if `locale` does not have a valid value; normalize locale + # and resolve one that might be set globally + validate_locale(locale = locale) + locale <- normalize_locale(locale = locale) + locale <- resolve_locale(data = data, locale = locale) + + # Transform `date_style` to `date_format_str` + date_format_str <- withCallingHandlers( + get_date_format(date_style = date_style), + error = function(e) { + cli::cli_abort("Invalid date style. See {.run gt::info_date_style()}.", + parent = e) + }) + + valid_class <- c("Date", "POSIXt", "character") + extra_msg <- c(i = "If character data is supplied, it should be ISO-8601 formatted dates.") + check_columns_valid_if_strict(data, {{ columns }}, valid_class, extra_msg = extra_msg) + + # Pass `data`, `columns`, `rows`, and the formatting + # functions as a function list to `fmt()` + fmt( + data = data, + columns = {{ columns }}, + rows = {{ rows }}, + compat = valid_class, + fns = num_fmt_factory_multi( + pattern = pattern, + use_latex_math_mode = FALSE, + format_fn = function(x, context) { + + # Convert incoming values to POSIXlt but provide a friendly error + # if the values cannot be parsed by `as.POSIXlt()` + date <- + withCallingHandlers( + as.POSIXlt(x, tz = "GMT"), + error = function(e) { + cli::cli_abort( + "One or more of the provided date/datetime values are invalid.", + call = call("fmt_date"), + parent = e + ) + } + ) + + # Format the date string using `fdt()` + bigD::fdt( + input = as.character(date), + format = date_format_str, + locale = locale + ) + } + ) + ) +} + +# fmt_time() ------------------------------------------------------------------- +#' Format values as times +#' +#' @description +#' +#' Format input values to time values using one of 25 preset time styles. Input +#' can be in the form of `POSIXt` (i.e., datetimes), `character` (must be in the +#' ISO 8601 forms of `HH:MM:SS` or `YYYY-MM-DD HH:MM:SS`), or `Date` (which +#' always results in the formatting of `00:00:00`). +#' +#' @inheritParams fmt_number +#' +#' @param time_style *Predefined style for times* +#' +#' `scalar|scalar(1<=val<=25)` // *default:* `"iso"` +#' +#' The time style to use. By default this is the short name `"iso"` which +#' corresponds to how times are formatted within ISO 8601 datetime values. +#' There are 25 time styles in total and their short names can be viewed using +#' [info_time_style()]. +#' +#' @return An object of class `gt_tbl`. +#' +#' @section Compatibility of formatting function with data values: +#' +#' `fmt_time()` is compatible with body cells that are of the `"Date"`, +#' `"POSIXt"` or `"character"` types. Any other types of body cells are ignored +#' during formatting. This is to say that cells of incompatible data types may +#' be targeted, but there will be no attempt to format them. +#' +#' @section Compatibility of arguments with the `from_column()` helper function: +#' +#' [from_column()] can be used with certain arguments of `fmt_time()` to obtain +#' varying parameter values from a specified column within the table. This means +#' that each row could be formatted a little bit differently. These arguments +#' provide support for [from_column()]: +#' +#' - `time_style` +#' - `pattern` +#' - `locale` +#' +#' Please note that for each of the aforementioned arguments, a [from_column()] +#' call needs to reference a column that has data of the correct type (this is +#' different for each argument). Additional columns for parameter values can be +#' generated with [cols_add()] (if not already present). Columns that contain +#' parameter data can also be hidden from final display with [cols_hide()]. +#' Finally, there is no limitation to how many arguments the [from_column()] +#' helper is applied so long as the arguments belong to this closed set. +#' +#' @section Formatting with the `time_style` argument: +#' +#' We need to supply a preset time style to the `time_style` argument. There are +#' many time styles and all of them can handle localization to any supported +#' locale. Many of the time styles are termed flexible time formats and this +#' means that their output will adapt to any `locale` provided. That feature +#' makes the flexible time formats a better option for locales other than `"en"` +#' (the default locale). +#' +#' The following table provides a listing of all time styles and their output +#' values (corresponding to an input time of `14:35:00`). It is noted which of +#' these represent 12- or 24-hour time. +#' +#' | | Time Style | Output | Notes | +#' |----|---------------|---------------------------------|---------------| +#' | 1 | `"iso"` | `"14:35:00"` | ISO 8601, 24h | +#' | 2 | `"iso-short"` | `"14:35"` | ISO 8601, 24h | +#' | 3 | `"h_m_s_p"` | `"2:35:00 PM"` | 12h | +#' | 4 | `"h_m_p"` | `"2:35 PM"` | 12h | +#' | 5 | `"h_p"` | `"2 PM"` | 12h | +#' | 6 | `"Hms"` | `"14:35:00"` | flexible, 24h | +#' | 7 | `"Hm"` | `"14:35"` | flexible, 24h | +#' | 8 | `"H"` | `"14"` | flexible, 24h | +#' | 9 | `"EHm"` | `"Thu 14:35"` | flexible, 24h | +#' | 10 | `"EHms"` | `"Thu 14:35:00"` | flexible, 24h | +#' | 11 | `"Hmsv"` | `"14:35:00 GMT+00:00"` | flexible, 24h | +#' | 12 | `"Hmv"` | `"14:35 GMT+00:00"` | flexible, 24h | +#' | 13 | `"hms"` | `"2:35:00 PM"` | flexible, 12h | +#' | 14 | `"hm"` | `"2:35 PM"` | flexible, 12h | +#' | 15 | `"h"` | `"2 PM"` | flexible, 12h | +#' | 16 | `"Ehm"` | `"Thu 2:35 PM"` | flexible, 12h | +#' | 17 | `"Ehms"` | `"Thu 2:35:00 PM"` | flexible, 12h | +#' | 18 | `"EBhms"` | `"Thu 2:35:00 in the afternoon"` | flexible, 12h | +#' | 19 | `"Bhms"` | `"2:35:00 in the afternoon"` | flexible, 12h | +#' | 20 | `"EBhm"` | `"Thu 2:35 in the afternoon"` | flexible, 12h | +#' | 21 | `"Bhm"` | `"2:35 in the afternoon"` | flexible, 12h | +#' | 22 | `"Bh"` | `"2 in the afternoon"` | flexible, 12h | +#' | 23 | `"hmsv"` | `"2:35:00 PM GMT+00:00"` | flexible, 12h | +#' | 24 | `"hmv"` | `"2:35 PM GMT+00:00"` | flexible, 12h | +#' | 25 | `"ms"` | `"35:00"` | flexible | +#' +#' We can call [info_time_style()] in the console to view a similar table of +#' time styles with example output. +#' +#' @section Adapting output to a specific `locale`: +#' +#' This formatting function can adapt outputs according to a provided `locale` +#' value. Examples include `"en"` for English (United States) and `"fr"` for +#' French (France). Note that a `locale` value provided here will override any +#' global locale setting performed in [gt()]'s own `locale` argument (it is +#' settable there as a value received by all other functions that have a +#' `locale` argument). As a useful reference on which locales are supported, we +#' can use [info_locales()] to view an info table. +#' +#' @section Examples: +#' +#' Let's use the [`exibble`] dataset to create a simple, two-column **gt** table +#' (keeping only the `date` and `time` columns). Format the `time` column with +#' `fmt_time()` to display times formatted with the `"h_m_s_p"` time style. +#' +#' ```r +#' exibble |> +#' dplyr::select(date, time) |> +#' gt() |> +#' fmt_time( +#' columns = time, +#' time_style = "h_m_s_p" +#' ) +#' ``` +#' +#' \if{html}{\out{ +#' `r man_get_image_tag(file = "man_fmt_time_1.png")` +#' }} +#' +#' Again using the [`exibble`] dataset, let's format the `time` column to have +#' mixed time formats, where times after 16:00 will be different than the others +#' because of the expressions used in the `rows` argument. This will involve two +#' calls of `fmt_time()` with different statements provided for `rows`. In the +#' first call (times after 16:00) the time style `"h_m_s_p"` is used; for the +#' second call, `"h_m_p"` is the named time style supplied to `time_style`. +#' +#' ```r +#' exibble |> +#' dplyr::select(date, time) |> +#' gt() |> +#' fmt_time( +#' columns = time, +#' rows = time > "16:00", +#' time_style = "h_m_s_p" +#' ) |> +#' fmt_time( +#' columns = time, +#' rows = time <= "16:00", +#' time_style = "h_m_p" +#' ) +#' ``` +#' +#' \if{html}{\out{ +#' `r man_get_image_tag(file = "man_fmt_time_2.png")` +#' }} +#' +#' Use the [`exibble`] dataset to create a single-column **gt** table (with only +#' the `time` column). Format the time values using the `"EBhms"` time style +#' (which is one of the 'flexible' styles). Also, we'll set the locale to `"sv"` +#' to get the times in Swedish. +#' +#' ```r +#' exibble |> +#' dplyr::select(time) |> +#' gt() |> +#' fmt_time( +#' columns = time, +#' time_style = "EBhms", +#' locale = "sv" +#' ) +#' ``` +#' +#' \if{html}{\out{ +#' `r man_get_image_tag(file = "man_fmt_time_3.png")` +#' }} +#' +#' @family data formatting functions +#' @section Function ID: +#' 3-14 +#' +#' @section Function Introduced: +#' `v0.2.0.5` (March 31, 2020) +#' +#' @seealso The vector-formatting version of this function: [vec_fmt_time()]. +#' +#' @export +fmt_time <- function( + data, + columns = everything(), + rows = everything(), + time_style = "iso", + pattern = "{x}", + locale = NULL +) { + + # Perform input object validation + stop_if_not_gt_tbl(data = data) + + # + # Begin support for `from_column()` objects passed to compatible arguments + # + + # Supports parameters: + # + # - time_style + # - pattern + # - locale + + arg_vals <- + mget( + get_arg_names( + function_name = "fmt_time", + all_args_except = c("data", "columns", "rows") + ) + ) + + if (args_have_gt_column_obj(arg_vals = arg_vals)) { + + # Resolve the row numbers using `resolve_vars()` + resolved_rows_idx <- + resolve_rows_i( + expr = {{ rows }}, + data = data + ) + + param_tbl <- + generate_param_tbl( + data = data, + arg_vals = arg_vals, + resolved_rows_idx = resolved_rows_idx + ) + + for (i in seq_len(nrow(param_tbl))) { + + p_i <- as.list(param_tbl[i, ]) + + data <- + fmt_time( + data = data, + columns = {{ columns }}, + rows = resolved_rows_idx[i], + time_style = p_i$time_style %||% time_style, + pattern = p_i$pattern %||% pattern, + locale = p_i$locale %||% locale + ) + } + + return(data) + } + + # + # End support for `from_column()` objects passed to compatible arguments + # + + # Stop function if `locale` does not have a valid value; normalize locale + # and resolve one that might be set globally + validate_locale(locale = locale) + locale <- normalize_locale(locale = locale) + locale <- resolve_locale(data = data, locale = locale) + + # Transform `time_style` to `time_format_str` + time_format_str <- withCallingHandlers( + get_time_format(time_style = time_style), + error = function(e) { + cli::cli_abort("Invalid time style. See {.run gt::info_time_style()}.", + parent = e) + }) + + valid_class <- c("Date", "POSIXt", "character") + msg <- c(i = "Allowed types are `Date`, `POSIXt`, and `character` (in + `HH:MM:SS` format).") + check_columns_valid_if_strict(data, {{ columns }}, valid_class, msg) + + # Pass `data`, `columns`, `rows`, and the formatting + # functions as a function list to `fmt()` + fmt( + data = data, + columns = {{ columns }}, + rows = {{ rows }}, + compat = valid_class, + fns = num_fmt_factory_multi( + pattern = pattern, + use_latex_math_mode = FALSE, + format_fn = function(x, context) { + + # If the incoming values are strings that adequately represent time + # values, then prepend with the `1970-01-01` dummy date to create an + # input that will works with `strftime()` + if (all(is_string_time(x))) { + x <- paste("1970-01-01", x) + } + + # Convert incoming values to POSIXlt but provide a friendly error + # if the values cannot be parsed by `as.POSIXlt()` + time <- + withCallingHandlers( + as.POSIXlt(x, tz = "GMT"), + error = function(e) { + cli::cli_abort( + "One or more of the provided date/time/datetime values are invalid.", + call = call("fmt_time"), + parent = e + ) + } + ) + + # Format the time string using `fdt()` + bigD::fdt( + input = as.character(time), + format = time_format_str, + locale = locale + ) + } + ) + ) +} + +# fmt_datetime() --------------------------------------------------------------- +#' Format values as datetimes +#' +#' @description +#' +#' Format input values to datetime values using either presets for the date and +#' time components or a formatting directive (this can either use a *CLDR* +#' datetime pattern or `strptime` formatting). The input values can be in the +#' form of `POSIXct` (i.e., datetimes), the `Date` type, or `character` (must be +#' in the ISO 8601 form of `YYYY-MM-DD HH:MM:SS` or `YYYY-MM-DD`). +#' +#' @inheritParams fmt_number +#' +#' @inheritParams fmt_date +#' +#' @inheritParams fmt_time +#' +#' @param sep *Separator between date and time components* +#' +#' `scalar` // *default:* `" "` +#' +#' The separator string to use between the date and time components. By +#' default, this is a single space character (`" "`). Only used when not +#' specifying a `format` code. +#' +#' @param format *Date/time formatting string* +#' +#' `scalar` // *default:* `NULL` (`optional`) +#' +#' An optional formatting string used for generating custom dates/times. If +#' used then the arguments governing preset styles (`date_style` and +#' `time_style`) will be ignored in favor of formatting via the `format` +#' string. +#' +#' @param tz *Time zone* +#' +#' `scalar` // *default:* `NULL` (`optional`) +#' +#' The time zone for printing dates/times (i.e., the output). The +#' default of `NULL` will preserve the time zone of the input data in the +#' output. If providing a time zone, it must be one that is recognized by the +#' user's operating system (a vector of all valid `tz` values can be produced +#' with [OlsonNames()]). +#' +#' @return An object of class `gt_tbl`. +#' +#' @section Compatibility of formatting function with data values: +#' +#' `fmt_datetime()` is compatible with body cells that are of the `"Date"`, +#' `"POSIXct"` or `"character"` types. Any other types of body cells are ignored +#' during formatting. This is to say that cells of incompatible data types may +#' be targeted, but there will be no attempt to format them. +#' +#' @section Compatibility of arguments with the `from_column()` helper function: +#' +#' [from_column()] can be used with certain arguments of `fmt_datetime()` to +#' obtain varying parameter values from a specified column within the table. +#' This means that each row could be formatted a little bit differently. These +#' arguments provide support for [from_column()]: +#' +#' - `date_style` +#' - `time_style` +#' - `sep` +#' - `format` +#' - `tz` +#' - `pattern` +#' - `locale` +#' +#' Please note that for each of the aforementioned arguments, a [from_column()] +#' call needs to reference a column that has data of the correct type (this is +#' different for each argument). Additional columns for parameter values can be +#' generated with [cols_add()] (if not already present). Columns that contain +#' parameter data can also be hidden from final display with [cols_hide()]. +#' Finally, there is no limitation to how many arguments the [from_column()] +#' helper is applied so long as the arguments belong to this closed set. +#' +#' @section Formatting with the `date_style` argument: +#' +#' We can supply a preset date style to the `date_style` argument to separately +#' handle the date portion of the output. The date styles are numerous and can +#' handle localization to any supported locale. A large segment of date styles +#' are termed flexible date formats and this means that their output will adapt +#' to any `locale` provided. That feature makes the flexible date formats a +#' better option for locales other than `"en"` (the default locale). +#' +#' The following table provides a listing of all date styles and their output +#' values (corresponding to an input date of `2000-02-29`). +#' +#' | | Date Style | Output | Notes | +#' |----|-----------------------|-------------------------|---------------| +#' | 1 | `"iso"` | `"2000-02-29"` | ISO 8601 | +#' | 2 | `"wday_month_day_year"`| `"Tuesday, February 29, 2000"` | | +#' | 3 | `"wd_m_day_year"` | `"Tue, Feb 29, 2000"` | | +#' | 4 | `"wday_day_month_year"`| `"Tuesday 29 February 2000"` | | +#' | 5 | `"month_day_year"` | `"February 29, 2000"` | | +#' | 6 | `"m_day_year"` | `"Feb 29, 2000"` | | +#' | 7 | `"day_m_year"` | `"29 Feb 2000"` | | +#' | 8 | `"day_month_year"` | `"29 February 2000"` | | +#' | 9 | `"day_month"` | `"29 February"` | | +#' | 10 | `"day_m"` | `"29 Feb"` | | +#' | 11 | `"year"` | `"2000"` | | +#' | 12 | `"month"` | `"February"` | | +#' | 13 | `"day"` | `"29"` | | +#' | 14 | `"year.mn.day"` | `"2000/02/29"` | | +#' | 15 | `"y.mn.day"` | `"00/02/29"` | | +#' | 16 | `"year_week"` | `"2000-W09"` | | +#' | 17 | `"year_quarter"` | `"2000-Q1"` | | +#' | 18 | `"yMd"` | `"2/29/2000"` | flexible | +#' | 19 | `"yMEd"` | `"Tue, 2/29/2000"` | flexible | +#' | 20 | `"yMMM"` | `"Feb 2000"` | flexible | +#' | 21 | `"yMMMM"` | `"February 2000"` | flexible | +#' | 22 | `"yMMMd"` | `"Feb 29, 2000"` | flexible | +#' | 23 | `"yMMMEd"` | `"Tue, Feb 29, 2000"` | flexible | +#' | 24 | `"GyMd"` | `"2/29/2000 A"` | flexible | +#' | 25 | `"GyMMMd"` | `"Feb 29, 2000 AD"` | flexible | +#' | 26 | `"GyMMMEd"` | `"Tue, Feb 29, 2000 AD"`| flexible | +#' | 27 | `"yM"` | `"2/2000"` | flexible | +#' | 28 | `"Md"` | `"2/29"` | flexible | +#' | 29 | `"MEd"` | `"Tue, 2/29"` | flexible | +#' | 30 | `"MMMd"` | `"Feb 29"` | flexible | +#' | 31 | `"MMMEd"` | `"Tue, Feb 29"` | flexible | +#' | 32 | `"MMMMd"` | `"February 29"` | flexible | +#' | 33 | `"GyMMM"` | `"Feb 2000 AD"` | flexible | +#' | 34 | `"yQQQ"` | `"Q1 2000"` | flexible | +#' | 35 | `"yQQQQ"` | `"1st quarter 2000"` | flexible | +#' | 36 | `"Gy"` | `"2000 AD"` | flexible | +#' | 37 | `"y"` | `"2000"` | flexible | +#' | 38 | `"M"` | `"2"` | flexible | +#' | 39 | `"MMM"` | `"Feb"` | flexible | +#' | 40 | `"d"` | `"29"` | flexible | +#' | 41 | `"Ed"` | `"29 Tue"` | flexible | +#' +#' We can call [info_date_style()] in the console to view a similar table of +#' date styles with example output. +#' +#' @section Formatting with the `time_style` argument: +#' +#' We can supply a preset time style to the `time_style` argument to separately +#' handle the time portion of the output. There are many time styles and all of +#' them can handle localization to any supported locale. Many of the time styles +#' are termed flexible time formats and this means that their output will adapt +#' to any `locale` provided. That feature makes the flexible time formats a +#' better option for locales other than `"en"` (the default locale). +#' +#' The following table provides a listing of all time styles and their output +#' values (corresponding to an input time of `14:35:00`). It is noted which of +#' these represent 12- or 24-hour time. Some of the flexible formats (those +#' that begin with `"E"`) include the day of the week. Keep this in mind +#' when pairing such `time_style` values with a `date_style` so as to avoid +#' redundant or repeating information. +#' +#' | | Time Style | Output | Notes | +#' |----|---------------|---------------------------------|---------------| +#' | 1 | `"iso"` | `"14:35:00"` | ISO 8601, 24h | +#' | 2 | `"iso-short"` | `"14:35"` | ISO 8601, 24h | +#' | 3 | `"h_m_s_p"` | `"2:35:00 PM"` | 12h | +#' | 4 | `"h_m_p"` | `"2:35 PM"` | 12h | +#' | 5 | `"h_p"` | `"2 PM"` | 12h | +#' | 6 | `"Hms"` | `"14:35:00"` | flexible, 24h | +#' | 7 | `"Hm"` | `"14:35"` | flexible, 24h | +#' | 8 | `"H"` | `"14"` | flexible, 24h | +#' | 9 | `"EHm"` | `"Thu 14:35"` | flexible, 24h | +#' | 10 | `"EHms"` | `"Thu 14:35:00"` | flexible, 24h | +#' | 11 | `"Hmsv"` | `"14:35:00 GMT+00:00"` | flexible, 24h | +#' | 12 | `"Hmv"` | `"14:35 GMT+00:00"` | flexible, 24h | +#' | 13 | `"hms"` | `"2:35:00 PM"` | flexible, 12h | +#' | 14 | `"hm"` | `"2:35 PM"` | flexible, 12h | +#' | 15 | `"h"` | `"2 PM"` | flexible, 12h | +#' | 16 | `"Ehm"` | `"Thu 2:35 PM"` | flexible, 12h | +#' | 17 | `"Ehms"` | `"Thu 2:35:00 PM"` | flexible, 12h | +#' | 18 | `"EBhms"` | `"Thu 2:35:00 in the afternoon"` | flexible, 12h | +#' | 19 | `"Bhms"` | `"2:35:00 in the afternoon"` | flexible, 12h | +#' | 20 | `"EBhm"` | `"Thu 2:35 in the afternoon"` | flexible, 12h | +#' | 21 | `"Bhm"` | `"2:35 in the afternoon"` | flexible, 12h | +#' | 22 | `"Bh"` | `"2 in the afternoon"` | flexible, 12h | +#' | 23 | `"hmsv"` | `"2:35:00 PM GMT+00:00"` | flexible, 12h | +#' | 24 | `"hmv"` | `"2:35 PM GMT+00:00"` | flexible, 12h | +#' | 25 | `"ms"` | `"35:00"` | flexible | +#' +#' We can call [info_time_style()] in the console to view a similar table of +#' time styles with example output. +#' +#' @section Formatting with a *CLDR* datetime pattern: +#' +#' We can use a *CLDR* datetime pattern with the `format` argument to create +#' a highly customized and locale-aware output. This is a character string that +#' consists of two types of elements: +#' +#' - Pattern fields, which repeat a specific pattern character one or more +#' times. These fields are replaced with date and time data when formatting. +#' The character sets of `A`-`Z` and `a`-`z` are reserved for use as pattern +#' characters. +#' - Literal text, which is output verbatim when formatting. This can include: +#' - Any characters outside the reserved character sets, including +#' spaces and punctuation. +#' - Any text between single vertical quotes (e.g., `'text'`). +#' - Two adjacent single vertical quotes (''), which represent a literal +#' single quote, either inside or outside quoted text. +#' +#' The number of pattern fields is quite sizable so let's first look at how some +#' *CLDR* datetime patterns work. We'll use the datetime string +#' `"2018-07-04T22:05:09.2358(America/Vancouver)"` for all of the examples that +#' follow. +#' +#' - `"mm/dd/y"` -> `"05/04/2018"` +#' - `"EEEE, MMMM d, y"` -> `"Wednesday, July 4, 2018"` +#' - `"MMM d E"` -> `"Jul 4 Wed"` +#' - `"HH:mm"` -> `"22:05"` +#' - `"h:mm a"` -> `"10:05 PM"` +#' - `"EEEE, MMMM d, y 'at' h:mm a"` -> `"Wednesday, July 4, 2018 at 10:05 PM"` +#' +#' Here are the individual pattern fields: +#' +#' ## Year +#' +#' ### Calendar Year +#' +#' This yields the calendar year, which is always numeric. In most cases the +#' length of the `"y"` field specifies the minimum number of digits to display, +#' zero-padded as necessary. More digits will be displayed if needed to show the +#' full year. There is an exception: `"yy"` gives use just the two low-order +#' digits of the year, zero-padded as necessary. For most use cases, `"y"` or +#' `"yy"` should be good enough. +#' +#' | Field Patterns | Output | +#' |------------------------------- |----------------------------------------| +#' | `"y"` | `"2018"` | +#' | `"yy"` | `"18"` | +#' | `"yyy"` to `"yyyyyyyyy"` | `"2018"` to `"000002018"` | +#' +#' ### Year in the Week in Year Calendar +#' +#' This is the year in 'Week of Year' based calendars in which the year +#' transition occurs on a week boundary. This may differ from calendar year +#' `"y"` near a year transition. This numeric year designation is used in +#' conjunction with pattern character `"w"` in the ISO year-week calendar as +#' defined by ISO 8601. +#' +#' | Field Patterns | Output | +#' |--------------------------------|----------------------------------------| +#' | `"Y"` | `"2018"` | +#' | `"YY"` | `"18"` | +#' | `"YYY"` to `"YYYYYYYYY"` | `"2018"` to `"000002018"` | +#' +#' ## Quarter +#' +#' ### Quarter of the Year: formatting and standalone versions +#' +#' The quarter names are identified numerically, starting at `1` and ending at +#' `4`. Quarter names may vary along two axes: the width and the context. The +#' context is either 'formatting' (taken as a default), which the form used +#' within a complete date format string, or, 'standalone', the form for date +#' elements used independently (such as in calendar headers). The standalone +#' form may be used in any other date format that shares the same form of the +#' name. Here, the formatting form for quarters of the year consists of some run +#' of `"Q"` values whereas the standalone form uses `"q"`. +#' +#' | Field Patterns | Output | Notes | +#' |-------------------|-----------------|-----------------------------------| +#' | `"Q"`/`"q"` | `"3"` | Numeric, one digit | +#' | `"QQ"`/`"qq"` | `"03"` | Numeric, two digits (zero padded) | +#' | `"QQQ"`/`"qqq"` | `"Q3"` | Abbreviated | +#' | `"QQQQ"`/`"qqqq"` | `"3rd quarter"` | Wide | +#' | `"QQQQQ"`/`"qqqqq"` | `"3"` | Narrow | +#' +#' ## Month +#' +#' ### Month: formatting and standalone versions +#' +#' The month names are identified numerically, starting at `1` and ending at +#' `12`. Month names may vary along two axes: the width and the context. The +#' context is either 'formatting' (taken as a default), which the form used +#' within a complete date format string, or, 'standalone', the form for date +#' elements used independently (such as in calendar headers). The standalone +#' form may be used in any other date format that shares the same form of the +#' name. Here, the formatting form for months consists of some run of `"M"` +#' values whereas the standalone form uses `"L"`. +#' +#' | Field Patterns | Output | Notes | +#' |-------------------|-----------------|-----------------------------------| +#' | `"M"`/`"L"` | `"7"` | Numeric, minimum digits | +#' | `"MM"`/`"LL"` | `"07"` | Numeric, two digits (zero padded) | +#' | `"MMM"`/`"LLL"` | `"Jul"` | Abbreviated | +#' | `"MMMM"`/`"LLLL"` | `"July"` | Wide | +#' | `"MMMMM"`/`"LLLLL"` | `"J"` | Narrow | +#' +#' ## Week +#' +#' ### Week of Year +#' +#' Values calculated for the week of year range from `1` to `53`. Week `1` for a +#' year is the first week that contains at least the specified minimum number of +#' days from that year. Weeks between week `1` of one year and week `1` of the +#' following year are numbered sequentially from `2` to `52` or `53` (if +#' needed). +#' +#' There are two available field lengths. Both will display the week of year +#' value but the `"ww"` width will always show two digits (where weeks `1` to +#' `9` are zero padded). +#' +#' | Field Patterns | Output | Notes | +#' |------------------|-----------|------------------------------------------| +#' | `"w"` | `"27"` | Minimum digits | +#' | `"ww"` | `"27"` | Two digits (zero padded) | +#' +#' ### Week of Month +#' +#' The week of a month can range from `1` to `5`. The first day of every month +#' always begins at week `1` and with every transition into the beginning of a +#' week, the week of month value is incremented by `1`. +#' +#' | Field Pattern | Output | +#' |------------------|------------------------------------------------------| +#' | `"W"` | `"1"` | +#' +#' ## Day +#' +#' ### Day of Month +#' +#' The day of month value is always numeric and there are two available field +#' length choices in its formatting. Both will display the day of month value +#' but the `"dd"` formatting will always show two digits (where days `1` to `9` +#' are zero padded). +#' +#' | Field Patterns | Output | Notes | +#' |----------------|-----------|--------------------------------------------| +#' | `"d"` | `"4"` | Minimum digits | +#' | `"dd"` | `"04"` | Two digits, zero padded | +#' +#' ### Day of Year +#' +#' The day of year value ranges from `1` (January 1) to either `365` or `366` +#' (December 31), where the higher value of the range indicates that the year is +#' a leap year (29 days in February, instead of 28). The field length specifies +#' the minimum number of digits, with zero-padding as necessary. +#' +#' | Field Patterns | Output | Notes | +#' |-----------------|----------|--------------------------------------------| +#' | `"D"` | `"185"` | | +#' | `"DD"` | `"185"` | Zero padded to minimum width of 2 | +#' | `"DDD"` | `"185"` | Zero padded to minimum width of 3 | +#' +#' ### Day of Week in Month +#' +#' The day of week in month returns a numerical value indicating the number of +#' times a given weekday had occurred in the month (e.g., '2nd Monday in +#' March'). This conveniently resolves to predicable case structure where ranges +#' of day of the month values return predictable day of week in month values: +#' +#' - days `1` - `7` -> `1` +#' - days `8` - `14` -> `2` +#' - days `15` - `21` -> `3` +#' - days `22` - `28` -> `4` +#' - days `29` - `31` -> `5` +#' +#' | Field Pattern | Output | +#' |--------------------------------|----------------------------------------| +#' | `"F"` | `"1"` | +#' +#' ### Modified Julian Date +#' +#' The modified version of the Julian date is obtained by subtracting +#' 2,400,000.5 days from the Julian date (the number of days since January 1, +#' 4713 BC). This essentially results in the number of days since midnight +#' November 17, 1858. There is a half day offset (unlike the Julian date, the +#' modified Julian date is referenced to midnight instead of noon). +#' +#' | Field Patterns | Output | +#' |--------------------------------|----------------------------------------| +#' | `"g"` to `"ggggggggg"` | `"58303"` -> `"000058303"` | +#' +#' ## Weekday +#' +#' ### Day of Week Name +#' +#' The name of the day of week is offered in four different widths. +#' +#' | Field Patterns | Output | Notes | +#' |----------------------------|----------------|---------------------------| +#' | `"E"`, `"EE"`, or `"EEE"` | `"Wed"` | Abbreviated | +#' | `"EEEE"` | `"Wednesday"` | Wide | +#' | `"EEEEE"` | `"W"` | Narrow | +#' | `"EEEEEE"` | `"We"` | Short | +#' +#' ## Periods +#' +#' ### AM/PM Period of Day +#' +#' This denotes before noon and after noon time periods. May be upper or +#' lowercase depending on the locale and other options. The wide form may be +#' the same as the short form if the 'real' long form (e.g. 'ante meridiem') is +#' not customarily used. The narrow form must be unique, unlike some other +#' fields. +#' +#' | Field Patterns | Output | Notes | +#' |--------------------------------|----------|-----------------------------| +#' | `"a"`, `"aa"`, or `"aaa"` | `"PM"` | Abbreviated | +#' | `"aaaa"` | `"PM"` | Wide | +#' | `"aaaaa"` | `"p"` | Narrow | +#' +#' ### AM/PM Period of Day Plus Noon and Midnight +#' +#' Provide AM and PM as well as phrases for exactly noon and midnight. May be +#' upper or lowercase depending on the locale and other options. If the locale +#' doesn't have the notion of a unique 'noon' (i.e., 12:00), then the PM form +#' may be substituted. A similar behavior can occur for 'midnight' (00:00) and +#' the AM form. The narrow form must be unique, unlike some other fields. +#' +#' (a) `input_midnight`: `"2020-05-05T00:00:00"` +#' (b) `input_noon`: `"2020-05-05T12:00:00"` +#' +#' | Field Patterns | Output | Notes | +#' |--------------------------------|--------------------|-------------------| +#' | `"b"`, `"bb"`, or `"bbb"` | (a) `"midnight"` | Abbreviated | +#' | | (b) `"noon"` | | +#' | `"bbbb"` | (a) `"midnight"` | Wide | +#' | | (b) `"noon"` | | +#' | `"bbbbb"` | (a) `"mi"` | Narrow | +#' | | (b) `"n"` | | +#' +#' ### Flexible Day Periods +#' +#' Flexible day periods denotes things like 'in the afternoon', 'in the +#' evening', etc., and the flexibility comes from a locale's language and +#' script. Each locale has an associated rule set that specifies when the day +#' periods start and end for that locale. +#' +#' (a) `input_morning`: `"2020-05-05T00:08:30"` +#' (b) `input_afternoon`: `"2020-05-05T14:00:00"` +#' +#' | Field Patterns | Output | Notes | +#' |----------------------------|--------------------------|-----------------| +#' | `"B"`, `"BB"`, or `"BBB"` | (a) `"in the morning"` | Abbreviated | +#' | | (b) `"in the afternoon"` | | +#' | `"BBBB"` | (a) `"in the morning"` | Wide | +#' | | (b) `"in the afternoon"` | | +#' | `"BBBBB"` | (a) `"in the morning"` | Narrow | +#' | | (b) `"in the afternoon"` | | +#' +#' ## Hours, Minutes, and Seconds +#' +#' ### Hour 0-23 +#' +#' Hours from `0` to `23` are for a standard 24-hour clock cycle (midnight plus +#' 1 minute is `00:01`) when using `"HH"` (which is the more common width that +#' indicates zero-padding to 2 digits). +#' +#' Using `"2015-08-01T08:35:09"`: +#' +#' | Field Patterns | Output | Notes | +#' |------------------------|---------|--------------------------------------| +#' | `"H"` | `"8"` | Numeric, minimum digits | +#' | `"HH"` | `"08"` | Numeric, 2 digits (zero padded) | +#' +#' ### Hour 1-12 +#' +#' Hours from `1` to `12` are for a standard 12-hour clock cycle (midnight plus +#' 1 minute is `12:01`) when using `"hh"` (which is the more common width that +#' indicates zero-padding to 2 digits). +#' +#' Using `"2015-08-01T08:35:09"`: +#' +#' | Field Patterns | Output | Notes | +#' |------------------------|---------|--------------------------------------| +#' | `"h"` | `"8"` | Numeric, minimum digits | +#' | `"hh"` | `"08"` | Numeric, 2 digits (zero padded) | +#' +#' ### Hour 1-24 +#' +#' Using hours from `1` to `24` is a less common way to express a 24-hour clock +#' cycle (midnight plus 1 minute is `24:01`) when using `"kk"` (which is the +#' more common width that indicates zero-padding to 2 digits). +#' +#' Using `"2015-08-01T08:35:09"`: +#' +#' | Field Patterns | Output | Notes | +#' |------------------------|---------|--------------------------------------| +#' | `"k"` | `"9"` | Numeric, minimum digits | +#' | `"kk"` | `"09"` | Numeric, 2 digits (zero padded) | +#' +#' ### Hour 0-11 +#' +#' Using hours from `0` to `11` is a less common way to express a 12-hour clock +#' cycle (midnight plus 1 minute is `00:01`) when using `"KK"` (which is the +#' more common width that indicates zero-padding to 2 digits). +#' +#' Using `"2015-08-01T08:35:09"`: +#' +#' | Field Patterns | Output | Notes | +#' |------------------------|---------|--------------------------------------| +#' | `"K"` | `"7"` | Numeric, minimum digits | +#' | `"KK"` | `"07"` | Numeric, 2 digits (zero padded) | +#' +#' ### Minute +#' +#' The minute of the hour which can be any number from `0` to `59`. Use `"m"` to +#' show the minimum number of digits, or `"mm"` to always show two digits +#' (zero-padding, if necessary). +#' +#' | Field Patterns | Output | Notes | +#' |------------------------|---------|--------------------------------------| +#' | `"m"` | `"5"` | Numeric, minimum digits | +#' | `"mm"` | `"06"` | Numeric, 2 digits (zero padded) | +#' +#' ### Seconds +#' +#' The second of the minute which can be any number from `0` to `59`. Use `"s"` +#' to show the minimum number of digits, or `"ss"` to always show two digits +#' (zero-padding, if necessary). +#' +#' | Field Patterns | Output | Notes | +#' |------------------------|---------|--------------------------------------| +#' | `"s"` | `"9"` | Numeric, minimum digits | +#' | `"ss"` | `"09"` | Numeric, 2 digits (zero padded) | +#' +#' ### Fractional Second +#' +#' The fractional second truncates (like other time fields) to the width +#' requested (i.e., count of letters). So using pattern `"SSSS"` will display +#' four digits past the decimal (which, incidentally, needs to be added manually +#' to the pattern). +#' +#' | Field Patterns | Output | +#' |--------------------------------|----------------------------------------| +#' | `"S"` to `"SSSSSSSSS"` | `"2"` -> `"235000000"` | +#' +#' ### Milliseconds Elapsed in Day +#' +#' There are 86,400,000 milliseconds in a day and the `"A"` pattern will provide +#' the whole number. The width can go up to nine digits with `"AAAAAAAAA"` and +#' these higher field widths will result in zero padding if necessary. +#' +#' Using `"2011-07-27T00:07:19.7223"`: +#' +#' | Field Patterns | Output | +#' |--------------------------------|----------------------------------------| +#' | `"A"` to `"AAAAAAAAA"` | `"439722"` -> `"000439722"` | +#' +#' ## Era +#' +#' ### The Era Designator +#' +#' This provides the era name for the given date. The Gregorian calendar has two +#' eras: AD and BC. In the AD year numbering system, AD 1 is immediately +#' preceded by 1 BC, with nothing in between them (there was no year zero). +#' +#' | Field Patterns | Output | Notes | +#' |--------------------------------|-----------------|----------------------| +#' | `"G"`, `"GG"`, or `"GGG"` | `"AD"` | Abbreviated | +#' | `"GGGG"` | `"Anno Domini"` | Wide | +#' | `"GGGGG"` | `"A"` | Narrow | +#' +#' ## Time Zones +#' +#' ### TZ // Short and Long Specific non-Location Format +#' +#' The short and long specific non-location formats for time zones are suggested +#' for displaying a time with a user friendly time zone name. Where the short +#' specific format is unavailable, it will fall back to the short localized GMT +#' format (`"O"`). Where the long specific format is unavailable, it will fall +#' back to the long localized GMT format (`"OOOO"`). +#' +#' | Field Patterns | Output | Notes | +#' |----------------------------|---------------------------|----------------| +#' | `"z"`, `"zz"`, or `"zzz"` | `"PDT"` | Short Specific | +#' | `"zzzz"` | `"Pacific Daylight Time"` | Long Specific | +#' +#' ### TZ // Common UTC Offset Formats +#' +#' The ISO8601 basic format with hours, minutes and optional seconds fields is +#' represented by `"Z"`, `"ZZ"`, or `"ZZZ"`. The format is equivalent to RFC 822 +#' zone format (when the optional seconds field is absent). This is equivalent +#' to the `"xxxx"` specifier. The field pattern `"ZZZZ"` represents the long +#' localized GMT format. This is equivalent to the `"OOOO"` specifier. Finally, +#' `"ZZZZZ"` pattern yields the ISO8601 extended format with hours, minutes and +#' optional seconds fields. The ISO8601 UTC indicator `Z` is used when local +#' time offset is `0`. This is equivalent to the `"XXXXX"` specifier. +#' +#' | Field Patterns | Output | Notes | +#' |----------------------------|--------------|-----------------------------| +#' | `"Z"`, `"ZZ"`, or `"ZZZ"` | `"-0700"` | ISO 8601 basic format | +#' | `"ZZZZ"` | `"GMT-7:00"` | Long localized GMT format | +#' | `"ZZZZZ"` | `"-07:00"` | ISO 8601 extended format | +#' +#' ### TZ // Short and Long Localized GMT Formats +#' +#' The localized GMT formats come in two widths `"O"` (which removes the minutes +#' field if it's `0`) and `"OOOO"` (which always contains the minutes field). +#' The use of the `GMT` indicator changes according to the locale. +#' +#' | Field Patterns | Output | Notes | +#' |-------------------------|---------------|-------------------------------| +#' | `"O"` | `"GMT-7"` | Short localized GMT format | +#' | `"OOOO"` | `"GMT-07:00"` | Long localized GMT format | +#' +#' ### TZ // Short and Long Generic non-Location Formats +#' +#' The generic non-location formats are useful for displaying a recurring wall +#' time (e.g., events, meetings) or anywhere people do not want to be overly +#' specific. Where either of these is unavailable, there is a fallback to the +#' generic location format (`"VVVV"`), then the short localized GMT format as +#' the final fallback. +#' +#' | Field Patterns | Output | Notes | +#' |-----------------|------------------|------------------------------------| +#' | `"v"` | `"PT"` | Short generic non-location format | +#' | `"vvvv"` | `"Pacific Time"` | Long generic non-location format | +#' +#' ### TZ // Short Time Zone IDs and Exemplar City Formats +#' +#' These formats provide variations of the time zone ID and often include the +#' exemplar city. The widest of these formats, `"VVVV"`, is useful for +#' populating a choice list for time zones, because it supports 1-to-1 name/zone +#' ID mapping and is more uniform than other text formats. +#' +#' | Field Patterns | Output | Notes | +#' |--------------------|-----------------------|----------------------------| +#' | `"V"` | `"cavan"` | Short time zone ID | +#' | `"VV"` | `"America/Vancouver"` | Long time zone ID | +#' | `"VVV"` | `"Vancouver"` | The tz exemplar city | +#' | `"VVVV"` | `"Vancouver Time"` | Generic location format | +#' +#' ### TZ // ISO 8601 Formats with Z for +0000 +#' +#' The `"X"`-`"XXX"` field patterns represent valid ISO 8601 patterns for time +#' zone offsets in datetimes. The final two widths, `"XXXX"` and `"XXXXX"` allow +#' for optional seconds fields. The seconds field is *not* supported by the ISO +#' 8601 specification. For all of these, the ISO 8601 UTC indicator `Z` is used +#' when the local time offset is `0`. +#' +#' | Field Patterns | Output | Notes | +#' |----------------|------------|-------------------------------------------| +#' | `"X"` | `"-07"` | ISO 8601 basic format (h, optional m) | +#' | `"XX"` | `"-0700"` | ISO 8601 basic format (h & m) | +#' | `"XXX"` | `"-07:00"` | ISO 8601 extended format (h & m) | +#' | `"XXXX"` | `"-0700"` | ISO 8601 basic format (h & m, optional s) | +#' | `"XXXXX"` | `"-07:00"` | ISO 8601 extended format (h & m, optional s) | +#' +#' ### TZ // ISO 8601 Formats (no use of Z for +0000) +#' +#' The `"x"`-`"xxxxx"` field patterns represent valid ISO 8601 patterns for time +#' zone offsets in datetimes. They are similar to the `"X"`-`"XXXXX"` field +#' patterns except that the ISO 8601 UTC indicator `Z` *will not* be used when +#' the local time offset is `0`. +#' +#' | Field Patterns | Output | Notes | +#' |----------------|------------|-------------------------------------------| +#' | `"x"` | `"-07"` | ISO 8601 basic format (h, optional m) | +#' | `"xx"` | `"-0700"` | ISO 8601 basic format (h & m) | +#' | `"xxx"` | `"-07:00"` | ISO 8601 extended format (h & m) | +#' | `"xxxx"` | `"-0700"` | ISO 8601 basic format (h & m, optional s) | +#' | `"xxxxx"` | `"-07:00"` | ISO 8601 extended format (h & m, optional s) | +#' +#' @section Formatting with a `strptime` format code: +#' +#' Performing custom date/time formatting with the `format` argument can also +#' occur with a `strptime` format code. This works by constructing a string of +#' individual format codes representing formatted date and time elements. These +#' are all indicated with a leading `%`, literal characters are interpreted as +#' any characters not starting with a `%` character. +#' +#' First off, let's look at a few format code combinations that work well +#' together as a `strptime` format. This will give us an intuition on how these +#' generally work. We'll use the datetime `"2015-06-08 23:05:37.48"` for all of +#' the examples that follow. +#' +#' - `"%m/%d/%Y"` -> `"06/08/2015"` +#' - `"%A, %B %e, %Y"` -> `"Monday, June 8, 2015"` +#' - `"%b %e %a"` -> `"Jun 8 Mon"` +#' - `"%H:%M"` -> `"23:05"` +#' - `"%I:%M %p"` -> `"11:05 pm"` +#' - `"%A, %B %e, %Y at %I:%M %p"` -> `"Monday, June 8, 2015 at 11:05 pm"` +#' +#' Here are the individual format codes for the date components: +#' +#' - `"%a"` -> `"Mon"` (abbreviated day of week name) +#' - `"%A"` -> `"Monday"` (full day of week name) +#' - `"%w"` -> `"1"` (day of week number in `0..6`; Sunday is `0`) +#' - `"%u"` -> `"1"` (day of week number in `1..7`; Monday is `1`, Sunday `7`) +#' - `"%y"` -> `"15"` (abbreviated year, using the final two digits) +#' - `"%Y"` -> `"2015"` (full year) +#' - `"%b"` -> `"Jun"` (abbreviated month name) +#' - `"%B"` -> `"June"` (full month name) +#' - `"%m"` -> `"06"` (month number) +#' - `"%d"` -> `"08"` (day number, zero-padded) +#' - `"%e"` -> `"8"` (day number without zero padding) +#' - `"%j"` -> `"159"` (day of the year, always zero-padded) +#' - `"%W"` -> `"23"` (week number for the year, always zero-padded) +#' - `"%V"` -> `"24"` (week number for the year, following the ISO 8601 +#' standard) +#' - `"%C"` -> `"20"` (the century number) +#' +#' Here are the individual format codes for the time components: +#' +#' - `"%H"` -> `"23"` (24h hour) +#' - `"%I"` -> `"11"` (12h hour) +#' - `"%M"` -> `"05"` (minute) +#' - `"%S"` -> `"37"` (second) +#' - `"%OS3"` -> `"37.480"` (seconds with decimals; `3` decimal places here) +#' - `%p` -> `"pm"` (AM or PM indicator) +#' +#' Here are some extra formats that you may find useful: +#' +#' - `"%z"` -> `"+0000"` (signed time zone offset, here using UTC) +#' - `"%F"` -> `"2015-06-08"` (the date in the ISO 8601 date format) +#' - `"%%"` -> `"%"` (the literal "`%`" character, in case you need it) +#' +#' @section Adapting output to a specific `locale`: +#' +#' This formatting function can adapt outputs according to a provided `locale` +#' value. Examples include `"en"` for English (United States) and `"fr"` for +#' French (France). Note that a `locale` value provided here will override any +#' global locale setting performed in [gt()]'s own `locale` argument (it is +#' settable there as a value received by all other functions that have a +#' `locale` argument). As a useful reference on which locales are supported, we +#' can call [info_locales()] to view an info table. +#' +#' @section Examples: +#' +#' Use the [`exibble`] dataset to create a single-column **gt** table (with only +#' the `datetime` column). With `fmt_datetime()` we'll format the `datetime` +#' column to have dates formatted with the `"month_day_year"` style and times +#' with the `"h_m_s_p"` 12-hour time style. +#' +#' ```r +#' exibble |> +#' dplyr::select(datetime) |> +#' gt() |> +#' fmt_datetime( +#' date_style = "month_day_year", +#' time_style = "h_m_s_p" +#' ) +#' ``` +#' +#' \if{html}{\out{ +#' `r man_get_image_tag(file = "man_fmt_datetime_1.png")` +#' }} +#' +#' Using the same input table, we can use `fmt_datetime()` with flexible date +#' and time styles. Two that work well together are `"MMMEd"` and `"Hms"`. These +#' date and time styles will, being flexible, create outputs that conform to the +#' locale value given to the `locale` argument. Let's use two calls of +#' `fmt_datetime()`: the first will format all rows in `datetime` to the Danish +#' locale (with `locale = "da"`) and the second call will target the first three +#' rows with the same formatting, but in the default locale (which is `"en"`). +#' +#' ```r +#' exibble |> +#' dplyr::select(datetime) |> +#' gt() |> +#' fmt_datetime( +#' date_style = "MMMEd", +#' time_style = "Hms", +#' locale = "da" +#' ) |> +#' fmt_datetime( +#' rows = 1:3, +#' date_style = "MMMEd", +#' time_style = "Hms" +#' ) +#' ``` +#' +#' \if{html}{\out{ +#' `r man_get_image_tag(file = "man_fmt_datetime_2.png")` +#' }} +#' +#' It's possible to use the `format` argument and write our own formatting +#' specification. Using the CLDR datetime pattern +#' `"EEEE, MMMM d, y 'at' h:mm a (zzzz)"` gives us datetime outputs with time +#' zone formatting. Let's provide a time zone ID (`"America/Vancouver"`) to the +#' `tz` argument. +#' +#' ```r +#' exibble |> +#' dplyr::select(datetime) |> +#' gt() |> +#' fmt_datetime( +#' format = "EEEE, MMMM d, y 'at' h:mm a (zzzz)", +#' tz = "America/Vancouver" +#' ) +#' ``` +#' +#' \if{html}{\out{ +#' `r man_get_image_tag(file = "man_fmt_datetime_3.png")` +#' }} +#' +#' @family data formatting functions +#' @section Function ID: +#' 3-15 +#' +#' @section Function Introduced: +#' `v0.2.0.5` (March 31, 2020) +#' +#' @seealso The vector-formatting version of this function: +#' [vec_fmt_datetime()]. +#' +#' @export +fmt_datetime <- function( + data, + columns = everything(), + rows = everything(), + date_style = "iso", + time_style = "iso", + sep = " ", + format = NULL, + tz = NULL, + pattern = "{x}", + locale = NULL +) { + + # Perform input object validation + stop_if_not_gt_tbl(data = data) + + # + # Begin support for `from_column()` objects passed to compatible arguments + # + + # Supports parameters: + # + # - date_style + # - time_style + # - sep + # - format + # - tz + # - pattern + # - locale + + arg_vals <- + mget( + get_arg_names( + function_name = "fmt_datetime", + all_args_except = c("data", "columns", "rows") + ) + ) + + if (args_have_gt_column_obj(arg_vals = arg_vals)) { + + # Resolve the row numbers using `resolve_vars()` + resolved_rows_idx <- + resolve_rows_i( + expr = {{ rows }}, + data = data + ) + + param_tbl <- + generate_param_tbl( + data = data, + arg_vals = arg_vals, + resolved_rows_idx = resolved_rows_idx + ) + + for (i in seq_len(nrow(param_tbl))) { + + p_i <- as.list(param_tbl[i, ]) + + data <- + fmt_datetime( + data = data, + columns = {{ columns }}, + rows = resolved_rows_idx[i], + date_style = p_i$date_style %||% date_style, + time_style = p_i$time_style %||% time_style, + sep = p_i$sep %||% sep, + format = p_i$format %||% format, + tz = p_i$tz %||% tz, + pattern = p_i$pattern %||% pattern, + locale = p_i$locale %||% locale + ) + } + + return(data) + } + + # + # End support for `from_column()` objects passed to compatible arguments + # + + # Stop function if `locale` does not have a valid value; normalize locale + # and resolve one that might be set globally + validate_locale(locale = locale) + locale <- normalize_locale(locale = locale) + locale <- resolve_locale(data = data, locale = locale) + + if (!is.null(format)) { + + # Ensure that the format code meets some basic validation requirements + check_string(format) + + } else { + + # Transform `date_style` to `date_format_str` + date_format_str <- withCallingHandlers( + get_date_format(date_style = date_style), + error = function(e) { + cli::cli_abort("Invalid date style. See {.run gt::info_date_style()} for valid inputs.", + parent = e) + }) + + # Transform `time_style` to `time_format_str` + time_format_str <- withCallingHandlers( + get_time_format(time_style = time_style), + error = function(e) { + cli::cli_abort("Invalid time style. See {.run gt::info_time_style()} for valid inputs.", + parent = e) + }) + } + + valid_class <- c("Date", "POSIXct", "character") + msg <- c(i = "Allowed types are `Date`, `POSIXct`, and `character` (with + ISO-8601 formatted dates)") + check_columns_valid_if_strict(data, {{ columns }}, valid_class, msg) + + # Pass `data`, `columns`, `rows`, and the formatting + # functions as a function list to `fmt()` + fmt( + data = data, + columns = {{ columns }}, + rows = {{ rows }}, + compat = valid_class, + fns = num_fmt_factory_multi( + pattern = pattern, + use_latex_math_mode = FALSE, + format_fn = function(x, context) { + + # If a format string is provided then use that to generate the + # formatted date/time string + if (!is.null(format)) { + + # If the incoming values are strings that adequately represent time + # values, then prepend with the `1970-01-01` dummy date to create an + # input that will works with `strftime()` + if (all(is_string_time(x))) { + x <- paste("1970-01-01", x) + } + + if (grepl("%", format)) { + + if (is.character(x)) { + + tz <- tz %||% "GMT" + + datetime <- + withCallingHandlers( + as.POSIXlt(x), + error = function(e) { + cli::cli_abort( + "One or more of the provided date/datetime values are invalid.", + call = call("fmt_datetime"), + parent = e + ) + } + ) + + attr(datetime, which = "tzone") <- tz + + datetime <- as.POSIXct(datetime) + + return(strftime(datetime, format = format, tz = tz)) + } + + # Format the datetime values using `strftime()` + return(strftime(x, format = format, tz = tz)) + + } else { + + tz <- tz %||% "UTC" + + dt_str <- strftime(x, format = "%Y-%m-%dT%H:%M:%S%z", tz = tz) + + if ("tzone" %in% names(attributes(x))) { + tzone <- attr(x, which = "tzone", exact = TRUE) + dt_str <- paste0(dt_str, "(", tzone, ")") + } + + # Format the datetime values using `fdt()` + return( + bigD::fdt( + input = dt_str, + format = format, + locale = locale, + use_tz = tz + ) + ) + } + } + + # + # Format the date and time portions of the datetime value + # + + # Convert incoming values to POSIXlt but provide a friendly error + # if the values cannot be parsed by `as.POSIXlt()` + datetime <- + withCallingHandlers( + as.POSIXlt(x), + error = function(e) { + cli::cli_abort( + # possibly Error in `fmt()` caused by error in `as.POSIXlt` + "One or more of the provided date/datetime values are invalid.", + call = call("fmt_datetime"), + parent = e + ) + } + ) + + # + # Separately format the date and time portions using `fdt()` + # + + date_str <- + bigD::fdt( + input = as.character(datetime), + format = date_format_str, + locale = locale + ) + + time_str <- + bigD::fdt( + input = as.character(datetime), + format = time_format_str, + locale = locale + ) + + paste0(date_str, sep, time_str) + } + ) + ) +} diff --git a/R/format_data.R b/R/format_data.R index 7f775e4a27..74876865e6 100644 --- a/R/format_data.R +++ b/R/format_data.R @@ -4067,1664 +4067,6 @@ fmt_bytes <- function( ) } -# fmt_date() ------------------------------------------------------------------- -#' Format values as dates -#' -#' @description -#' -#' Format input values to time values using one of 41 preset date styles. Input -#' can be in the form of `POSIXt` (i.e., datetimes), the `Date` type, or -#' `character` (must be in the ISO 8601 form of `YYYY-MM-DD HH:MM:SS` or -#' `YYYY-MM-DD`). -#' -#' @inheritParams fmt_number -#' -#' @param date_style *Predefined style for dates* -#' -#' `scalar|scalar(1<=val<=41)` // *default:* `"iso"` -#' -#' The date style to use. By default this is the short name `"iso"` which -#' corresponds to ISO 8601 date formatting. There are 41 date styles in total -#' and their short names can be viewed using [info_date_style()]. -#' -#' @return An object of class `gt_tbl`. -#' -#' @section Compatibility of formatting function with data values: -#' -#' `fmt_date()` is compatible with body cells that are of the `"Date"`, -#' `"POSIXt"` or `"character"` types. Any other types of body cells are ignored -#' during formatting. This is to say that cells of incompatible data types may -#' be targeted, but there will be no attempt to format them. -#' -#' @section Compatibility of arguments with the `from_column()` helper function: -#' -#' [from_column()] can be used with certain arguments of `fmt_date()` to obtain -#' varying parameter values from a specified column within the table. This means -#' that each row could be formatted a little bit differently. These arguments -#' provide support for [from_column()]: -#' -#' - `date_style` -#' - `pattern` -#' - `locale` -#' -#' Please note that for each of the aforementioned arguments, a [from_column()] -#' call needs to reference a column that has data of the correct type (this is -#' different for each argument). Additional columns for parameter values can be -#' generated with [cols_add()] (if not already present). Columns that contain -#' parameter data can also be hidden from final display with [cols_hide()]. -#' Finally, there is no limitation to how many arguments the [from_column()] -#' helper is applied so long as the arguments belong to this closed set. -#' -#' @section Formatting with the `date_style` argument: -#' -#' We need to supply a preset date style to the `date_style` argument. The date -#' styles are numerous and can handle localization to any supported locale. A -#' large segment of date styles are termed flexible date formats and this means -#' that their output will adapt to any `locale` provided. That feature makes the -#' flexible date formats a better option for locales other than `"en"` (the -#' default locale). -#' -#' The following table provides a listing of all date styles and their output -#' values (corresponding to an input date of `2000-02-29`). -#' -#' | | Date Style | Output | Notes | -#' |----|-----------------------|-------------------------|---------------| -#' | 1 | `"iso"` | `"2000-02-29"` | ISO 8601 | -#' | 2 | `"wday_month_day_year"`| `"Tuesday, February 29, 2000"` | | -#' | 3 | `"wd_m_day_year"` | `"Tue, Feb 29, 2000"` | | -#' | 4 | `"wday_day_month_year"`| `"Tuesday 29 February 2000"` | | -#' | 5 | `"month_day_year"` | `"February 29, 2000"` | | -#' | 6 | `"m_day_year"` | `"Feb 29, 2000"` | | -#' | 7 | `"day_m_year"` | `"29 Feb 2000"` | | -#' | 8 | `"day_month_year"` | `"29 February 2000"` | | -#' | 9 | `"day_month"` | `"29 February"` | | -#' | 10 | `"day_m"` | `"29 Feb"` | | -#' | 11 | `"year"` | `"2000"` | | -#' | 12 | `"month"` | `"February"` | | -#' | 13 | `"day"` | `"29"` | | -#' | 14 | `"year.mn.day"` | `"2000/02/29"` | | -#' | 15 | `"y.mn.day"` | `"00/02/29"` | | -#' | 16 | `"year_week"` | `"2000-W09"` | | -#' | 17 | `"year_quarter"` | `"2000-Q1"` | | -#' | 18 | `"yMd"` | `"2/29/2000"` | flexible | -#' | 19 | `"yMEd"` | `"Tue, 2/29/2000"` | flexible | -#' | 20 | `"yMMM"` | `"Feb 2000"` | flexible | -#' | 21 | `"yMMMM"` | `"February 2000"` | flexible | -#' | 22 | `"yMMMd"` | `"Feb 29, 2000"` | flexible | -#' | 23 | `"yMMMEd"` | `"Tue, Feb 29, 2000"` | flexible | -#' | 24 | `"GyMd"` | `"2/29/2000 A"` | flexible | -#' | 25 | `"GyMMMd"` | `"Feb 29, 2000 AD"` | flexible | -#' | 26 | `"GyMMMEd"` | `"Tue, Feb 29, 2000 AD"`| flexible | -#' | 27 | `"yM"` | `"2/2000"` | flexible | -#' | 28 | `"Md"` | `"2/29"` | flexible | -#' | 29 | `"MEd"` | `"Tue, 2/29"` | flexible | -#' | 30 | `"MMMd"` | `"Feb 29"` | flexible | -#' | 31 | `"MMMEd"` | `"Tue, Feb 29"` | flexible | -#' | 32 | `"MMMMd"` | `"February 29"` | flexible | -#' | 33 | `"GyMMM"` | `"Feb 2000 AD"` | flexible | -#' | 34 | `"yQQQ"` | `"Q1 2000"` | flexible | -#' | 35 | `"yQQQQ"` | `"1st quarter 2000"` | flexible | -#' | 36 | `"Gy"` | `"2000 AD"` | flexible | -#' | 37 | `"y"` | `"2000"` | flexible | -#' | 38 | `"M"` | `"2"` | flexible | -#' | 39 | `"MMM"` | `"Feb"` | flexible | -#' | 40 | `"d"` | `"29"` | flexible | -#' | 41 | `"Ed"` | `"29 Tue"` | flexible | -#' -#' We can call [info_date_style()] in the console to view a similar table -#' of date styles with example output. -#' -#' @section Adapting output to a specific `locale`: -#' -#' This formatting function can adapt outputs according to a provided `locale` -#' value. Examples include `"en"` for English (United States) and `"fr"` for -#' French (France). Note that a `locale` value provided here will override any -#' global locale setting performed in [gt()]'s own `locale` argument (it is -#' settable there as a value received by all other functions that have a -#' `locale` argument). As a useful reference on which locales are supported, we -#' can call [info_locales()] to view an info table. -#' -#' @section Examples: -#' -#' Let's use the [`exibble`] dataset to create a simple, two-column **gt** table -#' (keeping only the `date` and `time` columns). With `fmt_date()`, we'll format -#' the `date` column to display dates formatted with the `"month_day_year"` -#' date style. -#' -#' ```r -#' exibble |> -#' dplyr::select(date, time) |> -#' gt() |> -#' fmt_date( -#' columns = date, -#' date_style = "month_day_year" -#' ) -#' ``` -#' -#' \if{html}{\out{ -#' `r man_get_image_tag(file = "man_fmt_date_1.png")` -#' }} -#' -#' Again using the [`exibble`] dataset, let's format the `date` column to have -#' mixed date formats, where dates after April 1st will be different than the -#' others because of the expressions used in the `rows` argument. This will -#' involve two calls of `fmt_date()` with different statements provided for -#' `rows`. In the first call (dates after the 1st of April) the date style -#' `"m_day_year"` is used; for the second call, `"day_m_year"` is the named -#' date style supplied to `date_style`. -#' -#' ```r -#' exibble |> -#' dplyr::select(date, time) |> -#' gt() |> -#' fmt_date( -#' columns = date, -#' rows = as.Date(date) > as.Date("2015-04-01"), -#' date_style = "m_day_year" -#' ) |> -#' fmt_date( -#' columns = date, -#' rows = as.Date(date) <= as.Date("2015-04-01"), -#' date_style = "day_m_year" -#' ) -#' ``` -#' -#' \if{html}{\out{ -#' `r man_get_image_tag(file = "man_fmt_date_2.png")` -#' }} -#' -#' Use the [`exibble`] dataset to create a single-column **gt** table (with only -#' the `date` column). Format the date values using the `"yMMMEd"` date style -#' (which is one of the 'flexible' styles). Also, we'll set the locale to `"nl"` -#' to get the dates in Dutch. -#' -#' ```r -#' exibble |> -#' dplyr::select(date) |> -#' gt() |> -#' fmt_date( -#' date_style = "yMMMEd", -#' locale = "nl" -#' ) -#' ``` -#' -#' \if{html}{\out{ -#' `r man_get_image_tag(file = "man_fmt_date_3.png")` -#' }} -#' -#' @family data formatting functions -#' @section Function ID: -#' 3-13 -#' -#' @section Function Introduced: -#' `v0.2.0.5` (March 31, 2020) -#' -#' @seealso The vector-formatting version of this function: [vec_fmt_date()]. -#' -#' @export -fmt_date <- function( - data, - columns = everything(), - rows = everything(), - date_style = "iso", - pattern = "{x}", - locale = NULL -) { - - # Perform input object validation - stop_if_not_gt_tbl(data = data) - - # - # Begin support for `from_column()` objects passed to compatible arguments - # - - # Supports parameters: - # - # - date_style - # - pattern - # - locale - - arg_vals <- - mget( - get_arg_names( - function_name = "fmt_date", - all_args_except = c("data", "columns", "rows") - ) - ) - - if (args_have_gt_column_obj(arg_vals = arg_vals)) { - - # Resolve the row numbers using `resolve_vars()` - resolved_rows_idx <- - resolve_rows_i( - expr = {{ rows }}, - data = data - ) - - param_tbl <- - generate_param_tbl( - data = data, - arg_vals = arg_vals, - resolved_rows_idx = resolved_rows_idx - ) - - for (i in seq_len(nrow(param_tbl))) { - - p_i <- as.list(param_tbl[i, ]) - - data <- - fmt_date( - data = data, - columns = {{ columns }}, - rows = resolved_rows_idx[i], - date_style = p_i$date_style %||% date_style, - pattern = p_i$pattern %||% pattern, - locale = p_i$locale %||% locale - ) - } - - return(data) - } - - # - # End support for `from_column()` objects passed to compatible arguments - # - - # Stop function if `locale` does not have a valid value; normalize locale - # and resolve one that might be set globally - validate_locale(locale = locale) - locale <- normalize_locale(locale = locale) - locale <- resolve_locale(data = data, locale = locale) - - # Transform `date_style` to `date_format_str` - date_format_str <- withCallingHandlers( - get_date_format(date_style = date_style), - error = function(e) { - cli::cli_abort("Invalid date style. See {.run gt::info_date_style()}.", - parent = e) - }) - - valid_class <- c("Date", "POSIXt", "character") - extra_msg <- c(i = "If character data is supplied, it should be ISO-8601 formatted dates.") - check_columns_valid_if_strict(data, {{ columns }}, valid_class, extra_msg = extra_msg) - - # Pass `data`, `columns`, `rows`, and the formatting - # functions as a function list to `fmt()` - fmt( - data = data, - columns = {{ columns }}, - rows = {{ rows }}, - compat = valid_class, - fns = num_fmt_factory_multi( - pattern = pattern, - use_latex_math_mode = FALSE, - format_fn = function(x, context) { - - # Convert incoming values to POSIXlt but provide a friendly error - # if the values cannot be parsed by `as.POSIXlt()` - date <- - withCallingHandlers( - as.POSIXlt(x, tz = "GMT"), - error = function(e) { - cli::cli_abort( - "One or more of the provided date/datetime values are invalid.", - call = call("fmt_date"), - parent = e - ) - } - ) - - # Format the date string using `fdt()` - bigD::fdt( - input = as.character(date), - format = date_format_str, - locale = locale - ) - } - ) - ) -} - -# fmt_time() ------------------------------------------------------------------- -#' Format values as times -#' -#' @description -#' -#' Format input values to time values using one of 25 preset time styles. Input -#' can be in the form of `POSIXt` (i.e., datetimes), `character` (must be in the -#' ISO 8601 forms of `HH:MM:SS` or `YYYY-MM-DD HH:MM:SS`), or `Date` (which -#' always results in the formatting of `00:00:00`). -#' -#' @inheritParams fmt_number -#' -#' @param time_style *Predefined style for times* -#' -#' `scalar|scalar(1<=val<=25)` // *default:* `"iso"` -#' -#' The time style to use. By default this is the short name `"iso"` which -#' corresponds to how times are formatted within ISO 8601 datetime values. -#' There are 25 time styles in total and their short names can be viewed using -#' [info_time_style()]. -#' -#' @return An object of class `gt_tbl`. -#' -#' @section Compatibility of formatting function with data values: -#' -#' `fmt_time()` is compatible with body cells that are of the `"Date"`, -#' `"POSIXt"` or `"character"` types. Any other types of body cells are ignored -#' during formatting. This is to say that cells of incompatible data types may -#' be targeted, but there will be no attempt to format them. -#' -#' @section Compatibility of arguments with the `from_column()` helper function: -#' -#' [from_column()] can be used with certain arguments of `fmt_time()` to obtain -#' varying parameter values from a specified column within the table. This means -#' that each row could be formatted a little bit differently. These arguments -#' provide support for [from_column()]: -#' -#' - `time_style` -#' - `pattern` -#' - `locale` -#' -#' Please note that for each of the aforementioned arguments, a [from_column()] -#' call needs to reference a column that has data of the correct type (this is -#' different for each argument). Additional columns for parameter values can be -#' generated with [cols_add()] (if not already present). Columns that contain -#' parameter data can also be hidden from final display with [cols_hide()]. -#' Finally, there is no limitation to how many arguments the [from_column()] -#' helper is applied so long as the arguments belong to this closed set. -#' -#' @section Formatting with the `time_style` argument: -#' -#' We need to supply a preset time style to the `time_style` argument. There are -#' many time styles and all of them can handle localization to any supported -#' locale. Many of the time styles are termed flexible time formats and this -#' means that their output will adapt to any `locale` provided. That feature -#' makes the flexible time formats a better option for locales other than `"en"` -#' (the default locale). -#' -#' The following table provides a listing of all time styles and their output -#' values (corresponding to an input time of `14:35:00`). It is noted which of -#' these represent 12- or 24-hour time. -#' -#' | | Time Style | Output | Notes | -#' |----|---------------|---------------------------------|---------------| -#' | 1 | `"iso"` | `"14:35:00"` | ISO 8601, 24h | -#' | 2 | `"iso-short"` | `"14:35"` | ISO 8601, 24h | -#' | 3 | `"h_m_s_p"` | `"2:35:00 PM"` | 12h | -#' | 4 | `"h_m_p"` | `"2:35 PM"` | 12h | -#' | 5 | `"h_p"` | `"2 PM"` | 12h | -#' | 6 | `"Hms"` | `"14:35:00"` | flexible, 24h | -#' | 7 | `"Hm"` | `"14:35"` | flexible, 24h | -#' | 8 | `"H"` | `"14"` | flexible, 24h | -#' | 9 | `"EHm"` | `"Thu 14:35"` | flexible, 24h | -#' | 10 | `"EHms"` | `"Thu 14:35:00"` | flexible, 24h | -#' | 11 | `"Hmsv"` | `"14:35:00 GMT+00:00"` | flexible, 24h | -#' | 12 | `"Hmv"` | `"14:35 GMT+00:00"` | flexible, 24h | -#' | 13 | `"hms"` | `"2:35:00 PM"` | flexible, 12h | -#' | 14 | `"hm"` | `"2:35 PM"` | flexible, 12h | -#' | 15 | `"h"` | `"2 PM"` | flexible, 12h | -#' | 16 | `"Ehm"` | `"Thu 2:35 PM"` | flexible, 12h | -#' | 17 | `"Ehms"` | `"Thu 2:35:00 PM"` | flexible, 12h | -#' | 18 | `"EBhms"` | `"Thu 2:35:00 in the afternoon"` | flexible, 12h | -#' | 19 | `"Bhms"` | `"2:35:00 in the afternoon"` | flexible, 12h | -#' | 20 | `"EBhm"` | `"Thu 2:35 in the afternoon"` | flexible, 12h | -#' | 21 | `"Bhm"` | `"2:35 in the afternoon"` | flexible, 12h | -#' | 22 | `"Bh"` | `"2 in the afternoon"` | flexible, 12h | -#' | 23 | `"hmsv"` | `"2:35:00 PM GMT+00:00"` | flexible, 12h | -#' | 24 | `"hmv"` | `"2:35 PM GMT+00:00"` | flexible, 12h | -#' | 25 | `"ms"` | `"35:00"` | flexible | -#' -#' We can call [info_time_style()] in the console to view a similar table of -#' time styles with example output. -#' -#' @section Adapting output to a specific `locale`: -#' -#' This formatting function can adapt outputs according to a provided `locale` -#' value. Examples include `"en"` for English (United States) and `"fr"` for -#' French (France). Note that a `locale` value provided here will override any -#' global locale setting performed in [gt()]'s own `locale` argument (it is -#' settable there as a value received by all other functions that have a -#' `locale` argument). As a useful reference on which locales are supported, we -#' can use [info_locales()] to view an info table. -#' -#' @section Examples: -#' -#' Let's use the [`exibble`] dataset to create a simple, two-column **gt** table -#' (keeping only the `date` and `time` columns). Format the `time` column with -#' `fmt_time()` to display times formatted with the `"h_m_s_p"` time style. -#' -#' ```r -#' exibble |> -#' dplyr::select(date, time) |> -#' gt() |> -#' fmt_time( -#' columns = time, -#' time_style = "h_m_s_p" -#' ) -#' ``` -#' -#' \if{html}{\out{ -#' `r man_get_image_tag(file = "man_fmt_time_1.png")` -#' }} -#' -#' Again using the [`exibble`] dataset, let's format the `time` column to have -#' mixed time formats, where times after 16:00 will be different than the others -#' because of the expressions used in the `rows` argument. This will involve two -#' calls of `fmt_time()` with different statements provided for `rows`. In the -#' first call (times after 16:00) the time style `"h_m_s_p"` is used; for the -#' second call, `"h_m_p"` is the named time style supplied to `time_style`. -#' -#' ```r -#' exibble |> -#' dplyr::select(date, time) |> -#' gt() |> -#' fmt_time( -#' columns = time, -#' rows = time > "16:00", -#' time_style = "h_m_s_p" -#' ) |> -#' fmt_time( -#' columns = time, -#' rows = time <= "16:00", -#' time_style = "h_m_p" -#' ) -#' ``` -#' -#' \if{html}{\out{ -#' `r man_get_image_tag(file = "man_fmt_time_2.png")` -#' }} -#' -#' Use the [`exibble`] dataset to create a single-column **gt** table (with only -#' the `time` column). Format the time values using the `"EBhms"` time style -#' (which is one of the 'flexible' styles). Also, we'll set the locale to `"sv"` -#' to get the times in Swedish. -#' -#' ```r -#' exibble |> -#' dplyr::select(time) |> -#' gt() |> -#' fmt_time( -#' columns = time, -#' time_style = "EBhms", -#' locale = "sv" -#' ) -#' ``` -#' -#' \if{html}{\out{ -#' `r man_get_image_tag(file = "man_fmt_time_3.png")` -#' }} -#' -#' @family data formatting functions -#' @section Function ID: -#' 3-14 -#' -#' @section Function Introduced: -#' `v0.2.0.5` (March 31, 2020) -#' -#' @seealso The vector-formatting version of this function: [vec_fmt_time()]. -#' -#' @export -fmt_time <- function( - data, - columns = everything(), - rows = everything(), - time_style = "iso", - pattern = "{x}", - locale = NULL -) { - - # Perform input object validation - stop_if_not_gt_tbl(data = data) - - # - # Begin support for `from_column()` objects passed to compatible arguments - # - - # Supports parameters: - # - # - time_style - # - pattern - # - locale - - arg_vals <- - mget( - get_arg_names( - function_name = "fmt_time", - all_args_except = c("data", "columns", "rows") - ) - ) - - if (args_have_gt_column_obj(arg_vals = arg_vals)) { - - # Resolve the row numbers using `resolve_vars()` - resolved_rows_idx <- - resolve_rows_i( - expr = {{ rows }}, - data = data - ) - - param_tbl <- - generate_param_tbl( - data = data, - arg_vals = arg_vals, - resolved_rows_idx = resolved_rows_idx - ) - - for (i in seq_len(nrow(param_tbl))) { - - p_i <- as.list(param_tbl[i, ]) - - data <- - fmt_time( - data = data, - columns = {{ columns }}, - rows = resolved_rows_idx[i], - time_style = p_i$time_style %||% time_style, - pattern = p_i$pattern %||% pattern, - locale = p_i$locale %||% locale - ) - } - - return(data) - } - - # - # End support for `from_column()` objects passed to compatible arguments - # - - # Stop function if `locale` does not have a valid value; normalize locale - # and resolve one that might be set globally - validate_locale(locale = locale) - locale <- normalize_locale(locale = locale) - locale <- resolve_locale(data = data, locale = locale) - - # Transform `time_style` to `time_format_str` - time_format_str <- withCallingHandlers( - get_time_format(time_style = time_style), - error = function(e) { - cli::cli_abort("Invalid time style. See {.run gt::info_time_style()}.", - parent = e) - }) - - valid_class <- c("Date", "POSIXt", "character") - msg <- c(i = "Allowed types are `Date`, `POSIXt`, and `character` (in - `HH:MM:SS` format).") - check_columns_valid_if_strict(data, {{ columns }}, valid_class, msg) - - # Pass `data`, `columns`, `rows`, and the formatting - # functions as a function list to `fmt()` - fmt( - data = data, - columns = {{ columns }}, - rows = {{ rows }}, - compat = valid_class, - fns = num_fmt_factory_multi( - pattern = pattern, - use_latex_math_mode = FALSE, - format_fn = function(x, context) { - - # If the incoming values are strings that adequately represent time - # values, then prepend with the `1970-01-01` dummy date to create an - # input that will works with `strftime()` - if (all(is_string_time(x))) { - x <- paste("1970-01-01", x) - } - - # Convert incoming values to POSIXlt but provide a friendly error - # if the values cannot be parsed by `as.POSIXlt()` - time <- - withCallingHandlers( - as.POSIXlt(x, tz = "GMT"), - error = function(e) { - cli::cli_abort( - "One or more of the provided date/time/datetime values are invalid.", - call = call("fmt_time"), - parent = e - ) - } - ) - - # Format the time string using `fdt()` - bigD::fdt( - input = as.character(time), - format = time_format_str, - locale = locale - ) - } - ) - ) -} - -# fmt_datetime() --------------------------------------------------------------- -#' Format values as datetimes -#' -#' @description -#' -#' Format input values to datetime values using either presets for the date and -#' time components or a formatting directive (this can either use a *CLDR* -#' datetime pattern or `strptime` formatting). The input values can be in the -#' form of `POSIXct` (i.e., datetimes), the `Date` type, or `character` (must be -#' in the ISO 8601 form of `YYYY-MM-DD HH:MM:SS` or `YYYY-MM-DD`). -#' -#' @inheritParams fmt_number -#' -#' @inheritParams fmt_date -#' -#' @inheritParams fmt_time -#' -#' @param sep *Separator between date and time components* -#' -#' `scalar` // *default:* `" "` -#' -#' The separator string to use between the date and time components. By -#' default, this is a single space character (`" "`). Only used when not -#' specifying a `format` code. -#' -#' @param format *Date/time formatting string* -#' -#' `scalar` // *default:* `NULL` (`optional`) -#' -#' An optional formatting string used for generating custom dates/times. If -#' used then the arguments governing preset styles (`date_style` and -#' `time_style`) will be ignored in favor of formatting via the `format` -#' string. -#' -#' @param tz *Time zone* -#' -#' `scalar` // *default:* `NULL` (`optional`) -#' -#' The time zone for printing dates/times (i.e., the output). The -#' default of `NULL` will preserve the time zone of the input data in the -#' output. If providing a time zone, it must be one that is recognized by the -#' user's operating system (a vector of all valid `tz` values can be produced -#' with [OlsonNames()]). -#' -#' @return An object of class `gt_tbl`. -#' -#' @section Compatibility of formatting function with data values: -#' -#' `fmt_datetime()` is compatible with body cells that are of the `"Date"`, -#' `"POSIXct"` or `"character"` types. Any other types of body cells are ignored -#' during formatting. This is to say that cells of incompatible data types may -#' be targeted, but there will be no attempt to format them. -#' -#' @section Compatibility of arguments with the `from_column()` helper function: -#' -#' [from_column()] can be used with certain arguments of `fmt_datetime()` to -#' obtain varying parameter values from a specified column within the table. -#' This means that each row could be formatted a little bit differently. These -#' arguments provide support for [from_column()]: -#' -#' - `date_style` -#' - `time_style` -#' - `sep` -#' - `format` -#' - `tz` -#' - `pattern` -#' - `locale` -#' -#' Please note that for each of the aforementioned arguments, a [from_column()] -#' call needs to reference a column that has data of the correct type (this is -#' different for each argument). Additional columns for parameter values can be -#' generated with [cols_add()] (if not already present). Columns that contain -#' parameter data can also be hidden from final display with [cols_hide()]. -#' Finally, there is no limitation to how many arguments the [from_column()] -#' helper is applied so long as the arguments belong to this closed set. -#' -#' @section Formatting with the `date_style` argument: -#' -#' We can supply a preset date style to the `date_style` argument to separately -#' handle the date portion of the output. The date styles are numerous and can -#' handle localization to any supported locale. A large segment of date styles -#' are termed flexible date formats and this means that their output will adapt -#' to any `locale` provided. That feature makes the flexible date formats a -#' better option for locales other than `"en"` (the default locale). -#' -#' The following table provides a listing of all date styles and their output -#' values (corresponding to an input date of `2000-02-29`). -#' -#' | | Date Style | Output | Notes | -#' |----|-----------------------|-------------------------|---------------| -#' | 1 | `"iso"` | `"2000-02-29"` | ISO 8601 | -#' | 2 | `"wday_month_day_year"`| `"Tuesday, February 29, 2000"` | | -#' | 3 | `"wd_m_day_year"` | `"Tue, Feb 29, 2000"` | | -#' | 4 | `"wday_day_month_year"`| `"Tuesday 29 February 2000"` | | -#' | 5 | `"month_day_year"` | `"February 29, 2000"` | | -#' | 6 | `"m_day_year"` | `"Feb 29, 2000"` | | -#' | 7 | `"day_m_year"` | `"29 Feb 2000"` | | -#' | 8 | `"day_month_year"` | `"29 February 2000"` | | -#' | 9 | `"day_month"` | `"29 February"` | | -#' | 10 | `"day_m"` | `"29 Feb"` | | -#' | 11 | `"year"` | `"2000"` | | -#' | 12 | `"month"` | `"February"` | | -#' | 13 | `"day"` | `"29"` | | -#' | 14 | `"year.mn.day"` | `"2000/02/29"` | | -#' | 15 | `"y.mn.day"` | `"00/02/29"` | | -#' | 16 | `"year_week"` | `"2000-W09"` | | -#' | 17 | `"year_quarter"` | `"2000-Q1"` | | -#' | 18 | `"yMd"` | `"2/29/2000"` | flexible | -#' | 19 | `"yMEd"` | `"Tue, 2/29/2000"` | flexible | -#' | 20 | `"yMMM"` | `"Feb 2000"` | flexible | -#' | 21 | `"yMMMM"` | `"February 2000"` | flexible | -#' | 22 | `"yMMMd"` | `"Feb 29, 2000"` | flexible | -#' | 23 | `"yMMMEd"` | `"Tue, Feb 29, 2000"` | flexible | -#' | 24 | `"GyMd"` | `"2/29/2000 A"` | flexible | -#' | 25 | `"GyMMMd"` | `"Feb 29, 2000 AD"` | flexible | -#' | 26 | `"GyMMMEd"` | `"Tue, Feb 29, 2000 AD"`| flexible | -#' | 27 | `"yM"` | `"2/2000"` | flexible | -#' | 28 | `"Md"` | `"2/29"` | flexible | -#' | 29 | `"MEd"` | `"Tue, 2/29"` | flexible | -#' | 30 | `"MMMd"` | `"Feb 29"` | flexible | -#' | 31 | `"MMMEd"` | `"Tue, Feb 29"` | flexible | -#' | 32 | `"MMMMd"` | `"February 29"` | flexible | -#' | 33 | `"GyMMM"` | `"Feb 2000 AD"` | flexible | -#' | 34 | `"yQQQ"` | `"Q1 2000"` | flexible | -#' | 35 | `"yQQQQ"` | `"1st quarter 2000"` | flexible | -#' | 36 | `"Gy"` | `"2000 AD"` | flexible | -#' | 37 | `"y"` | `"2000"` | flexible | -#' | 38 | `"M"` | `"2"` | flexible | -#' | 39 | `"MMM"` | `"Feb"` | flexible | -#' | 40 | `"d"` | `"29"` | flexible | -#' | 41 | `"Ed"` | `"29 Tue"` | flexible | -#' -#' We can call [info_date_style()] in the console to view a similar table of -#' date styles with example output. -#' -#' @section Formatting with the `time_style` argument: -#' -#' We can supply a preset time style to the `time_style` argument to separately -#' handle the time portion of the output. There are many time styles and all of -#' them can handle localization to any supported locale. Many of the time styles -#' are termed flexible time formats and this means that their output will adapt -#' to any `locale` provided. That feature makes the flexible time formats a -#' better option for locales other than `"en"` (the default locale). -#' -#' The following table provides a listing of all time styles and their output -#' values (corresponding to an input time of `14:35:00`). It is noted which of -#' these represent 12- or 24-hour time. Some of the flexible formats (those -#' that begin with `"E"`) include the day of the week. Keep this in mind -#' when pairing such `time_style` values with a `date_style` so as to avoid -#' redundant or repeating information. -#' -#' | | Time Style | Output | Notes | -#' |----|---------------|---------------------------------|---------------| -#' | 1 | `"iso"` | `"14:35:00"` | ISO 8601, 24h | -#' | 2 | `"iso-short"` | `"14:35"` | ISO 8601, 24h | -#' | 3 | `"h_m_s_p"` | `"2:35:00 PM"` | 12h | -#' | 4 | `"h_m_p"` | `"2:35 PM"` | 12h | -#' | 5 | `"h_p"` | `"2 PM"` | 12h | -#' | 6 | `"Hms"` | `"14:35:00"` | flexible, 24h | -#' | 7 | `"Hm"` | `"14:35"` | flexible, 24h | -#' | 8 | `"H"` | `"14"` | flexible, 24h | -#' | 9 | `"EHm"` | `"Thu 14:35"` | flexible, 24h | -#' | 10 | `"EHms"` | `"Thu 14:35:00"` | flexible, 24h | -#' | 11 | `"Hmsv"` | `"14:35:00 GMT+00:00"` | flexible, 24h | -#' | 12 | `"Hmv"` | `"14:35 GMT+00:00"` | flexible, 24h | -#' | 13 | `"hms"` | `"2:35:00 PM"` | flexible, 12h | -#' | 14 | `"hm"` | `"2:35 PM"` | flexible, 12h | -#' | 15 | `"h"` | `"2 PM"` | flexible, 12h | -#' | 16 | `"Ehm"` | `"Thu 2:35 PM"` | flexible, 12h | -#' | 17 | `"Ehms"` | `"Thu 2:35:00 PM"` | flexible, 12h | -#' | 18 | `"EBhms"` | `"Thu 2:35:00 in the afternoon"` | flexible, 12h | -#' | 19 | `"Bhms"` | `"2:35:00 in the afternoon"` | flexible, 12h | -#' | 20 | `"EBhm"` | `"Thu 2:35 in the afternoon"` | flexible, 12h | -#' | 21 | `"Bhm"` | `"2:35 in the afternoon"` | flexible, 12h | -#' | 22 | `"Bh"` | `"2 in the afternoon"` | flexible, 12h | -#' | 23 | `"hmsv"` | `"2:35:00 PM GMT+00:00"` | flexible, 12h | -#' | 24 | `"hmv"` | `"2:35 PM GMT+00:00"` | flexible, 12h | -#' | 25 | `"ms"` | `"35:00"` | flexible | -#' -#' We can call [info_time_style()] in the console to view a similar table of -#' time styles with example output. -#' -#' @section Formatting with a *CLDR* datetime pattern: -#' -#' We can use a *CLDR* datetime pattern with the `format` argument to create -#' a highly customized and locale-aware output. This is a character string that -#' consists of two types of elements: -#' -#' - Pattern fields, which repeat a specific pattern character one or more -#' times. These fields are replaced with date and time data when formatting. -#' The character sets of `A`-`Z` and `a`-`z` are reserved for use as pattern -#' characters. -#' - Literal text, which is output verbatim when formatting. This can include: -#' - Any characters outside the reserved character sets, including -#' spaces and punctuation. -#' - Any text between single vertical quotes (e.g., `'text'`). -#' - Two adjacent single vertical quotes (''), which represent a literal -#' single quote, either inside or outside quoted text. -#' -#' The number of pattern fields is quite sizable so let's first look at how some -#' *CLDR* datetime patterns work. We'll use the datetime string -#' `"2018-07-04T22:05:09.2358(America/Vancouver)"` for all of the examples that -#' follow. -#' -#' - `"mm/dd/y"` -> `"05/04/2018"` -#' - `"EEEE, MMMM d, y"` -> `"Wednesday, July 4, 2018"` -#' - `"MMM d E"` -> `"Jul 4 Wed"` -#' - `"HH:mm"` -> `"22:05"` -#' - `"h:mm a"` -> `"10:05 PM"` -#' - `"EEEE, MMMM d, y 'at' h:mm a"` -> `"Wednesday, July 4, 2018 at 10:05 PM"` -#' -#' Here are the individual pattern fields: -#' -#' ## Year -#' -#' ### Calendar Year -#' -#' This yields the calendar year, which is always numeric. In most cases the -#' length of the `"y"` field specifies the minimum number of digits to display, -#' zero-padded as necessary. More digits will be displayed if needed to show the -#' full year. There is an exception: `"yy"` gives use just the two low-order -#' digits of the year, zero-padded as necessary. For most use cases, `"y"` or -#' `"yy"` should be good enough. -#' -#' | Field Patterns | Output | -#' |------------------------------- |----------------------------------------| -#' | `"y"` | `"2018"` | -#' | `"yy"` | `"18"` | -#' | `"yyy"` to `"yyyyyyyyy"` | `"2018"` to `"000002018"` | -#' -#' ### Year in the Week in Year Calendar -#' -#' This is the year in 'Week of Year' based calendars in which the year -#' transition occurs on a week boundary. This may differ from calendar year -#' `"y"` near a year transition. This numeric year designation is used in -#' conjunction with pattern character `"w"` in the ISO year-week calendar as -#' defined by ISO 8601. -#' -#' | Field Patterns | Output | -#' |--------------------------------|----------------------------------------| -#' | `"Y"` | `"2018"` | -#' | `"YY"` | `"18"` | -#' | `"YYY"` to `"YYYYYYYYY"` | `"2018"` to `"000002018"` | -#' -#' ## Quarter -#' -#' ### Quarter of the Year: formatting and standalone versions -#' -#' The quarter names are identified numerically, starting at `1` and ending at -#' `4`. Quarter names may vary along two axes: the width and the context. The -#' context is either 'formatting' (taken as a default), which the form used -#' within a complete date format string, or, 'standalone', the form for date -#' elements used independently (such as in calendar headers). The standalone -#' form may be used in any other date format that shares the same form of the -#' name. Here, the formatting form for quarters of the year consists of some run -#' of `"Q"` values whereas the standalone form uses `"q"`. -#' -#' | Field Patterns | Output | Notes | -#' |-------------------|-----------------|-----------------------------------| -#' | `"Q"`/`"q"` | `"3"` | Numeric, one digit | -#' | `"QQ"`/`"qq"` | `"03"` | Numeric, two digits (zero padded) | -#' | `"QQQ"`/`"qqq"` | `"Q3"` | Abbreviated | -#' | `"QQQQ"`/`"qqqq"` | `"3rd quarter"` | Wide | -#' | `"QQQQQ"`/`"qqqqq"` | `"3"` | Narrow | -#' -#' ## Month -#' -#' ### Month: formatting and standalone versions -#' -#' The month names are identified numerically, starting at `1` and ending at -#' `12`. Month names may vary along two axes: the width and the context. The -#' context is either 'formatting' (taken as a default), which the form used -#' within a complete date format string, or, 'standalone', the form for date -#' elements used independently (such as in calendar headers). The standalone -#' form may be used in any other date format that shares the same form of the -#' name. Here, the formatting form for months consists of some run of `"M"` -#' values whereas the standalone form uses `"L"`. -#' -#' | Field Patterns | Output | Notes | -#' |-------------------|-----------------|-----------------------------------| -#' | `"M"`/`"L"` | `"7"` | Numeric, minimum digits | -#' | `"MM"`/`"LL"` | `"07"` | Numeric, two digits (zero padded) | -#' | `"MMM"`/`"LLL"` | `"Jul"` | Abbreviated | -#' | `"MMMM"`/`"LLLL"` | `"July"` | Wide | -#' | `"MMMMM"`/`"LLLLL"` | `"J"` | Narrow | -#' -#' ## Week -#' -#' ### Week of Year -#' -#' Values calculated for the week of year range from `1` to `53`. Week `1` for a -#' year is the first week that contains at least the specified minimum number of -#' days from that year. Weeks between week `1` of one year and week `1` of the -#' following year are numbered sequentially from `2` to `52` or `53` (if -#' needed). -#' -#' There are two available field lengths. Both will display the week of year -#' value but the `"ww"` width will always show two digits (where weeks `1` to -#' `9` are zero padded). -#' -#' | Field Patterns | Output | Notes | -#' |------------------|-----------|------------------------------------------| -#' | `"w"` | `"27"` | Minimum digits | -#' | `"ww"` | `"27"` | Two digits (zero padded) | -#' -#' ### Week of Month -#' -#' The week of a month can range from `1` to `5`. The first day of every month -#' always begins at week `1` and with every transition into the beginning of a -#' week, the week of month value is incremented by `1`. -#' -#' | Field Pattern | Output | -#' |------------------|------------------------------------------------------| -#' | `"W"` | `"1"` | -#' -#' ## Day -#' -#' ### Day of Month -#' -#' The day of month value is always numeric and there are two available field -#' length choices in its formatting. Both will display the day of month value -#' but the `"dd"` formatting will always show two digits (where days `1` to `9` -#' are zero padded). -#' -#' | Field Patterns | Output | Notes | -#' |----------------|-----------|--------------------------------------------| -#' | `"d"` | `"4"` | Minimum digits | -#' | `"dd"` | `"04"` | Two digits, zero padded | -#' -#' ### Day of Year -#' -#' The day of year value ranges from `1` (January 1) to either `365` or `366` -#' (December 31), where the higher value of the range indicates that the year is -#' a leap year (29 days in February, instead of 28). The field length specifies -#' the minimum number of digits, with zero-padding as necessary. -#' -#' | Field Patterns | Output | Notes | -#' |-----------------|----------|--------------------------------------------| -#' | `"D"` | `"185"` | | -#' | `"DD"` | `"185"` | Zero padded to minimum width of 2 | -#' | `"DDD"` | `"185"` | Zero padded to minimum width of 3 | -#' -#' ### Day of Week in Month -#' -#' The day of week in month returns a numerical value indicating the number of -#' times a given weekday had occurred in the month (e.g., '2nd Monday in -#' March'). This conveniently resolves to predicable case structure where ranges -#' of day of the month values return predictable day of week in month values: -#' -#' - days `1` - `7` -> `1` -#' - days `8` - `14` -> `2` -#' - days `15` - `21` -> `3` -#' - days `22` - `28` -> `4` -#' - days `29` - `31` -> `5` -#' -#' | Field Pattern | Output | -#' |--------------------------------|----------------------------------------| -#' | `"F"` | `"1"` | -#' -#' ### Modified Julian Date -#' -#' The modified version of the Julian date is obtained by subtracting -#' 2,400,000.5 days from the Julian date (the number of days since January 1, -#' 4713 BC). This essentially results in the number of days since midnight -#' November 17, 1858. There is a half day offset (unlike the Julian date, the -#' modified Julian date is referenced to midnight instead of noon). -#' -#' | Field Patterns | Output | -#' |--------------------------------|----------------------------------------| -#' | `"g"` to `"ggggggggg"` | `"58303"` -> `"000058303"` | -#' -#' ## Weekday -#' -#' ### Day of Week Name -#' -#' The name of the day of week is offered in four different widths. -#' -#' | Field Patterns | Output | Notes | -#' |----------------------------|----------------|---------------------------| -#' | `"E"`, `"EE"`, or `"EEE"` | `"Wed"` | Abbreviated | -#' | `"EEEE"` | `"Wednesday"` | Wide | -#' | `"EEEEE"` | `"W"` | Narrow | -#' | `"EEEEEE"` | `"We"` | Short | -#' -#' ## Periods -#' -#' ### AM/PM Period of Day -#' -#' This denotes before noon and after noon time periods. May be upper or -#' lowercase depending on the locale and other options. The wide form may be -#' the same as the short form if the 'real' long form (e.g. 'ante meridiem') is -#' not customarily used. The narrow form must be unique, unlike some other -#' fields. -#' -#' | Field Patterns | Output | Notes | -#' |--------------------------------|----------|-----------------------------| -#' | `"a"`, `"aa"`, or `"aaa"` | `"PM"` | Abbreviated | -#' | `"aaaa"` | `"PM"` | Wide | -#' | `"aaaaa"` | `"p"` | Narrow | -#' -#' ### AM/PM Period of Day Plus Noon and Midnight -#' -#' Provide AM and PM as well as phrases for exactly noon and midnight. May be -#' upper or lowercase depending on the locale and other options. If the locale -#' doesn't have the notion of a unique 'noon' (i.e., 12:00), then the PM form -#' may be substituted. A similar behavior can occur for 'midnight' (00:00) and -#' the AM form. The narrow form must be unique, unlike some other fields. -#' -#' (a) `input_midnight`: `"2020-05-05T00:00:00"` -#' (b) `input_noon`: `"2020-05-05T12:00:00"` -#' -#' | Field Patterns | Output | Notes | -#' |--------------------------------|--------------------|-------------------| -#' | `"b"`, `"bb"`, or `"bbb"` | (a) `"midnight"` | Abbreviated | -#' | | (b) `"noon"` | | -#' | `"bbbb"` | (a) `"midnight"` | Wide | -#' | | (b) `"noon"` | | -#' | `"bbbbb"` | (a) `"mi"` | Narrow | -#' | | (b) `"n"` | | -#' -#' ### Flexible Day Periods -#' -#' Flexible day periods denotes things like 'in the afternoon', 'in the -#' evening', etc., and the flexibility comes from a locale's language and -#' script. Each locale has an associated rule set that specifies when the day -#' periods start and end for that locale. -#' -#' (a) `input_morning`: `"2020-05-05T00:08:30"` -#' (b) `input_afternoon`: `"2020-05-05T14:00:00"` -#' -#' | Field Patterns | Output | Notes | -#' |----------------------------|--------------------------|-----------------| -#' | `"B"`, `"BB"`, or `"BBB"` | (a) `"in the morning"` | Abbreviated | -#' | | (b) `"in the afternoon"` | | -#' | `"BBBB"` | (a) `"in the morning"` | Wide | -#' | | (b) `"in the afternoon"` | | -#' | `"BBBBB"` | (a) `"in the morning"` | Narrow | -#' | | (b) `"in the afternoon"` | | -#' -#' ## Hours, Minutes, and Seconds -#' -#' ### Hour 0-23 -#' -#' Hours from `0` to `23` are for a standard 24-hour clock cycle (midnight plus -#' 1 minute is `00:01`) when using `"HH"` (which is the more common width that -#' indicates zero-padding to 2 digits). -#' -#' Using `"2015-08-01T08:35:09"`: -#' -#' | Field Patterns | Output | Notes | -#' |------------------------|---------|--------------------------------------| -#' | `"H"` | `"8"` | Numeric, minimum digits | -#' | `"HH"` | `"08"` | Numeric, 2 digits (zero padded) | -#' -#' ### Hour 1-12 -#' -#' Hours from `1` to `12` are for a standard 12-hour clock cycle (midnight plus -#' 1 minute is `12:01`) when using `"hh"` (which is the more common width that -#' indicates zero-padding to 2 digits). -#' -#' Using `"2015-08-01T08:35:09"`: -#' -#' | Field Patterns | Output | Notes | -#' |------------------------|---------|--------------------------------------| -#' | `"h"` | `"8"` | Numeric, minimum digits | -#' | `"hh"` | `"08"` | Numeric, 2 digits (zero padded) | -#' -#' ### Hour 1-24 -#' -#' Using hours from `1` to `24` is a less common way to express a 24-hour clock -#' cycle (midnight plus 1 minute is `24:01`) when using `"kk"` (which is the -#' more common width that indicates zero-padding to 2 digits). -#' -#' Using `"2015-08-01T08:35:09"`: -#' -#' | Field Patterns | Output | Notes | -#' |------------------------|---------|--------------------------------------| -#' | `"k"` | `"9"` | Numeric, minimum digits | -#' | `"kk"` | `"09"` | Numeric, 2 digits (zero padded) | -#' -#' ### Hour 0-11 -#' -#' Using hours from `0` to `11` is a less common way to express a 12-hour clock -#' cycle (midnight plus 1 minute is `00:01`) when using `"KK"` (which is the -#' more common width that indicates zero-padding to 2 digits). -#' -#' Using `"2015-08-01T08:35:09"`: -#' -#' | Field Patterns | Output | Notes | -#' |------------------------|---------|--------------------------------------| -#' | `"K"` | `"7"` | Numeric, minimum digits | -#' | `"KK"` | `"07"` | Numeric, 2 digits (zero padded) | -#' -#' ### Minute -#' -#' The minute of the hour which can be any number from `0` to `59`. Use `"m"` to -#' show the minimum number of digits, or `"mm"` to always show two digits -#' (zero-padding, if necessary). -#' -#' | Field Patterns | Output | Notes | -#' |------------------------|---------|--------------------------------------| -#' | `"m"` | `"5"` | Numeric, minimum digits | -#' | `"mm"` | `"06"` | Numeric, 2 digits (zero padded) | -#' -#' ### Seconds -#' -#' The second of the minute which can be any number from `0` to `59`. Use `"s"` -#' to show the minimum number of digits, or `"ss"` to always show two digits -#' (zero-padding, if necessary). -#' -#' | Field Patterns | Output | Notes | -#' |------------------------|---------|--------------------------------------| -#' | `"s"` | `"9"` | Numeric, minimum digits | -#' | `"ss"` | `"09"` | Numeric, 2 digits (zero padded) | -#' -#' ### Fractional Second -#' -#' The fractional second truncates (like other time fields) to the width -#' requested (i.e., count of letters). So using pattern `"SSSS"` will display -#' four digits past the decimal (which, incidentally, needs to be added manually -#' to the pattern). -#' -#' | Field Patterns | Output | -#' |--------------------------------|----------------------------------------| -#' | `"S"` to `"SSSSSSSSS"` | `"2"` -> `"235000000"` | -#' -#' ### Milliseconds Elapsed in Day -#' -#' There are 86,400,000 milliseconds in a day and the `"A"` pattern will provide -#' the whole number. The width can go up to nine digits with `"AAAAAAAAA"` and -#' these higher field widths will result in zero padding if necessary. -#' -#' Using `"2011-07-27T00:07:19.7223"`: -#' -#' | Field Patterns | Output | -#' |--------------------------------|----------------------------------------| -#' | `"A"` to `"AAAAAAAAA"` | `"439722"` -> `"000439722"` | -#' -#' ## Era -#' -#' ### The Era Designator -#' -#' This provides the era name for the given date. The Gregorian calendar has two -#' eras: AD and BC. In the AD year numbering system, AD 1 is immediately -#' preceded by 1 BC, with nothing in between them (there was no year zero). -#' -#' | Field Patterns | Output | Notes | -#' |--------------------------------|-----------------|----------------------| -#' | `"G"`, `"GG"`, or `"GGG"` | `"AD"` | Abbreviated | -#' | `"GGGG"` | `"Anno Domini"` | Wide | -#' | `"GGGGG"` | `"A"` | Narrow | -#' -#' ## Time Zones -#' -#' ### TZ // Short and Long Specific non-Location Format -#' -#' The short and long specific non-location formats for time zones are suggested -#' for displaying a time with a user friendly time zone name. Where the short -#' specific format is unavailable, it will fall back to the short localized GMT -#' format (`"O"`). Where the long specific format is unavailable, it will fall -#' back to the long localized GMT format (`"OOOO"`). -#' -#' | Field Patterns | Output | Notes | -#' |----------------------------|---------------------------|----------------| -#' | `"z"`, `"zz"`, or `"zzz"` | `"PDT"` | Short Specific | -#' | `"zzzz"` | `"Pacific Daylight Time"` | Long Specific | -#' -#' ### TZ // Common UTC Offset Formats -#' -#' The ISO8601 basic format with hours, minutes and optional seconds fields is -#' represented by `"Z"`, `"ZZ"`, or `"ZZZ"`. The format is equivalent to RFC 822 -#' zone format (when the optional seconds field is absent). This is equivalent -#' to the `"xxxx"` specifier. The field pattern `"ZZZZ"` represents the long -#' localized GMT format. This is equivalent to the `"OOOO"` specifier. Finally, -#' `"ZZZZZ"` pattern yields the ISO8601 extended format with hours, minutes and -#' optional seconds fields. The ISO8601 UTC indicator `Z` is used when local -#' time offset is `0`. This is equivalent to the `"XXXXX"` specifier. -#' -#' | Field Patterns | Output | Notes | -#' |----------------------------|--------------|-----------------------------| -#' | `"Z"`, `"ZZ"`, or `"ZZZ"` | `"-0700"` | ISO 8601 basic format | -#' | `"ZZZZ"` | `"GMT-7:00"` | Long localized GMT format | -#' | `"ZZZZZ"` | `"-07:00"` | ISO 8601 extended format | -#' -#' ### TZ // Short and Long Localized GMT Formats -#' -#' The localized GMT formats come in two widths `"O"` (which removes the minutes -#' field if it's `0`) and `"OOOO"` (which always contains the minutes field). -#' The use of the `GMT` indicator changes according to the locale. -#' -#' | Field Patterns | Output | Notes | -#' |-------------------------|---------------|-------------------------------| -#' | `"O"` | `"GMT-7"` | Short localized GMT format | -#' | `"OOOO"` | `"GMT-07:00"` | Long localized GMT format | -#' -#' ### TZ // Short and Long Generic non-Location Formats -#' -#' The generic non-location formats are useful for displaying a recurring wall -#' time (e.g., events, meetings) or anywhere people do not want to be overly -#' specific. Where either of these is unavailable, there is a fallback to the -#' generic location format (`"VVVV"`), then the short localized GMT format as -#' the final fallback. -#' -#' | Field Patterns | Output | Notes | -#' |-----------------|------------------|------------------------------------| -#' | `"v"` | `"PT"` | Short generic non-location format | -#' | `"vvvv"` | `"Pacific Time"` | Long generic non-location format | -#' -#' ### TZ // Short Time Zone IDs and Exemplar City Formats -#' -#' These formats provide variations of the time zone ID and often include the -#' exemplar city. The widest of these formats, `"VVVV"`, is useful for -#' populating a choice list for time zones, because it supports 1-to-1 name/zone -#' ID mapping and is more uniform than other text formats. -#' -#' | Field Patterns | Output | Notes | -#' |--------------------|-----------------------|----------------------------| -#' | `"V"` | `"cavan"` | Short time zone ID | -#' | `"VV"` | `"America/Vancouver"` | Long time zone ID | -#' | `"VVV"` | `"Vancouver"` | The tz exemplar city | -#' | `"VVVV"` | `"Vancouver Time"` | Generic location format | -#' -#' ### TZ // ISO 8601 Formats with Z for +0000 -#' -#' The `"X"`-`"XXX"` field patterns represent valid ISO 8601 patterns for time -#' zone offsets in datetimes. The final two widths, `"XXXX"` and `"XXXXX"` allow -#' for optional seconds fields. The seconds field is *not* supported by the ISO -#' 8601 specification. For all of these, the ISO 8601 UTC indicator `Z` is used -#' when the local time offset is `0`. -#' -#' | Field Patterns | Output | Notes | -#' |----------------|------------|-------------------------------------------| -#' | `"X"` | `"-07"` | ISO 8601 basic format (h, optional m) | -#' | `"XX"` | `"-0700"` | ISO 8601 basic format (h & m) | -#' | `"XXX"` | `"-07:00"` | ISO 8601 extended format (h & m) | -#' | `"XXXX"` | `"-0700"` | ISO 8601 basic format (h & m, optional s) | -#' | `"XXXXX"` | `"-07:00"` | ISO 8601 extended format (h & m, optional s) | -#' -#' ### TZ // ISO 8601 Formats (no use of Z for +0000) -#' -#' The `"x"`-`"xxxxx"` field patterns represent valid ISO 8601 patterns for time -#' zone offsets in datetimes. They are similar to the `"X"`-`"XXXXX"` field -#' patterns except that the ISO 8601 UTC indicator `Z` *will not* be used when -#' the local time offset is `0`. -#' -#' | Field Patterns | Output | Notes | -#' |----------------|------------|-------------------------------------------| -#' | `"x"` | `"-07"` | ISO 8601 basic format (h, optional m) | -#' | `"xx"` | `"-0700"` | ISO 8601 basic format (h & m) | -#' | `"xxx"` | `"-07:00"` | ISO 8601 extended format (h & m) | -#' | `"xxxx"` | `"-0700"` | ISO 8601 basic format (h & m, optional s) | -#' | `"xxxxx"` | `"-07:00"` | ISO 8601 extended format (h & m, optional s) | -#' -#' @section Formatting with a `strptime` format code: -#' -#' Performing custom date/time formatting with the `format` argument can also -#' occur with a `strptime` format code. This works by constructing a string of -#' individual format codes representing formatted date and time elements. These -#' are all indicated with a leading `%`, literal characters are interpreted as -#' any characters not starting with a `%` character. -#' -#' First off, let's look at a few format code combinations that work well -#' together as a `strptime` format. This will give us an intuition on how these -#' generally work. We'll use the datetime `"2015-06-08 23:05:37.48"` for all of -#' the examples that follow. -#' -#' - `"%m/%d/%Y"` -> `"06/08/2015"` -#' - `"%A, %B %e, %Y"` -> `"Monday, June 8, 2015"` -#' - `"%b %e %a"` -> `"Jun 8 Mon"` -#' - `"%H:%M"` -> `"23:05"` -#' - `"%I:%M %p"` -> `"11:05 pm"` -#' - `"%A, %B %e, %Y at %I:%M %p"` -> `"Monday, June 8, 2015 at 11:05 pm"` -#' -#' Here are the individual format codes for the date components: -#' -#' - `"%a"` -> `"Mon"` (abbreviated day of week name) -#' - `"%A"` -> `"Monday"` (full day of week name) -#' - `"%w"` -> `"1"` (day of week number in `0..6`; Sunday is `0`) -#' - `"%u"` -> `"1"` (day of week number in `1..7`; Monday is `1`, Sunday `7`) -#' - `"%y"` -> `"15"` (abbreviated year, using the final two digits) -#' - `"%Y"` -> `"2015"` (full year) -#' - `"%b"` -> `"Jun"` (abbreviated month name) -#' - `"%B"` -> `"June"` (full month name) -#' - `"%m"` -> `"06"` (month number) -#' - `"%d"` -> `"08"` (day number, zero-padded) -#' - `"%e"` -> `"8"` (day number without zero padding) -#' - `"%j"` -> `"159"` (day of the year, always zero-padded) -#' - `"%W"` -> `"23"` (week number for the year, always zero-padded) -#' - `"%V"` -> `"24"` (week number for the year, following the ISO 8601 -#' standard) -#' - `"%C"` -> `"20"` (the century number) -#' -#' Here are the individual format codes for the time components: -#' -#' - `"%H"` -> `"23"` (24h hour) -#' - `"%I"` -> `"11"` (12h hour) -#' - `"%M"` -> `"05"` (minute) -#' - `"%S"` -> `"37"` (second) -#' - `"%OS3"` -> `"37.480"` (seconds with decimals; `3` decimal places here) -#' - `%p` -> `"pm"` (AM or PM indicator) -#' -#' Here are some extra formats that you may find useful: -#' -#' - `"%z"` -> `"+0000"` (signed time zone offset, here using UTC) -#' - `"%F"` -> `"2015-06-08"` (the date in the ISO 8601 date format) -#' - `"%%"` -> `"%"` (the literal "`%`" character, in case you need it) -#' -#' @section Adapting output to a specific `locale`: -#' -#' This formatting function can adapt outputs according to a provided `locale` -#' value. Examples include `"en"` for English (United States) and `"fr"` for -#' French (France). Note that a `locale` value provided here will override any -#' global locale setting performed in [gt()]'s own `locale` argument (it is -#' settable there as a value received by all other functions that have a -#' `locale` argument). As a useful reference on which locales are supported, we -#' can call [info_locales()] to view an info table. -#' -#' @section Examples: -#' -#' Use the [`exibble`] dataset to create a single-column **gt** table (with only -#' the `datetime` column). With `fmt_datetime()` we'll format the `datetime` -#' column to have dates formatted with the `"month_day_year"` style and times -#' with the `"h_m_s_p"` 12-hour time style. -#' -#' ```r -#' exibble |> -#' dplyr::select(datetime) |> -#' gt() |> -#' fmt_datetime( -#' date_style = "month_day_year", -#' time_style = "h_m_s_p" -#' ) -#' ``` -#' -#' \if{html}{\out{ -#' `r man_get_image_tag(file = "man_fmt_datetime_1.png")` -#' }} -#' -#' Using the same input table, we can use `fmt_datetime()` with flexible date -#' and time styles. Two that work well together are `"MMMEd"` and `"Hms"`. These -#' date and time styles will, being flexible, create outputs that conform to the -#' locale value given to the `locale` argument. Let's use two calls of -#' `fmt_datetime()`: the first will format all rows in `datetime` to the Danish -#' locale (with `locale = "da"`) and the second call will target the first three -#' rows with the same formatting, but in the default locale (which is `"en"`). -#' -#' ```r -#' exibble |> -#' dplyr::select(datetime) |> -#' gt() |> -#' fmt_datetime( -#' date_style = "MMMEd", -#' time_style = "Hms", -#' locale = "da" -#' ) |> -#' fmt_datetime( -#' rows = 1:3, -#' date_style = "MMMEd", -#' time_style = "Hms" -#' ) -#' ``` -#' -#' \if{html}{\out{ -#' `r man_get_image_tag(file = "man_fmt_datetime_2.png")` -#' }} -#' -#' It's possible to use the `format` argument and write our own formatting -#' specification. Using the CLDR datetime pattern -#' `"EEEE, MMMM d, y 'at' h:mm a (zzzz)"` gives us datetime outputs with time -#' zone formatting. Let's provide a time zone ID (`"America/Vancouver"`) to the -#' `tz` argument. -#' -#' ```r -#' exibble |> -#' dplyr::select(datetime) |> -#' gt() |> -#' fmt_datetime( -#' format = "EEEE, MMMM d, y 'at' h:mm a (zzzz)", -#' tz = "America/Vancouver" -#' ) -#' ``` -#' -#' \if{html}{\out{ -#' `r man_get_image_tag(file = "man_fmt_datetime_3.png")` -#' }} -#' -#' @family data formatting functions -#' @section Function ID: -#' 3-15 -#' -#' @section Function Introduced: -#' `v0.2.0.5` (March 31, 2020) -#' -#' @seealso The vector-formatting version of this function: -#' [vec_fmt_datetime()]. -#' -#' @export -fmt_datetime <- function( - data, - columns = everything(), - rows = everything(), - date_style = "iso", - time_style = "iso", - sep = " ", - format = NULL, - tz = NULL, - pattern = "{x}", - locale = NULL -) { - - # Perform input object validation - stop_if_not_gt_tbl(data = data) - - # - # Begin support for `from_column()` objects passed to compatible arguments - # - - # Supports parameters: - # - # - date_style - # - time_style - # - sep - # - format - # - tz - # - pattern - # - locale - - arg_vals <- - mget( - get_arg_names( - function_name = "fmt_datetime", - all_args_except = c("data", "columns", "rows") - ) - ) - - if (args_have_gt_column_obj(arg_vals = arg_vals)) { - - # Resolve the row numbers using `resolve_vars()` - resolved_rows_idx <- - resolve_rows_i( - expr = {{ rows }}, - data = data - ) - - param_tbl <- - generate_param_tbl( - data = data, - arg_vals = arg_vals, - resolved_rows_idx = resolved_rows_idx - ) - - for (i in seq_len(nrow(param_tbl))) { - - p_i <- as.list(param_tbl[i, ]) - - data <- - fmt_datetime( - data = data, - columns = {{ columns }}, - rows = resolved_rows_idx[i], - date_style = p_i$date_style %||% date_style, - time_style = p_i$time_style %||% time_style, - sep = p_i$sep %||% sep, - format = p_i$format %||% format, - tz = p_i$tz %||% tz, - pattern = p_i$pattern %||% pattern, - locale = p_i$locale %||% locale - ) - } - - return(data) - } - - # - # End support for `from_column()` objects passed to compatible arguments - # - - # Stop function if `locale` does not have a valid value; normalize locale - # and resolve one that might be set globally - validate_locale(locale = locale) - locale <- normalize_locale(locale = locale) - locale <- resolve_locale(data = data, locale = locale) - - if (!is.null(format)) { - - # Ensure that the format code meets some basic validation requirements - check_string(format) - - } else { - - # Transform `date_style` to `date_format_str` - date_format_str <- withCallingHandlers( - get_date_format(date_style = date_style), - error = function(e) { - cli::cli_abort("Invalid date style. See {.run gt::info_date_style()} for valid inputs.", - parent = e) - }) - - # Transform `time_style` to `time_format_str` - time_format_str <- withCallingHandlers( - get_time_format(time_style = time_style), - error = function(e) { - cli::cli_abort("Invalid time style. See {.run gt::info_time_style()} for valid inputs.", - parent = e) - }) - } - - valid_class <- c("Date", "POSIXct", "character") - msg <- c(i = "Allowed types are `Date`, `POSIXct`, and `character` (with - ISO-8601 formatted dates)") - check_columns_valid_if_strict(data, {{ columns }}, valid_class, msg) - - # Pass `data`, `columns`, `rows`, and the formatting - # functions as a function list to `fmt()` - fmt( - data = data, - columns = {{ columns }}, - rows = {{ rows }}, - compat = valid_class, - fns = num_fmt_factory_multi( - pattern = pattern, - use_latex_math_mode = FALSE, - format_fn = function(x, context) { - - # If a format string is provided then use that to generate the - # formatted date/time string - if (!is.null(format)) { - - # If the incoming values are strings that adequately represent time - # values, then prepend with the `1970-01-01` dummy date to create an - # input that will works with `strftime()` - if (all(is_string_time(x))) { - x <- paste("1970-01-01", x) - } - - if (grepl("%", format)) { - - if (is.character(x)) { - - tz <- tz %||% "GMT" - - datetime <- - withCallingHandlers( - as.POSIXlt(x), - error = function(e) { - cli::cli_abort( - "One or more of the provided date/datetime values are invalid.", - call = call("fmt_datetime"), - parent = e - ) - } - ) - - attr(datetime, which = "tzone") <- tz - - datetime <- as.POSIXct(datetime) - - return(strftime(datetime, format = format, tz = tz)) - } - - # Format the datetime values using `strftime()` - return(strftime(x, format = format, tz = tz)) - - } else { - - tz <- tz %||% "UTC" - - dt_str <- strftime(x, format = "%Y-%m-%dT%H:%M:%S%z", tz = tz) - - if ("tzone" %in% names(attributes(x))) { - tzone <- attr(x, which = "tzone", exact = TRUE) - dt_str <- paste0(dt_str, "(", tzone, ")") - } - - # Format the datetime values using `fdt()` - return( - bigD::fdt( - input = dt_str, - format = format, - locale = locale, - use_tz = tz - ) - ) - } - } - - # - # Format the date and time portions of the datetime value - # - - # Convert incoming values to POSIXlt but provide a friendly error - # if the values cannot be parsed by `as.POSIXlt()` - datetime <- - withCallingHandlers( - as.POSIXlt(x), - error = function(e) { - cli::cli_abort( - # possibly Error in `fmt()` caused by error in `as.POSIXlt` - "One or more of the provided date/datetime values are invalid.", - call = call("fmt_datetime"), - parent = e - ) - } - ) - - # - # Separately format the date and time portions using `fdt()` - # - - date_str <- - bigD::fdt( - input = as.character(datetime), - format = date_format_str, - locale = locale - ) - - time_str <- - bigD::fdt( - input = as.character(datetime), - format = time_format_str, - locale = locale - ) - - paste0(date_str, sep, time_str) - } - ) - ) -} - # fmt_duration() --------------------------------------------------------------- #' Format numeric or duration values as styled time duration strings #' @@ -10031,6 +8373,7 @@ fmt_flag <- function( "style=\"vertical-align:-0.125em;", "image-rendering:optimizeQuality;", "height:", height, ";", + # height to make sure a square "width:", height, ";", "\"", ">", From 7cb38057963ceb3f6dff3454567554818ee40fa8 Mon Sep 17 00:00:00 2001 From: olivroy Date: Fri, 30 Aug 2024 15:39:19 -0400 Subject: [PATCH 05/11] Refactor code in `get_table_defs()` --- R/utils_render_html.R | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/R/utils_render_html.R b/R/utils_render_html.R index c100330926..571608ed98 100644 --- a/R/utils_render_html.R +++ b/R/utils_render_html.R @@ -245,34 +245,20 @@ get_table_defs <- function(data) { boxh <- dt_boxhead_get(data = data) - # Get the `table-layout` value, which is set in `_options` - table_style <- - htmltools::css( - `table-layout` = dt_options_get_value( - data = data, - option = "table_layout" - ) - ) - # In the case that column widths are not set for any columns, # there should not be a `` tag requirement if (length(unlist(boxh$column_width)) < 1) { return(list(table_style = NULL, table_colgroups = NULL)) } + # Get the `table-layout` value, which is set in `_options` + table_layout <- dt_options_get_value(data = data, option = "table_layout") + # Get the table's width (which or may not have been set) - table_width <- - dt_options_get_value( - data = data, - option = "table_width" - ) + table_width <- dt_options_get_value(data = data, option = "table_width") # Determine whether the row group is placed in the stub - row_group_as_column <- - dt_options_get_value( - data = data, - option = "row_group_as_column" - ) + row_group_as_column <- dt_options_get_value(data = data, option = "row_group_as_column") types <- c("default", "stub", if (row_group_as_column) "row_group" else NULL) @@ -306,6 +292,7 @@ get_table_defs <- function(data) { if (table_width == "auto") { if (all(grepl("px", widths, fixed = TRUE))) { + # FIXME sometimes ends up being 0? #1532 and quarto-dev/quarto-cli#8233 table_width <- "0px" } else if (all(grepl("%", widths, fixed = TRUE))) { table_width <- "100%" @@ -313,7 +300,15 @@ get_table_defs <- function(data) { } if (table_width != "auto") { - table_style <- paste(table_style, paste0("width: ", table_width), sep = "; ") + table_style <- htmltools::css( + `table-layout` = table_layout, + width = table_width + ) + } else { + table_style <- + htmltools::css( + `table-layout` = table_layout + ) } # Create the `` tag From 43a714fd6664941e16ef7c6a294fda5b5d82993e Mon Sep 17 00:00:00 2001 From: olivroy Date: Fri, 30 Aug 2024 15:39:38 -0400 Subject: [PATCH 06/11] Update tests --- tests/testthat/_snaps/fmt_duration.md | 4 +-- tests/testthat/_snaps/fmt_fraction.md | 6 ++-- tests/testthat/_snaps/fmt_markdown.md | 2 +- tests/testthat/_snaps/footer.md | 6 ++-- tests/testthat/_snaps/quarto.md | 2 +- tests/testthat/_snaps/removal_functions.md | 36 +++++++++++----------- tests/testthat/_snaps/tab_footnote.md | 14 ++++----- tests/testthat/_snaps/tab_options.md | 8 ++--- tests/testthat/_snaps/tab_remove.md | 6 ++-- tests/testthat/_snaps/tab_spanner_delim.md | 4 +-- tests/testthat/test-extract_body.R | 16 +++++----- tests/testthat/test-table_parts.R | 2 +- 12 files changed, 53 insertions(+), 53 deletions(-) diff --git a/tests/testthat/_snaps/fmt_duration.md b/tests/testthat/_snaps/fmt_duration.md index 8b887e1f14..8219aaf90f 100644 --- a/tests/testthat/_snaps/fmt_duration.md +++ b/tests/testthat/_snaps/fmt_duration.md @@ -3,12 +3,12 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n
afakarasasaastazbebembezbgbmbnbobscaccpcecebcggchrckbcydadavdedjeduadyodzebueeeleneoeseteuewofafffifilfofrfurfygagdglgswguzgvhawhehihrhsbhyidigiiitjajgojmcjvkakabkamkdekeakgpkhqkikkkkjklklnkmknkokokksksfkshkylaglblktlnloltluluoluylvmaimermfemgmghmkmlmnmnimtmuamymznnaqnbndnenlnnnnhnonusomorospapcmplptrmrnrorofrwrwksasahsaqsatsbpscsdsesehsessgshisiskslsmnsnsosqsuswtatetgtitktotrtttwqtzmugukunduruzvaivivunwaewoxogyavyoyrlyuezghzhzu
1 d. 4 min. 19 s.1 d 4 min 19 s

1 ي 4 د 19 ث

1 দিন 4 মিনিট 19 ছেকেণ্ড1 d 4 min 19 s1día 4mins 19segs1 gün 4 dəq 19 san1 сут 4 хв 19 с1 d 4 min 19 s1 d 4 min 19 s1 д 4 мин 19 с1 d 4 min 19 s1 দিন 4 মিঃ 19 সেঃ1 d 4 min 19 s1 d. 4 m 19 s1 d 4 min 19 s1 𑄘𑄨𑄚𑄴 4 𑄟𑄨𑄂 19 𑄥𑄬𑄂1 д. 4 мин 19 с1 adlaw 4 minuto 19segundo1 d 4 min 19 s1Ꭲ 4Ꭲ 19ᎠᏎ1 d 4 min 19 s1d 4mun 19 eil1 d 4 m 19 s1 d 4 min 19 s1 T 4 Min. 19 Sek.1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 sŋkeke 1 a 4 s 191 η 4 λ 19 δ1d 4m 19s1 d 4 min 19 s1d 4min 19s1 p 4 min 19 s1 e. 4 min 19 s1 d 4 min 19 s

1 روز 4m 19s

1 d 4 min 19 s1pv 4min 19s1 araw 4m 19s1d. 4m. 19s.1j 4min 19s1 d 4 min 19 s1 d 4 m 19 s1l 4n 19s1là 4m 19d1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s

י׳ 4 דק׳ 19 שנ׳

1दिन 4मि॰ 19से॰1 d. 4 m 19 s1 d 4 min 19 s1 օ 4 ր 19 վ1 hr 4 mnt 19 dtk1 d 4 min 19 s1 d 4 min 19 s1 g 4min 19s1d 4m 19s1 d 4 min 19 s1 d 4 min 19 s1d 4 mnt 19 dtk1 დღე 4წთ 19წმ1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 dia 4 min. 19 s1 kurã 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 к. 4 мин 19 с1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 ថ្ងៃ 4 នាទី 19 វិនាទី1ದಿ 4ನಿಮಿ 19 ಸೆಕೆಂ1일 4분 19초1दी 4 मि 19से1 d 4 min 19 s1 d 4 min 19 s1d 4m 19s1 кн 4 мүн 19 сек1 d 4 min 19 s1 D 4 min 19 s1-čháŋ 4 min Okpí 191 d 4 min 19 s1 ມ. 4 ນທ 19 ວິ1 d. 4 min. 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d. 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 д. 4 м. 19 с.1 ദി 4 മി. 19 സെ.1 хоног 4 мин 19 сек1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 ရက် 4 မိနစ် 19 s

1 روز 4 دَقه 19 ثانیه

1 d 4 min 19 s1d 4m 19s1 d 4 min 19 s1 दिन 4 मिनेट 19 सेकेन्ड1 d 4 m 19 s1d 4m 19s1 d 4 min 19 s1d 4m 19s1 d 4 min 19 s1 d 4 min 19 s1ଦିନ 4ମିନିଟ୍‌ 19ସେକ୍1 бон 4 мин. 19 s1 ਦਿਨ 4 ਮਿੰਟ 19 ਸਕਿੰਟ1Dè 4Mínit 19Sẹ́kọn1 d. 4 min 19 s1 dia 4 min 19 s1 dis 4 mins. 19 secs.1 d 4 min 19 s1 z 4 m 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 к. 4 мүн 19 с1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1d 4m 19s

1 ڏينهن 4 منٽ 19 سيڪنڊ

1d 4m 19s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 sදි 1 මි 4 ත 191 d. 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1m 4d 19il1 ditë 4 min. 19 sek.1 d 4 min 19 ssiku 1 dak 4 sek 191 நா 4 நிமி. 19 வி.1రో 4ని 19సె1 d 4 min 19 s1 d 4 min 19 s1g 4m 19se1 ʻa 4 m 19 s1g 4d 19sn1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s

1 كۈن 4m 19s

1д 4х 19с1d 4m 19s

1 دن 4 منٹ 19 سیکنڈ

1 kun 4 daq. 19 s1 d 4 min 19 s1 ngày 4 phút 19 giây1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 sọj 1 4/ìṣ 19 ìṣ àáy1 ara 4 min 19 s1 天 4 分鐘 19 秒1 d 4 min 19 s1天 4分钟 19秒1 4 umzuzu 19 s
5 189 w. 7 min. 12 s.5,189 w 7 min 12 s

5,189 أ 7 د 12 ث

5,189 সপ্তাহ 7 মিনিট 12 ছেকেণ্ড5,189 w 7 min 12 s5.189sels 7mins 12segs5.189 hft 7 dəq 12 san5 189 тыдз. 7 хв 12 с5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 седм. 7 мин 12 с5,189 w 7 min 12 s5,189 সপ্তাহ 7 মিঃ 12 সেঃ5,189 w 7 min 12 s5.189 sedm. 7 m 12 s5.189 setm. 7 min 12 s5,189 𑄥𑄛𑄴𑄖 7 𑄟𑄨𑄂 12 𑄥𑄬𑄂5,189 кӀ. 7 мин 12 с5,189w 7 minuto 12segundo5,189 w 7 min 12 s5,189Ꮢ 7Ꭲ 12ᎠᏎ5,189 w 7 min 12 s5,189w 7mun 12 eil5.189 u 7 m 12 s5,189 w 7 min 12 s5.189 W 7 Min. 12 Sek.5 189 w 7 min 12 s5 189 w 7 min 12 s5 189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 skɔsiɖa 5,189 a 7 s 125.189 ε 7 λ 12 δ5,189w 7m 12s5 189 w 7 min 12 s5.189sem 7min 12s5 189 n 7 min 12 s5.189 aste 7 min 12 s5 189 w 7 min 12 s

5,189 هفته 7m 12s

5 189 w 7 min 12 s5 189vk 7min 12s5,189linggo 7m 12s5.189v. 7m. 12s.5 189sem. 7min 12s5.189 w 7 min 12 s5.189 w 7 m 12 s5,189s 7n 12s5,189s 7m 12d5.189 sem. 7 min 12 s5’189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s

5,189 ש′ 7 דק׳ 12 שנ׳

5,189 सप्ताह 7मि॰ 12से॰5.189 tj. 7 m 12 s5.189 t. 7 min 12 s5 189 շ 7 ր 12 վ5.189 mgg 7 mnt 12 dtk5,189 w 7 min 12 s5,189 w 7 min 12 s5.189sett. 7min 12s5,189w 7m 12s5.189 w 7 min 12 s5,189 w 7 min 12 s5.189 peken 7 mnt 12 dtk5 189 კვრ 7წთ 12წმ5 189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 sim. 7 min. 12 s5.189 sim. Ag 7 min 12 s5 189 w 7 min 12 s5,189 w 7 min 12 s5 189 ап. 7 мин 12 с5.189 w 7 min 12 s5.189 w 7 min 12 s5,189 w 7 min 12 s5.189 សប្ដាហ៍ 7 នាទី 12 វិនាទី5,189ವಾ 7ನಿಮಿ 12 ಸೆಕೆಂ5,189주 7분 12초5,189स 7 मि 12से

5،189 w 7 min 12 s

5 189 w 7 min 12 s5 189 w 7m 12s5 189 ап 7 мүн 12 сек5,189 w 7 min 12 s5.189 W 7 min 12 sokó 5,189 7 min Okpí 125.189 w 7 min 12 s5.189 ອທ. 7 ນທ 12 ວິ5 189 sav. 7 min. 12 s5.189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 n. 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 w 7 min 12 s5,189 w 7 min 12 s5.189 w 7 min 12 s5.189 с. 7 м. 12 с.5,189 ആ 7 മി. 12 സെ.5,189 д.х 7 мин 12 сек5,189 w 7 min 12 s5,189 w 7 min 12 s5.189 w 7 min 12 s5,189 ပတ် 7 မိနစ် 12 s

5,189 هفته 7 دَقه 12 ثانیه

5,189 w 7 min 12 s5 189u 7m 12s5,189 w 7 min 12 s5,189 हप्ता 7 मिनेट 12 सेकेन्ड5.189 w 7 m 12 s5 189v 7m 12s5.189 w 7 min 12 s5 189u 7m 12s5,189 w 7 min 12 s5,189 w 7 min 12 s5,189 ସପ୍ 7ମିନିଟ୍‌ 12ସେକ୍5 189 w 7 мин. 12 s5,189 ਹਫ਼ਤੇ 7 ਮਿੰਟ 12 ਸਕਿੰਟ5,189Wik 7Mínit 12Sẹ́kọn5 189 tyg. 7 min 12 s5.189 sem. 7 min 12 s5’189 emnas 7 mins. 12 secs.5.189 w 7 min 12 s5.189 săpt. 7 m 12 s5,189 w 7 min 12 s5.189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 н. 7 мүн 12 с5,189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5.189ch. 7m 12s

5,189 هفتي 7 منٽ 12 سيڪنڊ

5 189v 7m 12s5.189 w 7 min 12 s5 189 w 7 min 12 s5.189 w 7 min 12 s5 189 w 7 min 12 sස 5,189 මි 7 ත 125 189 t. 7 min 12 s5.189 t 7 min 12 s5 189 w 7 min 12 s5,189 w 7 min 12 s5,189t 7d 12il5 189 javë 7 min. 12 sek.5.189 w 7 min 12 swiki 5,189 dak 7 sek 125,189 வா 7 நிமி. 12 வி.5,189వా 7ని 12సె5 189 w 7 min 12 s5,189 w 7 min 12 s5 189h 7m 12se5,189 u 7 m 12 s5.189h 7d 12sn5 189 w 7 min 12 s5 189 w 7 min 12 s5 189 w 7 min 12 s

5,189 ھەپتە 7m 12s

5 189т 7х 12с5,189w 7m 12s

5,189 ہفتے 7 منٹ 12 سیکنڈ

5 189 hafta 7 daq. 12 s5,189 w 7 min 12 s5.189 tuần 7 phút 12 giây5,189 w 7 min 12 s5’189 w 7 min 12 s5.189 w 7 min 12 s5,189 w 7 min 12 s5 189 w 7 min 12 s5,189 ọṣ 7/ìṣ 12 ìṣ àáy5.189 sem 7 min 12 s5,189 週 7 分鐘 12 秒5 189 w 7 min 12 s5,189周 7分钟 12秒5,189 w 7 umzuzu 12 s
5 d.5 d

5 ي

5 দিন5 d5díes5 gün5 сут5 d5 d5 д5 d5 দিন5 d5 d.5 d5 𑄘𑄨𑄚𑄴5 д.5 adlaw5 d5Ꭲ5 d5d5 d5 d5 T5 d5 d5 d5 d5 dŋkeke 55 η5d5 d5d5 p5 e.5 d

5 روز

5 d5pv5 na araw5d.5j5 d5 d5l5là5 d5 d5 d5 d5 d

5 י׳

5दिन5 d.5 d5 օ5 hr5 d5 d5gg5d5 d5 d5d5 დღე5 d5 d5 d5 dia5 kurã ag5 d5 d5 к.5 d5 d5 d5 ថ្ងៃ5ದಿ5일5दी5 d5 d5d5 кн5 d5 D5-čháŋ5 d5 ມ.5 d.5 d5 d5 d5 d.5 d5 d5 d5 d5 d5 д.5 ദി5 хоног5 d5 d5 d5 ရက်

5 روز

5 d5d5 d5 दिन5 d5d5 d5d5 d5 d5ଦିନ5 боны5 ਦਿਨ5Dè5 d.5 dias5 dis5 d5 z5 d5 d5 d5 d5 к.5 d5 d5 d5d

5 ڏينهن

5d5 d5 d5 d5 dදි 55 d.5 d5 d5 d5m5 ditë5 dsiku 55 நா5రో5 d5 d5g5 ʻa5g5 d5 d5 d

5 كۈن

5d

5 دن

5 kun5 d5 ngày5 d5 d5 d5 d5 dọj 55 ara5 天5 d5天5 suku
−4 w. 6 d. 12 u.−4 w 6 d 12 h

−4 أ 6 ي 12 س

−4 সপ্তাহ 6 দিন 12 ঘণ্টা−4 w 6 d 12 h−4sels 6díes 12hrs−4 hft 6 gün 12 saat−4 тыдз. 6 сут 12 гадз−4 w 6 d 12 h−4 w 6 d 12 h−4 седм. 6 д 12 ч−4 w 6 d 12 h−4 সপ্তাহ 6 দিন 12 ঘঃ−4 w 6 d 12 h−4 sedm. 6 d. 12 h−4 setm. 6 d 12 h−4 𑄥𑄛𑄴𑄖 6 𑄘𑄨𑄚𑄴 12 𑄊𑄂−4 кӀ. 6 д. 12 сахь.−4w 6 adlaw 12 ka oras−4 w 6 d 12 h−4Ꮢ 6Ꭲ 12Ꮡ−4 w 6 d 12 h−4w 6d 12 awr−4 u 6 d 12 t−4 w 6 d 12 h−4 W 6 T 12 Std.−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−kɔsiɖa 4 ŋkeke 6 gaƒoƒo 12−4 ε 6 η 12 ώ−4w 6d 12h−4 w 6 d 12 h−4sem 6d 12h−4 n 6 p 12 t−4 aste 6 e. 12 h−4 w 6 d 12 h

−4 هفته 6 روز 12h

−4 w 6 d 12 h−4vk 6pv 12t−4linggo 6 na araw 12 oras−4v. 6d. 12t.−4sem. 6j 12h−4 w 6 d 12 h−4 w 6 d 12 u−4s 6l 12u−4s 6là 12u−4 sem. 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h

−4 ש′ 6 י׳ 12 שע׳

−4 सप्ताह 6दिन 12घं॰−4 tj. 6 d. 12 h−4 t. 6 d 12 h−4 շ 6 օ 12 ժ−4 mgg 6 hr 12 j−4 w 6 d 12 h−4 w 6 d 12 h−4sett. 6gg 12h−4w 6d 12h−4 w 6 d 12 h−4 w 6 d 12 h−4 peken 6d 12j−4 კვრ 6 დღე 12სთ−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 sim. 6 dia 12 h−4 sim. Ag 6 kurã ag 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 ап. 6 к. 12 сағ−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 សប្ដាហ៍ 6 ថ្ងៃ 12 ម៉ោង−4ವಾ 6ದಿ 12ಗಂ.−4주 6일 12시간−4स 6दी 12व−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6d 12h−4 ап 6 кн 12 ст−4 w 6 d 12 h−4 W 6 D 12 st−okó 4 6-čháŋ Owápȟe 12−4 w 6 d 12 h−4 ອທ. 6 ມ. 12 ຊມ−4 sav. 6 d. 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 n. 6 d. 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 с. 6 д. 12 ч.−4 ആ 6 ദി 12 മ−4 д.х 6 хоног 12 ц−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 ပတ် 6 ရက် 12 နာရီ

−4 هفته 6 روز 12 ساعِت

−4 w 6 d 12 h−4u 6d 12t−4 w 6 d 12 h−4 हप्ता 6 दिन 12 घण्टा−4 w 6 d 12 u−4v 6d 12t−4 w 6 d 12 h−4u 6d 12t−4 w 6 d 12 h−4 w 6 d 12 h−4 ସପ୍ 6ଦିନ 12ଘଣ୍ଟା−4 w 6 боны 12 с.−4 ਹਫ਼ਤੇ 6 ਦਿਨ 12 ਘੰਟੇ−4Wik 6Dè 12Áwa−4 tyg. 6 d. 12 h−4 sem. 6 dias 12 h−4 emnas 6 dis 12 uras−4 w 6 d 12 h−4 săpt. 6 z 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 н. 6 к. 12 ч−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4ch. 6d 12o

−4 هفتي 6 ڏينهن 12 ڪلاڪ

−4v 6d 12h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−ස 4 දි 6 පැය 12−4 t. 6 d. 12 h−4 t 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4t 6m 12 s−4 javë 6 ditë 12 orë−4 w 6 d 12 h−wiki 4 siku 6 saa 12−4 வா 6 நா 12 ம.நே.−4వా 6రో 12గం−4 w 6 d 12 h−4 w 6 d 12 h−4h 6g 12sg−4 u 6 ʻa 12 h−4h 6g 12s−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h

−4 ھەپتە 6 كۈن 12h

−4т 6д 12 год.−4w 6d 12h

−4 ہفتے 6 دن 12 گھنٹے

−4 hafta 6 kun 12 soat−4 w 6 d 12 h−4 tuần 6 ngày 12 giờ−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 ọṣ ọj 6 12 wkt−4 sem 6 ara 12 h−4 週 6 天 12 小時−4 w 6 d 12 h−4周 6天 12小时−4 w 6 suku 12 hora
4 w. 3 d. 14 u. 24 min.4 w 3 d 14 h 24 min

4 أ 3 ي 14 س 24 د

4 সপ্তাহ 3 দিন 14 ঘণ্টা 24 মিনিট4 w 3 d 14 h 24 min4sels 3díes 14hrs 24mins4 hft 3 gün 14 saat 24 dəq4 тыдз. 3 сут 14 гадз 24 хв4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 седм. 3 д 14 ч 24 мин4 w 3 d 14 h 24 min4 সপ্তাহ 3 দিন 14 ঘঃ 24 মিঃ4 w 3 d 14 h 24 min4 sedm. 3 d. 14 h 24 m4 setm. 3 d 14 h 24 min4 𑄥𑄛𑄴𑄖 3 𑄘𑄨𑄚𑄴 14 𑄊𑄂 24 𑄟𑄨𑄂4 кӀ. 3 д. 14 сахь. 24 мин4w 3 adlaw 14 ka oras 24 minuto4 w 3 d 14 h 24 min4Ꮢ 3Ꭲ 14Ꮡ 24Ꭲ4 w 3 d 14 h 24 min4w 3d 14 awr 24mun4 u 3 d 14 t 24 m4 w 3 d 14 h 24 min4 W 3 T 14 Std. 24 Min.4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 minkɔsiɖa 4 ŋkeke 3 gaƒoƒo 14 a 244 ε 3 η 14 ώ 24 λ4w 3d 14h 24m4 w 3 d 14 h 24 min4sem 3d 14h 24min4 n 3 p 14 t 24 min4 aste 3 e. 14 h 24 min4 w 3 d 14 h 24 min

4 هفته 3 روز 14h 24m

4 w 3 d 14 h 24 min4vk 3pv 14t 24min4linggo 3 na araw 14 oras 24m4v. 3d. 14t. 24m.4sem. 3j 14h 24min4 w 3 d 14 h 24 min4 w 3 d 14 u 24 m4s 3l 14u 24n4s 3là 14u 24m4 sem. 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min

4 ש′ 3 י׳ 14 שע׳ 24 דק׳

4 सप्ताह 3दिन 14घं॰ 24मि॰4 tj. 3 d. 14 h 24 m4 t. 3 d 14 h 24 min4 շ 3 օ 14 ժ 24 ր4 mgg 3 hr 14 j 24 mnt4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4sett. 3gg 14h 24min4w 3d 14h 24m4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 peken 3d 14j 24 mnt4 კვრ 3 დღე 14სთ 24წთ4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 sim. 3 dia 14 h 24 min.4 sim. Ag 3 kurã ag 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 ап. 3 к. 14 сағ 24 мин4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 សប្ដាហ៍ 3 ថ្ងៃ 14 ម៉ោង 24 នាទី4ವಾ 3ದಿ 14ಗಂ. 24ನಿಮಿ4주 3일 14시간 24분4स 3दी 14व 24 मि4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3d 14h 24m4 ап 3 кн 14 ст 24 мүн4 w 3 d 14 h 24 min4 W 3 D 14 st 24 minokó 4 3-čháŋ Owápȟe 14 24 min4 w 3 d 14 h 24 min4 ອທ. 3 ມ. 14 ຊມ 24 ນທ4 sav. 3 d. 14 h 24 min.4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 n. 3 d. 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 с. 3 д. 14 ч. 24 м.4 ആ 3 ദി 14 മ 24 മി.4 д.х 3 хоног 14 ц 24 мин4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 ပတ် 3 ရက် 14 နာရီ 24 မိနစ်

4 هفته 3 روز 14 ساعِت 24 دَقه

4 w 3 d 14 h 24 min4u 3d 14t 24m4 w 3 d 14 h 24 min4 हप्ता 3 दिन 14 घण्टा 24 मिनेट4 w 3 d 14 u 24 m4v 3d 14t 24m4 w 3 d 14 h 24 min4u 3d 14t 24m4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 ସପ୍ 3ଦିନ 14ଘଣ୍ଟା 24ମିନିଟ୍‌4 w 3 боны 14 с. 24 мин.4 ਹਫ਼ਤੇ 3 ਦਿਨ 14 ਘੰਟੇ 24 ਮਿੰਟ4Wik 3Dè 14Áwa 24Mínit4 tyg. 3 d. 14 h 24 min4 sem. 3 dias 14 h 24 min4 emnas 3 dis 14 uras 24 mins.4 w 3 d 14 h 24 min4 săpt. 3 z 14 h 24 m4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 н. 3 к. 14 ч 24 мүн4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4ch. 3d 14o 24m

4 هفتي 3 ڏينهن 14 ڪلاڪ 24 منٽ

4v 3d 14h 24m4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 minස 4 දි 3 පැය 14 මි 244 t. 3 d. 14 h 24 min4 t 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4t 3m 14 s 24d4 javë 3 ditë 14 orë 24 min.4 w 3 d 14 h 24 minwiki 4 siku 3 saa 14 dak 244 வா 3 நா 14 ம.நே. 24 நிமி.4వా 3రో 14గం 24ని4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4h 3g 14sg 24m4 u 3 ʻa 14 h 24 m4h 3g 14s 24d4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min

4 ھەپتە 3 كۈن 14h 24m

4т 3д 14 год. 24х4w 3d 14h 24m

4 ہفتے 3 دن 14 گھنٹے 24 منٹ

4 hafta 3 kun 14 soat 24 daq.4 w 3 d 14 h 24 min4 tuần 3 ngày 14 giờ 24 phút4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 ọṣ ọj 3 14 wkt 24/ìṣ4 sem 3 ara 14 h 24 min4 週 3 天 14 小時 24 分鐘4 w 3 d 14 h 24 min4周 3天 14小时 24分钟4 w 3 suku 14 hora 24 umzuzu
4 w. 12 u.4 w 12 h

4 أ 12 س

4 সপ্তাহ 12 ঘণ্টা4 w 12 h4sels 12hrs4 hft 12 saat4 тыдз. 12 гадз4 w 12 h4 w 12 h4 седм. 12 ч4 w 12 h4 সপ্তাহ 12 ঘঃ4 w 12 h4 sedm. 12 h4 setm. 12 h4 𑄥𑄛𑄴𑄖 12 𑄊𑄂4 кӀ. 12 сахь.4w 12 ka oras4 w 12 h4Ꮢ 12Ꮡ4 w 12 h4w 12 awr4 u 12 t4 w 12 h4 W 12 Std.4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 w 12 hkɔsiɖa 4 gaƒoƒo 124 ε 12 ώ4w 12h4 w 12 h4sem 12h4 n 12 t4 aste 12 h4 w 12 h

4 هفته 12h

4 w 12 h4vk 12t4linggo 12 oras4v. 12t.4sem. 12h4 w 12 h4 w 12 u4s 12u4s 12u4 sem. 12 h4 w 12 h4 w 12 h4 w 12 h4 w 12 h

4 ש′ 12 שע׳

4 सप्ताह 12घं॰4 tj. 12 h4 t. 12 h4 շ 12 ժ4 mgg 12 j4 w 12 h4 w 12 h4sett. 12h4w 12h4 w 12 h4 w 12 h4 peken 12j4 კვრ 12სთ4 w 12 h4 w 12 h4 w 12 h4 sim. 12 h4 sim. Ag 12 h4 w 12 h4 w 12 h4 ап. 12 сағ4 w 12 h4 w 12 h4 w 12 h4 សប្ដាហ៍ 12 ម៉ោង4ವಾ 12ಗಂ.4주 12시간4स 12व4 w 12 h4 w 12 h4 w 12h4 ап 12 ст4 w 12 h4 W 12 stokó 4 Owápȟe 124 w 12 h4 ອທ. 12 ຊມ4 sav. 12 h4 w 12 h4 w 12 h4 w 12 h4 n. 12 h4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 с. 12 ч.4 ആ 12 മ4 д.х 12 ц4 w 12 h4 w 12 h4 w 12 h4 ပတ် 12 နာရီ

4 هفته 12 ساعِت

4 w 12 h4u 12t4 w 12 h4 हप्ता 12 घण्टा4 w 12 u4v 12t4 w 12 h4u 12t4 w 12 h4 w 12 h4 ସପ୍ 12ଘଣ୍ଟା4 w 12 с.4 ਹਫ਼ਤੇ 12 ਘੰਟੇ4Wik 12Áwa4 tyg. 12 h4 sem. 12 h4 emnas 12 uras4 w 12 h4 săpt. 12 h4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 н. 12 ч4 w 12 h4 w 12 h4 w 12 h4ch. 12o

4 هفتي 12 ڪلاڪ

4v 12h4 w 12 h4 w 12 h4 w 12 h4 w 12 hස 4 පැය 124 t. 12 h4 t 12 h4 w 12 h4 w 12 h4t 12 s4 javë 12 orë4 w 12 hwiki 4 saa 124 வா 12 ம.நே.4వా 12గం4 w 12 h4 w 12 h4h 12sg4 u 12 h4h 12s4 w 12 h4 w 12 h4 w 12 h

4 ھەپتە 12h

4т 12 год.4w 12h

4 ہفتے 12 گھنٹے

4 hafta 12 soat4 w 12 h4 tuần 12 giờ4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 ọṣ 12 wkt4 sem 12 h4 週 12 小時4 w 12 h4周 12小时4 w 12 hora
NANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANA
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n
afakarasasaastazbebembezbgbmbnbobscaccpcecebcggchrckbcydadavdedjeduadyodzebueeeleneoeseteuewofafffifilfofrfurfygagdglgswguzgvhawhehihrhsbhyidigiiitjajgojmcjvkakabkamkdekeakgpkhqkikkkkjklklnkmknkokokksksfkshkylaglblktlnloltluluoluylvmaimermfemgmghmkmlmnmnimtmuamymznnaqnbndnenlnnnnhnonusomorospapcmplptrmrnrorofrwrwksasahsaqsatsbpscsdsesehsessgshisiskslsmnsnsosqsuswtatetgtitktotrtttwqtzmugukunduruzvaivivunwaewoxogyavyoyrlyuezghzhzu
1 d. 4 min. 19 s.1 d 4 min 19 s

1 ي 4 د 19 ث

1 দিন 4 মিনিট 19 ছেকেণ্ড1 d 4 min 19 s1día 4mins 19segs1 gün 4 dəq 19 san1 сут 4 хв 19 с1 d 4 min 19 s1 d 4 min 19 s1 д 4 мин 19 с1 d 4 min 19 s1 দিন 4 মিঃ 19 সেঃ1 d 4 min 19 s1 d. 4 m 19 s1 d 4 min 19 s1 𑄘𑄨𑄚𑄴 4 𑄟𑄨𑄂 19 𑄥𑄬𑄂1 д. 4 мин 19 с1 adlaw 4 minuto 19segundo1 d 4 min 19 s1Ꭲ 4Ꭲ 19ᎠᏎ1 d 4 min 19 s1d 4mun 19 eil1 d 4 m 19 s1 d 4 min 19 s1 T 4 Min. 19 Sek.1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 sŋkeke 1 a 4 s 191 η 4 λ 19 δ1d 4m 19s1 d 4 min 19 s1d 4min 19s1 p 4 min 19 s1 e. 4 min 19 s1 d 4 min 19 s

1 روز 4m 19s

1 d 4 min 19 s1pv 4min 19s1 araw 4m 19s1d. 4m. 19s.1j 4min 19s1 d 4 min 19 s1 d 4 m 19 s1l 4n 19s1là 4m 19d1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s

י׳ 4 דק׳ 19 שנ׳

1दिन 4मि॰ 19से॰1 d. 4 m 19 s1 d 4 min 19 s1 օ 4 ր 19 վ1 hr 4 mnt 19 dtk1 d 4 min 19 s1 d 4 min 19 s1 g 4min 19s1d 4m 19s1 d 4 min 19 s1 d 4 min 19 s1d 4 mnt 19 dtk1 დღე 4წთ 19წმ1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 dia 4 min. 19 s1 kurã 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 к. 4 мин 19 с1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 ថ្ងៃ 4 នាទី 19 វិនាទី1ದಿ 4ನಿಮಿ 19 ಸೆಕೆಂ1일 4분 19초1दी 4 मि 19से1 d 4 min 19 s1 d 4 min 19 s1d 4m 19s1 кн 4 мүн 19 сек1 d 4 min 19 s1 D 4 min 19 s1-čháŋ 4 min Okpí 191 d 4 min 19 s1 ມ. 4 ນທ 19 ວິ1 d. 4 min. 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d. 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 д. 4 м. 19 с.1 ദി 4 മി. 19 സെ.1 хоног 4 мин 19 сек1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 ရက် 4 မိနစ် 19 s

1 روز 4 دَقه 19 ثانیه

1 d 4 min 19 s1d 4m 19s1 d 4 min 19 s1 दिन 4 मिनेट 19 सेकेन्ड1 d 4 m 19 s1d 4m 19s1 d 4 min 19 s1d 4m 19s1 d 4 min 19 s1 d 4 min 19 s1ଦିନ 4ମିନିଟ୍‌ 19ସେକ୍1 бон 4 мин. 19 s1 ਦਿਨ 4 ਮਿੰਟ 19 ਸਕਿੰਟ1Dè 4Mínit 19Sẹ́kọn1 d. 4 min 19 s1 dia 4 min 19 s1 dis 4 mins. 19 secs.1 d 4 min 19 s1 z 4 m 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 к. 4 мүн 19 с1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1d 4m 19s

1 ڏينهن 4 منٽ 19 سيڪنڊ

1d 4m 19s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 sදි 1 මි 4 ත 191 d. 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1m 4d 19il1 ditë 4 min. 19 sek.1 d 4 min 19 ssiku 1 dak 4 sek 191 நா 4 நிமி. 19 வி.1రో 4ని 19సె1 d 4 min 19 s1 d 4 min 19 s1g 4m 19se1 ʻa 4 m 19 s1g 4d 19sn1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s

1 كۈن 4m 19s

1д 4х 19с1d 4m 19s

1 دن 4 منٹ 19 سیکنڈ

1 kun 4 daq. 19 s1 d 4 min 19 s1 ngày 4 phút 19 giây1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 sọj 1 4/ìṣ 19 ìṣ àáy1 ara 4 min 19 s1 天 4 分鐘 19 秒1 d 4 min 19 s1天 4分钟 19秒1 4 umzuzu 19 s
5 189 w. 7 min. 12 s.5,189 w 7 min 12 s

5,189 أ 7 د 12 ث

5,189 সপ্তাহ 7 মিনিট 12 ছেকেণ্ড5,189 w 7 min 12 s5.189sels 7mins 12segs5.189 hft 7 dəq 12 san5 189 тыдз. 7 хв 12 с5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 седм. 7 мин 12 с5,189 w 7 min 12 s5,189 সপ্তাহ 7 মিঃ 12 সেঃ5,189 w 7 min 12 s5.189 sedm. 7 m 12 s5.189 setm. 7 min 12 s5,189 𑄥𑄛𑄴𑄖 7 𑄟𑄨𑄂 12 𑄥𑄬𑄂5,189 кӀ. 7 мин 12 с5,189w 7 minuto 12segundo5,189 w 7 min 12 s5,189Ꮢ 7Ꭲ 12ᎠᏎ5,189 w 7 min 12 s5,189w 7mun 12 eil5.189 u 7 m 12 s5,189 w 7 min 12 s5.189 W 7 Min. 12 Sek.5 189 w 7 min 12 s5 189 w 7 min 12 s5 189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 skɔsiɖa 5,189 a 7 s 125.189 ε 7 λ 12 δ5,189w 7m 12s5 189 w 7 min 12 s5.189sem 7min 12s5 189 n 7 min 12 s5.189 aste 7 min 12 s5 189 w 7 min 12 s

5,189 هفته 7m 12s

5 189 w 7 min 12 s5 189vk 7min 12s5,189linggo 7m 12s5.189v. 7m. 12s.5 189sem. 7min 12s5.189 w 7 min 12 s5.189 w 7 m 12 s5,189s 7n 12s5,189s 7m 12d5.189 sem. 7 min 12 s5’189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s

5,189 ש′ 7 דק׳ 12 שנ׳

5,189 सप्ताह 7मि॰ 12से॰5.189 tj. 7 m 12 s5.189 t. 7 min 12 s5 189 շ 7 ր 12 վ5.189 mgg 7 mnt 12 dtk5,189 w 7 min 12 s5,189 w 7 min 12 s5.189sett. 7min 12s5,189w 7m 12s5.189 w 7 min 12 s5,189 w 7 min 12 s5.189 peken 7 mnt 12 dtk5 189 კვრ 7წთ 12წმ5 189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 sim. 7 min. 12 s5.189 sim. Ag 7 min 12 s5 189 w 7 min 12 s5,189 w 7 min 12 s5 189 ап. 7 мин 12 с5.189 w 7 min 12 s5.189 w 7 min 12 s5,189 w 7 min 12 s5.189 សប្ដាហ៍ 7 នាទី 12 វិនាទី5,189ವಾ 7ನಿಮಿ 12 ಸೆಕೆಂ5,189주 7분 12초5,189स 7 मि 12से

5،189 w 7 min 12 s

5 189 w 7 min 12 s5 189 w 7m 12s5 189 ап 7 мүн 12 сек5,189 w 7 min 12 s5.189 W 7 min 12 sokó 5,189 7 min Okpí 125.189 w 7 min 12 s5.189 ອທ. 7 ນທ 12 ວິ5 189 sav. 7 min. 12 s5.189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 n. 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 w 7 min 12 s5,189 w 7 min 12 s5.189 w 7 min 12 s5.189 с. 7 м. 12 с.5,189 ആ 7 മി. 12 സെ.5,189 д.х 7 мин 12 сек5,189 w 7 min 12 s5,189 w 7 min 12 s5.189 w 7 min 12 s5,189 ပတ် 7 မိနစ် 12 s

5,189 هفته 7 دَقه 12 ثانیه

5,189 w 7 min 12 s5 189u 7m 12s5,189 w 7 min 12 s5,189 हप्ता 7 मिनेट 12 सेकेन्ड5.189 w 7 m 12 s5 189v 7m 12s5.189 w 7 min 12 s5 189u 7m 12s5,189 w 7 min 12 s5,189 w 7 min 12 s5,189 ସପ୍ 7ମିନିଟ୍‌ 12ସେକ୍5 189 w 7 мин. 12 s5,189 ਹਫ਼ਤੇ 7 ਮਿੰਟ 12 ਸਕਿੰਟ5,189Wik 7Mínit 12Sẹ́kọn5 189 tyg. 7 min 12 s5.189 sem. 7 min 12 s5’189 emnas 7 mins. 12 secs.5.189 w 7 min 12 s5.189 săpt. 7 m 12 s5,189 w 7 min 12 s5.189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 н. 7 мүн 12 с5,189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5.189ch. 7m 12s

5,189 هفتي 7 منٽ 12 سيڪنڊ

5 189v 7m 12s5.189 w 7 min 12 s5 189 w 7 min 12 s5.189 w 7 min 12 s5 189 w 7 min 12 sස 5,189 මි 7 ත 125 189 t. 7 min 12 s5.189 t 7 min 12 s5 189 w 7 min 12 s5,189 w 7 min 12 s5,189t 7d 12il5 189 javë 7 min. 12 sek.5.189 w 7 min 12 swiki 5,189 dak 7 sek 125,189 வா 7 நிமி. 12 வி.5,189వా 7ని 12సె5 189 w 7 min 12 s5,189 w 7 min 12 s5 189h 7m 12se5,189 u 7 m 12 s5.189h 7d 12sn5 189 w 7 min 12 s5 189 w 7 min 12 s5 189 w 7 min 12 s

5,189 ھەپتە 7m 12s

5 189т 7х 12с5,189w 7m 12s

5,189 ہفتے 7 منٹ 12 سیکنڈ

5 189 hafta 7 daq. 12 s5,189 w 7 min 12 s5.189 tuần 7 phút 12 giây5,189 w 7 min 12 s5’189 w 7 min 12 s5.189 w 7 min 12 s5,189 w 7 min 12 s5 189 w 7 min 12 s5,189 ọṣ 7/ìṣ 12 ìṣ àáy5.189 sem 7 min 12 s5,189 週 7 分鐘 12 秒5 189 w 7 min 12 s5,189周 7分钟 12秒5,189 w 7 umzuzu 12 s
5 d.5 d

5 ي

5 দিন5 d5díes5 gün5 сут5 d5 d5 д5 d5 দিন5 d5 d.5 d5 𑄘𑄨𑄚𑄴5 д.5 adlaw5 d5Ꭲ5 d5d5 d5 d5 T5 d5 d5 d5 d5 dŋkeke 55 η5d5 d5d5 p5 e.5 d

5 روز

5 d5pv5 na araw5d.5j5 d5 d5l5là5 d5 d5 d5 d5 d

5 י׳

5दिन5 d.5 d5 օ5 hr5 d5 d5gg5d5 d5 d5d5 დღე5 d5 d5 d5 dia5 kurã ag5 d5 d5 к.5 d5 d5 d5 ថ្ងៃ5ದಿ5일5दी5 d5 d5d5 кн5 d5 D5-čháŋ5 d5 ມ.5 d.5 d5 d5 d5 d.5 d5 d5 d5 d5 d5 д.5 ദി5 хоног5 d5 d5 d5 ရက်

5 روز

5 d5d5 d5 दिन5 d5d5 d5d5 d5 d5ଦିନ5 боны5 ਦਿਨ5Dè5 d.5 dias5 dis5 d5 z5 d5 d5 d5 d5 к.5 d5 d5 d5d

5 ڏينهن

5d5 d5 d5 d5 dදි 55 d.5 d5 d5 d5m5 ditë5 dsiku 55 நா5రో5 d5 d5g5 ʻa5g5 d5 d5 d

5 كۈن

5d

5 دن

5 kun5 d5 ngày5 d5 d5 d5 d5 dọj 55 ara5 天5 d5天5 suku
−4 w. 6 d. 12 u.−4 w 6 d 12 h

−4 أ 6 ي 12 س

−4 সপ্তাহ 6 দিন 12 ঘণ্টা−4 w 6 d 12 h−4sels 6díes 12hrs−4 hft 6 gün 12 saat−4 тыдз. 6 сут 12 гадз−4 w 6 d 12 h−4 w 6 d 12 h−4 седм. 6 д 12 ч−4 w 6 d 12 h−4 সপ্তাহ 6 দিন 12 ঘঃ−4 w 6 d 12 h−4 sedm. 6 d. 12 h−4 setm. 6 d 12 h−4 𑄥𑄛𑄴𑄖 6 𑄘𑄨𑄚𑄴 12 𑄊𑄂−4 кӀ. 6 д. 12 сахь.−4w 6 adlaw 12 ka oras−4 w 6 d 12 h−4Ꮢ 6Ꭲ 12Ꮡ−4 w 6 d 12 h−4w 6d 12 awr−4 u 6 d 12 t−4 w 6 d 12 h−4 W 6 T 12 Std.−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−kɔsiɖa 4 ŋkeke 6 gaƒoƒo 12−4 ε 6 η 12 ώ−4w 6d 12h−4 w 6 d 12 h−4sem 6d 12h−4 n 6 p 12 t−4 aste 6 e. 12 h−4 w 6 d 12 h

−4 هفته 6 روز 12h

−4 w 6 d 12 h−4vk 6pv 12t−4linggo 6 na araw 12 oras−4v. 6d. 12t.−4sem. 6j 12h−4 w 6 d 12 h−4 w 6 d 12 u−4s 6l 12u−4s 6là 12u−4 sem. 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h

−4 ש′ 6 י׳ 12 שע׳

−4 सप्ताह 6दिन 12घं॰−4 tj. 6 d. 12 h−4 t. 6 d 12 h−4 շ 6 օ 12 ժ−4 mgg 6 hr 12 j−4 w 6 d 12 h−4 w 6 d 12 h−4sett. 6gg 12h−4w 6d 12h−4 w 6 d 12 h−4 w 6 d 12 h−4 peken 6d 12j−4 კვრ 6 დღე 12სთ−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 sim. 6 dia 12 h−4 sim. Ag 6 kurã ag 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 ап. 6 к. 12 сағ−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 សប្ដាហ៍ 6 ថ្ងៃ 12 ម៉ោង−4ವಾ 6ದಿ 12ಗಂ.−4주 6일 12시간−4स 6दी 12व−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6d 12h−4 ап 6 кн 12 ст−4 w 6 d 12 h−4 W 6 D 12 st−okó 4 6-čháŋ Owápȟe 12−4 w 6 d 12 h−4 ອທ. 6 ມ. 12 ຊມ−4 sav. 6 d. 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 n. 6 d. 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 с. 6 д. 12 ч.−4 ആ 6 ദി 12 മ−4 д.х 6 хоног 12 ц−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 ပတ် 6 ရက် 12 နာရီ

−4 هفته 6 روز 12 ساعِت

−4 w 6 d 12 h−4u 6d 12t−4 w 6 d 12 h−4 हप्ता 6 दिन 12 घण्टा−4 w 6 d 12 u−4v 6d 12t−4 w 6 d 12 h−4u 6d 12t−4 w 6 d 12 h−4 w 6 d 12 h−4 ସପ୍ 6ଦିନ 12ଘଣ୍ଟା−4 w 6 боны 12 с.−4 ਹਫ਼ਤੇ 6 ਦਿਨ 12 ਘੰਟੇ−4Wik 6Dè 12Áwa−4 tyg. 6 d. 12 h−4 sem. 6 dias 12 h−4 emnas 6 dis 12 uras−4 w 6 d 12 h−4 săpt. 6 z 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 н. 6 к. 12 ч−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4ch. 6d 12o

−4 هفتي 6 ڏينهن 12 ڪلاڪ

−4v 6d 12h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−ස 4 දි 6 පැය 12−4 t. 6 d. 12 h−4 t 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4t 6m 12 s−4 javë 6 ditë 12 orë−4 w 6 d 12 h−wiki 4 siku 6 saa 12−4 வா 6 நா 12 ம.நே.−4వా 6రో 12గం−4 w 6 d 12 h−4 w 6 d 12 h−4h 6g 12sg−4 u 6 ʻa 12 h−4h 6g 12s−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h

−4 ھەپتە 6 كۈن 12h

−4т 6д 12 год.−4w 6d 12h

−4 ہفتے 6 دن 12 گھنٹے

−4 hafta 6 kun 12 soat−4 w 6 d 12 h−4 tuần 6 ngày 12 giờ−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 ọṣ ọj 6 12 wkt−4 sem 6 ara 12 h−4 週 6 天 12 小時−4 w 6 d 12 h−4周 6天 12小时−4 w 6 suku 12 hora
4 w. 3 d. 14 u. 24 min.4 w 3 d 14 h 24 min

4 أ 3 ي 14 س 24 د

4 সপ্তাহ 3 দিন 14 ঘণ্টা 24 মিনিট4 w 3 d 14 h 24 min4sels 3díes 14hrs 24mins4 hft 3 gün 14 saat 24 dəq4 тыдз. 3 сут 14 гадз 24 хв4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 седм. 3 д 14 ч 24 мин4 w 3 d 14 h 24 min4 সপ্তাহ 3 দিন 14 ঘঃ 24 মিঃ4 w 3 d 14 h 24 min4 sedm. 3 d. 14 h 24 m4 setm. 3 d 14 h 24 min4 𑄥𑄛𑄴𑄖 3 𑄘𑄨𑄚𑄴 14 𑄊𑄂 24 𑄟𑄨𑄂4 кӀ. 3 д. 14 сахь. 24 мин4w 3 adlaw 14 ka oras 24 minuto4 w 3 d 14 h 24 min4Ꮢ 3Ꭲ 14Ꮡ 24Ꭲ4 w 3 d 14 h 24 min4w 3d 14 awr 24mun4 u 3 d 14 t 24 m4 w 3 d 14 h 24 min4 W 3 T 14 Std. 24 Min.4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 minkɔsiɖa 4 ŋkeke 3 gaƒoƒo 14 a 244 ε 3 η 14 ώ 24 λ4w 3d 14h 24m4 w 3 d 14 h 24 min4sem 3d 14h 24min4 n 3 p 14 t 24 min4 aste 3 e. 14 h 24 min4 w 3 d 14 h 24 min

4 هفته 3 روز 14h 24m

4 w 3 d 14 h 24 min4vk 3pv 14t 24min4linggo 3 na araw 14 oras 24m4v. 3d. 14t. 24m.4sem. 3j 14h 24min4 w 3 d 14 h 24 min4 w 3 d 14 u 24 m4s 3l 14u 24n4s 3là 14u 24m4 sem. 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min

4 ש′ 3 י׳ 14 שע׳ 24 דק׳

4 सप्ताह 3दिन 14घं॰ 24मि॰4 tj. 3 d. 14 h 24 m4 t. 3 d 14 h 24 min4 շ 3 օ 14 ժ 24 ր4 mgg 3 hr 14 j 24 mnt4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4sett. 3gg 14h 24min4w 3d 14h 24m4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 peken 3d 14j 24 mnt4 კვრ 3 დღე 14სთ 24წთ4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 sim. 3 dia 14 h 24 min.4 sim. Ag 3 kurã ag 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 ап. 3 к. 14 сағ 24 мин4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 សប្ដាហ៍ 3 ថ្ងៃ 14 ម៉ោង 24 នាទី4ವಾ 3ದಿ 14ಗಂ. 24ನಿಮಿ4주 3일 14시간 24분4स 3दी 14व 24 मि4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3d 14h 24m4 ап 3 кн 14 ст 24 мүн4 w 3 d 14 h 24 min4 W 3 D 14 st 24 minokó 4 3-čháŋ Owápȟe 14 24 min4 w 3 d 14 h 24 min4 ອທ. 3 ມ. 14 ຊມ 24 ນທ4 sav. 3 d. 14 h 24 min.4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 n. 3 d. 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 с. 3 д. 14 ч. 24 м.4 ആ 3 ദി 14 മ 24 മി.4 д.х 3 хоног 14 ц 24 мин4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 ပတ် 3 ရက် 14 နာရီ 24 မိနစ်

4 هفته 3 روز 14 ساعِت 24 دَقه

4 w 3 d 14 h 24 min4u 3d 14t 24m4 w 3 d 14 h 24 min4 हप्ता 3 दिन 14 घण्टा 24 मिनेट4 w 3 d 14 u 24 m4v 3d 14t 24m4 w 3 d 14 h 24 min4u 3d 14t 24m4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 ସପ୍ 3ଦିନ 14ଘଣ୍ଟା 24ମିନିଟ୍‌4 w 3 боны 14 с. 24 мин.4 ਹਫ਼ਤੇ 3 ਦਿਨ 14 ਘੰਟੇ 24 ਮਿੰਟ4Wik 3Dè 14Áwa 24Mínit4 tyg. 3 d. 14 h 24 min4 sem. 3 dias 14 h 24 min4 emnas 3 dis 14 uras 24 mins.4 w 3 d 14 h 24 min4 săpt. 3 z 14 h 24 m4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 н. 3 к. 14 ч 24 мүн4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4ch. 3d 14o 24m

4 هفتي 3 ڏينهن 14 ڪلاڪ 24 منٽ

4v 3d 14h 24m4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 minස 4 දි 3 පැය 14 මි 244 t. 3 d. 14 h 24 min4 t 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4t 3m 14 s 24d4 javë 3 ditë 14 orë 24 min.4 w 3 d 14 h 24 minwiki 4 siku 3 saa 14 dak 244 வா 3 நா 14 ம.நே. 24 நிமி.4వా 3రో 14గం 24ని4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4h 3g 14sg 24m4 u 3 ʻa 14 h 24 m4h 3g 14s 24d4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min

4 ھەپتە 3 كۈن 14h 24m

4т 3д 14 год. 24х4w 3d 14h 24m

4 ہفتے 3 دن 14 گھنٹے 24 منٹ

4 hafta 3 kun 14 soat 24 daq.4 w 3 d 14 h 24 min4 tuần 3 ngày 14 giờ 24 phút4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 ọṣ ọj 3 14 wkt 24/ìṣ4 sem 3 ara 14 h 24 min4 週 3 天 14 小時 24 分鐘4 w 3 d 14 h 24 min4周 3天 14小时 24分钟4 w 3 suku 14 hora 24 umzuzu
4 w. 12 u.4 w 12 h

4 أ 12 س

4 সপ্তাহ 12 ঘণ্টা4 w 12 h4sels 12hrs4 hft 12 saat4 тыдз. 12 гадз4 w 12 h4 w 12 h4 седм. 12 ч4 w 12 h4 সপ্তাহ 12 ঘঃ4 w 12 h4 sedm. 12 h4 setm. 12 h4 𑄥𑄛𑄴𑄖 12 𑄊𑄂4 кӀ. 12 сахь.4w 12 ka oras4 w 12 h4Ꮢ 12Ꮡ4 w 12 h4w 12 awr4 u 12 t4 w 12 h4 W 12 Std.4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 w 12 hkɔsiɖa 4 gaƒoƒo 124 ε 12 ώ4w 12h4 w 12 h4sem 12h4 n 12 t4 aste 12 h4 w 12 h

4 هفته 12h

4 w 12 h4vk 12t4linggo 12 oras4v. 12t.4sem. 12h4 w 12 h4 w 12 u4s 12u4s 12u4 sem. 12 h4 w 12 h4 w 12 h4 w 12 h4 w 12 h

4 ש′ 12 שע׳

4 सप्ताह 12घं॰4 tj. 12 h4 t. 12 h4 շ 12 ժ4 mgg 12 j4 w 12 h4 w 12 h4sett. 12h4w 12h4 w 12 h4 w 12 h4 peken 12j4 კვრ 12სთ4 w 12 h4 w 12 h4 w 12 h4 sim. 12 h4 sim. Ag 12 h4 w 12 h4 w 12 h4 ап. 12 сағ4 w 12 h4 w 12 h4 w 12 h4 សប្ដាហ៍ 12 ម៉ោង4ವಾ 12ಗಂ.4주 12시간4स 12व4 w 12 h4 w 12 h4 w 12h4 ап 12 ст4 w 12 h4 W 12 stokó 4 Owápȟe 124 w 12 h4 ອທ. 12 ຊມ4 sav. 12 h4 w 12 h4 w 12 h4 w 12 h4 n. 12 h4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 с. 12 ч.4 ആ 12 മ4 д.х 12 ц4 w 12 h4 w 12 h4 w 12 h4 ပတ် 12 နာရီ

4 هفته 12 ساعِت

4 w 12 h4u 12t4 w 12 h4 हप्ता 12 घण्टा4 w 12 u4v 12t4 w 12 h4u 12t4 w 12 h4 w 12 h4 ସପ୍ 12ଘଣ୍ଟା4 w 12 с.4 ਹਫ਼ਤੇ 12 ਘੰਟੇ4Wik 12Áwa4 tyg. 12 h4 sem. 12 h4 emnas 12 uras4 w 12 h4 săpt. 12 h4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 н. 12 ч4 w 12 h4 w 12 h4 w 12 h4ch. 12o

4 هفتي 12 ڪلاڪ

4v 12h4 w 12 h4 w 12 h4 w 12 h4 w 12 hස 4 පැය 124 t. 12 h4 t 12 h4 w 12 h4 w 12 h4t 12 s4 javë 12 orë4 w 12 hwiki 4 saa 124 வா 12 ம.நே.4వా 12గం4 w 12 h4 w 12 h4h 12sg4 u 12 h4h 12s4 w 12 h4 w 12 h4 w 12 h

4 ھەپتە 12h

4т 12 год.4w 12h

4 ہفتے 12 گھنٹے

4 hafta 12 soat4 w 12 h4 tuần 12 giờ4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 ọṣ 12 wkt4 sem 12 h4 週 12 小時4 w 12 h4周 12小时4 w 12 hora
NANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANA
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n
afakarasasaastazbebembezbgbmbnbobscaccpcecebcggchrckbcydadavdedjeduadyodzebueeeleneoeseteuewofafffifilfofrfurfygagdglgswguzgvhawhehihrhsbhyidigiiitjajgojmcjvkakabkamkdekeakgpkhqkikkkkjklklnkmknkokokksksfkshkylaglblktlnloltluluoluylvmaimermfemgmghmkmlmnmnimtmuamymznnaqnbndnenlnnnnhnonusomorospapcmplptrmrnrorofrwrwksasahsaqsatsbpscsdsesehsessgshisiskslsmnsnsosqsuswtatetgtitktotrtttwqtzmugukunduruzvaivivunwaewoxogyavyoyrlyuezghzhzu
1 dag 4 minute 19 sekondes1 d 4 min 19 s

يوم 4 دقيقة 19 ثانية

1 দিন 4 মিনিট 19 ছেকেণ্ড1 d 4 min 19 s1 día 4 minutos 19 segundos1 gün 4 dəqiqə 19 saniyə1 суткі 4 хвіліны 19 секунды1 d 4 min 19 s1 d 4 min 19 s1 ден 4 минути 19 секунди1 d 4 min 19 s1 দিন 4 মিনিট 19 সেকেন্ড1 d 4 min 19 s1 dan 4 minuta 19 sekundi1 dia 4 minuts 19 segons1 𑄘𑄨𑄚𑄴 4 𑄟𑄨𑄚𑄨𑄖𑄴 19 𑄥𑄬𑄇𑄬𑄚𑄳𑄓𑄴1 де 4 минот 19 секунд1 ka adlaw 4 ka mga minuto 19 ka mga segundo1 d 4 min 19 s1 ᎢᎦ 4 ᎢᏯᏔᏬᏍᏔᏅ 19 ᏗᏎᏢ1 d 4 min 19 s1 diwrnod 4 munud 19 eiliad1 dag 4 minutter 19 sekunder1 d 4 min 19 s1 Tag 4 Minuten 19 Sekunden1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 sཉིན་ཞག་ 1 སྐར་མ་ 4 སྐར་ཆ་ 191 d 4 min 19 sŋkeke 1 aɖabaƒoƒo 4 sekend 19 wo1 ημέρα 4 λεπτά 19 δευτερόλεπτα1 day 4 minutes 19 seconds1 d 4 min 19 s1 día 4 minutos 19 segundos1 ööpäev 4 minutit 19 sekundit1 egun 4 minutu 19 segundo1 d 4 min 19 s

1 روز 4 دقیقه 19 ثانیه

1 d 4 min 19 s1 päivä 4 minuuttia 19 sekuntia1 araw 4 na minuto 19 na segundo1 dagur 4 minuttir 19 sekundir1 jour 4 minutes 19 secondes1 zornade 4 minûts 19 seconts1 dei 4 minuten 19 sekonden1 lá 4 nóiméad 19 soicind1 latha 4 mionaid 19 diog1 día 4 minutos 19 segundos1 Taag 4 Minuute 19 Sekunde1 d 4 min 19 s1 d 4 min 19 s1 lā 4 minuke 19 kekona

יום 1 4 דקות 19 שניות

1 दिन 4 मिनट 19 सेकंड1 dan 4 minuta 19 sekundi1 dźeń 4 minutow 19 sekundow1 օր 4 րոպե 19 վայրկյան1 hari 4 menit 19 detik1 d 4 min 19 s1 d 4 min 19 s1 giorno 4 minuti 19 secondi1 日 4 分 19 秒1 lɛ́Ꞌ 4 minút 19 s1 d 4 min 19 s1 dina 4 menit 19 detik1 დღე 4 წუთი 19 წამი1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 dia 4 minutu 19 sigundukurã 1 mĩnũtu 4 sigũnu 191 d 4 min 19 s1 d 4 min 19 s1 тәулік 4 минут 19 секунд1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 ថ្ងៃ 4 នាទី 19 វិនាទី1 ದಿನ 4 ನಿಮಿಷಗಳು 19 ಸೆಕೆಂಡುಗಳು1일 4분 19초1 दीस 4 मिण्टां 19 सेकंदांनी

1 دۄہ 4 مِنَٹ 19 سیکَنڈ

1 d 4 min 19 s1 Dääsch 4 Menutte 19 Sekunde1 күн 4 мүнөт 19 секунд1 d 4 min 19 s1 Dag 4 Minutten 19 Sekonnen1-čháŋ 4 min Okpí 191 d 4 min 19 s1 ມື້ 4 ນາທີ 19 ວິນາທີ1 diena 4 minučių 19 sekundžių1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 diena 4 minūtes 19 sekundes1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 ден 4 минути 19 секунди1 ദിവസം 4 മിനിറ്റ് 19 സെക്കൻഡ്1 хоног 4 минут 19 секунд1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 ရက် 4 မိနစ် 19 စက္ကန့်

1 روز 4 دقیقه 19 ثانیه

1 d 4 min 19 s1 døgn 4 minutter 19 sekunder1 d 4 min 19 s1 दिन 4 मिनेट 19 सेकेन्ड1 dag 4 minuten 19 seconden1 døgn 4 minutt 19 sekund1 d 4 min 19 s1 døgn 4 minutter 19 sekunder1 d 4 min 19 s1 d 4 min 19 s1 ଦିନ 4 ମିନିଟ୍ 19 ସେକେଣ୍ଡ1 бон 4 минуты 19 секунды1 ਦਿਨ 4 ਮਿੰਟ 19 ਸਕਿੰਟ1 Dè 4 Mínit 19 Sẹ́kọn1 doba 4 minuty 19 sekundy1 dia 4 minutos 19 segundos1 di 4 minutas 19 secundas1 d 4 min 19 s1 zi 4 de minute 19 de secunde1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 күн 4 мүнүүтэ 19 сөкүүндэ1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 die 4 minutos 19 segundos

1 ڏينهن 4 منٽ 19 سيڪنڊ

1 jándor 4 minuhtta 19 sekundda1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 sදින 1 මිනිත්තු 4 තත්පර 191 deň 4 minút 19 sekúnd1 dan 4 minut 19 sekund1 d 4 min 19 s1 d 4 min 19 s1 maalin 4 daqiiqo 19 ilbiriqsi1 ditë 4 minuta 19 sekonda1 d 4 min 19 ssiku 1 dakika 4 sekunde 191 நாள் 4 நிமிடங்கள் 19 விநாடிகள்1 రోజు 4 నిమిషాలు 19 సెకన్లు1 d 4 min 19 s1 d 4 min 19 s1 gün 4 minut 19 sekuntʻaho ʻe 1 miniti ʻe 4 sekoni ʻe 191 gün 4 dakika 19 saniye1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s

1 كۈن 4 مىنۇت 19 سېكۇنت

1 день 4 хвилини 19 секунди1 day 4 minutes 19 seconds

1 دن 4 منٹ 19 سیکنڈ

1 kun 4 daqiqa 19 soniya1 d 4 min 19 s1 ngày 4 phút 19 giây1 d 4 min 19 s1 täg 4 minüte 19 sekunde1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 sọj 1 4 ìṣ 19ìṣ àáy1 ara 4 minutu-ita 19 segũdu-ita1 天 4 分鐘 19 秒1 d 4 min 19 s1天 4分钟 19秒钟1 usuku 4 amaminithi 19 amasekhondi
5 189 weke 7 minute 12 sekondes5,189 w 7 min 12 s

5,189 أسبوع 7 دقيقة 12 ثانية

5,189 সপ্তাহ 7 মিনিট 12 ছেকেণ্ড5,189 w 7 min 12 s5.189 selmanes 7 minutos 12 segundos5.189 həftə 7 dəqiqə 12 saniyə5 189 тыдня 7 хвіліны 12 секунды5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 седмици 7 минути 12 секунди5,189 w 7 min 12 s5,189 সপ্তাহ 7 মিনিট 12 সেকেন্ড5,189 w 7 min 12 s5.189 sedmica 7 minuta 12 sekundi5.189 setmanes 7 minuts 12 segons5,189 𑄥𑄛𑄴𑄖 7 𑄟𑄨𑄚𑄨𑄖𑄴 12 𑄥𑄬𑄇𑄬𑄚𑄳𑄓𑄴5,189 кӀира 7 минот 12 секунд5,189 ka mga semana 7 ka mga minuto 12 ka mga segundo5,189 w 7 min 12 s5,189 ᎢᏳᎾᏙᏓᏆᏍᏗ 7 ᎢᏯᏔᏬᏍᏔᏅ 12 ᏗᏎᏢ5,189 w 7 min 12 s5,189 wythnos 7 munud 12 eiliad5.189 uger 7 minutter 12 sekunder5,189 w 7 min 12 s5.189 Wochen 7 Minuten 12 Sekunden5 189 w 7 min 12 s5 189 w 7 min 12 s5 189 w 7 min 12 sབངུན་ཕྲག་ 5,189 སྐར་མ་ 7 སྐར་ཆ་ 125,189 w 7 min 12 skɔsiɖa 5,189 aɖabaƒoƒo 7 sekend 12 wo5.189 εβδομάδες 7 λεπτά 12 δευτερόλεπτα5,189 weeks 7 minutes 12 seconds5 189 w 7 min 12 s5.189 semanas 7 minutos 12 segundos5 189 nädalat 7 minutit 12 sekundit5.189 aste 7 minutu 12 segundo5 189 w 7 min 12 s

5,189 هفته 7 دقیقه 12 ثانیه

5 189 w 7 min 12 s5 189 viikkoa 7 minuuttia 12 sekuntia5,189 na linggo 7 na minuto 12 na segundo5.189 vikur 7 minuttir 12 sekundir5 189 semaines 7 minutes 12 secondes5.189 setemanis 7 minûts 12 seconts5.189 wiken 7 minuten 12 sekonden5,189 seachtain 7 nóiméad 12 soicind5,189 seachdain 7 mionaid 12 diog5.189 semanas 7 minutos 12 segundos5’189 Wuche 7 Minuute 12 Sekunde5,189 w 7 min 12 s5,189 w 7 min 12 s5,189 pule 7 minuke 12 kekona

5,189 שבועות 7 דקות 12 שניות

5,189 सप्ताह 7 मिनट 12 सेकंड5.189 tjedana 7 minuta 12 sekundi5.189 tydźenjow 7 minutow 12 sekundow5 189 շաբաթ 7 րոպե 12 վայրկյան5.189 minggu 7 menit 12 detik5,189 w 7 min 12 s5,189 w 7 min 12 s5.189 settimane 7 minuti 12 secondi5,189 週間 7 分 12 秒5.189 w 7 minút 12 s5,189 w 7 min 12 s5.189 peken 7 menit 12 detik5 189 კვირა 7 წუთი 12 წამი5 189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 simana 7 minutu 12 sigundu5.189 simỹnỹ ag mĩnũtu 7 sigũnu 125 189 w 7 min 12 s5,189 w 7 min 12 s5 189 апта 7 минут 12 секунд5.189 w 7 min 12 s5.189 w 7 min 12 s5,189 w 7 min 12 s5.189 សប្ដាហ៍ 7 នាទី 12 វិនាទី5,189 ವಾರಗಳು 7 ನಿಮಿಷಗಳು 12 ಸೆಕೆಂಡುಗಳು5,189주 7분 12초5,189 सप्तक 7 मिण्टां 12 सेकंदांनी

5،189 ہَفتہٕ 7 مِنَٹ 12 سیکَنڈ

5 189 w 7 min 12 s5 189 Woche 7 Menutte 12 Sekunde5 189 апта 7 мүнөт 12 секунд5,189 w 7 min 12 s5.189 Wochen 7 Minutten 12 Sekonnenokó 5,189 7 min Okpí 125.189 w 7 min 12 s5.189 ອາທິດ 7 ນາທີ 12 ວິນາທີ5 189 savaičių 7 minučių 12 sekundžių5.189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 nedēļas 7 minūtes 12 sekundes5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 w 7 min 12 s5,189 w 7 min 12 s5.189 w 7 min 12 s5.189 седмици 7 минути 12 секунди5,189 ആഴ്ച 7 മിനിറ്റ് 12 സെക്കൻഡ്5,189 долоо хоног 7 минут 12 секунд5,189 w 7 min 12 s5,189 w 7 min 12 s5.189 w 7 min 12 s5,189 ပတ် 7 မိနစ် 12 စက္ကန့်

5,189 هفته 7 دقیقه 12 ثانیه

5,189 w 7 min 12 s5 189 uker 7 minutter 12 sekunder5,189 w 7 min 12 s5,189 हप्ता 7 मिनेट 12 सेकेन्ड5.189 weken 7 minuten 12 seconden5 189 veker 7 minutt 12 sekund5.189 w 7 min 12 s5 189 uker 7 minutter 12 sekunder5,189 w 7 min 12 s5,189 w 7 min 12 s5,189 ସପ୍ତାହ 7 ମିନିଟ୍ 12 ସେକେଣ୍ଡ5 189 къуырийы 7 минуты 12 секунды5,189 ਹਫ਼ਤੇ 7 ਮਿੰਟ 12 ਸਕਿੰਟ5,189 Wik 7 Mínit 12 Sẹ́kọn5 189 tygodnia 7 minuty 12 sekundy5.189 semanas 7 minutos 12 segundos5’189 emnas 7 minutas 12 secundas5.189 w 7 min 12 s5.189 de săptămâni 7 de minute 12 de secunde5,189 w 7 min 12 s5.189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 нэдиэлэ 7 мүнүүтэ 12 сөкүүндэ5,189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5.189 chidas 7 minutos 12 segundos

5,189 هفتا 7 منٽ 12 سيڪنڊ

5 189 váhkku 7 minuhtta 12 sekundda5.189 w 7 min 12 s5 189 w 7 min 12 s5.189 w 7 min 12 s5 189 w 7 min 12 sසති 5,189 මිනිත්තු 7 තත්පර 125 189 týždňov 7 minút 12 sekúnd5.189 tednov 7 minut 12 sekund5 189 w 7 min 12 s5,189 w 7 min 12 s5,189 toddobaadyo 7 daqiiqo 12 ilbiriqsi5 189 javë 7 minuta 12 sekonda5.189 w 7 min 12 swiki 5,189 dakika 7 sekunde 125,189 வாரங்கள் 7 நிமிடங்கள் 12 விநாடிகள்5,189 వారాలు 7 నిమిషాలు 12 సెకన్లు5 189 w 7 min 12 s5,189 w 7 min 12 s5 189 hepde 7 minut 12 sekuntuike ʻe 5,189 miniti ʻe 7 sekoni ʻe 125.189 hafta 7 dakika 12 saniye5 189 w 7 min 12 s5 189 w 7 min 12 s5 189 w 7 min 12 s

5,189 ھەپتە 7 مىنۇت 12 سېكۇنت

5 189 тижня 7 хвилини 12 секунди5,189 weeks 7 minutes 12 seconds

5,189 ہفتے 7 منٹ 12 سیکنڈ

5 189 hafta 7 daqiqa 12 soniya5,189 w 7 min 12 s5.189 tuần 7 phút 12 giây5,189 w 7 min 12 s5’189 wučä 7 minüte 12 sekunde5.189 w 7 min 12 s5,189 w 7 min 12 s5 189 w 7 min 12 s5,189 ọṣ 7 ìṣ 12ìṣ àáy5.189 sẽmãna-ita 7 minutu-ita 12 segũdu-ita5,189 週 7 分鐘 12 秒5 189 w 7 min 12 s5,189周 7分钟 12秒钟5,189 amaviki 7 amaminithi 12 amasekhondi
5 dae5 d

5 يوم

5 দিন5 d5 díes5 gün5 сутак5 d5 d5 дни5 d5 দিন5 d5 dana5 dies5 𑄘𑄨𑄚𑄴5 де5 ka mga adlaw5 d5 ᎯᎸᏍᎩ ᏧᏒᎯᏓ5 d5 diwrnod5 dage5 d5 Tage5 d5 d5 dཉིན་ཞག་ 55 dŋkeke 55 ημέρες5 days5 d5 días5 ööpäeva5 egun5 d

5 روز

5 d5 päivää5 na araw5 dagar5 jours5 zornadis5 deien5 lá5 latha5 días5 Tääg5 d5 d5 lā

5 ימים

5 दिन5 dana5 dnjow5 օր5 hari5 d5 d5 giorni5 日5 lɛ́Ꞌ5 d5 dina5 დღე5 d5 d5 d5 diakurã 55 d5 d5 тәулік5 d5 d5 d5 ថ្ងៃ5 ದಿನಗಳು5일5 दीस

5 دۄہ

5 d5 Dääsch5 күн5 d5 Deeg5-čháŋ5 d5 ມື້5 dienų5 d5 d5 d5 dienas5 d5 d5 d5 d5 d5 дена5 ദിവസം5 хоног5 d5 d5 d5 ရက်

5 روز

5 d5 døgn5 d5 दिन5 dagen5 døgn5 d5 døgn5 d5 d5 ଦିନ5 боны5 ਦਿਨ5 Dè5 doby5 dias5 dis5 d5 de zile5 d5 d5 d5 d5 күн5 d5 d5 d5 dies

5 ڏينهن

5 jándora5 d5 d5 d5 dදින 55 dní5 dni5 d5 d5 maalmood5 ditë5 dsiku 55 நாட்கள்5 రోజులు5 d5 d5 günʻaho ʻe 55 gün5 d5 d5 d

5 كۈن

5 дня5 days

5 دن

5 kun5 d5 ngày5 d5 täg5 d5 d5 dọj 55 ara-ita5 天5 d5天5 izinsuku
−4 weke 6 dae 12 uur−4 w 6 d 12 h

−4 أسبوع 6 يوم 12 ساعة

−4 সপ্তাহ 6 দিন 12 ঘণ্টা−4 w 6 d 12 h−4 selmanes 6 díes 12 hores−4 həftə 6 gün 12 saat−4 тыдня 6 сутак 12 гадзіны−4 w 6 d 12 h−4 w 6 d 12 h−4 седмици 6 дни 12 часа−4 w 6 d 12 h−4 সপ্তাহ 6 দিন 12 ঘন্টা−4 w 6 d 12 h−4 sedmica 6 dana 12 sati−4 setmanes 6 dies 12 hores−4 𑄥𑄛𑄴𑄖 6 𑄘𑄨𑄚𑄴 12 𑄊𑄧𑄚𑄴𑄘−4 кӀира 6 де 12 сахьт−4 ka mga semana 6 ka mga adlaw 12 ka mga oras−4 w 6 d 12 h−4 ᎢᏳᎾᏙᏓᏆᏍᏗ 6 ᎯᎸᏍᎩ ᏧᏒᎯᏓ 12 ᎢᏳᏟᎶᏓ−4 w 6 d 12 h−4 wythnos 6 diwrnod 12 awr−4 uger 6 dage 12 timer−4 w 6 d 12 h−4 Wochen 6 Tage 12 Stunden−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−བངུན་ཕྲག་ 4 ཉིན་ཞག་ 6 ཆུ་ཚོད་ 12−4 w 6 d 12 h−kɔsiɖa 4 ŋkeke 6 gaƒoƒo 12−4 εβδομάδες 6 ημέρες 12 ώρες−4 weeks 6 days 12 hours−4 w 6 d 12 h−4 semanas 6 días 12 horas−4 nädalat 6 ööpäeva 12 tundi−4 aste 6 egun 12 ordu−4 w 6 d 12 h

−4 هفته 6 روز 12 ساعت

−4 w 6 d 12 h−4 viikkoa 6 päivää 12 tuntia−4 na linggo 6 na araw 12 na oras−4 vikur 6 dagar 12 tímar−4 semaines 6 jours 12 heures−4 setemanis 6 zornadis 12 oris−4 wiken 6 deien 12 oere−4 seachtain 6 lá 12 uair−4 seachdain 6 latha 12 uair a thìde−4 semanas 6 días 12 horas−4 Wuche 6 Tääg 12 Schtunde−4 w 6 d 12 h−4 w 6 d 12 h−4 pule 6 lā 12 hola

−4 שבועות 6 ימים 12 שעות

−4 सप्ताह 6 दिन 12 घंटे−4 tjedana 6 dana 12 sati−4 tydźenjow 6 dnjow 12 hodźinow−4 շաբաթ 6 օր 12 ժամ−4 minggu 6 hari 12 jam−4 w 6 d 12 h−4 w 6 d 12 h−4 settimane 6 giorni 12 ore−4 週間 6 日 12 時間−4 w 6 lɛ́Ꞌ 12 háwa−4 w 6 d 12 h−4 peken 6 dina 12 jam−4 კვირა 6 დღე 12 საათი−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 simana 6 dia 12 ora−4 simỹnỹ ag kurã 6 óra ag 12−4 w 6 d 12 h−4 w 6 d 12 h−4 апта 6 тәулік 12 сағат−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 សប្ដាហ៍ 6 ថ្ងៃ 12 ម៉ោង−4 ವಾರಗಳು 6 ದಿನಗಳು 12 ಗಂಟೆಗಳು−4주 6일 12시간−4 सप्तक 6 दीस 12 वरां

−4 ہَفتہٕ 6 دۄہ 12 گٲنٹہٕ

−4 w 6 d 12 h−4 Woche 6 Dääsch 12 Schtunde−4 апта 6 күн 12 саат−4 w 6 d 12 h−4 Wochen 6 Deeg 12 Stonnen−okó 4 6-čháŋ Owápȟe 12−4 w 6 d 12 h−4 ອາທິດ 6 ມື້ 12 ຊົ່ວໂມງ−4 savaičių 6 dienų 12 valandų−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 nedēļas 6 dienas 12 stundas−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 седмици 6 дена 12 часа−4 ആഴ്ച 6 ദിവസം 12 മണിക്കൂർ−4 долоо хоног 6 хоног 12 цаг−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 ပတ် 6 ရက် 12 နာရီ

−4 هفته 6 روز 12 ساعِت

−4 w 6 d 12 h−4 uker 6 døgn 12 timer−4 w 6 d 12 h−4 हप्ता 6 दिन 12 घण्टा−4 weken 6 dagen 12 uur−4 veker 6 døgn 12 timar−4 w 6 d 12 h−4 uker 6 døgn 12 timer−4 w 6 d 12 h−4 w 6 d 12 h−4 ସପ୍ତାହ 6 ଦିନ 12 ଘଣ୍ଟା−4 къуырийы 6 боны 12 сахаты−4 ਹਫ਼ਤੇ 6 ਦਿਨ 12 ਘੰਟੇ−4 Wik 6 Dè 12 Áwa−4 tygodnia 6 doby 12 godziny−4 semanas 6 dias 12 horas−4 emnas 6 dis 12 uras−4 w 6 d 12 h−4 de săptămâni 6 de zile 12 de ore−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 нэдиэлэ 6 күн 12 чаас−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 chidas 6 dies 12 oras

−4 هفتا 6 ڏينهن 12 ڪلاڪ

−4 váhkku 6 jándora 12 diibmur−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−සති 4 දින 6 පැය 12−4 týždňov 6 dní 12 hodín−4 tednov 6 dni 12 ur−4 w 6 d 12 h−4 w 6 d 12 h−4 toddobaadyo 6 maalmood 12 saacadood−4 javë 6 ditë 12 orë−4 w 6 d 12 h−wiki 4 siku 6 saa 12−4 வாரங்கள் 6 நாட்கள் 12 மணிநேரங்கள்−4 వారాలు 6 రోజులు 12 గంటలు−4 w 6 d 12 h−4 w 6 d 12 h−4 hepde 6 gün 12 sagat−uike ʻe 4 ʻaho ʻe 6 houa ʻe 12−4 hafta 6 gün 12 saat−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h

−4 ھەپتە 6 كۈن 12 سائەت

−4 тижня 6 дня 12 години−4 weeks 6 days 12 hours

−4 ہفتے 6 دن 12 گھنٹے

−4 hafta 6 kun 12 soat−4 w 6 d 12 h−4 tuần 6 ngày 12 giờ−4 w 6 d 12 h−4 wučä 6 täg 12 stunde−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 ọṣ ọj 6 12 wkt−4 sẽmãna-ita 6 ara-ita 12 hura-ita−4 週 6 天 12 小時−4 w 6 d 12 h−4周 6天 12小时−4 amaviki 6 izinsuku 12 amahora
4 weke 3 dae 14 uur 24 minute4 w 3 d 14 h 24 min

4 أسبوع 3 يوم 14 ساعة 24 دقيقة

4 সপ্তাহ 3 দিন 14 ঘণ্টা 24 মিনিট4 w 3 d 14 h 24 min4 selmanes 3 díes 14 hores 24 minutos4 həftə 3 gün 14 saat 24 dəqiqə4 тыдня 3 сутак 14 гадзіны 24 хвіліны4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 седмици 3 дни 14 часа 24 минути4 w 3 d 14 h 24 min4 সপ্তাহ 3 দিন 14 ঘন্টা 24 মিনিট4 w 3 d 14 h 24 min4 sedmica 3 dana 14 sati 24 minuta4 setmanes 3 dies 14 hores 24 minuts4 𑄥𑄛𑄴𑄖 3 𑄘𑄨𑄚𑄴 14 𑄊𑄧𑄚𑄴𑄘 24 𑄟𑄨𑄚𑄨𑄖𑄴4 кӀира 3 де 14 сахьт 24 минот4 ka mga semana 3 ka mga adlaw 14 ka mga oras 24 ka mga minuto4 w 3 d 14 h 24 min4 ᎢᏳᎾᏙᏓᏆᏍᏗ 3 ᎯᎸᏍᎩ ᏧᏒᎯᏓ 14 ᎢᏳᏟᎶᏓ 24 ᎢᏯᏔᏬᏍᏔᏅ4 w 3 d 14 h 24 min4 wythnos 3 diwrnod 14 awr 24 munud4 uger 3 dage 14 timer 24 minutter4 w 3 d 14 h 24 min4 Wochen 3 Tage 14 Stunden 24 Minuten4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 minབངུན་ཕྲག་ 4 ཉིན་ཞག་ 3 ཆུ་ཚོད་ 14 སྐར་མ་ 244 w 3 d 14 h 24 minkɔsiɖa 4 ŋkeke 3 gaƒoƒo 14 aɖabaƒoƒo 244 εβδομάδες 3 ημέρες 14 ώρες 24 λεπτά4 weeks 3 days 14 hours 24 minutes4 w 3 d 14 h 24 min4 semanas 3 días 14 horas 24 minutos4 nädalat 3 ööpäeva 14 tundi 24 minutit4 aste 3 egun 14 ordu 24 minutu4 w 3 d 14 h 24 min

4 هفته 3 روز 14 ساعت 24 دقیقه

4 w 3 d 14 h 24 min4 viikkoa 3 päivää 14 tuntia 24 minuuttia4 na linggo 3 na araw 14 na oras 24 na minuto4 vikur 3 dagar 14 tímar 24 minuttir4 semaines 3 jours 14 heures 24 minutes4 setemanis 3 zornadis 14 oris 24 minûts4 wiken 3 deien 14 oere 24 minuten4 seachtain 3 lá 14 uair 24 nóiméad4 seachdain 3 latha 14 uair a thìde 24 mionaid4 semanas 3 días 14 horas 24 minutos4 Wuche 3 Tääg 14 Schtunde 24 Minuute4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 pule 3 lā 14 hola 24 minuke

4 שבועות 3 ימים 14 שעות 24 דקות

4 सप्ताह 3 दिन 14 घंटे 24 मिनट4 tjedana 3 dana 14 sati 24 minuta4 tydźenjow 3 dnjow 14 hodźinow 24 minutow4 շաբաթ 3 օր 14 ժամ 24 րոպե4 minggu 3 hari 14 jam 24 menit4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 settimane 3 giorni 14 ore 24 minuti4 週間 3 日 14 時間 24 分4 w 3 lɛ́Ꞌ 14 háwa 24 minút4 w 3 d 14 h 24 min4 peken 3 dina 14 jam 24 menit4 კვირა 3 დღე 14 საათი 24 წუთი4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 simana 3 dia 14 ora 24 minutu4 simỹnỹ ag kurã 3 óra ag 14 mĩnũtu 244 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 апта 3 тәулік 14 сағат 24 минут4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 សប្ដាហ៍ 3 ថ្ងៃ 14 ម៉ោង 24 នាទី4 ವಾರಗಳು 3 ದಿನಗಳು 14 ಗಂಟೆಗಳು 24 ನಿಮಿಷಗಳು4주 3일 14시간 24분4 सप्तक 3 दीस 14 वरां 24 मिण्टां

4 ہَفتہٕ 3 دۄہ 14 گٲنٹہٕ 24 مِنَٹ

4 w 3 d 14 h 24 min4 Woche 3 Dääsch 14 Schtunde 24 Menutte4 апта 3 күн 14 саат 24 мүнөт4 w 3 d 14 h 24 min4 Wochen 3 Deeg 14 Stonnen 24 Minuttenokó 4 3-čháŋ Owápȟe 14 24 min4 w 3 d 14 h 24 min4 ອາທິດ 3 ມື້ 14 ຊົ່ວໂມງ 24 ນາທີ4 savaičių 3 dienų 14 valandų 24 minučių4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 nedēļas 3 dienas 14 stundas 24 minūtes4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 седмици 3 дена 14 часа 24 минути4 ആഴ്ച 3 ദിവസം 14 മണിക്കൂർ 24 മിനിറ്റ്4 долоо хоног 3 хоног 14 цаг 24 минут4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 ပတ် 3 ရက် 14 နာရီ 24 မိနစ်

4 هفته 3 روز 14 ساعِت 24 دقیقه

4 w 3 d 14 h 24 min4 uker 3 døgn 14 timer 24 minutter4 w 3 d 14 h 24 min4 हप्ता 3 दिन 14 घण्टा 24 मिनेट4 weken 3 dagen 14 uur 24 minuten4 veker 3 døgn 14 timar 24 minutt4 w 3 d 14 h 24 min4 uker 3 døgn 14 timer 24 minutter4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 ସପ୍ତାହ 3 ଦିନ 14 ଘଣ୍ଟା 24 ମିନିଟ୍4 къуырийы 3 боны 14 сахаты 24 минуты4 ਹਫ਼ਤੇ 3 ਦਿਨ 14 ਘੰਟੇ 24 ਮਿੰਟ4 Wik 3 Dè 14 Áwa 24 Mínit4 tygodnia 3 doby 14 godziny 24 minuty4 semanas 3 dias 14 horas 24 minutos4 emnas 3 dis 14 uras 24 minutas4 w 3 d 14 h 24 min4 de săptămâni 3 de zile 14 de ore 24 de minute4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 нэдиэлэ 3 күн 14 чаас 24 мүнүүтэ4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 chidas 3 dies 14 oras 24 minutos

4 هفتا 3 ڏينهن 14 ڪلاڪ 24 منٽ

4 váhkku 3 jándora 14 diibmur 24 minuhtta4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 minසති 4 දින 3 පැය 14 මිනිත්තු 244 týždňov 3 dní 14 hodín 24 minút4 tednov 3 dni 14 ur 24 minut4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 toddobaadyo 3 maalmood 14 saacadood 24 daqiiqo4 javë 3 ditë 14 orë 24 minuta4 w 3 d 14 h 24 minwiki 4 siku 3 saa 14 dakika 244 வாரங்கள் 3 நாட்கள் 14 மணிநேரங்கள் 24 நிமிடங்கள்4 వారాలు 3 రోజులు 14 గంటలు 24 నిమిషాలు4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 hepde 3 gün 14 sagat 24 minutuike ʻe 4 ʻaho ʻe 3 houa ʻe 14 miniti ʻe 244 hafta 3 gün 14 saat 24 dakika4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min

4 ھەپتە 3 كۈن 14 سائەت 24 مىنۇت

4 тижня 3 дня 14 години 24 хвилини4 weeks 3 days 14 hours 24 minutes

4 ہفتے 3 دن 14 گھنٹے 24 منٹ

4 hafta 3 kun 14 soat 24 daqiqa4 w 3 d 14 h 24 min4 tuần 3 ngày 14 giờ 24 phút4 w 3 d 14 h 24 min4 wučä 3 täg 14 stunde 24 minüte4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 ọṣ ọj 3 14 wkt 24 ìṣ4 sẽmãna-ita 3 ara-ita 14 hura-ita 24 minutu-ita4 週 3 天 14 小時 24 分鐘4 w 3 d 14 h 24 min4周 3天 14小时 24分钟4 amaviki 3 izinsuku 14 amahora 24 amaminithi
4 weke 12 uur4 w 12 h

4 أسبوع 12 ساعة

4 সপ্তাহ 12 ঘণ্টা4 w 12 h4 selmanes 12 hores4 həftə 12 saat4 тыдня 12 гадзіны4 w 12 h4 w 12 h4 седмици 12 часа4 w 12 h4 সপ্তাহ 12 ঘন্টা4 w 12 h4 sedmica 12 sati4 setmanes 12 hores4 𑄥𑄛𑄴𑄖 12 𑄊𑄧𑄚𑄴𑄘4 кӀира 12 сахьт4 ka mga semana 12 ka mga oras4 w 12 h4 ᎢᏳᎾᏙᏓᏆᏍᏗ 12 ᎢᏳᏟᎶᏓ4 w 12 h4 wythnos 12 awr4 uger 12 timer4 w 12 h4 Wochen 12 Stunden4 w 12 h4 w 12 h4 w 12 hབངུན་ཕྲག་ 4 ཆུ་ཚོད་ 124 w 12 hkɔsiɖa 4 gaƒoƒo 124 εβδομάδες 12 ώρες4 weeks 12 hours4 w 12 h4 semanas 12 horas4 nädalat 12 tundi4 aste 12 ordu4 w 12 h

4 هفته 12 ساعت

4 w 12 h4 viikkoa 12 tuntia4 na linggo 12 na oras4 vikur 12 tímar4 semaines 12 heures4 setemanis 12 oris4 wiken 12 oere4 seachtain 12 uair4 seachdain 12 uair a thìde4 semanas 12 horas4 Wuche 12 Schtunde4 w 12 h4 w 12 h4 pule 12 hola

4 שבועות 12 שעות

4 सप्ताह 12 घंटे4 tjedana 12 sati4 tydźenjow 12 hodźinow4 շաբաթ 12 ժամ4 minggu 12 jam4 w 12 h4 w 12 h4 settimane 12 ore4 週間 12 時間4 w 12 háwa4 w 12 h4 peken 12 jam4 კვირა 12 საათი4 w 12 h4 w 12 h4 w 12 h4 simana 12 ora4 simỹnỹ ag óra ag 124 w 12 h4 w 12 h4 апта 12 сағат4 w 12 h4 w 12 h4 w 12 h4 សប្ដាហ៍ 12 ម៉ោង4 ವಾರಗಳು 12 ಗಂಟೆಗಳು4주 12시간4 सप्तक 12 वरां

4 ہَفتہٕ 12 گٲنٹہٕ

4 w 12 h4 Woche 12 Schtunde4 апта 12 саат4 w 12 h4 Wochen 12 Stonnenokó 4 Owápȟe 124 w 12 h4 ອາທິດ 12 ຊົ່ວໂມງ4 savaičių 12 valandų4 w 12 h4 w 12 h4 w 12 h4 nedēļas 12 stundas4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 седмици 12 часа4 ആഴ്ച 12 മണിക്കൂർ4 долоо хоног 12 цаг4 w 12 h4 w 12 h4 w 12 h4 ပတ် 12 နာရီ

4 هفته 12 ساعِت

4 w 12 h4 uker 12 timer4 w 12 h4 हप्ता 12 घण्टा4 weken 12 uur4 veker 12 timar4 w 12 h4 uker 12 timer4 w 12 h4 w 12 h4 ସପ୍ତାହ 12 ଘଣ୍ଟା4 къуырийы 12 сахаты4 ਹਫ਼ਤੇ 12 ਘੰਟੇ4 Wik 12 Áwa4 tygodnia 12 godziny4 semanas 12 horas4 emnas 12 uras4 w 12 h4 de săptămâni 12 de ore4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 нэдиэлэ 12 чаас4 w 12 h4 w 12 h4 w 12 h4 chidas 12 oras

4 هفتا 12 ڪلاڪ

4 váhkku 12 diibmur4 w 12 h4 w 12 h4 w 12 h4 w 12 hසති 4 පැය 124 týždňov 12 hodín4 tednov 12 ur4 w 12 h4 w 12 h4 toddobaadyo 12 saacadood4 javë 12 orë4 w 12 hwiki 4 saa 124 வாரங்கள் 12 மணிநேரங்கள்4 వారాలు 12 గంటలు4 w 12 h4 w 12 h4 hepde 12 sagatuike ʻe 4 houa ʻe 124 hafta 12 saat4 w 12 h4 w 12 h4 w 12 h

4 ھەپتە 12 سائەت

4 тижня 12 години4 weeks 12 hours

4 ہفتے 12 گھنٹے

4 hafta 12 soat4 w 12 h4 tuần 12 giờ4 w 12 h4 wučä 12 stunde4 w 12 h4 w 12 h4 w 12 h4 ọṣ 12 wkt4 sẽmãna-ita 12 hura-ita4 週 12 小時4 w 12 h4周 12小时4 amaviki 12 amahora
NANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANA
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n
afakarasasaastazbebembezbgbmbnbobscaccpcecebcggchrckbcydadavdedjeduadyodzebueeeleneoeseteuewofafffifilfofrfurfygagdglgswguzgvhawhehihrhsbhyidigiiitjajgojmcjvkakabkamkdekeakgpkhqkikkkkjklklnkmknkokokksksfkshkylaglblktlnloltluluoluylvmaimermfemgmghmkmlmnmnimtmuamymznnaqnbndnenlnnnnhnonusomorospapcmplptrmrnrorofrwrwksasahsaqsatsbpscsdsesehsessgshisiskslsmnsnsosqsuswtatetgtitktotrtttwqtzmugukunduruzvaivivunwaewoxogyavyoyrlyuezghzhzu
1 dag 4 minute 19 sekondes1 d 4 min 19 s

يوم 4 دقيقة 19 ثانية

1 দিন 4 মিনিট 19 ছেকেণ্ড1 d 4 min 19 s1 día 4 minutos 19 segundos1 gün 4 dəqiqə 19 saniyə1 суткі 4 хвіліны 19 секунды1 d 4 min 19 s1 d 4 min 19 s1 ден 4 минути 19 секунди1 d 4 min 19 s1 দিন 4 মিনিট 19 সেকেন্ড1 d 4 min 19 s1 dan 4 minuta 19 sekundi1 dia 4 minuts 19 segons1 𑄘𑄨𑄚𑄴 4 𑄟𑄨𑄚𑄨𑄖𑄴 19 𑄥𑄬𑄇𑄬𑄚𑄳𑄓𑄴1 де 4 минот 19 секунд1 ka adlaw 4 ka mga minuto 19 ka mga segundo1 d 4 min 19 s1 ᎢᎦ 4 ᎢᏯᏔᏬᏍᏔᏅ 19 ᏗᏎᏢ1 d 4 min 19 s1 diwrnod 4 munud 19 eiliad1 dag 4 minutter 19 sekunder1 d 4 min 19 s1 Tag 4 Minuten 19 Sekunden1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 sཉིན་ཞག་ 1 སྐར་མ་ 4 སྐར་ཆ་ 191 d 4 min 19 sŋkeke 1 aɖabaƒoƒo 4 sekend 19 wo1 ημέρα 4 λεπτά 19 δευτερόλεπτα1 day 4 minutes 19 seconds1 d 4 min 19 s1 día 4 minutos 19 segundos1 ööpäev 4 minutit 19 sekundit1 egun 4 minutu 19 segundo1 d 4 min 19 s

1 روز 4 دقیقه 19 ثانیه

1 d 4 min 19 s1 päivä 4 minuuttia 19 sekuntia1 araw 4 na minuto 19 na segundo1 dagur 4 minuttir 19 sekundir1 jour 4 minutes 19 secondes1 zornade 4 minûts 19 seconts1 dei 4 minuten 19 sekonden1 lá 4 nóiméad 19 soicind1 latha 4 mionaid 19 diog1 día 4 minutos 19 segundos1 Taag 4 Minuute 19 Sekunde1 d 4 min 19 s1 d 4 min 19 s1 lā 4 minuke 19 kekona

יום 1 4 דקות 19 שניות

1 दिन 4 मिनट 19 सेकंड1 dan 4 minuta 19 sekundi1 dźeń 4 minutow 19 sekundow1 օր 4 րոպե 19 վայրկյան1 hari 4 menit 19 detik1 d 4 min 19 s1 d 4 min 19 s1 giorno 4 minuti 19 secondi1 日 4 分 19 秒1 lɛ́Ꞌ 4 minút 19 s1 d 4 min 19 s1 dina 4 menit 19 detik1 დღე 4 წუთი 19 წამი1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 dia 4 minutu 19 sigundukurã 1 mĩnũtu 4 sigũnu 191 d 4 min 19 s1 d 4 min 19 s1 тәулік 4 минут 19 секунд1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 ថ្ងៃ 4 នាទី 19 វិនាទី1 ದಿನ 4 ನಿಮಿಷಗಳು 19 ಸೆಕೆಂಡುಗಳು1일 4분 19초1 दीस 4 मिण्टां 19 सेकंदांनी

1 دۄہ 4 مِنَٹ 19 سیکَنڈ

1 d 4 min 19 s1 Dääsch 4 Menutte 19 Sekunde1 күн 4 мүнөт 19 секунд1 d 4 min 19 s1 Dag 4 Minutten 19 Sekonnen1-čháŋ 4 min Okpí 191 d 4 min 19 s1 ມື້ 4 ນາທີ 19 ວິນາທີ1 diena 4 minučių 19 sekundžių1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 diena 4 minūtes 19 sekundes1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 ден 4 минути 19 секунди1 ദിവസം 4 മിനിറ്റ് 19 സെക്കൻഡ്1 хоног 4 минут 19 секунд1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 ရက် 4 မိနစ် 19 စက္ကန့်

1 روز 4 دقیقه 19 ثانیه

1 d 4 min 19 s1 døgn 4 minutter 19 sekunder1 d 4 min 19 s1 दिन 4 मिनेट 19 सेकेन्ड1 dag 4 minuten 19 seconden1 døgn 4 minutt 19 sekund1 d 4 min 19 s1 døgn 4 minutter 19 sekunder1 d 4 min 19 s1 d 4 min 19 s1 ଦିନ 4 ମିନିଟ୍ 19 ସେକେଣ୍ଡ1 бон 4 минуты 19 секунды1 ਦਿਨ 4 ਮਿੰਟ 19 ਸਕਿੰਟ1 Dè 4 Mínit 19 Sẹ́kọn1 doba 4 minuty 19 sekundy1 dia 4 minutos 19 segundos1 di 4 minutas 19 secundas1 d 4 min 19 s1 zi 4 de minute 19 de secunde1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 күн 4 мүнүүтэ 19 сөкүүндэ1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 die 4 minutos 19 segundos

1 ڏينهن 4 منٽ 19 سيڪنڊ

1 jándor 4 minuhtta 19 sekundda1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 sදින 1 මිනිත්තු 4 තත්පර 191 deň 4 minút 19 sekúnd1 dan 4 minut 19 sekund1 d 4 min 19 s1 d 4 min 19 s1 maalin 4 daqiiqo 19 ilbiriqsi1 ditë 4 minuta 19 sekonda1 d 4 min 19 ssiku 1 dakika 4 sekunde 191 நாள் 4 நிமிடங்கள் 19 விநாடிகள்1 రోజు 4 నిమిషాలు 19 సెకన్లు1 d 4 min 19 s1 d 4 min 19 s1 gün 4 minut 19 sekuntʻaho ʻe 1 miniti ʻe 4 sekoni ʻe 191 gün 4 dakika 19 saniye1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 s

1 كۈن 4 مىنۇت 19 سېكۇنت

1 день 4 хвилини 19 секунди1 day 4 minutes 19 seconds

1 دن 4 منٹ 19 سیکنڈ

1 kun 4 daqiqa 19 soniya1 d 4 min 19 s1 ngày 4 phút 19 giây1 d 4 min 19 s1 täg 4 minüte 19 sekunde1 d 4 min 19 s1 d 4 min 19 s1 d 4 min 19 sọj 1 4 ìṣ 19ìṣ àáy1 ara 4 minutu-ita 19 segũdu-ita1 天 4 分鐘 19 秒1 d 4 min 19 s1天 4分钟 19秒钟1 usuku 4 amaminithi 19 amasekhondi
5 189 weke 7 minute 12 sekondes5,189 w 7 min 12 s

5,189 أسبوع 7 دقيقة 12 ثانية

5,189 সপ্তাহ 7 মিনিট 12 ছেকেণ্ড5,189 w 7 min 12 s5.189 selmanes 7 minutos 12 segundos5.189 həftə 7 dəqiqə 12 saniyə5 189 тыдня 7 хвіліны 12 секунды5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 седмици 7 минути 12 секунди5,189 w 7 min 12 s5,189 সপ্তাহ 7 মিনিট 12 সেকেন্ড5,189 w 7 min 12 s5.189 sedmica 7 minuta 12 sekundi5.189 setmanes 7 minuts 12 segons5,189 𑄥𑄛𑄴𑄖 7 𑄟𑄨𑄚𑄨𑄖𑄴 12 𑄥𑄬𑄇𑄬𑄚𑄳𑄓𑄴5,189 кӀира 7 минот 12 секунд5,189 ka mga semana 7 ka mga minuto 12 ka mga segundo5,189 w 7 min 12 s5,189 ᎢᏳᎾᏙᏓᏆᏍᏗ 7 ᎢᏯᏔᏬᏍᏔᏅ 12 ᏗᏎᏢ5,189 w 7 min 12 s5,189 wythnos 7 munud 12 eiliad5.189 uger 7 minutter 12 sekunder5,189 w 7 min 12 s5.189 Wochen 7 Minuten 12 Sekunden5 189 w 7 min 12 s5 189 w 7 min 12 s5 189 w 7 min 12 sབངུན་ཕྲག་ 5,189 སྐར་མ་ 7 སྐར་ཆ་ 125,189 w 7 min 12 skɔsiɖa 5,189 aɖabaƒoƒo 7 sekend 12 wo5.189 εβδομάδες 7 λεπτά 12 δευτερόλεπτα5,189 weeks 7 minutes 12 seconds5 189 w 7 min 12 s5.189 semanas 7 minutos 12 segundos5 189 nädalat 7 minutit 12 sekundit5.189 aste 7 minutu 12 segundo5 189 w 7 min 12 s

5,189 هفته 7 دقیقه 12 ثانیه

5 189 w 7 min 12 s5 189 viikkoa 7 minuuttia 12 sekuntia5,189 na linggo 7 na minuto 12 na segundo5.189 vikur 7 minuttir 12 sekundir5 189 semaines 7 minutes 12 secondes5.189 setemanis 7 minûts 12 seconts5.189 wiken 7 minuten 12 sekonden5,189 seachtain 7 nóiméad 12 soicind5,189 seachdain 7 mionaid 12 diog5.189 semanas 7 minutos 12 segundos5’189 Wuche 7 Minuute 12 Sekunde5,189 w 7 min 12 s5,189 w 7 min 12 s5,189 pule 7 minuke 12 kekona

5,189 שבועות 7 דקות 12 שניות

5,189 सप्ताह 7 मिनट 12 सेकंड5.189 tjedana 7 minuta 12 sekundi5.189 tydźenjow 7 minutow 12 sekundow5 189 շաբաթ 7 րոպե 12 վայրկյան5.189 minggu 7 menit 12 detik5,189 w 7 min 12 s5,189 w 7 min 12 s5.189 settimane 7 minuti 12 secondi5,189 週間 7 分 12 秒5.189 w 7 minút 12 s5,189 w 7 min 12 s5.189 peken 7 menit 12 detik5 189 კვირა 7 წუთი 12 წამი5 189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 simana 7 minutu 12 sigundu5.189 simỹnỹ ag mĩnũtu 7 sigũnu 125 189 w 7 min 12 s5,189 w 7 min 12 s5 189 апта 7 минут 12 секунд5.189 w 7 min 12 s5.189 w 7 min 12 s5,189 w 7 min 12 s5.189 សប្ដាហ៍ 7 នាទី 12 វិនាទី5,189 ವಾರಗಳು 7 ನಿಮಿಷಗಳು 12 ಸೆಕೆಂಡುಗಳು5,189주 7분 12초5,189 सप्तक 7 मिण्टां 12 सेकंदांनी

5،189 ہَفتہٕ 7 مِنَٹ 12 سیکَنڈ

5 189 w 7 min 12 s5 189 Woche 7 Menutte 12 Sekunde5 189 апта 7 мүнөт 12 секунд5,189 w 7 min 12 s5.189 Wochen 7 Minutten 12 Sekonnenokó 5,189 7 min Okpí 125.189 w 7 min 12 s5.189 ອາທິດ 7 ນາທີ 12 ວິນາທີ5 189 savaičių 7 minučių 12 sekundžių5.189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 nedēļas 7 minūtes 12 sekundes5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 w 7 min 12 s5,189 w 7 min 12 s5.189 w 7 min 12 s5.189 седмици 7 минути 12 секунди5,189 ആഴ്ച 7 മിനിറ്റ് 12 സെക്കൻഡ്5,189 долоо хоног 7 минут 12 секунд5,189 w 7 min 12 s5,189 w 7 min 12 s5.189 w 7 min 12 s5,189 ပတ် 7 မိနစ် 12 စက္ကန့်

5,189 هفته 7 دقیقه 12 ثانیه

5,189 w 7 min 12 s5 189 uker 7 minutter 12 sekunder5,189 w 7 min 12 s5,189 हप्ता 7 मिनेट 12 सेकेन्ड5.189 weken 7 minuten 12 seconden5 189 veker 7 minutt 12 sekund5.189 w 7 min 12 s5 189 uker 7 minutter 12 sekunder5,189 w 7 min 12 s5,189 w 7 min 12 s5,189 ସପ୍ତାହ 7 ମିନିଟ୍ 12 ସେକେଣ୍ଡ5 189 къуырийы 7 минуты 12 секунды5,189 ਹਫ਼ਤੇ 7 ਮਿੰਟ 12 ਸਕਿੰਟ5,189 Wik 7 Mínit 12 Sẹ́kọn5 189 tygodnia 7 minuty 12 sekundy5.189 semanas 7 minutos 12 segundos5’189 emnas 7 minutas 12 secundas5.189 w 7 min 12 s5.189 de săptămâni 7 de minute 12 de secunde5,189 w 7 min 12 s5.189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5 189 нэдиэлэ 7 мүнүүтэ 12 сөкүүндэ5,189 w 7 min 12 s5,189 w 7 min 12 s5,189 w 7 min 12 s5.189 chidas 7 minutos 12 segundos

5,189 هفتا 7 منٽ 12 سيڪنڊ

5 189 váhkku 7 minuhtta 12 sekundda5.189 w 7 min 12 s5 189 w 7 min 12 s5.189 w 7 min 12 s5 189 w 7 min 12 sසති 5,189 මිනිත්තු 7 තත්පර 125 189 týždňov 7 minút 12 sekúnd5.189 tednov 7 minut 12 sekund5 189 w 7 min 12 s5,189 w 7 min 12 s5,189 toddobaadyo 7 daqiiqo 12 ilbiriqsi5 189 javë 7 minuta 12 sekonda5.189 w 7 min 12 swiki 5,189 dakika 7 sekunde 125,189 வாரங்கள் 7 நிமிடங்கள் 12 விநாடிகள்5,189 వారాలు 7 నిమిషాలు 12 సెకన్లు5 189 w 7 min 12 s5,189 w 7 min 12 s5 189 hepde 7 minut 12 sekuntuike ʻe 5,189 miniti ʻe 7 sekoni ʻe 125.189 hafta 7 dakika 12 saniye5 189 w 7 min 12 s5 189 w 7 min 12 s5 189 w 7 min 12 s

5,189 ھەپتە 7 مىنۇت 12 سېكۇنت

5 189 тижня 7 хвилини 12 секунди5,189 weeks 7 minutes 12 seconds

5,189 ہفتے 7 منٹ 12 سیکنڈ

5 189 hafta 7 daqiqa 12 soniya5,189 w 7 min 12 s5.189 tuần 7 phút 12 giây5,189 w 7 min 12 s5’189 wučä 7 minüte 12 sekunde5.189 w 7 min 12 s5,189 w 7 min 12 s5 189 w 7 min 12 s5,189 ọṣ 7 ìṣ 12ìṣ àáy5.189 sẽmãna-ita 7 minutu-ita 12 segũdu-ita5,189 週 7 分鐘 12 秒5 189 w 7 min 12 s5,189周 7分钟 12秒钟5,189 amaviki 7 amaminithi 12 amasekhondi
5 dae5 d

5 يوم

5 দিন5 d5 díes5 gün5 сутак5 d5 d5 дни5 d5 দিন5 d5 dana5 dies5 𑄘𑄨𑄚𑄴5 де5 ka mga adlaw5 d5 ᎯᎸᏍᎩ ᏧᏒᎯᏓ5 d5 diwrnod5 dage5 d5 Tage5 d5 d5 dཉིན་ཞག་ 55 dŋkeke 55 ημέρες5 days5 d5 días5 ööpäeva5 egun5 d

5 روز

5 d5 päivää5 na araw5 dagar5 jours5 zornadis5 deien5 lá5 latha5 días5 Tääg5 d5 d5 lā

5 ימים

5 दिन5 dana5 dnjow5 օր5 hari5 d5 d5 giorni5 日5 lɛ́Ꞌ5 d5 dina5 დღე5 d5 d5 d5 diakurã 55 d5 d5 тәулік5 d5 d5 d5 ថ្ងៃ5 ದಿನಗಳು5일5 दीस

5 دۄہ

5 d5 Dääsch5 күн5 d5 Deeg5-čháŋ5 d5 ມື້5 dienų5 d5 d5 d5 dienas5 d5 d5 d5 d5 d5 дена5 ദിവസം5 хоног5 d5 d5 d5 ရက်

5 روز

5 d5 døgn5 d5 दिन5 dagen5 døgn5 d5 døgn5 d5 d5 ଦିନ5 боны5 ਦਿਨ5 Dè5 doby5 dias5 dis5 d5 de zile5 d5 d5 d5 d5 күн5 d5 d5 d5 dies

5 ڏينهن

5 jándora5 d5 d5 d5 dදින 55 dní5 dni5 d5 d5 maalmood5 ditë5 dsiku 55 நாட்கள்5 రోజులు5 d5 d5 günʻaho ʻe 55 gün5 d5 d5 d

5 كۈن

5 дня5 days

5 دن

5 kun5 d5 ngày5 d5 täg5 d5 d5 dọj 55 ara-ita5 天5 d5天5 izinsuku
−4 weke 6 dae 12 uur−4 w 6 d 12 h

−4 أسبوع 6 يوم 12 ساعة

−4 সপ্তাহ 6 দিন 12 ঘণ্টা−4 w 6 d 12 h−4 selmanes 6 díes 12 hores−4 həftə 6 gün 12 saat−4 тыдня 6 сутак 12 гадзіны−4 w 6 d 12 h−4 w 6 d 12 h−4 седмици 6 дни 12 часа−4 w 6 d 12 h−4 সপ্তাহ 6 দিন 12 ঘন্টা−4 w 6 d 12 h−4 sedmica 6 dana 12 sati−4 setmanes 6 dies 12 hores−4 𑄥𑄛𑄴𑄖 6 𑄘𑄨𑄚𑄴 12 𑄊𑄧𑄚𑄴𑄘−4 кӀира 6 де 12 сахьт−4 ka mga semana 6 ka mga adlaw 12 ka mga oras−4 w 6 d 12 h−4 ᎢᏳᎾᏙᏓᏆᏍᏗ 6 ᎯᎸᏍᎩ ᏧᏒᎯᏓ 12 ᎢᏳᏟᎶᏓ−4 w 6 d 12 h−4 wythnos 6 diwrnod 12 awr−4 uger 6 dage 12 timer−4 w 6 d 12 h−4 Wochen 6 Tage 12 Stunden−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−བངུན་ཕྲག་ 4 ཉིན་ཞག་ 6 ཆུ་ཚོད་ 12−4 w 6 d 12 h−kɔsiɖa 4 ŋkeke 6 gaƒoƒo 12−4 εβδομάδες 6 ημέρες 12 ώρες−4 weeks 6 days 12 hours−4 w 6 d 12 h−4 semanas 6 días 12 horas−4 nädalat 6 ööpäeva 12 tundi−4 aste 6 egun 12 ordu−4 w 6 d 12 h

−4 هفته 6 روز 12 ساعت

−4 w 6 d 12 h−4 viikkoa 6 päivää 12 tuntia−4 na linggo 6 na araw 12 na oras−4 vikur 6 dagar 12 tímar−4 semaines 6 jours 12 heures−4 setemanis 6 zornadis 12 oris−4 wiken 6 deien 12 oere−4 seachtain 6 lá 12 uair−4 seachdain 6 latha 12 uair a thìde−4 semanas 6 días 12 horas−4 Wuche 6 Tääg 12 Schtunde−4 w 6 d 12 h−4 w 6 d 12 h−4 pule 6 lā 12 hola

−4 שבועות 6 ימים 12 שעות

−4 सप्ताह 6 दिन 12 घंटे−4 tjedana 6 dana 12 sati−4 tydźenjow 6 dnjow 12 hodźinow−4 շաբաթ 6 օր 12 ժամ−4 minggu 6 hari 12 jam−4 w 6 d 12 h−4 w 6 d 12 h−4 settimane 6 giorni 12 ore−4 週間 6 日 12 時間−4 w 6 lɛ́Ꞌ 12 háwa−4 w 6 d 12 h−4 peken 6 dina 12 jam−4 კვირა 6 დღე 12 საათი−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 simana 6 dia 12 ora−4 simỹnỹ ag kurã 6 óra ag 12−4 w 6 d 12 h−4 w 6 d 12 h−4 апта 6 тәулік 12 сағат−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 សប្ដាហ៍ 6 ថ្ងៃ 12 ម៉ោង−4 ವಾರಗಳು 6 ದಿನಗಳು 12 ಗಂಟೆಗಳು−4주 6일 12시간−4 सप्तक 6 दीस 12 वरां

−4 ہَفتہٕ 6 دۄہ 12 گٲنٹہٕ

−4 w 6 d 12 h−4 Woche 6 Dääsch 12 Schtunde−4 апта 6 күн 12 саат−4 w 6 d 12 h−4 Wochen 6 Deeg 12 Stonnen−okó 4 6-čháŋ Owápȟe 12−4 w 6 d 12 h−4 ອາທິດ 6 ມື້ 12 ຊົ່ວໂມງ−4 savaičių 6 dienų 12 valandų−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 nedēļas 6 dienas 12 stundas−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 седмици 6 дена 12 часа−4 ആഴ്ച 6 ദിവസം 12 മണിക്കൂർ−4 долоо хоног 6 хоног 12 цаг−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 ပတ် 6 ရက် 12 နာရီ

−4 هفته 6 روز 12 ساعِت

−4 w 6 d 12 h−4 uker 6 døgn 12 timer−4 w 6 d 12 h−4 हप्ता 6 दिन 12 घण्टा−4 weken 6 dagen 12 uur−4 veker 6 døgn 12 timar−4 w 6 d 12 h−4 uker 6 døgn 12 timer−4 w 6 d 12 h−4 w 6 d 12 h−4 ସପ୍ତାହ 6 ଦିନ 12 ଘଣ୍ଟା−4 къуырийы 6 боны 12 сахаты−4 ਹਫ਼ਤੇ 6 ਦਿਨ 12 ਘੰਟੇ−4 Wik 6 Dè 12 Áwa−4 tygodnia 6 doby 12 godziny−4 semanas 6 dias 12 horas−4 emnas 6 dis 12 uras−4 w 6 d 12 h−4 de săptămâni 6 de zile 12 de ore−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 нэдиэлэ 6 күн 12 чаас−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 chidas 6 dies 12 oras

−4 هفتا 6 ڏينهن 12 ڪلاڪ

−4 váhkku 6 jándora 12 diibmur−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−සති 4 දින 6 පැය 12−4 týždňov 6 dní 12 hodín−4 tednov 6 dni 12 ur−4 w 6 d 12 h−4 w 6 d 12 h−4 toddobaadyo 6 maalmood 12 saacadood−4 javë 6 ditë 12 orë−4 w 6 d 12 h−wiki 4 siku 6 saa 12−4 வாரங்கள் 6 நாட்கள் 12 மணிநேரங்கள்−4 వారాలు 6 రోజులు 12 గంటలు−4 w 6 d 12 h−4 w 6 d 12 h−4 hepde 6 gün 12 sagat−uike ʻe 4 ʻaho ʻe 6 houa ʻe 12−4 hafta 6 gün 12 saat−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h

−4 ھەپتە 6 كۈن 12 سائەت

−4 тижня 6 дня 12 години−4 weeks 6 days 12 hours

−4 ہفتے 6 دن 12 گھنٹے

−4 hafta 6 kun 12 soat−4 w 6 d 12 h−4 tuần 6 ngày 12 giờ−4 w 6 d 12 h−4 wučä 6 täg 12 stunde−4 w 6 d 12 h−4 w 6 d 12 h−4 w 6 d 12 h−4 ọṣ ọj 6 12 wkt−4 sẽmãna-ita 6 ara-ita 12 hura-ita−4 週 6 天 12 小時−4 w 6 d 12 h−4周 6天 12小时−4 amaviki 6 izinsuku 12 amahora
4 weke 3 dae 14 uur 24 minute4 w 3 d 14 h 24 min

4 أسبوع 3 يوم 14 ساعة 24 دقيقة

4 সপ্তাহ 3 দিন 14 ঘণ্টা 24 মিনিট4 w 3 d 14 h 24 min4 selmanes 3 díes 14 hores 24 minutos4 həftə 3 gün 14 saat 24 dəqiqə4 тыдня 3 сутак 14 гадзіны 24 хвіліны4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 седмици 3 дни 14 часа 24 минути4 w 3 d 14 h 24 min4 সপ্তাহ 3 দিন 14 ঘন্টা 24 মিনিট4 w 3 d 14 h 24 min4 sedmica 3 dana 14 sati 24 minuta4 setmanes 3 dies 14 hores 24 minuts4 𑄥𑄛𑄴𑄖 3 𑄘𑄨𑄚𑄴 14 𑄊𑄧𑄚𑄴𑄘 24 𑄟𑄨𑄚𑄨𑄖𑄴4 кӀира 3 де 14 сахьт 24 минот4 ka mga semana 3 ka mga adlaw 14 ka mga oras 24 ka mga minuto4 w 3 d 14 h 24 min4 ᎢᏳᎾᏙᏓᏆᏍᏗ 3 ᎯᎸᏍᎩ ᏧᏒᎯᏓ 14 ᎢᏳᏟᎶᏓ 24 ᎢᏯᏔᏬᏍᏔᏅ4 w 3 d 14 h 24 min4 wythnos 3 diwrnod 14 awr 24 munud4 uger 3 dage 14 timer 24 minutter4 w 3 d 14 h 24 min4 Wochen 3 Tage 14 Stunden 24 Minuten4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 minབངུན་ཕྲག་ 4 ཉིན་ཞག་ 3 ཆུ་ཚོད་ 14 སྐར་མ་ 244 w 3 d 14 h 24 minkɔsiɖa 4 ŋkeke 3 gaƒoƒo 14 aɖabaƒoƒo 244 εβδομάδες 3 ημέρες 14 ώρες 24 λεπτά4 weeks 3 days 14 hours 24 minutes4 w 3 d 14 h 24 min4 semanas 3 días 14 horas 24 minutos4 nädalat 3 ööpäeva 14 tundi 24 minutit4 aste 3 egun 14 ordu 24 minutu4 w 3 d 14 h 24 min

4 هفته 3 روز 14 ساعت 24 دقیقه

4 w 3 d 14 h 24 min4 viikkoa 3 päivää 14 tuntia 24 minuuttia4 na linggo 3 na araw 14 na oras 24 na minuto4 vikur 3 dagar 14 tímar 24 minuttir4 semaines 3 jours 14 heures 24 minutes4 setemanis 3 zornadis 14 oris 24 minûts4 wiken 3 deien 14 oere 24 minuten4 seachtain 3 lá 14 uair 24 nóiméad4 seachdain 3 latha 14 uair a thìde 24 mionaid4 semanas 3 días 14 horas 24 minutos4 Wuche 3 Tääg 14 Schtunde 24 Minuute4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 pule 3 lā 14 hola 24 minuke

4 שבועות 3 ימים 14 שעות 24 דקות

4 सप्ताह 3 दिन 14 घंटे 24 मिनट4 tjedana 3 dana 14 sati 24 minuta4 tydźenjow 3 dnjow 14 hodźinow 24 minutow4 շաբաթ 3 օր 14 ժամ 24 րոպե4 minggu 3 hari 14 jam 24 menit4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 settimane 3 giorni 14 ore 24 minuti4 週間 3 日 14 時間 24 分4 w 3 lɛ́Ꞌ 14 háwa 24 minút4 w 3 d 14 h 24 min4 peken 3 dina 14 jam 24 menit4 კვირა 3 დღე 14 საათი 24 წუთი4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 simana 3 dia 14 ora 24 minutu4 simỹnỹ ag kurã 3 óra ag 14 mĩnũtu 244 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 апта 3 тәулік 14 сағат 24 минут4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 សប្ដាហ៍ 3 ថ្ងៃ 14 ម៉ោង 24 នាទី4 ವಾರಗಳು 3 ದಿನಗಳು 14 ಗಂಟೆಗಳು 24 ನಿಮಿಷಗಳು4주 3일 14시간 24분4 सप्तक 3 दीस 14 वरां 24 मिण्टां

4 ہَفتہٕ 3 دۄہ 14 گٲنٹہٕ 24 مِنَٹ

4 w 3 d 14 h 24 min4 Woche 3 Dääsch 14 Schtunde 24 Menutte4 апта 3 күн 14 саат 24 мүнөт4 w 3 d 14 h 24 min4 Wochen 3 Deeg 14 Stonnen 24 Minuttenokó 4 3-čháŋ Owápȟe 14 24 min4 w 3 d 14 h 24 min4 ອາທິດ 3 ມື້ 14 ຊົ່ວໂມງ 24 ນາທີ4 savaičių 3 dienų 14 valandų 24 minučių4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 nedēļas 3 dienas 14 stundas 24 minūtes4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 седмици 3 дена 14 часа 24 минути4 ആഴ്ച 3 ദിവസം 14 മണിക്കൂർ 24 മിനിറ്റ്4 долоо хоног 3 хоног 14 цаг 24 минут4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 ပတ် 3 ရက် 14 နာရီ 24 မိနစ်

4 هفته 3 روز 14 ساعِت 24 دقیقه

4 w 3 d 14 h 24 min4 uker 3 døgn 14 timer 24 minutter4 w 3 d 14 h 24 min4 हप्ता 3 दिन 14 घण्टा 24 मिनेट4 weken 3 dagen 14 uur 24 minuten4 veker 3 døgn 14 timar 24 minutt4 w 3 d 14 h 24 min4 uker 3 døgn 14 timer 24 minutter4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 ସପ୍ତାହ 3 ଦିନ 14 ଘଣ୍ଟା 24 ମିନିଟ୍4 къуырийы 3 боны 14 сахаты 24 минуты4 ਹਫ਼ਤੇ 3 ਦਿਨ 14 ਘੰਟੇ 24 ਮਿੰਟ4 Wik 3 Dè 14 Áwa 24 Mínit4 tygodnia 3 doby 14 godziny 24 minuty4 semanas 3 dias 14 horas 24 minutos4 emnas 3 dis 14 uras 24 minutas4 w 3 d 14 h 24 min4 de săptămâni 3 de zile 14 de ore 24 de minute4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 нэдиэлэ 3 күн 14 чаас 24 мүнүүтэ4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 chidas 3 dies 14 oras 24 minutos

4 هفتا 3 ڏينهن 14 ڪلاڪ 24 منٽ

4 váhkku 3 jándora 14 diibmur 24 minuhtta4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 minසති 4 දින 3 පැය 14 මිනිත්තු 244 týždňov 3 dní 14 hodín 24 minút4 tednov 3 dni 14 ur 24 minut4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 toddobaadyo 3 maalmood 14 saacadood 24 daqiiqo4 javë 3 ditë 14 orë 24 minuta4 w 3 d 14 h 24 minwiki 4 siku 3 saa 14 dakika 244 வாரங்கள் 3 நாட்கள் 14 மணிநேரங்கள் 24 நிமிடங்கள்4 వారాలు 3 రోజులు 14 గంటలు 24 నిమిషాలు4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 hepde 3 gün 14 sagat 24 minutuike ʻe 4 ʻaho ʻe 3 houa ʻe 14 miniti ʻe 244 hafta 3 gün 14 saat 24 dakika4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min

4 ھەپتە 3 كۈن 14 سائەت 24 مىنۇت

4 тижня 3 дня 14 години 24 хвилини4 weeks 3 days 14 hours 24 minutes

4 ہفتے 3 دن 14 گھنٹے 24 منٹ

4 hafta 3 kun 14 soat 24 daqiqa4 w 3 d 14 h 24 min4 tuần 3 ngày 14 giờ 24 phút4 w 3 d 14 h 24 min4 wučä 3 täg 14 stunde 24 minüte4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 w 3 d 14 h 24 min4 ọṣ ọj 3 14 wkt 24 ìṣ4 sẽmãna-ita 3 ara-ita 14 hura-ita 24 minutu-ita4 週 3 天 14 小時 24 分鐘4 w 3 d 14 h 24 min4周 3天 14小时 24分钟4 amaviki 3 izinsuku 14 amahora 24 amaminithi
4 weke 12 uur4 w 12 h

4 أسبوع 12 ساعة

4 সপ্তাহ 12 ঘণ্টা4 w 12 h4 selmanes 12 hores4 həftə 12 saat4 тыдня 12 гадзіны4 w 12 h4 w 12 h4 седмици 12 часа4 w 12 h4 সপ্তাহ 12 ঘন্টা4 w 12 h4 sedmica 12 sati4 setmanes 12 hores4 𑄥𑄛𑄴𑄖 12 𑄊𑄧𑄚𑄴𑄘4 кӀира 12 сахьт4 ka mga semana 12 ka mga oras4 w 12 h4 ᎢᏳᎾᏙᏓᏆᏍᏗ 12 ᎢᏳᏟᎶᏓ4 w 12 h4 wythnos 12 awr4 uger 12 timer4 w 12 h4 Wochen 12 Stunden4 w 12 h4 w 12 h4 w 12 hབངུན་ཕྲག་ 4 ཆུ་ཚོད་ 124 w 12 hkɔsiɖa 4 gaƒoƒo 124 εβδομάδες 12 ώρες4 weeks 12 hours4 w 12 h4 semanas 12 horas4 nädalat 12 tundi4 aste 12 ordu4 w 12 h

4 هفته 12 ساعت

4 w 12 h4 viikkoa 12 tuntia4 na linggo 12 na oras4 vikur 12 tímar4 semaines 12 heures4 setemanis 12 oris4 wiken 12 oere4 seachtain 12 uair4 seachdain 12 uair a thìde4 semanas 12 horas4 Wuche 12 Schtunde4 w 12 h4 w 12 h4 pule 12 hola

4 שבועות 12 שעות

4 सप्ताह 12 घंटे4 tjedana 12 sati4 tydźenjow 12 hodźinow4 շաբաթ 12 ժամ4 minggu 12 jam4 w 12 h4 w 12 h4 settimane 12 ore4 週間 12 時間4 w 12 háwa4 w 12 h4 peken 12 jam4 კვირა 12 საათი4 w 12 h4 w 12 h4 w 12 h4 simana 12 ora4 simỹnỹ ag óra ag 124 w 12 h4 w 12 h4 апта 12 сағат4 w 12 h4 w 12 h4 w 12 h4 សប្ដាហ៍ 12 ម៉ោង4 ವಾರಗಳು 12 ಗಂಟೆಗಳು4주 12시간4 सप्तक 12 वरां

4 ہَفتہٕ 12 گٲنٹہٕ

4 w 12 h4 Woche 12 Schtunde4 апта 12 саат4 w 12 h4 Wochen 12 Stonnenokó 4 Owápȟe 124 w 12 h4 ອາທິດ 12 ຊົ່ວໂມງ4 savaičių 12 valandų4 w 12 h4 w 12 h4 w 12 h4 nedēļas 12 stundas4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 седмици 12 часа4 ആഴ്ച 12 മണിക്കൂർ4 долоо хоног 12 цаг4 w 12 h4 w 12 h4 w 12 h4 ပတ် 12 နာရီ

4 هفته 12 ساعِت

4 w 12 h4 uker 12 timer4 w 12 h4 हप्ता 12 घण्टा4 weken 12 uur4 veker 12 timar4 w 12 h4 uker 12 timer4 w 12 h4 w 12 h4 ସପ୍ତାହ 12 ଘଣ୍ଟା4 къуырийы 12 сахаты4 ਹਫ਼ਤੇ 12 ਘੰਟੇ4 Wik 12 Áwa4 tygodnia 12 godziny4 semanas 12 horas4 emnas 12 uras4 w 12 h4 de săptămâni 12 de ore4 w 12 h4 w 12 h4 w 12 h4 w 12 h4 нэдиэлэ 12 чаас4 w 12 h4 w 12 h4 w 12 h4 chidas 12 oras

4 هفتا 12 ڪلاڪ

4 váhkku 12 diibmur4 w 12 h4 w 12 h4 w 12 h4 w 12 hසති 4 පැය 124 týždňov 12 hodín4 tednov 12 ur4 w 12 h4 w 12 h4 toddobaadyo 12 saacadood4 javë 12 orë4 w 12 hwiki 4 saa 124 வாரங்கள் 12 மணிநேரங்கள்4 వారాలు 12 గంటలు4 w 12 h4 w 12 h4 hepde 12 sagatuike ʻe 4 houa ʻe 124 hafta 12 saat4 w 12 h4 w 12 h4 w 12 h

4 ھەپتە 12 سائەت

4 тижня 12 години4 weeks 12 hours

4 ہفتے 12 گھنٹے

4 hafta 12 soat4 w 12 h4 tuần 12 giờ4 w 12 h4 wučä 12 stunde4 w 12 h4 w 12 h4 w 12 h4 ọṣ 12 wkt4 sẽmãna-ita 12 hura-ita4 週 12 小時4 w 12 h4周 12小时4 amaviki 12 amahora
NANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANANA
" diff --git a/tests/testthat/_snaps/fmt_fraction.md b/tests/testthat/_snaps/fmt_fraction.md index a63aefa258..920a902598 100644 --- a/tests/testthat/_snaps/fmt_fraction.md +++ b/tests/testthat/_snaps/fmt_fraction.md @@ -3,21 +3,21 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n
lowmedhighhalvesquarterseighthssixteenthshundredths
0 to 1
0.000100000000
0.001000199900000
0.01000199110000001100
0.100019110110001821610100
0.250014141412142841625100
0.400025252512243861640100
0.500012121212244881650100
0.6000353535122458101660100
0.750034343413468121675100
0.9000899109101178141690100
0.99001989999100111199100
0.99901199899911111
0.999911111111
0 to -1
-0.000100000000
-0.001000199900000
-0.01000199110000001100
-0.100019110110001821610100
-0.250014141412142841625100
-0.400025252512243861640100
-0.500012121212244881650100
-0.6000353535122458101660100
-0.7500343434−13468121675100
-0.900089910910−1−178141690100
-0.9900−1989999100−1−1−1−199100
-0.9990−1−1998999−1−1−1−1−1
-0.9999−1−1−1−1−1−1−1−1
1 to 2
1.000111111111
1.0010111 199911111
1.010011 1991 110011111 1100
1.10001 191 1101 110111 181 2161 10100
1.25001 141 141 141 121 141 281 4161 25100
1.40001 251 251 251 121 241 381 6161 40100
1.50001 121 121 121 121 241 481 8161 50100
1.60001 351 351 351 121 241 581 10161 60100
1.75001 341 341 3421 341 681 12161 75100
1.90001 891 9101 910221 781 14161 90100
1.990021 98991 9910022221 99100
1.9990221 99899922222
1.999922222222
-1 to -2
-1.0001−1−1−1−1−1−1−1−1
-1.0010−1−1−1 1999−1−1−1−1−1
-1.0100−1−1 199−1 1100−1−1−1−1−1 1100
-1.1000−1 19−1 110−1 110−1−1−1 18−1 216−1 10100
-1.2500−1 14−1 14−1 14−1 12−1 14−1 28−1 416−1 25100
-1.4000−1 25−1 25−1 25−1 12−1 24−1 38−1 616−1 40100
-1.5000−1 12−1 12−1 12−1 12−1 24−1 48−1 816−1 50100
-1.6000−1 35−1 35−1 35−1 12−1 24−1 58−1 1016−1 60100
-1.7500−1 34−1 34−1 34−2−1 34−1 68−1 1216−1 75100
-1.9000−1 89−1 910−1 910−2−2−1 78−1 1416−1 90100
-1.9900−2−1 9899−1 99100−2−2−2−2−1 99100
-1.9990−2−2−1 998999−2−2−2−2−2
-1.9999−2−2−2−2−2−2−2−2
Exact Numbers
-1.0000−1−1−1−1−1−1−1−1
0.000000000000
1.000011111111
Not Numbers
NANANANANANANANANA
NaNNaNNaNNaNNaNNaNNaNNaNNaN
InfInfInfInfInfInfInfInfInf
-Inf-Inf-Inf-Inf-Inf-Inf-Inf-Inf-Inf
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n
lowmedhighhalvesquarterseighthssixteenthshundredths
0 to 1
0.000100000000
0.001000199900000
0.01000199110000001100
0.100019110110001821610100
0.250014141412142841625100
0.400025252512243861640100
0.500012121212244881650100
0.6000353535122458101660100
0.750034343413468121675100
0.9000899109101178141690100
0.99001989999100111199100
0.99901199899911111
0.999911111111
0 to -1
-0.000100000000
-0.001000199900000
-0.01000199110000001100
-0.100019110110001821610100
-0.250014141412142841625100
-0.400025252512243861640100
-0.500012121212244881650100
-0.6000353535122458101660100
-0.7500343434−13468121675100
-0.900089910910−1−178141690100
-0.9900−1989999100−1−1−1−199100
-0.9990−1−1998999−1−1−1−1−1
-0.9999−1−1−1−1−1−1−1−1
1 to 2
1.000111111111
1.0010111 199911111
1.010011 1991 110011111 1100
1.10001 191 1101 110111 181 2161 10100
1.25001 141 141 141 121 141 281 4161 25100
1.40001 251 251 251 121 241 381 6161 40100
1.50001 121 121 121 121 241 481 8161 50100
1.60001 351 351 351 121 241 581 10161 60100
1.75001 341 341 3421 341 681 12161 75100
1.90001 891 9101 910221 781 14161 90100
1.990021 98991 9910022221 99100
1.9990221 99899922222
1.999922222222
-1 to -2
-1.0001−1−1−1−1−1−1−1−1
-1.0010−1−1−1 1999−1−1−1−1−1
-1.0100−1−1 199−1 1100−1−1−1−1−1 1100
-1.1000−1 19−1 110−1 110−1−1−1 18−1 216−1 10100
-1.2500−1 14−1 14−1 14−1 12−1 14−1 28−1 416−1 25100
-1.4000−1 25−1 25−1 25−1 12−1 24−1 38−1 616−1 40100
-1.5000−1 12−1 12−1 12−1 12−1 24−1 48−1 816−1 50100
-1.6000−1 35−1 35−1 35−1 12−1 24−1 58−1 1016−1 60100
-1.7500−1 34−1 34−1 34−2−1 34−1 68−1 1216−1 75100
-1.9000−1 89−1 910−1 910−2−2−1 78−1 1416−1 90100
-1.9900−2−1 9899−1 99100−2−2−2−2−1 99100
-1.9990−2−2−1 998999−2−2−2−2−2
-1.9999−2−2−2−2−2−2−2−2
Exact Numbers
-1.0000−1−1−1−1−1−1−1−1
0.000000000000
1.000011111111
Not Numbers
NANANANANANANANANA
NaNNaNNaNNaNNaNNaNNaNNaNNaN
InfInfInfInfInfInfInfInfInf
-Inf-Inf-Inf-Inf-Inf-Inf-Inf-Inf-Inf
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n
lowmedhighhalvesquarterseighthssixteenthshundredths
0 to 1
0.000100000000
0.0010001/99900000
0.010001/991/10000001/100
0.10001/91/101/10001/82/1610/100
0.25001/41/41/41/21/42/84/1625/100
0.40002/52/52/51/22/43/86/1640/100
0.50001/21/21/21/22/44/88/1650/100
0.60003/53/53/51/22/45/810/1660/100
0.75003/43/43/413/46/812/1675/100
0.90008/99/109/10117/814/1690/100
0.9900198/9999/100111199/100
0.999011998/99911111
0.999911111111
0 to -1
-0.000100000000
-0.001000−1/99900000
-0.01000−1/99−1/1000000−1/100
-0.1000−1/9−1/10−1/1000−1/8−2/16−10/100
-0.2500−1/4−1/4−1/4−1/2−1/4−2/8−4/16−25/100
-0.4000−2/5−2/5−2/5−1/2−2/4−3/8−6/16−40/100
-0.5000−1/2−1/2−1/2−1/2−2/4−4/8−8/16−50/100
-0.6000−3/5−3/5−3/5−1/2−2/4−5/8−10/16−60/100
-0.7500−3/4−3/4−3/4−1−3/4−6/8−12/16−75/100
-0.9000−8/9−9/10−9/10−1−1−7/8−14/16−90/100
-0.9900−1−98/99−99/100−1−1−1−1−99/100
-0.9990−1−1−998/999−1−1−1−1−1
-0.9999−1−1−1−1−1−1−1−1
1 to 2
1.000111111111
1.0010111 1/99911111
1.010011 1/991 1/10011111 1/100
1.10001 1/91 1/101 1/10111 1/81 2/161 10/100
1.25001 1/41 1/41 1/41 1/21 1/41 2/81 4/161 25/100
1.40001 2/51 2/51 2/51 1/21 2/41 3/81 6/161 40/100
1.50001 1/21 1/21 1/21 1/21 2/41 4/81 8/161 50/100
1.60001 3/51 3/51 3/51 1/21 2/41 5/81 10/161 60/100
1.75001 3/41 3/41 3/421 3/41 6/81 12/161 75/100
1.90001 8/91 9/101 9/10221 7/81 14/161 90/100
1.990021 98/991 99/10022221 99/100
1.9990221 998/99922222
1.999922222222
-1 to -2
-1.0001−1−1−1−1−1−1−1−1
-1.0010−1−1−1 1/999−1−1−1−1−1
-1.0100−1−1 1/99−1 1/100−1−1−1−1−1 1/100
-1.1000−1 1/9−1 1/10−1 1/10−1−1−1 1/8−1 2/16−1 10/100
-1.2500−1 1/4−1 1/4−1 1/4−1 1/2−1 1/4−1 2/8−1 4/16−1 25/100
-1.4000−1 2/5−1 2/5−1 2/5−1 1/2−1 2/4−1 3/8−1 6/16−1 40/100
-1.5000−1 1/2−1 1/2−1 1/2−1 1/2−1 2/4−1 4/8−1 8/16−1 50/100
-1.6000−1 3/5−1 3/5−1 3/5−1 1/2−1 2/4−1 5/8−1 10/16−1 60/100
-1.7500−1 3/4−1 3/4−1 3/4−2−1 3/4−1 6/8−1 12/16−1 75/100
-1.9000−1 8/9−1 9/10−1 9/10−2−2−1 7/8−1 14/16−1 90/100
-1.9900−2−1 98/99−1 99/100−2−2−2−2−1 99/100
-1.9990−2−2−1 998/999−2−2−2−2−2
-1.9999−2−2−2−2−2−2−2−2
Exact Numbers
-1.0000−1−1−1−1−1−1−1−1
0.000000000000
1.000011111111
Not Numbers
NANANANANANANANANA
NaNNaNNaNNaNNaNNaNNaNNaNNaN
InfInfInfInfInfInfInfInfInf
-Inf-Inf-Inf-Inf-Inf-Inf-Inf-Inf-Inf
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n
lowmedhighhalvesquarterseighthssixteenthshundredths
0 to 1
0.000100000000
0.0010001/99900000
0.010001/991/10000001/100
0.10001/91/101/10001/82/1610/100
0.25001/41/41/41/21/42/84/1625/100
0.40002/52/52/51/22/43/86/1640/100
0.50001/21/21/21/22/44/88/1650/100
0.60003/53/53/51/22/45/810/1660/100
0.75003/43/43/413/46/812/1675/100
0.90008/99/109/10117/814/1690/100
0.9900198/9999/100111199/100
0.999011998/99911111
0.999911111111
0 to -1
-0.000100000000
-0.001000−1/99900000
-0.01000−1/99−1/1000000−1/100
-0.1000−1/9−1/10−1/1000−1/8−2/16−10/100
-0.2500−1/4−1/4−1/4−1/2−1/4−2/8−4/16−25/100
-0.4000−2/5−2/5−2/5−1/2−2/4−3/8−6/16−40/100
-0.5000−1/2−1/2−1/2−1/2−2/4−4/8−8/16−50/100
-0.6000−3/5−3/5−3/5−1/2−2/4−5/8−10/16−60/100
-0.7500−3/4−3/4−3/4−1−3/4−6/8−12/16−75/100
-0.9000−8/9−9/10−9/10−1−1−7/8−14/16−90/100
-0.9900−1−98/99−99/100−1−1−1−1−99/100
-0.9990−1−1−998/999−1−1−1−1−1
-0.9999−1−1−1−1−1−1−1−1
1 to 2
1.000111111111
1.0010111 1/99911111
1.010011 1/991 1/10011111 1/100
1.10001 1/91 1/101 1/10111 1/81 2/161 10/100
1.25001 1/41 1/41 1/41 1/21 1/41 2/81 4/161 25/100
1.40001 2/51 2/51 2/51 1/21 2/41 3/81 6/161 40/100
1.50001 1/21 1/21 1/21 1/21 2/41 4/81 8/161 50/100
1.60001 3/51 3/51 3/51 1/21 2/41 5/81 10/161 60/100
1.75001 3/41 3/41 3/421 3/41 6/81 12/161 75/100
1.90001 8/91 9/101 9/10221 7/81 14/161 90/100
1.990021 98/991 99/10022221 99/100
1.9990221 998/99922222
1.999922222222
-1 to -2
-1.0001−1−1−1−1−1−1−1−1
-1.0010−1−1−1 1/999−1−1−1−1−1
-1.0100−1−1 1/99−1 1/100−1−1−1−1−1 1/100
-1.1000−1 1/9−1 1/10−1 1/10−1−1−1 1/8−1 2/16−1 10/100
-1.2500−1 1/4−1 1/4−1 1/4−1 1/2−1 1/4−1 2/8−1 4/16−1 25/100
-1.4000−1 2/5−1 2/5−1 2/5−1 1/2−1 2/4−1 3/8−1 6/16−1 40/100
-1.5000−1 1/2−1 1/2−1 1/2−1 1/2−1 2/4−1 4/8−1 8/16−1 50/100
-1.6000−1 3/5−1 3/5−1 3/5−1 1/2−1 2/4−1 5/8−1 10/16−1 60/100
-1.7500−1 3/4−1 3/4−1 3/4−2−1 3/4−1 6/8−1 12/16−1 75/100
-1.9000−1 8/9−1 9/10−1 9/10−2−2−1 7/8−1 14/16−1 90/100
-1.9900−2−1 98/99−1 99/100−2−2−2−2−1 99/100
-1.9990−2−2−1 998/999−2−2−2−2−2
-1.9999−2−2−2−2−2−2−2−2
Exact Numbers
-1.0000−1−1−1−1−1−1−1−1
0.000000000000
1.000011111111
Not Numbers
NANANANANANANANANA
NaNNaNNaNNaNNaNNaNNaNNaNNaN
InfInfInfInfInfInfInfInfInf
-Inf-Inf-Inf-Inf-Inf-Inf-Inf-Inf-Inf
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n
lowmedhighhalvesquarterseighthssixteenthshundredths
0 to 1
0.000100000000
0.0010001/99900000
0.010001/991/10000001/100
0.10001/91/101/10001/81/81/10
0.25001/41/41/41/21/41/41/41/4
0.40002/52/52/51/21/23/83/82/5
0.50001/21/21/21/21/21/21/21/2
0.60003/53/53/51/21/25/85/83/5
0.75003/43/43/413/43/43/43/4
0.90008/99/109/10117/87/89/10
0.9900198/9999/100111199/100
0.999011998/99911111
0.999911111111
0 to -1
-0.000100000000
-0.001000−1/99900000
-0.01000−1/99−1/1000000−1/100
-0.1000−1/9−1/10−1/1000−1/8−1/8−1/10
-0.2500−1/4−1/4−1/4−1/2−1/4−1/4−1/4−1/4
-0.4000−2/5−2/5−2/5−1/2−1/2−3/8−3/8−2/5
-0.5000−1/2−1/2−1/2−1/2−1/2−1/2−1/2−1/2
-0.6000−3/5−3/5−3/5−1/2−1/2−5/8−5/8−3/5
-0.7500−3/4−3/4−3/4−1−3/4−3/4−3/4−3/4
-0.9000−8/9−9/10−9/10−1−1−7/8−7/8−9/10
-0.9900−1−98/99−99/100−1−1−1−1−99/100
-0.9990−1−1−998/999−1−1−1−1−1
-0.9999−1−1−1−1−1−1−1−1
1 to 2
1.000111111111
1.0010111 1/99911111
1.010011 1/991 1/10011111 1/100
1.10001 1/91 1/101 1/10111 1/81 1/81 1/10
1.25001 1/41 1/41 1/41 1/21 1/41 1/41 1/41 1/4
1.40001 2/51 2/51 2/51 1/21 1/21 3/81 3/81 2/5
1.50001 1/21 1/21 1/21 1/21 1/21 1/21 1/21 1/2
1.60001 3/51 3/51 3/51 1/21 1/21 5/81 5/81 3/5
1.75001 3/41 3/41 3/421 3/41 3/41 3/41 3/4
1.90001 8/91 9/101 9/10221 7/81 7/81 9/10
1.990021 98/991 99/10022221 99/100
1.9990221 998/99922222
1.999922222222
-1 to -2
-1.0001−1−1−1−1−1−1−1−1
-1.0010−1−1−1 1/999−1−1−1−1−1
-1.0100−1−1 1/99−1 1/100−1−1−1−1−1 1/100
-1.1000−1 1/9−1 1/10−1 1/10−1−1−1 1/8−1 1/8−1 1/10
-1.2500−1 1/4−1 1/4−1 1/4−1 1/2−1 1/4−1 1/4−1 1/4−1 1/4
-1.4000−1 2/5−1 2/5−1 2/5−1 1/2−1 1/2−1 3/8−1 3/8−1 2/5
-1.5000−1 1/2−1 1/2−1 1/2−1 1/2−1 1/2−1 1/2−1 1/2−1 1/2
-1.6000−1 3/5−1 3/5−1 3/5−1 1/2−1 1/2−1 5/8−1 5/8−1 3/5
-1.7500−1 3/4−1 3/4−1 3/4−2−1 3/4−1 3/4−1 3/4−1 3/4
-1.9000−1 8/9−1 9/10−1 9/10−2−2−1 7/8−1 7/8−1 9/10
-1.9900−2−1 98/99−1 99/100−2−2−2−2−1 99/100
-1.9990−2−2−1 998/999−2−2−2−2−2
-1.9999−2−2−2−2−2−2−2−2
Exact Numbers
-1.0000−1−1−1−1−1−1−1−1
0.000000000000
1.000011111111
Not Numbers
NANANANANANANANANA
NaNNaNNaNNaNNaNNaNNaNNaNNaN
InfInfInfInfInfInfInfInfInf
-Inf-Inf-Inf-Inf-Inf-Inf-Inf-Inf-Inf
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n
lowmedhighhalvesquarterseighthssixteenthshundredths
0 to 1
0.000100000000
0.0010001/99900000
0.010001/991/10000001/100
0.10001/91/101/10001/81/81/10
0.25001/41/41/41/21/41/41/41/4
0.40002/52/52/51/21/23/83/82/5
0.50001/21/21/21/21/21/21/21/2
0.60003/53/53/51/21/25/85/83/5
0.75003/43/43/413/43/43/43/4
0.90008/99/109/10117/87/89/10
0.9900198/9999/100111199/100
0.999011998/99911111
0.999911111111
0 to -1
-0.000100000000
-0.001000−1/99900000
-0.01000−1/99−1/1000000−1/100
-0.1000−1/9−1/10−1/1000−1/8−1/8−1/10
-0.2500−1/4−1/4−1/4−1/2−1/4−1/4−1/4−1/4
-0.4000−2/5−2/5−2/5−1/2−1/2−3/8−3/8−2/5
-0.5000−1/2−1/2−1/2−1/2−1/2−1/2−1/2−1/2
-0.6000−3/5−3/5−3/5−1/2−1/2−5/8−5/8−3/5
-0.7500−3/4−3/4−3/4−1−3/4−3/4−3/4−3/4
-0.9000−8/9−9/10−9/10−1−1−7/8−7/8−9/10
-0.9900−1−98/99−99/100−1−1−1−1−99/100
-0.9990−1−1−998/999−1−1−1−1−1
-0.9999−1−1−1−1−1−1−1−1
1 to 2
1.000111111111
1.0010111 1/99911111
1.010011 1/991 1/10011111 1/100
1.10001 1/91 1/101 1/10111 1/81 1/81 1/10
1.25001 1/41 1/41 1/41 1/21 1/41 1/41 1/41 1/4
1.40001 2/51 2/51 2/51 1/21 1/21 3/81 3/81 2/5
1.50001 1/21 1/21 1/21 1/21 1/21 1/21 1/21 1/2
1.60001 3/51 3/51 3/51 1/21 1/21 5/81 5/81 3/5
1.75001 3/41 3/41 3/421 3/41 3/41 3/41 3/4
1.90001 8/91 9/101 9/10221 7/81 7/81 9/10
1.990021 98/991 99/10022221 99/100
1.9990221 998/99922222
1.999922222222
-1 to -2
-1.0001−1−1−1−1−1−1−1−1
-1.0010−1−1−1 1/999−1−1−1−1−1
-1.0100−1−1 1/99−1 1/100−1−1−1−1−1 1/100
-1.1000−1 1/9−1 1/10−1 1/10−1−1−1 1/8−1 1/8−1 1/10
-1.2500−1 1/4−1 1/4−1 1/4−1 1/2−1 1/4−1 1/4−1 1/4−1 1/4
-1.4000−1 2/5−1 2/5−1 2/5−1 1/2−1 1/2−1 3/8−1 3/8−1 2/5
-1.5000−1 1/2−1 1/2−1 1/2−1 1/2−1 1/2−1 1/2−1 1/2−1 1/2
-1.6000−1 3/5−1 3/5−1 3/5−1 1/2−1 1/2−1 5/8−1 5/8−1 3/5
-1.7500−1 3/4−1 3/4−1 3/4−2−1 3/4−1 3/4−1 3/4−1 3/4
-1.9000−1 8/9−1 9/10−1 9/10−2−2−1 7/8−1 7/8−1 9/10
-1.9900−2−1 98/99−1 99/100−2−2−2−2−1 99/100
-1.9990−2−2−1 998/999−2−2−2−2−2
-1.9999−2−2−2−2−2−2−2−2
Exact Numbers
-1.0000−1−1−1−1−1−1−1−1
0.000000000000
1.000011111111
Not Numbers
NANANANANANANANANA
NaNNaNNaNNaNNaNNaNNaNNaNNaN
InfInfInfInfInfInfInfInfInf
-Inf-Inf-Inf-Inf-Inf-Inf-Inf-Inf-Inf
" --- diff --git a/tests/testthat/_snaps/fmt_markdown.md b/tests/testthat/_snaps/fmt_markdown.md index b19985416f..173f010529 100644 --- a/tests/testthat/_snaps/fmt_markdown.md +++ b/tests/testthat/_snaps/fmt_markdown.md @@ -3,5 +3,5 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n \n \n \n \n \n \n \n \n \n \n
A Table of Laplace Transforms — \nL\\small{{\\mathcal{L}}}L
The most commonly used Laplace transforms and formulas.

Time Domain
\nf(t)=L1{F(s)}\\small{f\\left( t \\right) = {\\mathcal{L}^{\\,\\, - 1}}\\left\\{ {F\\left( s \\right)} \\right\\}}f(t)=L1{F(s)}
\nsss Domain
\nF(s)=L{f(t)}\\small{F\\left( s \\right) = \\mathcal{L}\\left\\{ {f\\left( t \\right)} \\right\\}}F(s)=L{f(t)}
1\n111\n1s\\frac{1}{s}s1
2\neat{{\\bf{e}}^{a\\,t}}eat\n1sa\\frac{1}{{s - a}}sa1
3\ntn,n=1,2,3,{t^n},\\,\\,\\,\\,\\,n = 1,2,3, \\ldotstn,n=1,2,3,\nn!sn+1\\frac{{n!}}{{{s^{n + 1}}}}sn+1n!
4\ntp,p>1{t^p}, p > -1tp,p>1\nΓ(p+1)sp+1\\frac{{\\Gamma \\left( {p + 1} \\right)}}{{{s^{p + 1}}}}sp+1Γ(p+1)
5\nt\\sqrt tt\nπ2s32\\frac{{\\sqrt \\pi }}{{2{s^{\\frac{3}{2}}}}}2s23π
6\ntn12,n=1,2,3,{t^{n - \\frac{1}{2}}},\\,\\,\\,\\,\\,n = 1,2,3, \\ldotstn21,n=1,2,3,\n135(2n1)π2nsn+12\\frac{{1 \\cdot 3 \\cdot 5 \\cdots \\left( {2n - 1} \\right)\\sqrt \\pi }}{{{2^n}{s^{n + \\frac{1}{2}}}}}2nsn+21135(2n1)π
7\nsin(at)\\sin \\left( {at} \\right)sin(at)\nas2+a2\\frac{a}{{{s^2} + {a^2}}}s2+a2a
8\ncos(at)\\cos \\left( {at} \\right)cos(at)\nss2+a2\\frac{s}{{{s^2} + {a^2}}}s2+a2s
9\ntsin(at)t\\sin \\left( {at} \\right)tsin(at)\n2as(s2+a2)2\\frac{{2as}}{{{{\\left( {{s^2} + {a^2}} \\right)}^2}}}(s2+a2)22as
10\ntcos(at)t\\cos \\left( {at} \\right)tcos(at)\ns2a2(s2+a2)2\\frac{{{s^2} - {a^2}}}{{{{\\left( {{s^2} + {a^2}} \\right)}^2}}}(s2+a2)2s2a2
11\nsin(at)atcos(at)\\sin \\left( {at} \\right) - at\\cos \\left( {at} \\right)sin(at)atcos(at)\n2a3(s2+a2)2\\frac{{2{a^3}}}{{{{\\left( {{s^2} + {a^2}} \\right)}^2}}}(s2+a2)22a3
12\nsin(at)+atcos(at)\\sin \\left( {at} \\right) + at\\cos \\left( {at} \\right)sin(at)+atcos(at)\n2as2(s2+a2)2\\frac{{2a{s^2}}}{{{{\\left( {{s^2} + {a^2}} \\right)}^2}}}(s2+a2)22as2
13\ncos(at)atsin(at)\\cos \\left( {at} \\right) - at\\sin \\left( {at} \\right)cos(at)atsin(at)\ns(s2a2)(s2+a2)2\\frac{{s\\left( {{s^2} - {a^2}} \\right)}}{{{{\\left( {{s^2} + {a^2}} \\right)}^2}}}(s2+a2)2s(s2a2)
14\ncos(at)+atsin(at)\\cos \\left( {at} \\right) + at\\sin \\left( {at} \\right)cos(at)+atsin(at)\ns(s2+3a2)(s2+a2)2\\frac{{s\\left( {{s^2} + 3{a^2}} \\right)}}{{{{\\left( {{s^2} + {a^2}} \\right)}^2}}}(s2+a2)2s(s2+3a2)
15\nsin(at+b)\\sin \\left( {at + b} \\right)sin(at+b)\nssin(b)+acos(b)s2+a2\\frac{{s\\sin \\left( b \\right) + a\\cos \\left( b \\right)}}{{{s^2} + {a^2}}}s2+a2ssin(b)+acos(b)
16\ncos(at+b)\\cos \\left( {at + b} \\right)cos(at+b)\nscos(b)asin(b)s2+a2\\frac{{s\\cos \\left( b \\right) - a\\sin \\left( b \\right)}}{{{s^2} + {a^2}}}s2+a2scos(b)asin(b)
17\nsinh(at)\\sinh \\left( {at} \\right)sinh(at)\nas2a2\\frac{a}{{{s^2} - {a^2}}}s2a2a
18\ncosh(at)\\cosh \\left( {at} \\right)cosh(at)\nss2a2\\frac{s}{{{s^2} - {a^2}}}s2a2s
19\neatsin(bt){{\\bf{e}}^{at}}\\sin \\left( {bt} \\right)eatsin(bt)\nb(sa)2+b2\\frac{b}{{{{\\left( {s - a} \\right)}^2} + {b^2}}}(sa)2+b2b
20\neatcos(bt){{\\bf{e}}^{at}}\\cos \\left( {bt} \\right)eatcos(bt)\nsa(sa)2+b2\\frac{{s - a}}{{{{\\left( {s - a} \\right)}^2} + {b^2}}}(sa)2+b2sa
21\neatsinh(bt){{\\bf{e}}^{at}}\\sinh \\left( {bt} \\right)eatsinh(bt)\nb(sa)2b2\\frac{b}{{{{\\left( {s - a} \\right)}^2} - {b^2}}}(sa)2b2b
22\neatcosh(bt){{\\bf{e}}^{at}}\\cosh \\left( {bt} \\right)eatcosh(bt)\nsa(sa)2b2\\frac{{s - a}}{{{{\\left( {s - a} \\right)}^2} - {b^2}}}(sa)2b2sa
23\ntneat,n=1,2,3,{t^n}{{\\bf{e}}^{at}},\\,\\,\\,\\,\\,n = 1,2,3, \\ldotstneat,n=1,2,3,\nn!(sa)n+1\\frac{{n!}}{{{{\\left( {s - a} \\right)}^{n + 1}}}}(sa)n+1n!
24\nf(ct)f\\left( {ct} \\right)f(ct)\n1cF(sc)\\frac{1}{c}F\\left( {\\frac{s}{c}} \\right)c1F(cs)
25\nuc(t)=u(tc){u_c}\\left( t \\right) = u\\left( {t - c} \\right)uc(t)=u(tc)[1]\necss\\frac{{{{\\bf{e}}^{ - cs}}}}{s}secs
26\nδ(tc)\\delta \\left( {t - c} \\right)δ(tc)[2]\necs{{\\bf{e}}^{ - cs}}ecs
27\nuc(t)f(tc){u_c}\\left( t \\right)f\\left( {t - c} \\right)uc(t)f(tc)\necsF(s){{\\bf{e}}^{ - cs}}F\\left( s \\right)ecsF(s)
28\nuc(t)g(t){u_c}\\left( t \\right)g\\left( t \\right)uc(t)g(t)\necsL{g(t+c)}{{\\bf{e}}^{ - cs}}{\\mathcal{L}}\\left\\{ {g\\left( {t + c} \\right)} \\right\\}ecsL{g(t+c)}
29\nectf(t){{\\bf{e}}^{ct}}f\\left( t \\right)ectf(t)\nF(sc)F\\left( {s - c} \\right)F(sc)
30\ntnf(t),n=1,2,3,{t^n}f\\left( t \\right),\\,\\,\\,\\,\\,n = 1,2,3, \\ldotstnf(t),n=1,2,3,\n(1)nF(n)(s){\\left( { - 1} \\right)^n}{F^{\\left( n \\right)}}\\left( s \\right)(1)nF(n)(s)
31\n1tf(t)\\displaystyle \\frac{1}{t}f\\left( t \\right)t1f(t)\nsF(u)du\\int_{{\\,s}}^{{\\,\\infty }}{{F\\left( u \\right)\\,du}}sF(u)du
32\n0tf(v)dv\\displaystyle \\int_{{\\,0}}^{{\\,t}}{{\\,f\\left( v \\right)\\,dv}}0tf(v)dv\nF(s)s\\displaystyle \\frac{{F\\left( s \\right)}}{s}sF(s)
33\n0tf(tτ)g(τ)dτ\\displaystyle \\int_{{\\,0}}^{{\\,t}}{{f\\left( {t - \\tau } \\right)g\\left( \\tau \\right)\\,d\\tau }}0tf(tτ)g(τ)dτ\nF(s)G(s)F\\left( s \\right)G\\left( s \\right)F(s)G(s)
34\nf(t+T)=f(t)f\\left( {t + T} \\right) = f\\left( t \\right)f(t+T)=f(t)\n0Testf(t)dt1esT\\displaystyle \\frac{{\\displaystyle \\int_{{\\,0}}^{{\\,T}}{{{{\\bf{e}}^{ - st}}f\\left( t \\right)\\,dt}}}}{{1 - {{\\bf{e}}^{ - sT}}}}1esT0Testf(t)dt
35\nf(t)f'\\left( t \\right)f(t)\nsF(s)f(0)sF\\left( s \\right) - f\\left( 0 \\right)sF(s)f(0)
36\nf(t)f''\\left( t \\right)f′′(t)\ns2F(s)sf(0)f(0){s^2}F\\left( s \\right) - sf\\left( 0 \\right) - f'\\left( 0 \\right)s2F(s)sf(0)f(0)
37\nf(n)(t){f^{\\left( n \\right)}}\\left( t \\right)f(n)(t)\nsnF(s)sn1f(0)sn2f(0)sf(n2)(0)f(n1)(0){s^n}F\\left( s \\right) - {s^{n - 1}}f\\left( 0 \\right) - {s^{n - 2}}f'\\left( 0 \\right) \\cdots - s{f^{\\left( {n - 2} \\right)}}\\left( 0 \\right) - {f^{\\left( {n - 1} \\right)}}\\left( 0 \\right)snF(s)sn1f(0)sn2f(0)sf(n2)(0)f(n1)(0)
The hyperbolic functions: \ncosh(t)=et+et2\\cosh \\left( t \\right) = \\frac{{{{\\bf{e}}^t} + {{\\bf{e}}^{ - t}}}}{2}cosh(t)=2et+et , \nsinh(t)=etet2\\sinh \\left( t \\right) = \\frac{{{{\\bf{e}}^t} - {{\\bf{e}}^{ - t}}}}{2}sinh(t)=2etet
\n
1 The Heaviside Function. 2 The Dirac Delta Function.
\n
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n \n \n \n \n \n \n \n \n \n \n
A Table of Laplace Transforms — \nL\\small{{\\mathcal{L}}}L
The most commonly used Laplace transforms and formulas.

Time Domain
\nf(t)=L1{F(s)}\\small{f\\left( t \\right) = {\\mathcal{L}^{\\,\\, - 1}}\\left\\{ {F\\left( s \\right)} \\right\\}}f(t)=L1{F(s)}
\nsss Domain
\nF(s)=L{f(t)}\\small{F\\left( s \\right) = \\mathcal{L}\\left\\{ {f\\left( t \\right)} \\right\\}}F(s)=L{f(t)}
1\n111\n1s\\frac{1}{s}s1
2\neat{{\\bf{e}}^{a\\,t}}eat\n1sa\\frac{1}{{s - a}}sa1
3\ntn,n=1,2,3,{t^n},\\,\\,\\,\\,\\,n = 1,2,3, \\ldotstn,n=1,2,3,\nn!sn+1\\frac{{n!}}{{{s^{n + 1}}}}sn+1n!
4\ntp,p>1{t^p}, p > -1tp,p>1\nΓ(p+1)sp+1\\frac{{\\Gamma \\left( {p + 1} \\right)}}{{{s^{p + 1}}}}sp+1Γ(p+1)
5\nt\\sqrt tt\nπ2s32\\frac{{\\sqrt \\pi }}{{2{s^{\\frac{3}{2}}}}}2s23π
6\ntn12,n=1,2,3,{t^{n - \\frac{1}{2}}},\\,\\,\\,\\,\\,n = 1,2,3, \\ldotstn21,n=1,2,3,\n135(2n1)π2nsn+12\\frac{{1 \\cdot 3 \\cdot 5 \\cdots \\left( {2n - 1} \\right)\\sqrt \\pi }}{{{2^n}{s^{n + \\frac{1}{2}}}}}2nsn+21135(2n1)π
7\nsin(at)\\sin \\left( {at} \\right)sin(at)\nas2+a2\\frac{a}{{{s^2} + {a^2}}}s2+a2a
8\ncos(at)\\cos \\left( {at} \\right)cos(at)\nss2+a2\\frac{s}{{{s^2} + {a^2}}}s2+a2s
9\ntsin(at)t\\sin \\left( {at} \\right)tsin(at)\n2as(s2+a2)2\\frac{{2as}}{{{{\\left( {{s^2} + {a^2}} \\right)}^2}}}(s2+a2)22as
10\ntcos(at)t\\cos \\left( {at} \\right)tcos(at)\ns2a2(s2+a2)2\\frac{{{s^2} - {a^2}}}{{{{\\left( {{s^2} + {a^2}} \\right)}^2}}}(s2+a2)2s2a2
11\nsin(at)atcos(at)\\sin \\left( {at} \\right) - at\\cos \\left( {at} \\right)sin(at)atcos(at)\n2a3(s2+a2)2\\frac{{2{a^3}}}{{{{\\left( {{s^2} + {a^2}} \\right)}^2}}}(s2+a2)22a3
12\nsin(at)+atcos(at)\\sin \\left( {at} \\right) + at\\cos \\left( {at} \\right)sin(at)+atcos(at)\n2as2(s2+a2)2\\frac{{2a{s^2}}}{{{{\\left( {{s^2} + {a^2}} \\right)}^2}}}(s2+a2)22as2
13\ncos(at)atsin(at)\\cos \\left( {at} \\right) - at\\sin \\left( {at} \\right)cos(at)atsin(at)\ns(s2a2)(s2+a2)2\\frac{{s\\left( {{s^2} - {a^2}} \\right)}}{{{{\\left( {{s^2} + {a^2}} \\right)}^2}}}(s2+a2)2s(s2a2)
14\ncos(at)+atsin(at)\\cos \\left( {at} \\right) + at\\sin \\left( {at} \\right)cos(at)+atsin(at)\ns(s2+3a2)(s2+a2)2\\frac{{s\\left( {{s^2} + 3{a^2}} \\right)}}{{{{\\left( {{s^2} + {a^2}} \\right)}^2}}}(s2+a2)2s(s2+3a2)
15\nsin(at+b)\\sin \\left( {at + b} \\right)sin(at+b)\nssin(b)+acos(b)s2+a2\\frac{{s\\sin \\left( b \\right) + a\\cos \\left( b \\right)}}{{{s^2} + {a^2}}}s2+a2ssin(b)+acos(b)
16\ncos(at+b)\\cos \\left( {at + b} \\right)cos(at+b)\nscos(b)asin(b)s2+a2\\frac{{s\\cos \\left( b \\right) - a\\sin \\left( b \\right)}}{{{s^2} + {a^2}}}s2+a2scos(b)asin(b)
17\nsinh(at)\\sinh \\left( {at} \\right)sinh(at)\nas2a2\\frac{a}{{{s^2} - {a^2}}}s2a2a
18\ncosh(at)\\cosh \\left( {at} \\right)cosh(at)\nss2a2\\frac{s}{{{s^2} - {a^2}}}s2a2s
19\neatsin(bt){{\\bf{e}}^{at}}\\sin \\left( {bt} \\right)eatsin(bt)\nb(sa)2+b2\\frac{b}{{{{\\left( {s - a} \\right)}^2} + {b^2}}}(sa)2+b2b
20\neatcos(bt){{\\bf{e}}^{at}}\\cos \\left( {bt} \\right)eatcos(bt)\nsa(sa)2+b2\\frac{{s - a}}{{{{\\left( {s - a} \\right)}^2} + {b^2}}}(sa)2+b2sa
21\neatsinh(bt){{\\bf{e}}^{at}}\\sinh \\left( {bt} \\right)eatsinh(bt)\nb(sa)2b2\\frac{b}{{{{\\left( {s - a} \\right)}^2} - {b^2}}}(sa)2b2b
22\neatcosh(bt){{\\bf{e}}^{at}}\\cosh \\left( {bt} \\right)eatcosh(bt)\nsa(sa)2b2\\frac{{s - a}}{{{{\\left( {s - a} \\right)}^2} - {b^2}}}(sa)2b2sa
23\ntneat,n=1,2,3,{t^n}{{\\bf{e}}^{at}},\\,\\,\\,\\,\\,n = 1,2,3, \\ldotstneat,n=1,2,3,\nn!(sa)n+1\\frac{{n!}}{{{{\\left( {s - a} \\right)}^{n + 1}}}}(sa)n+1n!
24\nf(ct)f\\left( {ct} \\right)f(ct)\n1cF(sc)\\frac{1}{c}F\\left( {\\frac{s}{c}} \\right)c1F(cs)
25\nuc(t)=u(tc){u_c}\\left( t \\right) = u\\left( {t - c} \\right)uc(t)=u(tc)[1]\necss\\frac{{{{\\bf{e}}^{ - cs}}}}{s}secs
26\nδ(tc)\\delta \\left( {t - c} \\right)δ(tc)[2]\necs{{\\bf{e}}^{ - cs}}ecs
27\nuc(t)f(tc){u_c}\\left( t \\right)f\\left( {t - c} \\right)uc(t)f(tc)\necsF(s){{\\bf{e}}^{ - cs}}F\\left( s \\right)ecsF(s)
28\nuc(t)g(t){u_c}\\left( t \\right)g\\left( t \\right)uc(t)g(t)\necsL{g(t+c)}{{\\bf{e}}^{ - cs}}{\\mathcal{L}}\\left\\{ {g\\left( {t + c} \\right)} \\right\\}ecsL{g(t+c)}
29\nectf(t){{\\bf{e}}^{ct}}f\\left( t \\right)ectf(t)\nF(sc)F\\left( {s - c} \\right)F(sc)
30\ntnf(t),n=1,2,3,{t^n}f\\left( t \\right),\\,\\,\\,\\,\\,n = 1,2,3, \\ldotstnf(t),n=1,2,3,\n(1)nF(n)(s){\\left( { - 1} \\right)^n}{F^{\\left( n \\right)}}\\left( s \\right)(1)nF(n)(s)
31\n1tf(t)\\displaystyle \\frac{1}{t}f\\left( t \\right)t1f(t)\nsF(u)du\\int_{{\\,s}}^{{\\,\\infty }}{{F\\left( u \\right)\\,du}}sF(u)du
32\n0tf(v)dv\\displaystyle \\int_{{\\,0}}^{{\\,t}}{{\\,f\\left( v \\right)\\,dv}}0tf(v)dv\nF(s)s\\displaystyle \\frac{{F\\left( s \\right)}}{s}sF(s)
33\n0tf(tτ)g(τ)dτ\\displaystyle \\int_{{\\,0}}^{{\\,t}}{{f\\left( {t - \\tau } \\right)g\\left( \\tau \\right)\\,d\\tau }}0tf(tτ)g(τ)dτ\nF(s)G(s)F\\left( s \\right)G\\left( s \\right)F(s)G(s)
34\nf(t+T)=f(t)f\\left( {t + T} \\right) = f\\left( t \\right)f(t+T)=f(t)\n0Testf(t)dt1esT\\displaystyle \\frac{{\\displaystyle \\int_{{\\,0}}^{{\\,T}}{{{{\\bf{e}}^{ - st}}f\\left( t \\right)\\,dt}}}}{{1 - {{\\bf{e}}^{ - sT}}}}1esT0Testf(t)dt
35\nf(t)f'\\left( t \\right)f(t)\nsF(s)f(0)sF\\left( s \\right) - f\\left( 0 \\right)sF(s)f(0)
36\nf(t)f''\\left( t \\right)f′′(t)\ns2F(s)sf(0)f(0){s^2}F\\left( s \\right) - sf\\left( 0 \\right) - f'\\left( 0 \\right)s2F(s)sf(0)f(0)
37\nf(n)(t){f^{\\left( n \\right)}}\\left( t \\right)f(n)(t)\nsnF(s)sn1f(0)sn2f(0)sf(n2)(0)f(n1)(0){s^n}F\\left( s \\right) - {s^{n - 1}}f\\left( 0 \\right) - {s^{n - 2}}f'\\left( 0 \\right) \\cdots - s{f^{\\left( {n - 2} \\right)}}\\left( 0 \\right) - {f^{\\left( {n - 1} \\right)}}\\left( 0 \\right)snF(s)sn1f(0)sn2f(0)sf(n2)(0)f(n1)(0)
The hyperbolic functions: \ncosh(t)=et+et2\\cosh \\left( t \\right) = \\frac{{{{\\bf{e}}^t} + {{\\bf{e}}^{ - t}}}}{2}cosh(t)=2et+et , \nsinh(t)=etet2\\sinh \\left( t \\right) = \\frac{{{{\\bf{e}}^t} - {{\\bf{e}}^{ - t}}}}{2}sinh(t)=2etet
\n
1 The Heaviside Function. 2 The Dirac Delta Function.
\n
" diff --git a/tests/testthat/_snaps/footer.md b/tests/testthat/_snaps/footer.md index 8d4be23546..f85788415a 100644 --- a/tests/testthat/_snaps/footer.md +++ b/tests/testthat/_snaps/footer.md @@ -3,7 +3,7 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
num1char2fctrdatetimedatetimecurrencyrowgroup
0.1111apricotone2015-01-1513:352018-01-01 02:2249.95row_1grp_a
Source note **bold** (#1, no `md()`)
Source note bold (#2, uses md())
1 footnote **bold** (#1, no `md()`)
2 footnote bold (#2, uses md())
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
num1char2fctrdatetimedatetimecurrencyrowgroup
0.1111apricotone2015-01-1513:352018-01-01 02:2249.95row_1grp_a
Source note **bold** (#1, no `md()`)
Source note bold (#2, uses md())
1 footnote **bold** (#1, no `md()`)
2 footnote bold (#2, uses md())
" --- @@ -107,7 +107,7 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
num1char2fctrdatetimedatetimecurrencyrowgroup
0.1111apricotone2015-01-1513:352018-01-01 02:2249.95row_1grp_a
\n
Source note **bold** (#1, no `md()`)  Source note bold (#2, uses md())
\n
\n
1 footnote **bold** (#1, no `md()`)  2 footnote bold (#2, uses md())
\n
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
num1char2fctrdatetimedatetimecurrencyrowgroup
0.1111apricotone2015-01-1513:352018-01-01 02:2249.95row_1grp_a
\n
Source note **bold** (#1, no `md()`)  Source note bold (#2, uses md())
\n
\n
1 footnote **bold** (#1, no `md()`)  2 footnote bold (#2, uses md())
\n
" --- @@ -211,7 +211,7 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
num1char2fctrdatetimedatetimecurrencyrowgroup
0.1111apricotone2015-01-1513:352018-01-01 02:2249.95row_1grp_a
\n
Source note **bold** (#1, no `md()`) | Source note bold (#2, uses md())
\n
\n
1 footnote **bold** (#1, no `md()`) | 2 footnote bold (#2, uses md())
\n
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
num1char2fctrdatetimedatetimecurrencyrowgroup
0.1111apricotone2015-01-1513:352018-01-01 02:2249.95row_1grp_a
\n
Source note **bold** (#1, no `md()`) | Source note bold (#2, uses md())
\n
\n
1 footnote **bold** (#1, no `md()`) | 2 footnote bold (#2, uses md())
\n
" --- diff --git a/tests/testthat/_snaps/quarto.md b/tests/testthat/_snaps/quarto.md index 10e0ec537c..ca44b1733a 100644 --- a/tests/testthat/_snaps/quarto.md +++ b/tests/testthat/_snaps/quarto.md @@ -3,5 +3,5 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n
title
num\n
problem
\n
char1Factor2
3 0.1111apricotone
2.222bananatwo
33.33coconutthree
444.4durianfour
5550NAfive
1 Not a problem
2 A problem because fctr is labelled with md
3 Problem because num row 1 is fmt_markdown() + also the footnote is wrapped in md.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n\n\n \n\n\n \n\n\n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n
title
num\n
problem
\n
char1Factor2
3 0.1111apricotone
2.222bananatwo
33.33coconutthree
444.4durianfour
5550NAfive
1 Not a problem
2 A problem because fctr is labelled with md
3 Problem because num row 1 is fmt_markdown() + also the footnote is wrapped in md.
" diff --git a/tests/testthat/_snaps/removal_functions.md b/tests/testthat/_snaps/removal_functions.md index 5e04bce590..80e504ae8b 100644 --- a/tests/testthat/_snaps/removal_functions.md +++ b/tests/testthat/_snaps/removal_functions.md @@ -3,77 +3,77 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
A Stubhead Labelnumcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
A Stubhead Labelnumcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
datetimedatetime\n
Numbers
\n
numcharfctrcurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
datetimedatetime\n
Numbers
\n
numcharfctrcurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Labelnum\n
Words
\n
\n
Date and Time
\n
currency
charfctrdatetimedatetime
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Labelnum\n
Words
\n
\n
Date and Time
\n
currency
charfctrdatetimedatetime
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
charfctr\n
Date and Time
\n
\n
Numbers
\n
numdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
charfctr\n
Date and Time
\n
\n
Numbers
\n
numdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
A Stubhead Label\n
Grand Spanner
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
A Stubhead Label\n
Grand Spanner
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
A Stubhead Label\n
Grand Spanner
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
A Stubhead Label\n
Grand Spanner
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
A Stubhead Labelnumcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
A Stubhead Labelnumcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" --- @@ -87,14 +87,14 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_21 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_21 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a second footnote.
" --- @@ -108,33 +108,33 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
1 This is a footnote.
2 This is a second footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
1 This is a footnote.
2 This is a second footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n
This is a caption
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
1 This is a footnote.
2 This is a second footnote.
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
The title of the table
The table's subtitle
\n
Grand Spanner
\n
A Stubhead Label\n
Numbers
\n
\n
Words
\n
\n
Date and Time
\n
\n
Numbers
\n
numcharfctrdatetimedatetimecurrency
grp_a
row_11 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950
row_22 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950
row_33.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390
row_44.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000
min0.111.39
max444.4065,100.00
grp_b
row_55.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810
row_6NAfigsix2015-06-15NA2018-06-06 16:1113.255
row_77.770e+05grapefruitsevenNA19:102018-07-07 05:22NA
row_88.880e+06honeydeweight2015-08-1520:20NA0.440
total66,509
This is a source note.
This is a second source note.
1 This is a footnote.
2 This is a second footnote.
" diff --git a/tests/testthat/_snaps/tab_footnote.md b/tests/testthat/_snaps/tab_footnote.md index 358a2c3ab4..66fe56ee00 100644 --- a/tests/testthat/_snaps/tab_footnote.md +++ b/tests/testthat/_snaps/tab_footnote.md @@ -197,7 +197,7 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n
numcharfctrdatetimedatetimecurrencyrowgroup
1 0.1111apricotone2015-01-1513:352018-01-01 02:2249.95row_1grp_a
A footnote.
1 A footnote.
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n
numcharfctrdatetimedatetimecurrencyrowgroup
1 0.1111apricotone2015-01-1513:352018-01-01 02:2249.95row_1grp_a
A footnote.
1 A footnote.
" --- @@ -294,7 +294,7 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n
numcharfctrdatetimedatetimecurrencyrowgroup
1 0.1111apricotone2015-01-1513:352018-01-01 02:2249.95row_1grp_a
\n
A footnote. A second footnote. 1 location note
\n
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n
numcharfctrdatetimedatetimecurrencyrowgroup
1 0.1111apricotone2015-01-1513:352018-01-01 02:2249.95row_1grp_a
\n
A footnote. A second footnote. 1 location note
\n
" --- @@ -391,35 +391,35 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
char
apricot1
1 note
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
char
apricot1
1 note
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
char
1 apricot
1 note
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
char
1 apricot
1 note
" # Footnotes are correctly placed with text produced by `fmt_markdown()` in Quarto (#1773) Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
char
apricot1
1 note
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
char
apricot1
1 note
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
char
1 apricot
1 note
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
char
1 apricot
1 note
" # Footnotes work with group labels in 2-column stub arrangements Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n \n\n\n \n\n \n\n \n\n \n \n \n \n \n \n \n
Pizzas Sold
peppr_salami1L696
M428
S322
sum1,446
soppressataL405
M268
S288
sum961
1 The Pepper-Salami.
" + [1] "\n \n \n \n \n \n \n \n \n\n\n \n\n \n\n \n\n \n\n\n \n\n \n\n \n\n \n \n \n \n \n \n \n
Pizzas Sold
peppr_salami1L696
M428
S322
sum1,446
soppressataL405
M268
S288
sum961
1 The Pepper-Salami.
" --- diff --git a/tests/testthat/_snaps/tab_options.md b/tests/testthat/_snaps/tab_options.md index 74be9e6f4f..f559268b19 100644 --- a/tests/testthat/_snaps/tab_options.md +++ b/tests/testthat/_snaps/tab_options.md @@ -3,26 +3,26 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
The mtcars Dataset1
What a great dataset this is
mpgcyl\n
performance
\n
wtqsecvsamgearcarb
disphpdrat
Mazda RX421.061601103.902.62016.460144
Mazda RX4 Wag21.061601103.902.87517.020144
Datsun 71022.84108933.852.32018.611141
Hornet 4 Drive21.462581103.083.21519.441031
Hornet Sportabout18.783601753.153.44017.020032
Dataset is generally available in R
1 A table footnote
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
The mtcars Dataset1
What a great dataset this is
mpgcyl\n
performance
\n
wtqsecvsamgearcarb
disphpdrat
Mazda RX421.061601103.902.62016.460144
Mazda RX4 Wag21.061601103.902.87517.020144
Datsun 71022.84108933.852.32018.611141
Hornet 4 Drive21.462581103.083.21519.441031
Hornet Sportabout18.783601753.153.44017.020032
Dataset is generally available in R
1 A table footnote
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
The mtcars Dataset1
What a great dataset this is
mpgcyl\n
performance
\n
wtqsecvsamgearcarb
disphpdrat
Mazda RX421.061601103.902.62016.460144
Mazda RX4 Wag21.061601103.902.87517.020144
Datsun 71022.84108933.852.32018.611141
Hornet 4 Drive21.462581103.083.21519.441031
Hornet Sportabout18.783601753.153.44017.020032
Dataset is generally available in R
1 A table footnote
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
The mtcars Dataset1
What a great dataset this is
mpgcyl\n
performance
\n
wtqsecvsamgearcarb
disphpdrat
Mazda RX421.061601103.902.62016.460144
Mazda RX4 Wag21.061601103.902.87517.020144
Datsun 71022.84108933.852.32018.611141
Hornet 4 Drive21.462581103.083.21519.441031
Hornet Sportabout18.783601753.153.44017.020032
Dataset is generally available in R
1 A table footnote
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
The mtcars Dataset1
What a great dataset this is
mpgcyl\n
performance
\n
wtqsecvsamgearcarb
disphpdrat
Mazda RX421.061601103.902.62016.460144
Mazda RX4 Wag21.061601103.902.87517.020144
Datsun 71022.84108933.852.32018.611141
Hornet 4 Drive21.462581103.083.21519.441031
Hornet Sportabout18.783601753.153.44017.020032
Dataset is generally available in R
1 A table footnote
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
The mtcars Dataset1
What a great dataset this is
mpgcyl\n
performance
\n
wtqsecvsamgearcarb
disphpdrat
Mazda RX421.061601103.902.62016.460144
Mazda RX4 Wag21.061601103.902.87517.020144
Datsun 71022.84108933.852.32018.611141
Hornet 4 Drive21.462581103.083.21519.441031
Hornet Sportabout18.783601753.153.44017.020032
Dataset is generally available in R
1 A table footnote
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
The mtcars Dataset1
What a great dataset this is
mpgcyl\n
performance
\n
wtqsecvsamgearcarb
disphpdrat
Mazda RX421.061601103.902.62016.460144
Mazda RX4 Wag21.061601103.902.87517.020144
Datsun 71022.84108933.852.32018.611141
Hornet 4 Drive21.462581103.083.21519.441031
Hornet Sportabout18.783601753.153.44017.020032
Dataset is generally available in R
1 A table footnote
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
The mtcars Dataset1
What a great dataset this is
mpgcyl\n
performance
\n
wtqsecvsamgearcarb
disphpdrat
Mazda RX421.061601103.902.62016.460144
Mazda RX4 Wag21.061601103.902.87517.020144
Datsun 71022.84108933.852.32018.611141
Hornet 4 Drive21.462581103.083.21519.441031
Hornet Sportabout18.783601753.153.44017.020032
Dataset is generally available in R
1 A table footnote
" diff --git a/tests/testthat/_snaps/tab_remove.md b/tests/testthat/_snaps/tab_remove.md index 8efdc8bb22..6399d19b51 100644 --- a/tests/testthat/_snaps/tab_remove.md +++ b/tests/testthat/_snaps/tab_remove.md @@ -122,7 +122,7 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n
numcharfctrdatetimedatetimecurrencyrowgroup
1 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950row_1grp_a
2 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950row_2grp_a
3.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390row_3grp_a
4.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000row_4grp_a
5.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810row_5grp_b
NAfigsix2015-06-15NA2018-06-06 16:1113.255row_6grp_b
7.770e+05grapefruitsevenNA19:102018-07-07 05:22NArow_7grp_b
8.880e+06honeydeweight2015-08-1520:20NA0.440row_8grp_b
1 Footnote 1
2 Footnote 2
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n \n \n
numcharfctrdatetimedatetimecurrencyrowgroup
1 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950row_1grp_a
2 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950row_2grp_a
3.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390row_3grp_a
4.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000row_4grp_a
5.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810row_5grp_b
NAfigsix2015-06-15NA2018-06-06 16:1113.255row_6grp_b
7.770e+05grapefruitsevenNA19:102018-07-07 05:22NArow_7grp_b
8.880e+06honeydeweight2015-08-1520:20NA0.440row_8grp_b
1 Footnote 1
2 Footnote 2
" --- @@ -136,14 +136,14 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n
numcharfctrdatetimedatetimecurrencyrowgroup
1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950row_1grp_a
1 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950row_2grp_a
3.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390row_3grp_a
4.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000row_4grp_a
5.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810row_5grp_b
NAfigsix2015-06-15NA2018-06-06 16:1113.255row_6grp_b
7.770e+05grapefruitsevenNA19:102018-07-07 05:22NArow_7grp_b
8.880e+06honeydeweight2015-08-1520:20NA0.440row_8grp_b
1 Footnote 2
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n
numcharfctrdatetimedatetimecurrencyrowgroup
1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950row_1grp_a
1 2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950row_2grp_a
3.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390row_3grp_a
4.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000row_4grp_a
5.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810row_5grp_b
NAfigsix2015-06-15NA2018-06-06 16:1113.255row_6grp_b
7.770e+05grapefruitsevenNA19:102018-07-07 05:22NArow_7grp_b
8.880e+06honeydeweight2015-08-1520:20NA0.440row_8grp_b
1 Footnote 2
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n
numcharfctrdatetimedatetimecurrencyrowgroup
1 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950row_1grp_a
2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950row_2grp_a
3.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390row_3grp_a
4.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000row_4grp_a
5.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810row_5grp_b
NAfigsix2015-06-15NA2018-06-06 16:1113.255row_6grp_b
7.770e+05grapefruitsevenNA19:102018-07-07 05:22NArow_7grp_b
8.880e+06honeydeweight2015-08-1520:20NA0.440row_8grp_b
1 Footnote 1
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n \n \n \n \n \n \n \n
numcharfctrdatetimedatetimecurrencyrowgroup
1 1.111e-01apricotone2015-01-1513:352018-01-01 02:2249.950row_1grp_a
2.222e+00bananatwo2015-02-1514:402018-02-02 14:3317.950row_2grp_a
3.333e+01coconutthree2015-03-1515:452018-03-03 03:441.390row_3grp_a
4.444e+02durianfour2015-04-1516:502018-04-04 15:5565100.000row_4grp_a
5.550e+03NAfive2015-05-1517:552018-05-05 04:001325.810row_5grp_b
NAfigsix2015-06-15NA2018-06-06 16:1113.255row_6grp_b
7.770e+05grapefruitsevenNA19:102018-07-07 05:22NArow_7grp_b
8.880e+06honeydeweight2015-08-1520:20NA0.440row_8grp_b
1 Footnote 1
" --- diff --git a/tests/testthat/_snaps/tab_spanner_delim.md b/tests/testthat/_snaps/tab_spanner_delim.md index 9cd8592d19..ed99e85b9a 100644 --- a/tests/testthat/_snaps/tab_spanner_delim.md +++ b/tests/testthat/_snaps/tab_spanner_delim.md @@ -178,14 +178,14 @@ Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n \n \n \n
\n
Cut Across
\n
\n
Cut In
\n
\n
Data
\n
\n
span_1
\n
\n
span_2
\n
\n
A
\n
\n
B
\n
\n
A
\n
\n
B
\n
XXYY
1234
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n \n \n \n
\n
Cut Across
\n
\n
Cut In
\n
\n
Data
\n
\n
span_1
\n
\n
span_2
\n
\n
A
\n
\n
B
\n
\n
A
\n
\n
B
\n
XXYY
1234
" --- Code render_as_html(gt_tbl) Output - [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n \n \n \n
\n
Cut Across
\n
\n
Cut Across
\n
\n
Data
\n
\n
Cut In
\n
\n
span_2
\n
\n
span_1
\n
\n
A
\n
\n
B
\n
\n
A
\n
\n
B
\n
YYXX
3412
" + [1] "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n \n \n \n
\n
Cut Across
\n
\n
Cut Across
\n
\n
Data
\n
\n
Cut In
\n
\n
span_2
\n
\n
span_1
\n
\n
A
\n
\n
B
\n
\n
A
\n
\n
B
\n
YYXX
3412
" --- diff --git a/tests/testthat/test-extract_body.R b/tests/testthat/test-extract_body.R index a532103492..db65f0babe 100644 --- a/tests/testthat/test-extract_body.R +++ b/tests/testthat/test-extract_body.R @@ -369,7 +369,7 @@ test_that("Extraction of the table body works well", { tbl_body_1_8[["labels"]], c( "A", - "B1", + "B1", "C", "D", "E", "F", "G" ) ) @@ -383,14 +383,14 @@ test_that("Extraction of the table body works well", { tbl_body_1_8[["num_2"]], c( "2.0", "5.0", - "2.02", + "2.02", "6.0", "2.6", "923.0", "-23.0" ) ) expect_equal( tbl_body_1_8[["int_1"]], c( - "1.001", + "1.001", "−100,000.00", "800.00", "5", "NA", "1", "-3202334" ) ) @@ -436,7 +436,7 @@ test_that("Extraction of the table body works well", { tbl_body_1_8_b[["labels"]], c( "A", - "B1", + "B1", "C", "D", "E", "F", "G" ) ) @@ -450,14 +450,14 @@ test_that("Extraction of the table body works well", { tbl_body_1_8_b[["num_2"]], c( "2.0", "5.0", - "2.02", + "2.02", "6.0", "2.6", "923.0", "-23.0" ) ) expect_equal( tbl_body_1_8_b[["int_1"]], c( - "1.001", + "1.001", "−100,000.00", "800.00", "5", "NA", "1", "-3202334" ) ) @@ -884,14 +884,14 @@ test_that("Extraction of the table body works well", { tbl_body_2_8[["num_2"]], c( "2.0", "5.0", "2.6", "-23.0", - "2.02", + "2.02", "6.0", "923.0" ) ) expect_equal( tbl_body_2_8[["int_1"]], c( - "1.001", + "1.001", "−100,000.00", "NA", "-3202334", "800.00", "5", "1" ) ) diff --git a/tests/testthat/test-table_parts.R b/tests/testthat/test-table_parts.R index 6a8feed85f..f314e8454a 100644 --- a/tests/testthat/test-table_parts.R +++ b/tests/testthat/test-table_parts.R @@ -292,7 +292,7 @@ test_that("tab_row_group() gives the correct output", { expect_match_html( tbl_rows, regexp = c( - "void1", + "void1", "void" ), fixed = TRUE From 5e85e178c99ff8dcc3a8eed4ccd73171be3d6503 Mon Sep 17 00:00:00 2001 From: olivroy Date: Fri, 30 Aug 2024 16:12:22 -0400 Subject: [PATCH 07/11] Add helper to get all options set by `tab_options()` as a list. Refactor code to get multiple option values. --- R/dt_options.R | 19 ++++++++++ R/render_as_i_html.R | 88 ++++++++++++++++++++++---------------------- 2 files changed, 64 insertions(+), 43 deletions(-) diff --git a/R/dt_options.R b/R/dt_options.R index fedf835ea0..c260730f28 100644 --- a/R/dt_options.R +++ b/R/dt_options.R @@ -49,6 +49,25 @@ dt_options_get_value <- function(data, option) { dt_options$value[[which(dt_options$parameter == option)]] } +# Get a list of option values +dt_options_get_values <- function(data) { + dt_options <- dt_options_get(data = data)[c(1, 2)] + # Similar to tibble::deframe + vctrs::vec_set_names(dt_options$value, dt_options$parameter) + res <- vctrs::vec_set_names(dt_options$value, dt_options$parameter) + class(res) <- c("gt_option", class(res)) + res +} + +#' @export +`$.gt_option` <- function(x, name) { + out <- .subset2(x, name) + if (is.null(out)) { + cli::cli_abort("Can't find option {.val {name}}.") + } + out +} + default_fonts_vec <- c( "system-ui", "Segoe UI", "Roboto", "Helvetica", "Arial", "sans-serif", diff --git a/R/render_as_i_html.R b/R/render_as_i_html.R index 18c3f89f58..2921e1ff6e 100644 --- a/R/render_as_i_html.R +++ b/R/render_as_i_html.R @@ -170,57 +170,59 @@ render_as_ihtml <- function(data, id) { ) } - # Get options settable in `tab_options()` - opt_val <- dt_options_get_value - height <- opt_val(data = data, option = "ihtml_height") - use_pagination <- opt_val(data = data, option = "ihtml_use_pagination") - use_pagination_info <- opt_val(data = data, option = "ihtml_use_pagination_info") - use_search <- opt_val(data = data, option = "ihtml_use_search") - use_sorting <- opt_val(data = data, option = "ihtml_use_sorting") - use_filters <- opt_val(data = data, option = "ihtml_use_filters") - use_resizers <- opt_val(data = data, option = "ihtml_use_resizers") - use_highlight <- opt_val(data = data, option = "ihtml_use_highlight") - use_compact_mode <- opt_val(data = data, option = "ihtml_use_compact_mode") - use_text_wrapping <- opt_val(data = data, option = "ihtml_use_text_wrapping") - use_page_size_select <- opt_val(data = data, option = "ihtml_use_page_size_select") - page_size_default <- opt_val(data = data, option = "ihtml_page_size_default") - page_size_values <- opt_val(data = data, option = "ihtml_page_size_values") - pagination_type <- opt_val(data = data, option = "ihtml_pagination_type") - - use_row_striping <- opt_val(data = data, option = "row_striping_include_table_body") - row_striping_color <- opt_val(data = data, option = "row_striping_background_color") - - table_width <- opt_val(data = data, option = "table_width") - table_background_color <- opt_val(data = data, option = "table_background_color") - table_font_names <- opt_val(data = data, option = "table_font_names") - table_font_color <- opt_val(data = data, option = "table_font_color") - - column_labels_border_top_style <- opt_val(data = data, option = "column_labels_border_top_style") - column_labels_border_top_width <- opt_val(data = data, option = "column_labels_border_top_width") - column_labels_border_top_color <- opt_val(data = data, option = "column_labels_border_top_color") - column_labels_border_bottom_style <- opt_val(data = data, option = "column_labels_border_bottom_style") - column_labels_border_bottom_width <- opt_val(data = data, option = "column_labels_border_bottom_width") - column_labels_border_bottom_color <- opt_val(data = data, option = "column_labels_border_bottom_color") + # Get all options settable in `tab_options()` + tbl_opts <- dt_options_get_values(data) + + # Get specific options values + height <- tbl_opts$ihtml_height + use_pagination <- tbl_opts$ihtml_use_pagination + use_pagination_info <- tbl_opts$ihtml_use_pagination_info + use_search <- tbl_opts$ihtml_use_search + use_sorting <- tbl_opts$ihtml_use_sorting + use_filters <- tbl_opts$ihtml_use_filters + use_resizers <- tbl_opts$ihtml_use_resizers + use_highlight <- tbl_opts$ihtml_use_highlight + use_compact_mode <- tbl_opts$ihtml_use_compact_mode + use_text_wrapping <- tbl_opts$ihtml_use_text_wrapping + use_page_size_select <- tbl_opts$ihtml_use_page_size_select + page_size_default <- tbl_opts$ihtml_page_size_default + page_size_values <- tbl_opts$ihtml_page_size_values + pagination_type <- tbl_opts$ihtml_pagination_type + + use_row_striping <- tbl_opts$row_striping_include_table_body + row_striping_color <- tbl_opts$row_striping_background_color + + table_width <- tbl_opts$table_width + table_background_color <- tbl_opts$table_background_color + table_font_names <- tbl_opts$table_font_names + table_font_color <- tbl_opts$table_font_color + + column_labels_border_top_style <- tbl_opts$column_labels_border_top_style + column_labels_border_top_width <- tbl_opts$column_labels_border_top_width + column_labels_border_top_color <- tbl_opts$column_labels_border_top_color + column_labels_border_bottom_style <- tbl_opts$column_labels_border_bottom_style + column_labels_border_bottom_width <- tbl_opts$column_labels_border_bottom_width + column_labels_border_bottom_color <- tbl_opts$column_labels_border_bottom_color # Don't allow NA - column_labels_background_color <- opt_val(data = data, option = "column_labels_background_color") + column_labels_background_color <- tbl_opts$column_labels_background_color # Apply stub font weight to - stub_font_weight <- opt_val(data = data, option = "stub_font_weight") + stub_font_weight <- tbl_opts$stub_font_weight if (is.na(column_labels_background_color)) { # apply all column labels formatting to both heading + groupCol styling (nothing specific for spanners styling in gt?) column_labels_background_color <- "transparent" } # Part of #1307 - borderless_borders <- opt_val(data = data, option = "table_body_hlines_style") == "none" + borderless_borders <- tbl_opts$table_body_hlines_style == "none" - column_labels_font_weight <- opt_val(data = data, option = "column_labels_font_weight") + column_labels_font_weight <- tbl_opts$column_labels_font_weight # Apply font weight to groupname_col title - row_group_font_weight <- opt_val(data = data, "row_group_font_weight") - table_body_font_weight <- opt_val(data = data, "table_font_weight") + row_group_font_weight <- tbl_opts$row_group_font_weight + table_body_font_weight <- tbl_opts$table_font_weight # for row names + summary label - stub_font_weight <- opt_val(data = data, "stub_font_weight") + stub_font_weight <- tbl_opts$stub_font_weight # #1693 table font size - table_font_size <- opt_val(data = data, "table_font_size") + table_font_size <- tbl_opts$table_font_size emoji_symbol_fonts <- c( @@ -753,10 +755,10 @@ create_source_notes_component_ihtml <- function(data) { } # Get the source note multiline option - multiline <- dt_options_get_value(data = data, option = "source_notes_multiline") + multiline <- tbl_opts$source_notes_multiline # Get the source note separator option - separator <- dt_options_get_value(data = data, option = "source_notes_sep") + separator <- tbl_opts$source_notes_sep # Handle the multiline source notes case (each footnote takes up one line) if (multiline) { @@ -829,10 +831,10 @@ create_footnotes_component_ihtml <- function(data) { } # Get the footnote multiline option - multiline <- dt_options_get_value(data = data, option = "footnotes_multiline") + multiline <- tbl_opts$footnotes_multiline # Get the footnote separator option - separator <- dt_options_get_value(data = data, option = "footnotes_sep") + separator <- tbl_opts$footnotes_sep # Obtain vectors of footnote ID values (prerendered glyphs) and # the associated text From bfd0eb3a80bc095a1e194ee313043a0c42e767db Mon Sep 17 00:00:00 2001 From: olivroy Date: Fri, 30 Aug 2024 16:21:35 -0400 Subject: [PATCH 08/11] Fix function --- R/dt_options.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/dt_options.R b/R/dt_options.R index c260730f28..099f0d6720 100644 --- a/R/dt_options.R +++ b/R/dt_options.R @@ -51,7 +51,7 @@ dt_options_get_value <- function(data, option) { # Get a list of option values dt_options_get_values <- function(data) { - dt_options <- dt_options_get(data = data)[c(1, 2)] + dt_options <- dt_options_get(data = data)[c("parameter", "value")] # Similar to tibble::deframe vctrs::vec_set_names(dt_options$value, dt_options$parameter) res <- vctrs::vec_set_names(dt_options$value, dt_options$parameter) From ca945b846b10e6b3826df644b6fcc1c86f187d59 Mon Sep 17 00:00:00 2001 From: olivroy Date: Fri, 30 Aug 2024 16:26:21 -0400 Subject: [PATCH 09/11] showcase how tests can be simplified with the new helper --- tests/testthat/test-opts.R | 56 ++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/tests/testthat/test-opts.R b/tests/testthat/test-opts.R index fda6a4c739..a90114780e 100644 --- a/tests/testthat/test-opts.R +++ b/tests/testthat/test-opts.R @@ -2,27 +2,23 @@ test_that("opt_footnote_marks() sets the correct options", { set_marks <- c("*", "+", "~", "<", ">") - exibble %>% - gt() %>% - dt_options_get_value("footnotes_marks") %>% - expect_equal("numbers") + gt_tbl <- gt(exibble) + tbl_opts <- dt_options_get_values(gt_tbl) - exibble %>% - gt() %>% - opt_footnote_marks(marks = set_marks) %>% - dt_options_get_value("footnotes_marks") %>% - expect_equal(c("*", "+", "~", "<", ">")) + expect_equal(tbl_opts$footnotes_marks, "numbers") - exibble %>% - gt() %>% - opt_footnote_marks(marks = LETTERS) %>% - dt_options_get_value("footnotes_marks") %>% - expect_equal(LETTERS) - - expect_error(exibble %>% gt() %>% opt_footnote_marks(NULL)) - expect_error(exibble %>% gt() %>% opt_footnote_marks("set_1")) - expect_error(exibble %>% gt() %>% opt_footnote_marks(1:5)) - expect_error(exibble %>% gt() %>% opt_footnote_marks(character(0L))) + gt_tbl_2 <- opt_footnote_marks(gt_tbl, marks = set_marks) + tbl_opts_2 <- dt_options_get_values(gt_tbl_2) + expect_equal(tbl_opts_2$footnotes_marks, set_marks) + + gt_tbl_3 <- opt_footnote_marks(gt_tbl, marks = LETTERS) + tbl_opts_3 <- dt_options_get_values(gt_tbl_3) + expect_equal(tbl_opts_3$footnotes_marks, LETTERS) + + expect_error(gt_tbl %>% opt_footnote_marks(NULL)) + expect_error(gt_tbl %>% opt_footnote_marks("set_1")) + expect_error(gt_tbl %>% opt_footnote_marks(1:5)) + expect_error(gt_tbl %>% opt_footnote_marks(character(0L))) }) test_that("opt_row_striping() sets the correct options", { @@ -85,16 +81,18 @@ test_that("opt_align_table_header() sets the correct options", { test_that("opt_all_caps() sets the correct options", { tbl <- exibble %>% gt() - - tbl %>% dt_options_get_value("column_labels_text_transform") %>% expect_equal("inherit") - tbl %>% dt_options_get_value("column_labels_font_size") %>% expect_equal("100%") - tbl %>% dt_options_get_value("column_labels_font_weight") %>% expect_equal("normal") - tbl %>% dt_options_get_value("stub_text_transform") %>% expect_equal("inherit") - tbl %>% dt_options_get_value("stub_font_size") %>% expect_equal("100%") - tbl %>% dt_options_get_value("stub_font_weight") %>% expect_equal("initial") - tbl %>% dt_options_get_value("row_group_text_transform") %>% expect_equal("inherit") - tbl %>% dt_options_get_value("row_group_font_size") %>% expect_equal("100%") - tbl %>% dt_options_get_value("row_group_font_weight") %>% expect_equal("initial") + tbl_opts <- dt_options_get_values(tbl) + + + expect_equal(tbl_opts$column_labels_text_transform, "inherit") + expect_equal(tbl_opts$column_labels_font_size, "100%") + expect_equal(tbl_opts$column_labels_font_weight, "normal") + expect_equal(tbl_opts$stub_text_transform, "inherit") + expect_equal(tbl_opts$stub_font_size, "100%") + expect_equal(tbl_opts$stub_font_weight, "initial") + expect_equal(tbl_opts$row_group_text_transform, "inherit") + expect_equal(tbl_opts$row_group_font_size, "100%") + expect_equal(tbl_opts$row_group_font_weight, "initial") tbl <- exibble %>% gt() %>% opt_all_caps() From 830fb90ce3dce61b25a9329e77cb32ab13e6223e Mon Sep 17 00:00:00 2001 From: olivroy Date: Fri, 30 Aug 2024 16:31:55 -0400 Subject: [PATCH 10/11] fixesz --- R/render_as_i_html.R | 2 ++ 1 file changed, 2 insertions(+) diff --git a/R/render_as_i_html.R b/R/render_as_i_html.R index 2921e1ff6e..b7ac1b362f 100644 --- a/R/render_as_i_html.R +++ b/R/render_as_i_html.R @@ -754,6 +754,7 @@ create_source_notes_component_ihtml <- function(data) { source_notes_styles <- NULL } + tbl_opts <- dt_options_get_values(data) # Get the source note multiline option multiline <- tbl_opts$source_notes_multiline @@ -830,6 +831,7 @@ create_footnotes_component_ihtml <- function(data) { footnotes_styles <- NULL } + tbl_opts <- dt_options_get_values(data) # Get the footnote multiline option multiline <- tbl_opts$footnotes_multiline From b16093f14b21937562017c848bc80fc628afbfe6 Mon Sep 17 00:00:00 2001 From: olivroy <52606734+olivroy@users.noreply.github.com> Date: Fri, 30 Aug 2024 16:44:03 -0400 Subject: [PATCH 11/11] Update R/dt_options.R --- R/dt_options.R | 1 - 1 file changed, 1 deletion(-) diff --git a/R/dt_options.R b/R/dt_options.R index 099f0d6720..2c3bb7b725 100644 --- a/R/dt_options.R +++ b/R/dt_options.R @@ -53,7 +53,6 @@ dt_options_get_value <- function(data, option) { dt_options_get_values <- function(data) { dt_options <- dt_options_get(data = data)[c("parameter", "value")] # Similar to tibble::deframe - vctrs::vec_set_names(dt_options$value, dt_options$parameter) res <- vctrs::vec_set_names(dt_options$value, dt_options$parameter) class(res) <- c("gt_option", class(res)) res