]> git.huck.website - metaforge.git/commitdiff
added: include and expand files from source dir
authorHuck Boles <huck@huck.website>
Fri, 2 Jun 2023 23:27:49 +0000 (18:27 -0500)
committerHuck Boles <huck@huck.website>
Fri, 2 Jun 2023 23:27:49 +0000 (18:27 -0500)
files/test_site/pattern/test/expand_source.meta [new file with mode: 0644]
files/test_site/source/unit_tests/expand/source.meta [new file with mode: 0644]
files/test_site/source/unit_tests/expand/source_expand.meta [new file with mode: 0644]
src/metafile/file/patterns.rs
src/tests.rs

diff --git a/files/test_site/pattern/test/expand_source.meta b/files/test_site/pattern/test/expand_source.meta
new file mode 100644 (file)
index 0000000..c2d0d56
--- /dev/null
@@ -0,0 +1 @@
+&{SOURCE.unit_tests.expand.source_expand}
diff --git a/files/test_site/source/unit_tests/expand/source.meta b/files/test_site/source/unit_tests/expand/source.meta
new file mode 100644 (file)
index 0000000..c97e3bc
--- /dev/null
@@ -0,0 +1,3 @@
+${ var = 'GOOD' }
+
+&{ test = 'expand_source' }
diff --git a/files/test_site/source/unit_tests/expand/source_expand.meta b/files/test_site/source/unit_tests/expand/source_expand.meta
new file mode 100644 (file)
index 0000000..c290b5a
--- /dev/null
@@ -0,0 +1,2 @@
+GOOD
+${var}
index f50fd6fbc25758416bed1d100a4a5a47ea09f852..304254f4088edf74c4cd428c7db37f53decc5aab 100644 (file)
@@ -12,6 +12,8 @@ impl<'a> MetaFile<'a> {
             }
         }
 
+        let is_source = key.split('.').next().unwrap_or("") == "SOURCE";
+
         let mut filename = if let Some(name) = self.patterns.get(&Scope::create_local(key)) {
             Ok(name.to_string())
         } else if let Some(name) = self.patterns.get(&Scope::create_global(key)) {
@@ -21,6 +23,7 @@ impl<'a> MetaFile<'a> {
             .pattern
             .join(key.replace(".", "/") + ".meta")
             .exists()
+            || is_source
         {
             Ok(String::new())
         } else if self.header.panic_default {
@@ -61,15 +64,21 @@ impl<'a> MetaFile<'a> {
         }
 
         let pattern_path = key.replace('.', "/") + "/" + &filename;
-        let mut path = self.opts.pattern.join(pattern_path);
-        path.set_extension("meta");
 
+        let mut path = if is_source {
+            let pattern_path = pattern_path.replace("SOURCE/", "");
+            self.opts.source.join(pattern_path)
+        } else {
+            self.opts.pattern.join(pattern_path)
+        };
+
+        path.set_extension("meta");
         let mut pattern = MetaFile::build(path, self.opts)?;
 
         // copy over maps for expanding contained variables
         pattern.merge(self);
 
-        if pattern.header.pandoc.unwrap_or(false) {
+        if pattern.header.pandoc.unwrap_or(false) || is_source {
             pattern.pandoc()
         } else {
             pattern.get_source()
index 8e69a06a15b03a100ce979ab84a4fb12c45a398a..8564ce79a84504fbfb64d9d190030fdae8da3b53 100644 (file)
@@ -147,6 +147,12 @@ unit_test!(
     "<html>\n<h1 id=\"good\">GOOD</h1>\n\n\n</html>\n"
 );
 
+unit_test!(
+    include_source,
+    "expand/source",
+    "<html>\n<p>GOOD GOOD</p>\n\n\n\n</html>\n"
+);
+
 panic_test!(ignore, "ignore.meta", "");
 
 #[test]