1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
PRECISION_YEAR = 0L
PRECISION_QUARTER = 1L
PRECISION_MONTH = 2L
PRECISION_WEEK = 3L
PRECISION_DAY = 4L
PRECISION_HOUR = 5L
PRECISION_MINUTE = 6L
PRECISION_SECOND = 7L
PRECISION_MILLISECOND = 8L
PRECISION_MICROSECOND = 9L
PRECISION_NANOSECOND = 10L
# ------------------------------------------------------------------------------
check_precision <- function(
x,
...,
values = NULL,
arg = caller_arg(x),
call = caller_env()
) {
values <- values %||% precision_names()
check_string(x, allow_empty = FALSE, arg = arg, call = call)
arg_match0(x, values = values, arg_nm = arg, error_call = call)
}
check_precision_subsecond <- function(
x,
...,
arg = caller_arg(x),
call = caller_env()
) {
check_precision(
x = x,
values = c("millisecond", "microsecond", "nanosecond"),
arg = arg,
call = call
)
}
precision_to_integer <- function(x) {
check_string(x, .internal = TRUE)
switch(
x,
year = PRECISION_YEAR,
quarter = PRECISION_QUARTER,
month = PRECISION_MONTH,
week = PRECISION_WEEK,
day = PRECISION_DAY,
hour = PRECISION_HOUR,
minute = PRECISION_MINUTE,
second = PRECISION_SECOND,
millisecond = PRECISION_MILLISECOND,
microsecond = PRECISION_MICROSECOND,
nanosecond = PRECISION_NANOSECOND,
abort("`x` not recognized.", .internal = TRUE)
)
}
precision_abbr <- function(precision_string) {
switch(
precision_string,
millisecond = "milli",
microsecond = "micro",
nanosecond = "nano",
precision_string # fallthrough
)
}
precision_common2 <- function(x, y) {
if (x >= y) {
x
} else {
y
}
}
precision_names <- function() {
c(
"year",
"quarter",
"month",
"week",
"day",
"hour",
"minute",
"second",
"millisecond",
"microsecond",
"nanosecond"
)
}
precision_time_names <- function() {
c(
"hour",
"minute",
"second",
"millisecond",
"microsecond",
"nanosecond"
)
}
|