Skip to content

Commit

Permalink
improved arguments shifting [front] with SCRIPT_FORMAT_UNCHANGED #6 #7
Browse files Browse the repository at this point in the history
  • Loading branch information
wipe2238 committed Mar 6, 2020
1 parent 91e452c commit f5f3377
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 6 deletions.
2 changes: 1 addition & 1 deletion Source/ReDefine.h
Original file line number Diff line number Diff line change
Expand Up @@ -230,8 +230,8 @@ class ReDefine
{
struct Argument
{
std::string Arg; // trimmed
std::string Raw; // original
std::string Arg; // trimmed
std::string Type;
};

Expand Down
26 changes: 22 additions & 4 deletions Source/Script.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -853,6 +853,10 @@ static bool DoArgumentsErase( ReDefine::ScriptCode& code, const std::vector<std:
if( !code.GetINDEX( __FUNCTION__, values[0], idx ) )
return false;

// try to keep original formatting of 1st argument
if( code.Parent->ScriptFormatting == ReDefine::SCRIPT_FORMAT_UNCHANGED && idx == 0 && code.Arguments.size() >= 2 )
code.Arguments[1].Raw = code.Parent->TextGetReplaced( code.Arguments.front().Raw, code.Arguments.front().Arg, code.Arguments[1].Arg );

code.Arguments.erase( code.Arguments.begin() + idx );

return true;
Expand Down Expand Up @@ -901,14 +905,26 @@ static bool DoArgumentsMoveFront( ReDefine::ScriptCode& code, const std::vector<
if( !code.GetINDEX( __FUNCTION__, values[0], idx ) )
return false;

std::string arg = code.Arguments[idx].Arg, type = code.Arguments[idx].Type;
std::string arg0, arg1, type = code.Arguments[idx].Type;
// try to keep original formatting of arguments
if( code.Parent->ScriptFormatting == ReDefine::SCRIPT_FORMAT_UNCHANGED && code.Arguments.size() >= 2 )
{
arg0 = code.Parent->TextGetReplaced( code.Arguments.front().Raw, code.Arguments.front().Arg, code.Arguments[idx].Arg );
arg1 = code.Parent->TextGetReplaced( code.Arguments[idx].Raw, code.Arguments[idx].Arg, code.Arguments.front().Arg );
}

if( arg0.empty() )
arg0 = code.Arguments[idx].Arg;

if( !code.CallEditDo( "DoArgumentsErase", { values[0] } ) )
return false;

if( !code.CallEditDo( "DoArgumentsPushFront", { arg, type } ) )
if( !code.CallEditDo( "DoArgumentsPushFront", { arg0, type } ) )
return false;

if( !arg1.empty() )
code.Arguments[1].Raw = arg1;

return true;
}

Expand All @@ -932,7 +948,8 @@ static bool DoArgumentsPushBack( ReDefine::ScriptCode& code, const std::vector<s
return false;

ReDefine::ScriptCode::Argument argument;
argument.Arg = argument.Raw = values[0];
argument.Raw = values[0];
argument.Arg = code.Parent->TextGetTrimmed( values[0] );
argument.Type = type;

code.Arguments.push_back( argument );
Expand Down Expand Up @@ -960,7 +977,8 @@ static bool DoArgumentsPushFront( ReDefine::ScriptCode& code, const std::vector<
return false;

ReDefine::ScriptCode::Argument argument;
argument.Arg = argument.Raw = values[0];
argument.Raw = values[0];
argument.Arg = code.Parent->TextGetTrimmed( values[0] );
argument.Type = type;
code.Arguments.insert( code.Arguments.begin(), argument );

Expand Down
2 changes: 1 addition & 1 deletion Source/Text.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -299,8 +299,8 @@ unsigned int ReDefine::TextGetFunctions( const std::string& text, std::vector<Re
// update arguments list
else if( ch == ',' && balance == 1 )
{
argument.Arg = TextGetTrimmed( arg );
argument.Raw = arg;
argument.Arg = TextGetTrimmed( arg );
argument.Type = "?";
arguments.push_back( argument );

Expand Down

0 comments on commit f5f3377

Please sign in to comment.