Respect name-literally

This commit is contained in:
Aoran Zeng 2025-07-16 18:41:27 +08:00
parent ac114dd2f8
commit 2ec3c3d8d1
No known key found for this signature in database
GPG Key ID: 8F8BA8488E10ED98

View File

@ -86,6 +86,8 @@ my class CVariableNameGenerator {
$name = $config-name.string-value;
}
my $name-literally = $config.name-literally.bool-value;
# 替换非法字符
$name = $name.subst(/<-[a..z A..Z 0..9 _]>/, '_', :g);
# 合并连续的下划线
@ -93,14 +95,19 @@ my class CVariableNameGenerator {
# 移除结尾的下划线
$name = $name.subst(/_+$/, '');
# 组装变量名
my $varname = "";
if $name-literally {
# 如果是字面量,直接使用原名
$varname = $name;
} else {
# 否则,按照规则组装变量名
$varname ~= $prefix if $keep-prefix && $prefix;
$varname ~= "_" if $varname && $name;
$varname ~= $name if $name;
$varname ~= "_" if $varname && $postfix && $keep-postfix;
$varname ~= $postfix if $postfix && $keep-postfix;
}
return $varname || "unnamed_var";
}
}
@ -236,11 +243,11 @@ class Generator {
if $debug-config {
say "--- Section: $title ---";
say "Variable name = $varname";
say "Translation mode = $translate-mode";
say "Output mode = $output-mode";
say "Translation mode = $translate-mode";
say "Language = $language";
say "Prefix = $prefix (inherited from hierarchy)";
say "Prefix = $prefix";
say "Variable name = $varname";
say '';
}