minify escaped dollar
This commit is contained in:
parent
0b46581b22
commit
cdf4ca5b85
1 changed files with 24 additions and 0 deletions
|
|
@ -276,6 +276,26 @@ void do_minify_quotes(arg* in)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void do_minify_dollar(string_subarg* in)
|
||||||
|
{
|
||||||
|
std::string& val = in->val;
|
||||||
|
for(uint32_t i=0; i<val.size(); i++) {
|
||||||
|
// skip singlequote strings
|
||||||
|
if(val[i] == '\'') {
|
||||||
|
i++;
|
||||||
|
while(val[i] != '\'')
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
// has \$
|
||||||
|
if(i+1<val.size() && val[i] == '\\' && val[i+1] == '$') {
|
||||||
|
// char after $ is a varname
|
||||||
|
if(i+2<val.size() && (is_varname(val[i+2]) || is_in(val[i+2], SPECIAL_VARS)) )
|
||||||
|
continue;
|
||||||
|
val.erase(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool r_minify_useless_quotes(_obj* in)
|
bool r_minify_useless_quotes(_obj* in)
|
||||||
{
|
{
|
||||||
switch(in->type)
|
switch(in->type)
|
||||||
|
|
@ -284,6 +304,10 @@ bool r_minify_useless_quotes(_obj* in)
|
||||||
arg* t = dynamic_cast<arg*>(in);
|
arg* t = dynamic_cast<arg*>(in);
|
||||||
do_minify_quotes(t);
|
do_minify_quotes(t);
|
||||||
}; break;
|
}; break;
|
||||||
|
case _obj::subarg_string: {
|
||||||
|
string_subarg* t = dynamic_cast<string_subarg*>(in);
|
||||||
|
do_minify_dollar(t);
|
||||||
|
}; break;
|
||||||
case _obj::_redirect: {
|
case _obj::_redirect: {
|
||||||
// for redirects: don't minify quotes on here documents
|
// for redirects: don't minify quotes on here documents
|
||||||
redirect* t = dynamic_cast<redirect*>(in);
|
redirect* t = dynamic_cast<redirect*>(in);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue