24#ifndef DRC_RE_BASE_CONSTRAINT_DATA_H_
25#define DRC_RE_BASE_CONSTRAINT_DATA_H_
95 if( aRuleName.IsEmpty() )
96 return wxString( wxS(
"rule" ) );
99 result.reserve( aRuleName.length() );
101 for( wxUniChar c : aRuleName )
107 else if( wxIsalnum( c ) || c ==
'_' || c ==
'-' || c ==
'.' )
131 wxString
result( aValue );
133 if( !
result.Contains(
'.' ) )
139 if(
result.Last() ==
'.' )
147 wxString formatted = wxString::FromCDouble( aValue, aPrecision );
152 const std::vector<wxString>& aConstraintClauses )
const
157 if( !aContext.
comment.IsEmpty() )
159 wxArrayString lines = wxSplit( aContext.
comment,
'\n',
'\0' );
161 for(
const wxString& line : lines )
166 rule << wxS(
"\t# " ) << line << wxS(
"\n" );
171 rule << wxS(
"\t" ) << aContext.
layerClause << wxS(
"\n" );
173 for(
const wxString& clause : aConstraintClauses )
175 if( clause.IsEmpty() )
178 rule << wxS(
"\t" ) << clause << wxS(
"\n" );
virtual VALIDATION_RESULT Validate() const
Validates the constraint data.
void SetConstraintCode(wxString aCode)
static wxString quoteString(const wxString &aCondition)
DRC_RE_BASE_CONSTRAINT_DATA(int aId, int aParentId, wxString aRuleName)
static wxString formatDouble(double aValue, int aPrecision=6)
void SetLayers(std::vector< PCB_LAYER_ID > aLayers)
void SetGeneratedRule(const wxString &aRule)
wxString GetConstraintCode()
virtual ~DRC_RE_BASE_CONSTRAINT_DATA()=default
wxString m_constraintCode
void SetWasEdited(bool aEdited)
wxString buildRule(const RULE_GENERATION_CONTEXT &aContext, const std::vector< wxString > &aConstraintClauses) const
static wxString trimTrailingZeros(const wxString &aValue)
std::vector< PCB_LAYER_ID > m_layers
wxString GetRuleCondition()
static wxString sanitizeRuleName(const wxString &aRuleName)
void CopyFrom(const ICopyable &aSource) override
wxString m_originalRuleText
wxString GetOriginalRuleText() const
virtual wxString GenerateRule(const RULE_GENERATION_CONTEXT &aContext)
void SetOriginalRuleText(const wxString &aText)
void SetRuleCondition(wxString aRuleCondition)
std::vector< PCB_LAYER_ID > GetLayers()
wxString GetGeneratedRule() const
DRC_RE_BASE_CONSTRAINT_DATA()=default
Abstract interface class to enable polymorphic copying between objects.
RULE_EDITOR_DATA_BASE()=default
void CopyFrom(const ICopyable &aSource) override
Implementation of the polymorphic CopyFrom method.
wxString EscapeString(const wxString &aSource, ESCAPE_CONTEXT aContext)
The Escape/Unescape routines use HTML-entity-reference-style encoding to handle characters which are:...
wxString conditionExpression
Result of a validation operation.
wxString result
Test unit parsing edge cases and error handling.