html_getLinks() and html_getTables() functions.futile.logger::flog.layout() to avoid downstream complaints.check_~() functions.loadDataFile().ceilingStart argument to dateRange() and timeRange().dateRange().This version address a few issues encountered while using 0.3.11 in production.
timeStamp() function creates character timestamps useful for labeling.dateSequence() function generates a sequence of POSIXct values that align with midnight local time even through the switch to/from daylight savings.loadDataFile() function supports loading data from local directories or URLs.parseDatetime() when parsing julian dates.parsDatetime() argument julian to isJulian.stopIfNull() and setIfNull() now issue stop(...) messages with call. = TRUE so that the stack information bubbles up.futile.logger::flog.logger() to avoid downstream complaints.timezoneLintrules.parseDatetime() now supports YYYY and YYYYmm formats.julian argument to parseDatetime() to support Julian day formats.Added a suite of functions to easily run devtools::check() with different arguments: * check_fastest() * check_faster() * check_fast() * check() * check_slow() * check_slower() * check_slowest()
timezoneLintRules.logger.isInitialized() for programmatic use.logger.setLevel() now guarantees that logger.setup() has been called, fixing a bug that generated multiple output messages when logger.setLevel() was called before logger.setup().timezoneLintRules.More consistency improvements to dateRange(). When specified, the days parameter now takes precedence over ceilingEnd when no enddate is specified.
Fully self-consistent package using internal functions wherever possible.
Various improvements after usage in an operational setting:
timezoneLintRules includes more date related functions.quiet argument to parseDateTime().timeRange() function now accepts unit and ceilingEnd arguments.dateRange() function now accepts ceilingEnd argument.The ceilingEnd argument addresses the ambiguity of a phrase like: “August 1-8”. With ceilingEnd = FALSE (default) this pharse means “through the beginning of Aug 8”. With ceilingEnd = TRUE it means “through the end of Aug 8”.
This version adds new convenience functions for dealing with NULL values in pipeline flow control.
setIfNull()stopIfNull()In a lot of the data pipelines we build (web services, packages, etc.), we need to deal with the possibility of NULL inputs. Setting a default value or throwing an error are two of the most common ways NUll values are dealt with. While the code to handle this is straightforward to write, it is verbose and repetitive. setIfNull() and stopIfNull() are designed to abstract away boilerplate code, allowing us to focus on more important things.
enddate in `dateRange().lintFunctionArgs_directory() to lintFunctionArgs_dir().fullPath argument to linting functions.date-parsing vignette.This version focuses on enhancing the time utility capabilities of MazamaCoreUtils.
lintFunctionArgs_file()lintFunctionArgs_directory()timeRange()parseDatetime()In order to ensure that we are working with timezones consistently, the functions lintFunctionArgs_file() and lintFunctionArgs_directory() were created to parse R source files and determine if certain functions contained specific named arguments, based on a set of rules. A set of rules, timezoneLintRules, was created to check that all functions that accept a timezone have that argument explicitly fill, avoiding inconsistent default behavior.
PWFSLSmoke::parseDatetime() was moved into MazamaCoreUtils so more packages can benefit from it without importing the rest of PWFSLSmoke. Also, timeRange() was created to work as a function analogous to dateRange(), parsing time ranges instead of finding date ranges.
As part of this consolidation, more unit tests were added to the package.
dateRange().dateRange() no longer provides a default timezone.dateRange() no longer alters POSIXct inputsdateRange() now has stricter argument checkingfutile.logger from Depends to Imports.Rproj filedateRange() function.error-handling and logging.futile.logger not found error messages.maxFileAge parameter to cacheManagement() to help with removal of out-of-data products.