From efe5bdb1987411a473d4af15451a376d20928245 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Fri, 12 Jun 2026 03:19:34 +0900 Subject: refactor(php-shim): replace literal sprintf calls with format! Convert every sprintf() call with a compile-time literal format string to format!, implementing Display for PhpMixed (delegating to php_to_string) so PhpMixed values render with PHP string semantics through {}. Also merge the format!-wrapped and conditional-literal dynamic sites into single format! calls. Genuinely runtime format strings (table styles, configurable error messages, command synopsis, progress-bar modifiers, regex-built messages) still go through sprintf. Co-Authored-By: Claude Opus 4.8 (1M context) --- crates/shirabe/src/package/loader/array_loader.rs | 44 +++++++++++------------ 1 file changed, 20 insertions(+), 24 deletions(-) (limited to 'crates/shirabe/src/package/loader/array_loader.rs') diff --git a/crates/shirabe/src/package/loader/array_loader.rs b/crates/shirabe/src/package/loader/array_loader.rs index 4df022b..8e87302 100644 --- a/crates/shirabe/src/package/loader/array_loader.rs +++ b/crates/shirabe/src/package/loader/array_loader.rs @@ -395,18 +395,16 @@ impl ArrayLoader { .unwrap_or(false); if !has_required { return Err(UnexpectedValueException { - message: sprintf( - "Package %s's source key should be specified as {\"type\": ..., \"url\": ..., \"reference\": ...},\n%s given.", - &[ - PhpMixed::String( - config - .get("name") - .and_then(|v| v.as_string()) - .unwrap_or("") - .to_string(), - ), - PhpMixed::String(json_encode(&source).unwrap_or_default()), - ], + message: format!( + "Package {}'s source key should be specified as {{\"type\": ..., \"url\": ..., \"reference\": ...}},\n{} given.", + PhpMixed::String( + config + .get("name") + .and_then(|v| v.as_string()) + .unwrap_or("") + .to_string(), + ), + PhpMixed::String(json_encode(&source).unwrap_or_default()), ), code: 0, } @@ -440,18 +438,16 @@ impl ArrayLoader { .unwrap_or(false); if !has_required { return Err(UnexpectedValueException { - message: sprintf( - "Package %s's dist key should be specified as {\"type\": ..., \"url\": ..., \"reference\": ..., \"shasum\": ...},\n%s given.", - &[ - PhpMixed::String( - config - .get("name") - .and_then(|v| v.as_string()) - .unwrap_or("") - .to_string(), - ), - PhpMixed::String(json_encode(&dist).unwrap_or_default()), - ], + message: format!( + "Package {}'s dist key should be specified as {{\"type\": ..., \"url\": ..., \"reference\": ..., \"shasum\": ...}},\n{} given.", + PhpMixed::String( + config + .get("name") + .and_then(|v| v.as_string()) + .unwrap_or("") + .to_string(), + ), + PhpMixed::String(json_encode(&dist).unwrap_or_default()), ), code: 0, } -- cgit v1.3.1