Skip to content

Commit 7878381

Browse files
Andrii Syrokomskyispydon
Andrii Syrokomskyi
andauthored
fix: Fixed parsing of multiline text from ObjectGroup. (#79)
* Fixed a test for multiline properties in Windows. * Fixed an empty string when parse multiline text from object group. --------- Co-authored-by: Lukas Klingsbo <[email protected]>
1 parent 779c44a commit 7878381

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

packages/tiled/lib/src/objects/text.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ class Text {
7474
fontFamily: parser.getString('fontFamily', defaults: 'sans-serif'),
7575
pixelSize: parser.getInt('pixelSize', defaults: 16),
7676
color: parser.getString('color', defaults: '#000000'),
77-
text: parser.getString('text', defaults: ''),
77+
text: parser.getInnerTextOrNull() ??
78+
parser.getString('text', defaults: ''),
7879
hAlign: parser.getHAlign('hAlign', defaults: HAlign.left),
7980
vAlign: parser.getVAlign('vAlign', defaults: VAlign.top),
8081
bold: parser.getBool('bold', defaults: false),

packages/tiled/lib/src/parser.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ class XmlParser extends Parser {
1111
final XmlElement element;
1212
XmlParser(this.element);
1313

14+
@override
15+
String? getInnerTextOrNull() =>
16+
element.innerText.isEmpty ? null : element.innerText;
17+
1418
@override
1519
String? getStringOrNull(String name, {String? defaults}) {
1620
return element.getAttribute(name) ?? defaults;
@@ -46,6 +50,9 @@ class JsonParser extends Parser {
4650
final Map<String, dynamic> json;
4751
JsonParser(this.json);
4852

53+
@override
54+
String? getInnerTextOrNull() => null;
55+
4956
@override
5057
String? getStringOrNull(String name, {String? defaults}) {
5158
return json[name]?.toString() ?? defaults;
@@ -75,6 +82,8 @@ class JsonParser extends Parser {
7582
}
7683

7784
abstract class Parser {
85+
String? getInnerTextOrNull();
86+
7887
String? getStringOrNull(String name, {String? defaults});
7988

8089
List<Parser> getChildren(String name);

packages/tiled/test/parser_test.dart

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'dart:io';
22
import 'dart:math' show Rectangle;
33
import 'dart:ui';
44

5+
import 'package:collection/collection.dart';
56
import 'package:flutter_test/flutter_test.dart';
67
import 'package:tiled/tiled.dart';
78
import 'package:xml/xml.dart';
@@ -88,7 +89,9 @@ void main() {
8889
equals('test_value'),
8990
);
9091
expect(
91-
properties.getValue<String>('multiline string'),
92+
properties
93+
.getValue<String>('multiline string')
94+
?.replaceAll('\r\n', '\n'),
9295
equals('Hello,\nWorld'),
9396
);
9497
expect(
@@ -235,6 +238,15 @@ void main() {
235238
test('has the right class_', () {
236239
expect(og.class_, equals('objectLayer1Class'));
237240
});
241+
242+
test('has the right text object with ID 5', () {
243+
final textObject = (og as ObjectGroup)
244+
.objects
245+
.firstWhereOrNull((element) => element.id == 5);
246+
final text = textObject?.text;
247+
expect(text?.wrap, equals(true));
248+
expect(text?.text, equals('Hello World'));
249+
});
238250
});
239251
});
240252

0 commit comments

Comments
 (0)