mirror of
https://github.com/RGBCube/serenity
synced 2025-05-30 23:38:11 +00:00
Shell: Make Node::resolve_as_list(nullptr) resolve to a 'pure' repr
'pure' as in "not requiring a shell", similar to JS::Value::to_string_without_side_effects().
This commit is contained in:
parent
206dcd84a6
commit
afe0ae586c
1 changed files with 15 additions and 0 deletions
|
@ -2316,6 +2316,9 @@ GlobValue::~GlobValue()
|
||||||
}
|
}
|
||||||
Vector<String> GlobValue::resolve_as_list(RefPtr<Shell> shell)
|
Vector<String> GlobValue::resolve_as_list(RefPtr<Shell> shell)
|
||||||
{
|
{
|
||||||
|
if (!shell)
|
||||||
|
return { m_glob };
|
||||||
|
|
||||||
return shell->expand_globs(m_glob, shell->cwd);
|
return shell->expand_globs(m_glob, shell->cwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2324,6 +2327,9 @@ SimpleVariableValue::~SimpleVariableValue()
|
||||||
}
|
}
|
||||||
Vector<String> SimpleVariableValue::resolve_as_list(RefPtr<Shell> shell)
|
Vector<String> SimpleVariableValue::resolve_as_list(RefPtr<Shell> shell)
|
||||||
{
|
{
|
||||||
|
if (!shell)
|
||||||
|
return {};
|
||||||
|
|
||||||
if (auto value = resolve_without_cast(shell); value != this)
|
if (auto value = resolve_without_cast(shell); value != this)
|
||||||
return value->resolve_as_list(shell);
|
return value->resolve_as_list(shell);
|
||||||
|
|
||||||
|
@ -2341,6 +2347,8 @@ Vector<String> SimpleVariableValue::resolve_as_list(RefPtr<Shell> shell)
|
||||||
|
|
||||||
NonnullRefPtr<Value> SimpleVariableValue::resolve_without_cast(RefPtr<Shell> shell)
|
NonnullRefPtr<Value> SimpleVariableValue::resolve_without_cast(RefPtr<Shell> shell)
|
||||||
{
|
{
|
||||||
|
ASSERT(shell);
|
||||||
|
|
||||||
if (auto value = shell->lookup_local_variable(m_name))
|
if (auto value = shell->lookup_local_variable(m_name))
|
||||||
return value.release_nonnull();
|
return value.release_nonnull();
|
||||||
return *this;
|
return *this;
|
||||||
|
@ -2352,6 +2360,9 @@ SpecialVariableValue::~SpecialVariableValue()
|
||||||
|
|
||||||
Vector<String> SpecialVariableValue::resolve_as_list(RefPtr<Shell> shell)
|
Vector<String> SpecialVariableValue::resolve_as_list(RefPtr<Shell> shell)
|
||||||
{
|
{
|
||||||
|
if (!shell)
|
||||||
|
return {};
|
||||||
|
|
||||||
switch (m_name) {
|
switch (m_name) {
|
||||||
case '?':
|
case '?':
|
||||||
return { String::number(shell->last_return_code) };
|
return { String::number(shell->last_return_code) };
|
||||||
|
@ -2383,6 +2394,10 @@ Vector<String> TildeValue::resolve_as_list(RefPtr<Shell> shell)
|
||||||
StringBuilder builder;
|
StringBuilder builder;
|
||||||
builder.append("~");
|
builder.append("~");
|
||||||
builder.append(m_username);
|
builder.append(m_username);
|
||||||
|
|
||||||
|
if (!shell)
|
||||||
|
return { builder.to_string() };
|
||||||
|
|
||||||
return { shell->expand_tilde(builder.to_string()) };
|
return { shell->expand_tilde(builder.to_string()) };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue