This vignette documents the internal functions of the
boilerplate package. These functions are not exported but
are essential for understanding the package’s architecture and
contributing to its development.
sort_db_recursive()Recursively sorts database entries alphabetically by key.
Parameters: - db: Database to sort
Returns: Sorted database
Usage: Ensures consistent ordering of database entries for reproducibility and easier navigation.
merge_recursive_lists()Deep merges two list structures, handling conflicts.
Parameters: - old_list: Base list
structure - new_list: List to merge in -
overwrite: How to handle conflicts
Returns: Merged list
Usage: Used in database merging operations and imports.
apply_template_vars()Substitutes template variables in text using {{variable}} syntax.
Parameters: - text: Text containing
{{variables}} - vars_list: Named list of variable
substitutions - category: Optional category for
section-specific variables
Returns: Text with variables substituted
Usage: Core of the template system. Handles both global and section-specific variable substitution.
Example:
get_db_file_path()Constructs standardised file paths for database files.
Parameters: - category: Database
category (e.g., “methods”, “measures”) - path_data: Base
path for data storage - timestamp: Whether to include
timestamp
Returns: Standardised file path
Usage: Ensures consistent file naming across the package.
read_boilerplate_db()Reads database from JSON or RDS format.
Parameters: - file: Path to database
file
Returns: Database structure
Usage: Handles both legacy RDS and modern JSON formats transparently.
write_boilerplate_db()Writes database to JSON or RDS format.
# Internal function in json-support.R
write_boilerplate_db(db, file, format = c("auto", "json", "rds"))Parameters: - db: Database to write -
file: Output file path - format: Output
format
Returns: Invisible NULL
Usage: Handles format selection and data preparation for serialisation.
get_default_db()Generic function to retrieve any default database.
Parameters: - type: Database type
(methods, measures, results, etc.)
Returns: Default database structure
Usage: Provides starter content for new databases.
get_default_methods_db(): Default methods contentget_default_measures_db(): Default measures
contentget_default_results_db(): Default results contentget_default_discussion_db(): Default discussion
contentget_default_appendix_db(): Default appendix
contentget_default_template_db(): Default template
variablesstandardise_json_structure()Ensures JSON structure matches expected RDS format.
Parameters: - json_data: Raw JSON data
- db_type: Type of database
Returns: Standardised structure
Usage: Handles format differences between JSON and RDS representations.
parse_bibtex_keys()Extracts citation keys from BibTeX files.
Parameters: - bib_file: Path to .bib
file
Returns: Character vector of citation keys
Usage: Used for reference validation.
detect_database_type()Determines database type from filename or structure.
Parameters: - file_or_db: Filename or
database object
Returns: Database type string
Usage: Enables automatic type detection during migrations.
migrate_to_unified_json()Migrates separate JSON files to unified format.
Parameters: - input_dir: Directory with
separate JSON files - output_file: Output unified JSON
file
Returns: Invisible TRUE on success
Usage: Consolidates multiple JSON files into single unified database.
transform_label()Transforms measure labels using mapping rules.
Parameters: - label: Original label -
transformations: Named list of transformations
Returns: Transformed label
Usage: Applies standardised transformations to measure labels.
Error Handling: Most internal functions assume valid inputs. Always validate before calling.
Path Operations: Use dot notation consistently (e.g., “category.subcategory.item”)
Database Modifications: Always use
modify_nested_entry() rather than direct list
manipulation
File I/O: Use the provided read/write functions to ensure format compatibility
Testing: Internal functions should be tested indirectly through their exported wrappers
When adding new internal functions:
@noRd