Use a-lists for Lispy output.

- Also bump long strings onto a new line in JSON and LISP formats.
This commit is contained in:
James Crook 2018-02-11 09:57:19 +00:00 committed by Paul Licameli
parent 510f68e9ad
commit 5e2371c636
5 changed files with 63 additions and 22 deletions

View File

@ -65,7 +65,7 @@ def do( command ) :
def quickTest() :
do( 'Help: Command=Help' )
#do( 'Help: Command="GetInfo"' )
do( 'SetPreference: Name=GUI/Theme Value=dark Reload=1' )
do( 'Help: Command="GetInfo"' )
#do( 'SetPreference: Name=GUI/Theme Value=classic Reload=1' )
quickTest()

View File

@ -671,11 +671,12 @@ void ShuttleGetDefinition::DefineEnum( wxString &var, const wxChar * key, const
AddItem( "unchanged", "default" );
else
AddItem( vdefault, "default" );
AddField( "enum" );
StartField( "enum" );
StartArray();
for( size_t i=0;i<strings.Count(); i++ )
AddItem( strings[i] );
EndArray();
EndField();
EndStruct();
}
@ -688,11 +689,12 @@ void ShuttleGetDefinition::DefineEnum( int&var, const wxChar * key, const int vd
AddItem( "unchanged", "default" );
else
AddItem( (double)vdefault, "default" );
AddField( "enum" );
StartField( "enum" );
StartArray();
for( size_t i=0;i<strings.Count(); i++ )
AddItem( strings[i] );
EndArray();
EndField();
EndStruct();
}

View File

