refactor(toml): Move the parse fn onto ScriptSource

This commit is contained in:
Ed Page 2024-11-22 16:36:22 -06:00
parent 7ec1867ba0
commit e82a4beaed

View File

@ -21,7 +21,7 @@ pub(super) fn expand_manifest(
path: &std::path::Path, path: &std::path::Path,
gctx: &GlobalContext, gctx: &GlobalContext,
) -> CargoResult<String> { ) -> CargoResult<String> {
let source = split_source(content)?; let source = ScriptSource::parse(content)?;
if let Some(frontmatter) = source.frontmatter { if let Some(frontmatter) = source.frontmatter {
match source.info { match source.info {
Some("cargo") | None => {} Some("cargo") | None => {}
@ -196,8 +196,9 @@ struct ScriptSource<'s> {
content: &'s str, content: &'s str,
} }
fn split_source(input: &str) -> CargoResult<ScriptSource<'_>> { impl<'s> ScriptSource<'s> {
let mut source = ScriptSource { fn parse(input: &'s str) -> CargoResult<Self> {
let mut source = Self {
shebang: None, shebang: None,
info: None, info: None,
frontmatter: None, frontmatter: None,
@ -277,6 +278,7 @@ fn split_source(input: &str) -> CargoResult<ScriptSource<'_>> {
source.content = content; source.content = content;
Ok(source) Ok(source)
}
} }
#[cfg(test)] #[cfg(test)]
@ -291,7 +293,7 @@ mod test_expand {
fn assert_source(source: &str, expected: impl IntoData) { fn assert_source(source: &str, expected: impl IntoData) {
use std::fmt::Write as _; use std::fmt::Write as _;
let actual = match split_source(source) { let actual = match ScriptSource::parse(source) {
Ok(actual) => actual, Ok(actual) => actual,
Err(err) => panic!("unexpected err: {err}"), Err(err) => panic!("unexpected err: {err}"),
}; };
@ -497,7 +499,7 @@ content: "\nfn main() {}"
#[test] #[test]
fn split_too_few_dashes() { fn split_too_few_dashes() {
assert_err( assert_err(
split_source( ScriptSource::parse(
r#"#!/usr/bin/env cargo r#"#!/usr/bin/env cargo
-- --
[dependencies] [dependencies]
@ -513,7 +515,7 @@ fn main() {}
#[test] #[test]
fn split_mismatched_dashes() { fn split_mismatched_dashes() {
assert_err( assert_err(
split_source( ScriptSource::parse(
r#"#!/usr/bin/env cargo r#"#!/usr/bin/env cargo
--- ---
[dependencies] [dependencies]
@ -529,7 +531,7 @@ fn main() {}
#[test] #[test]
fn split_missing_close() { fn split_missing_close() {
assert_err( assert_err(
split_source( ScriptSource::parse(
r#"#!/usr/bin/env cargo r#"#!/usr/bin/env cargo
--- ---
[dependencies] [dependencies]