Skip to content

Commit 8651929

Browse files
committed
Merge branch 'feature/102-iactivetext.isempty-not-reliable' into develop
Fixes #102
2 parents 24be50a + 8e41ea9 commit 8651929

9 files changed

+27
-8
lines changed

Src/ActiveText.UHTMLRenderer.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ function TActiveTextHTML.Render(ActiveText: IActiveText): string;
174174
DestLines: IStringList;
175175
DestLine: string;
176176
begin
177-
if ActiveText.IsEmpty then
177+
if not ActiveText.HasContent then
178178
Exit('');
179179
Text := '';
180180
fLevel := 0;

Src/ActiveText.UMain.pas

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,8 @@ TActiveTextAttrNames = record
190190
/// <summary>Checks if the active text object contains any elements.
191191
/// </summary>
192192
function IsEmpty: Boolean;
193+
/// <summary>Checks if the active text object has text content.</summary>
194+
function HasContent: Boolean;
193195
/// <summary>Checks if the active text object contains only plain text.
194196
/// </summary>
195197
/// <remarks>Plain text is considered to be active text with no action
@@ -504,6 +506,9 @@ TActiveText = class(TInterfacedObject,
504506
/// <summary>Checks if the element list is empty.</summary>
505507
/// <remarks>Method of IActiveText.</remarks>
506508
function IsEmpty: Boolean;
509+
/// <summary>Checks if the active text object has text content.</summary>
510+
/// <remarks>Method of IActiveText.</remarks>
511+
function HasContent: Boolean;
507512
/// <summary>Checks if the active text object contains only plain text.
508513
/// </summary>
509514
/// <remarks>
@@ -869,6 +874,18 @@ function TActiveText.GetEnumerator: TEnumerator<IActiveTextElem>;
869874
Result := fElems.GetEnumerator;
870875
end;
871876

877+
function TActiveText.HasContent: Boolean;
878+
var
879+
Elem: IActiveTextElem;
880+
TextElem: IActiveTextTextElem;
881+
begin
882+
Result := False;
883+
for Elem in fElems do
884+
if Supports(Elem, IActiveTextTextElem, TextElem)
885+
and (TextElem.Text <> '') then
886+
Exit(True);
887+
end;
888+
872889
function TActiveText.IsEmpty: Boolean;
873890
begin
874891
Result := fElems.Count = 0;

Src/DBIO.UXMLDataIO.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -950,7 +950,7 @@ procedure TXMLDataWriter.WriteSnippetProps(const SnippetName: string;
950950
);
951951
fXMLDoc.CreateElement(SnippetNode, cDisplayNameNode, Props.DisplayName);
952952
// extra node is only written if extra property has a value
953-
if not Props.Extra.IsEmpty then
953+
if Props.Extra.HasContent then
954954
begin
955955
fXMLDoc.CreateElement(
956956
SnippetNode,

Src/FmSnippetsEditorDlg.FrActiveTextEditor.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ procedure TSnippetsActiveTextEdFrame.SetActiveText(Value: IActiveText);
257257
SetEditMode(emREML)
258258
else
259259
SetEditMode(fDefaultEditMode);
260-
if not Value.IsEmpty then
260+
if Value.HasContent then
261261
begin
262262
case fEditMode of
263263
emPlainText:

Src/UCodeImportExport.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ procedure TCodeExporter.WriteSnippet(const ParentNode: IXMLNode;
300300
SnippetNode, cHighlightSource, IntToStr(Ord(Snippet.HiliteSource))
301301
);
302302
// extra info is written only if present
303-
if not Snippet.Extra.IsEmpty then
303+
if Snippet.Extra.HasContent then
304304
fXMLDoc.CreateElement(
305305
SnippetNode,
306306
cExtraNode,

Src/UREMLDataIO.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -735,7 +735,7 @@ class function TREMLWriter.Render(const ActiveText: IActiveText): string;
735735
DestLine: string;
736736
RW: TREMLWriter;
737737
begin
738-
if ActiveText.IsEmpty then
738+
if not ActiveText.HasContent then
739739
Exit('');
740740
RW := TREMLWriter.InternalCreate;
741741
try

Src/URTFSnippetDoc.pas

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,8 @@ procedure TRTFSnippetDoc.RenderExtra(const ExtraText: IActiveText);
398398
var
399399
RTFWriter: TActiveTextRTF; // Object that generates RTF from active text
400400
begin
401-
Assert(not ExtraText.IsEmpty, ClassName + '.RenderExtra: ExtraText is empty');
401+
Assert(ExtraText.HasContent,
402+
ClassName + '.RenderExtra: ExtraText has no content');
402403
RTFWriter := TActiveTextRTF.Create;
403404
try
404405
RTFWriter.ElemStyleMap := fExtraStyles;

Src/USnippetDoc.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ function TSnippetDoc.Generate(const Snippet: TSnippet): TEncodedData;
177177
RenderTitledList(sXRefListTitle, SnippetsToStrings(Snippet.XRef));
178178
if Snippet.Kind <> skFreeform then
179179
RenderCompilerInfo(sCompilers, CompilerInfo(Snippet));
180-
if not Snippet.Extra.IsEmpty then
180+
if Snippet.Extra.HasContent then
181181
RenderExtra(Snippet.Extra);
182182
if not Snippet.UserDefined then
183183
// database info written only if snippet is from main database

Src/UTextSnippetDoc.pas

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,8 @@ procedure TTextSnippetDoc.RenderDescription(const Desc: IActiveText);
154154

155155
procedure TTextSnippetDoc.RenderExtra(const ExtraText: IActiveText);
156156
begin
157-
Assert(not ExtraText.IsEmpty, ClassName + '.RenderExtra: ExtraText is empty');
157+
Assert(ExtraText.HasContent,
158+
ClassName + '.RenderExtra: ExtraText has no content');
158159
fWriter.WriteLine;
159160
RenderActiveText(ExtraText);
160161
end;

0 commit comments

Comments
 (0)