@ -57,8 +57,11 @@ void CommandMessageTarget::EndStruct(){
}
void CommandMessageTarget::AddItem(const wxString &value, const wxString &name){
wxString Temp = value;
wxString Padding;
Padding.Pad( mCounts.GetCount() *2 -2);
Padding = (( value.length() < 15 ) || (mCounts.Last()<=0)) ? "" : wxString("\n") + Padding;
Temp.Replace("\"", "\\\"");// escape spaces.
Update( wxString::Format( "%s%s%s\"%s\"", (mCounts.Last()>0)?", ":"", name, !name.IsEmpty()?":":"",value));
Update( wxString::Format( "%s%s%s%s\"%s\"", (mCounts.Last()>0)?", ":"", Padding, name, !name.IsEmpty()?":":"",value));
mCounts.Last() += 1;
}
void CommandMessageTarget::AddBool(const bool value, const wxString &name){
@ -70,9 +73,16 @@ void CommandMessageTarget::AddItem(const double value, const wxString &name){
mCounts.Last() += 1;
}
void CommandMessageTarget::AddField(const wxString &name){
void CommandMessageTarget::StartField(const wxString &name){
Update( wxString::Format( "%s%s%s", (mCounts.Last()>0)?", ":"", name, !name.IsEmpty()?":":""));
mCounts.Last() = 0; // Lie so that we don't get a comma.
mCounts.Last() += 1;
mCounts.push_back( 0 );
}
void CommandMessageTarget::EndField(){
if( mCounts.GetCount() > 1 ){
mCounts.pop_back();
}
}
void CommandMessageTarget::Flush(){
@ -109,23 +119,43 @@ void LispyCommandMessageTarget::EndStruct(){
Update( " )" );
}
void LispyCommandMessageTarget::AddItem(const wxString &value, const wxString &name){
Update( wxString::Format( "%s%s%s\"%s\"", (mCounts.Last()>0)?", ":"", name, !name.IsEmpty()?",":"",value));
wxString Padding;
Padding.Pad( mCounts.GetCount() *2 -2);
Padding = (( value.length() < 15 ) || (mCounts.Last()<=0)) ? "" : wxString("\n") + Padding;
if( name.IsEmpty() )
Update( wxString::Format( "%s%s\"%s\"", (mCounts.Last()>0)?", ":"", Padding, value));
else
Update( wxString::Format( "%s%s( %s, \"%s\" )", (mCounts.Last()>0)?", ":"", Padding, name, value));
mCounts.Last() += 1;
}
void LispyCommandMessageTarget::AddBool(const bool value, const wxString &name){
Update( wxString::Format( "%s%s%s%s", (mCounts.Last()>0)?", ":"", name, !name.IsEmpty()?",":"",value?"True":"False"));
if( name.IsEmpty() )
Update( wxString::Format( "%s%s", (mCounts.Last()>0)?", ":"",value?"True":"False"));
else
Update( wxString::Format( "%s( %s, %s )", (mCounts.Last()>0)?", ":"", name,value?"True":"False"));
mCounts.Last() += 1;
}
void LispyCommandMessageTarget::AddItem(const double value, const wxString &name){
Update( wxString::Format( "%s%s%s%g", (mCounts.Last()>0)?", ":"", name, !name.IsEmpty()?",":"",value));
if( name.IsEmpty() )
Update( wxString::Format( "%s%g", (mCounts.Last()>0)?", ":"", value));
else
Update( wxString::Format( "%s( %s, %g )", (mCounts.Last()>0)?", ":"", name,value));
mCounts.Last() += 1;
}
void LispyCommandMessageTarget::AddField(const wxString &name){
Update( wxString::Format( "%s%s%s", (mCounts.Last()>0)?", ":"", name, !name.IsEmpty()?",":""));
mCounts.Last() = 0; // Lie so that we don't get a comma.
void LispyCommandMessageTarget::StartField(const wxString &name){
Update( wxString::Format( "%s( %s, ", (mCounts.Last()>0)?", ":"", name ));
mCounts.Last() += 1;
mCounts.push_back( 0 );
}
void LispyCommandMessageTarget::EndField(){
if( mCounts.GetCount() > 1 ){
mCounts.pop_back();
}
Update( " )" );
}
@ -180,12 +210,16 @@ void BriefCommandMessageTarget::AddItem(const double value, const wxString &n
mCounts.Last() += 1;
}
void BriefCommandMessageTarget::AddField(const wxString &name){
mCounts.Last() = 0; // Lie so that we don't get a comma.
void BriefCommandMessageTarget::StartField(const wxString &name){
mCounts.Last() += 1;
mCounts.push_back( 0 );
}
void BriefCommandMessageTarget::EndField(){
if( mCounts.GetCount() > 1 ){
mCounts.pop_back();
}
}
LispifiedCommandOutputTargets::LispifiedCommandOutputTargets( CommandOutputTargets & target )

View File

@ -85,7 +85,8 @@ public:
virtual void AddItem(const wxString &value , const wxString &name="" );
virtual void AddBool(const bool value , const wxString &name="" );
virtual void AddItem(const double value , const wxString &name="" );
virtual void AddField( const wxString &name="" );
virtual void StartField( const wxString &name="" );
virtual void EndField( );
virtual void Flush();
wxArrayInt mCounts;
};
@ -103,7 +104,8 @@ public:
virtual void AddItem(const wxString &value , const wxString &name="" ){ mTarget.AddItem(value,name);};
virtual void AddBool(const bool value , const wxString &name="" ){ mTarget.AddBool(value,name);};
virtual void AddItem(const double value , const wxString &name="" ){ mTarget.AddItem(value,name);};
virtual void AddField( const wxString &name="" ){ mTarget.AddField(name);};
virtual void StartField( const wxString &name="" ){ mTarget.StartField(name);};
virtual void EndField( ){ mTarget.EndField();};
virtual void Flush(){ mTarget.Flush();};
CommandMessageTarget & mTarget;
};
@ -119,7 +121,8 @@ public:
virtual void AddItem(const wxString &value , const wxString &name="" )override;
virtual void AddBool(const bool value , const wxString &name="" )override;
virtual void AddItem(const double value , const wxString &name="" )override;
virtual void AddField( const wxString &name="" )override;
virtual void StartField( const wxString &name="" )override;
virtual void EndField( ) override;
};
class BriefCommandMessageTarget : public CommandMessageTargetDecorator /* not final */
@ -133,7 +136,8 @@ public:
virtual void AddItem(const wxString &value , const wxString &name="" )override;
virtual void AddBool(const bool value , const wxString &name="" )override;
virtual void AddItem(const double value , const wxString &name="" )override;
virtual void AddField( const wxString &name="" )override;
virtual void StartField( const wxString &name="" )override;
virtual void EndField( ) override;
};
/// Used to ignore a command's progress updates

View File

@ -244,10 +244,11 @@ void EffectManager::GetCommandDefinition(const PluginID & ID, const CommandConte
S.AddItem( GetCommandIdentifier( ID ), "id" );
S.AddItem( GetCommandName( ID ), "name" );
if( bHasParams ){
S.AddField( "params" );
S.StartField( "params" );
S.StartArray();
command->DefineParams( S );
S.EndArray();
S.EndField();
}
S.AddItem( GetCommandUrl( ID ), "url" );
S.AddItem( GetCommandTip( ID ), "tip" );