Skip to content

Commit

Permalink
add support for nested partials
Browse files Browse the repository at this point in the history
  • Loading branch information
jesseditson committed Apr 16, 2024
1 parent 635b9c9 commit 0dca963
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 7 deletions.
18 changes: 13 additions & 5 deletions src/liquid_parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ impl ArchivalPartialSource {
if let Some(path) = layout_path {
for file in fs.walk_dir(path, false)? {
if let Some(name) = file.file_name().map(|f| f.to_str().unwrap()) {
if let Some((template_name, t)) = TemplateType::parse_name(name) {
if let Some((template_name, t)) = TemplateType::parse_path(name) {
debug!("adding layout {} ({})", template_name, t.extension());
if let Some(contents) = fs.read_to_string(&path.join(&file))? {
partials.insert(template_name.to_string(), contents);
Expand All @@ -42,11 +42,19 @@ impl ArchivalPartialSource {
for file in fs.walk_dir(path, false)? {
if let Some(name) = file.file_name().map(|f| f.to_str().unwrap()) {
if PARTIAL_FILE_NAME_RE.is_match(name) {
let (template_name, t) = TemplateType::parse_name(name).unwrap();
let template_name = &template_name[1..];
debug!("adding template {} ({})", template_name, t.extension());
debug!("partial at path {:?}", file);
let (partial_name, t) = TemplateType::parse_path(name).unwrap();
// Remove underscore from beginning of name
let partial_name = &partial_name[1..];
// Prepend path to this file if needed
let partial_name = if let Some(parent_dir) = file.parent() {
parent_dir.join(partial_name).to_string_lossy().to_string()
} else {
partial_name.to_string()
};
debug!("adding partial {} ({})", partial_name, t.extension());
if let Some(contents) = fs.read_to_string(&path.join(&file))? {
partials.insert(template_name.to_string(), contents);
partials.insert(partial_name.to_string(), contents);
} else {
error!("Failed reading partial {}", file.display());
}
Expand Down
2 changes: 1 addition & 1 deletion src/page.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ impl TemplateType {
r => Self::Unknown(r.to_string()),
}
}
pub fn parse_name(name: &str) -> Option<(&str, Self)> {
pub fn parse_path(name: &str) -> Option<(&str, Self)> {
if let Some(m) = TEMPLATE_FILE_NAME_RE.captures(name) {
let name = m.get(1);
let type_extension = m.get(2);
Expand Down
2 changes: 1 addition & 1 deletion src/site.rs
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ impl Site {
let file_path = pages_dir.join(&rel_path);
if let Some(name) = rel_path.file_name() {
let file_name = name.to_string_lossy();
if let Some((page_name, page_type)) = TemplateType::parse_name(&file_name) {
if let Some((page_name, page_type)) = TemplateType::parse_path(&file_name) {
let template_path_str =
rel_path.with_extension("").to_string_lossy().to_string();
if template_pages.contains(&template_path_str[..])
Expand Down

0 comments on commit 0dca963

Please sign in to comment.