1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-10-21 14:02:57 +02:00

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

@@ -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