mirror of
https://github.com/mbierlee/mirage-config.git
synced 2024-11-15 04:44:01 +01:00
Accept whitespace a bit more
This commit is contained in:
parent
b45a616d29
commit
6ea996cd08
|
@ -436,6 +436,8 @@ class ConfigDictionary {
|
||||||
auto defaultVarValue = "";
|
auto defaultVarValue = "";
|
||||||
|
|
||||||
void addVarValueToResult() {
|
void addVarValueToResult() {
|
||||||
|
varName = varName.strip;
|
||||||
|
|
||||||
if (varName.length == 0) {
|
if (varName.length == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -460,8 +462,8 @@ class ConfigDictionary {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defaultVarValue.length > 0) {
|
if (isParsingDefault) {
|
||||||
result ~= defaultVarValue;
|
result ~= defaultVarValue.strip;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -493,9 +495,9 @@ class ConfigDictionary {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c == '}') {
|
if (c == '}') {
|
||||||
|
addVarValueToResult();
|
||||||
isParsingEnvVar = false;
|
isParsingEnvVar = false;
|
||||||
isParsingDefault = false;
|
isParsingDefault = false;
|
||||||
addVarValueToResult();
|
|
||||||
varName = "";
|
varName = "";
|
||||||
defaultVarValue = "";
|
defaultVarValue = "";
|
||||||
continue;
|
continue;
|
||||||
|
@ -837,13 +839,18 @@ version (unittest) {
|
||||||
"withoutBrackets": new ValueNode("$MIRAGE_CONFIG_TEST_ENV_VAR"),
|
"withoutBrackets": new ValueNode("$MIRAGE_CONFIG_TEST_ENV_VAR"),
|
||||||
"withWhiteSpace": new ValueNode(" ${MIRAGE_CONFIG_TEST_ENV_VAR} "),
|
"withWhiteSpace": new ValueNode(" ${MIRAGE_CONFIG_TEST_ENV_VAR} "),
|
||||||
"alsoWithWhiteSpace": new ValueNode(" $MIRAGE_CONFIG_TEST_ENV_VAR"),
|
"alsoWithWhiteSpace": new ValueNode(" $MIRAGE_CONFIG_TEST_ENV_VAR"),
|
||||||
"tooMuchWhiteSpace": new ValueNode("$MIRAGE_CONFIG_TEST_ENV_VAR "),
|
"whitespaceAtEnd": new ValueNode("$MIRAGE_CONFIG_TEST_ENV_VAR "),
|
||||||
"notSet": new ValueNode("${MIRAGE_CONFIG_NOT_SET_TEST_ENV_VAR}"),
|
"notSet": new ValueNode("${MIRAGE_CONFIG_NOT_SET_TEST_ENV_VAR}"),
|
||||||
|
"alsoNotSet": new ValueNode("$MIRAGE_CONFIG_NOT_SET_TEST_ENV_VAR"),
|
||||||
"withDefault": new ValueNode("$MIRAGE_CONFIG_NOT_SET_TEST_ENV_VAR:use default!"),
|
"withDefault": new ValueNode("$MIRAGE_CONFIG_NOT_SET_TEST_ENV_VAR:use default!"),
|
||||||
"withDefaultAndBrackets": new ValueNode(
|
"withDefaultAndBrackets": new ValueNode(
|
||||||
"${MIRAGE_CONFIG_NOT_SET_TEST_ENV_VAR:use default!}"),
|
"${MIRAGE_CONFIG_NOT_SET_TEST_ENV_VAR:use default!}"),
|
||||||
"megaMix": new ValueNode("${MIRAGE_CONFIG_TEST_ENV_VAR_TWO} ${MIRAGE_CONFIG_TEST_ENV_VAR} ${MIRAGE_CONFIG_NOT_SET_TEST_ENV_VAR:go}!"),
|
"megaMix": new ValueNode("${MIRAGE_CONFIG_TEST_ENV_VAR_TWO} ${MIRAGE_CONFIG_TEST_ENV_VAR} ${MIRAGE_CONFIG_NOT_SET_TEST_ENV_VAR:go}!"),
|
||||||
"typical": new ValueNode("${MIRAGE_CONFIG_TEST_HOSTNAME:localhost}:${MIRAGE_CONFIG_TEST_PORT:8080}"),
|
"typical": new ValueNode("${MIRAGE_CONFIG_TEST_HOSTNAME:localhost}:${MIRAGE_CONFIG_TEST_PORT:8080}"),
|
||||||
|
"whitespaceInVar": new ValueNode("${MIRAGE_CONFIG_TEST_ENV_VAR }"),
|
||||||
|
"whitespaceInDefault": new ValueNode("${MIRAGE_CONFIG_NOT_SET_TEST_ENV_VAR: bruh}"),
|
||||||
|
"emptyDefault": new ValueNode("${MIRAGE_CONFIG_NOT_SET_TEST_ENV_VAR:}"),
|
||||||
|
"emptyDefaultWhiteSpace": new ValueNode("${MIRAGE_CONFIG_NOT_SET_TEST_ENV_VAR: }"),
|
||||||
]),
|
]),
|
||||||
SubstituteEnvironmentVariables.yes,
|
SubstituteEnvironmentVariables.yes,
|
||||||
SubstituteConfigVariables.no
|
SubstituteConfigVariables.no
|
||||||
|
@ -853,12 +860,17 @@ version (unittest) {
|
||||||
assert(config.get("withoutBrackets") == "is set!");
|
assert(config.get("withoutBrackets") == "is set!");
|
||||||
assert(config.get("withWhiteSpace") == " is set! ");
|
assert(config.get("withWhiteSpace") == " is set! ");
|
||||||
assert(config.get("alsoWithWhiteSpace") == " is set!");
|
assert(config.get("alsoWithWhiteSpace") == " is set!");
|
||||||
assertThrown!ConfigReadException(config.get("tooMuchWhiteSpace")); // Environment variable not found (whitespace is included in env name)
|
assert(config.get("whitespaceAtEnd") == "is set!");
|
||||||
assertThrown!ConfigReadException(config.get("notSet")); // Environment variable not found
|
assertThrown!ConfigReadException(config.get("notSet")); // Environment variable not found
|
||||||
|
assertThrown!ConfigReadException(config.get("alsoNotSet")); // Environment variable not found
|
||||||
assert(config.get("withDefault") == "use default!");
|
assert(config.get("withDefault") == "use default!");
|
||||||
assert(config.get("withDefaultAndBrackets") == "use default!");
|
assert(config.get("withDefaultAndBrackets") == "use default!");
|
||||||
assert(config.get("megaMix") == "is ready! is set! go!");
|
assert(config.get("megaMix") == "is ready! is set! go!");
|
||||||
assert(config.get("typical") == "localhost:8080");
|
assert(config.get("typical") == "localhost:8080");
|
||||||
|
assert(config.get("whitespaceInVar") == "is set!");
|
||||||
|
assert(config.get("whitespaceInDefault") == "bruh");
|
||||||
|
assert(config.get("emptyDefault") == "");
|
||||||
|
assert(config.get("emptyDefaultWhiteSpace") == "");
|
||||||
}
|
}
|
||||||
|
|
||||||
@("Don't read value from environment variables when disabled")
|
@("Don't read value from environment variables when disabled")
|
||||||
|
|
Loading…
Reference in a new issue