
boilerplate Package Architecture
Source:vignettes/boilerplate-architecture.Rmd
boilerplate-architecture.Rmd
Overview
The boilerplate
package is designed to manage and
generate standardised text for scientific reports. It uses a unified
database architecture with a hierarchical path system and template
variable substitution.
Core Architecture Components
1. Unified Database System
The package uses a unified database structure where all content types share a common interface:
boilerplate_db (unified)
├── methods/
│ ├── statistical/
│ │ ├── regression/
│ │ └── longitudinal/
│ └── sampling/
├── measures/
│ ├── psychological/
│ └── demographic/
├── results/
├── discussion/
├── appendix/
└── template/
2. Path System
Content is organised using dot notation paths:
# Access nested content
"methods.statistical.regression.linear"
"measures.psychological.anxiety.gad7"
"results.descriptive.demographics"
Path Operations
-
Navigation:
get_nested_folder()
traverses the hierarchy -
Modification:
modify_nested_entry()
adds/updates/removes entries -
Wildcards:
methods.statistical.*
matches all statistical methods -
Validation:
boilerplate_path_exists()
checks path validity
3. Template Variable System
Dynamic content substitution using {{variable}}
syntax:
# Template text
"We analysed {{n}} participants using {{method}} regression."
# Variables
list(n = 100, method = "linear")
# Result
"We analysed 100 participants using linear regression."
4. File Organisation
R/
├── Core Functions
│ ├── init-functions.R # Database initialisation
│ ├── import-export-functions.R # I/O operations
│ └── utilities.R # Core utilities
│
├── User Interface
│ ├── manage-measures.R # Measure management
│ ├── generate-text.R # Text generation
│ └── generate-measures.R # Measure generation
│
├── Data Operations
│ ├── merge-databases.R # Database merging
│ ├── path-operations.R # Path manipulation
│ └── category-helpers.R # Category extraction
│
├── Format Support
│ ├── json-support.R # JSON operations
│ ├── migration-utilities.R # Format migration
│ └── bibliography-support.R # Citation handling
│
└── Batch Operations
├── boilerplate_batch_edit_functions.R
└── boilerplate_standardise_measures.R
Data Flow Architecture
1. Initialisation Flow
boilerplate_init()
├── Creates directory structure
├── Initialises empty databases
└── Saves as unified.json/rds
Key Design Patterns
2. Error Handling Strategy
- User confirmation prompts for destructive operations
- Informative error messages with suggestions
- Validation before operations
- Backup creation for critical operations
Database Schema
Unified Database Structure
list(
methods = list(
category1 = list(
entry1 = list(
text = "Method description with {{variables}}",
reference = "@citation2023",
keywords = c("keyword1", "keyword2")
)
)
),
measures = list(
category1 = list(
measure1 = list(
name = "measure_name",
description = "Description",
type = "continuous|categorical|ordinal|binary",
...
)
)
),
template = list(
global = list(var1 = "value1"),
methods = list(var2 = "value2")
)
)
Testing Architecture
Security Considerations
- File Operations: Validated paths, no arbitrary file access
- User Input: Sanitised for path traversal attacks
- Confirmations: Required for destructive operations
- Backups: Automatic for critical operations