Browse Source

Fix bug with colocated folders

index-subcmd
Vincent Prouillet 6 years ago
parent
commit
a24851790c
3 changed files with 45 additions and 7 deletions
  1. +1
    -0
      CHANGELOG.md
  2. +44
    -6
      components/content/src/page.rs
  3. +0
    -1
      components/site/test_site/content/posts/with-assets/index.md

+ 1
- 0
CHANGELOG.md View File

@@ -20,6 +20,7 @@
- Remove deprecated `link` param of `get_url` - Remove deprecated `link` param of `get_url`
- Add 1337 color scheme - Add 1337 color scheme
- Defaults to compressed Sass output - Defaults to compressed Sass output
- Fix regression wrt co-located assets slug detecting


## 0.1.3 (2017-08-31) ## 0.1.3 (2017-08-31)




+ 44
- 6
components/content/src/page.rs View File

@@ -86,7 +86,15 @@ impl Page {
if let Some(ref slug) = page.meta.slug { if let Some(ref slug) = page.meta.slug {
slug.trim().to_string() slug.trim().to_string()
} else { } else {
slugify(page.file.name.clone())
if page.file.name == "index" {
if let Some(parent) = page.file.path.parent() {
slugify(parent.file_name().unwrap().to_str().unwrap())
} else {
slugify(page.file.name.clone())
}
} else {
slugify(page.file.name.clone())
}
} }
}; };


@@ -210,6 +218,7 @@ impl ser::Serialize for Page {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use std::collections::HashMap; use std::collections::HashMap;
use std::io::Write;
use std::fs::{File, create_dir}; use std::fs::{File, create_dir};
use std::path::Path; use std::path::Path;


@@ -311,25 +320,54 @@ Hello world
} }


#[test] #[test]
fn page_with_assets_gets_right_parent_path() {
fn page_with_assets_gets_right_info() {
let tmp_dir = TempDir::new("example").expect("create temp dir"); let tmp_dir = TempDir::new("example").expect("create temp dir");
let path = tmp_dir.path(); let path = tmp_dir.path();
create_dir(&path.join("content")).expect("create content temp dir"); create_dir(&path.join("content")).expect("create content temp dir");
create_dir(&path.join("content").join("posts")).expect("create posts temp dir"); create_dir(&path.join("content").join("posts")).expect("create posts temp dir");
let nested_path = path.join("content").join("posts").join("assets");
let nested_path = path.join("content").join("posts").join("with-assets");
create_dir(&nested_path).expect("create nested temp dir"); create_dir(&nested_path).expect("create nested temp dir");
File::create(nested_path.join("index.md")).unwrap();
let mut f = File::create(nested_path.join("index.md")).unwrap();
f.write_all(b"+++\n+++\n").unwrap();
File::create(nested_path.join("example.js")).unwrap(); File::create(nested_path.join("example.js")).unwrap();
File::create(nested_path.join("graph.jpg")).unwrap(); File::create(nested_path.join("graph.jpg")).unwrap();
File::create(nested_path.join("fail.png")).unwrap(); File::create(nested_path.join("fail.png")).unwrap();


let res = Page::parse(
let res = Page::from_file(
nested_path.join("index.md").as_path(), nested_path.join("index.md").as_path(),
"+++\nurl=\"hey\"+++\n",
&Config::default() &Config::default()
); );
assert!(res.is_ok()); assert!(res.is_ok());
let page = res.unwrap(); let page = res.unwrap();
assert_eq!(page.file.parent, path.join("content").join("posts")); assert_eq!(page.file.parent, path.join("content").join("posts"));
assert_eq!(page.slug, "with-assets");
assert_eq!(page.assets.len(), 3);
assert_eq!(page.permalink, "http://a-website.com/posts/with-assets/");
}

#[test]
fn page_with_assets_and_slug_overrides_path() {
let tmp_dir = TempDir::new("example").expect("create temp dir");
let path = tmp_dir.path();
create_dir(&path.join("content")).expect("create content temp dir");
create_dir(&path.join("content").join("posts")).expect("create posts temp dir");
let nested_path = path.join("content").join("posts").join("with-assets");
create_dir(&nested_path).expect("create nested temp dir");
let mut f = File::create(nested_path.join("index.md")).unwrap();
f.write_all(b"+++\nslug=\"hey\"\n+++\n").unwrap();
File::create(nested_path.join("example.js")).unwrap();
File::create(nested_path.join("graph.jpg")).unwrap();
File::create(nested_path.join("fail.png")).unwrap();

let res = Page::from_file(
nested_path.join("index.md").as_path(),
&Config::default()
);
assert!(res.is_ok());
let page = res.unwrap();
assert_eq!(page.file.parent, path.join("content").join("posts"));
assert_eq!(page.slug, "hey");
assert_eq!(page.assets.len(), 3);
assert_eq!(page.permalink, "http://a-website.com/posts/hey/");
} }
} }

+ 0
- 1
components/site/test_site/content/posts/with-assets/index.md View File

@@ -1,7 +1,6 @@
+++ +++
title = "With assets" title = "With assets"
description = "hey there" description = "hey there"
slug = "with-assets"
+++ +++


Hello world Hello world

Loading…
Cancel
Save