Skip to content

Commit bb71526

Browse files
authored
feat: new expression parser for xml bindings (#9729)
1 parent 88e355d commit bb71526

17 files changed

Lines changed: 311 additions & 2497 deletions

File tree

apps/automated/src/ui/core/bindable/bindable-tests.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -659,17 +659,19 @@ export function test_BindingConverterCalledEvenWithNullValue() {
659659
const testPropertyValue = null;
660660
const expectedValue = 'collapsed';
661661
pageViewModel.set('testProperty', testPropertyValue);
662-
appModule.getResources()['converter'] = function (value) {
663-
if (value) {
664-
return 'visible';
665-
} else {
666-
return 'collapsed';
667-
}
662+
appModule.getResources()['converter'] = {
663+
toView: function (value) {
664+
if (value) {
665+
return 'visible';
666+
} else {
667+
return 'collapsed';
668+
}
669+
},
668670
};
669671

670672
const testFunc = function (views: Array<View>) {
671673
const testLabel = <Label>views[0];
672-
testLabel.bind({ sourceProperty: 'testProperty', targetProperty: 'text', expression: 'testProperty | converter' });
674+
testLabel.bind({ sourceProperty: 'testProperty', targetProperty: 'text', expression: 'testProperty | converter()' });
673675

674676
const page = <Page>views[1];
675677
page.bindingContext = pageViewModel;

apps/automated/src/ui/list-view/list-view-tests.ts

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -437,15 +437,17 @@ export class ListViewTest extends UITest<ListView> {
437437
public test_usingAppLevelConvertersInListViewItems() {
438438
var listView = this.testView;
439439

440-
var dateConverter = function (value, format) {
441-
var result = format;
442-
var day = value.getDate();
443-
result = result.replace('DD', day < 10 ? '0' + day : day);
444-
var month = value.getMonth() + 1;
445-
result = result.replace('MM', month < 10 ? '0' + month : month);
446-
result = result.replace('YYYY', value.getFullYear());
447-
448-
return result;
440+
var dateConverter = {
441+
toView: function (value, format) {
442+
var result = format;
443+
var day = value.getDate();
444+
result = result.replace('DD', day < 10 ? '0' + day : day);
445+
var month = value.getMonth() + 1;
446+
result = result.replace('MM', month < 10 ? '0' + month : month);
447+
result = result.replace('YYYY', value.getFullYear());
448+
449+
return result;
450+
},
449451
};
450452

451453
Application.getResources()['dateConverter'] = dateConverter;
@@ -565,10 +567,12 @@ export class ListViewTest extends UITest<ListView> {
565567
var listView = this.testView;
566568
var converterCalledCounter = 0;
567569

568-
var testConverter = function (value) {
569-
converterCalledCounter++;
570+
var testConverter = {
571+
toView: function (value) {
572+
converterCalledCounter++;
570573

571-
return value;
574+
return value;
575+
},
572576
};
573577

574578
Application.getResources()['testConverter'] = testConverter;
@@ -578,7 +582,7 @@ export class ListViewTest extends UITest<ListView> {
578582
listView.bindingContext = listViewModel;
579583

580584
listView.bind({ sourceProperty: 'items', targetProperty: 'items' });
581-
listView.itemTemplate = '<Label id="testLabel" text="{{ $value, $value | testConverter }}" />';
585+
listView.itemTemplate = '<Label id="testLabel" text="{{ $value, $value | testConverter() }}" />';
582586

583587
this.waitUntilListViewReady();
584588

@@ -589,10 +593,12 @@ export class ListViewTest extends UITest<ListView> {
589593
var listView = this.testView;
590594
var converterCalledCounter = 0;
591595

592-
var testConverter = function (value) {
593-
converterCalledCounter++;
596+
var testConverter = {
597+
toView: function (value) {
598+
converterCalledCounter++;
594599

595-
return value;
600+
return value;
601+
},
596602
};
597603

598604
Application.getResources()['testConverter'] = testConverter;
@@ -602,7 +608,7 @@ export class ListViewTest extends UITest<ListView> {
602608
listView.bindingContext = listViewModel;
603609

604610
listView.bind({ sourceProperty: 'items', targetProperty: 'items' });
605-
listView.itemTemplate = '<StackLayout><Label id="testLabel" text="{{ $value, $value | testConverter }}" /></StackLayout>';
611+
listView.itemTemplate = '<StackLayout><Label id="testLabel" text="{{ $value, $value | testConverter() }}" /></StackLayout>';
606612

607613
this.waitUntilListViewReady();
608614

apps/automated/src/ui/repeater/repeater-tests.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -252,15 +252,17 @@ export function test_splice_observable_array_refreshes_the_Repeater() {
252252
export function test_usingAppLevelConvertersInRepeaterItems() {
253253
var repeater = new Repeater();
254254

255-
var dateConverter = function (value, format) {
256-
var result = format;
257-
var day = value.getDate();
258-
result = result.replace('DD', month < 10 ? '0' + day : day);
259-
var month = value.getMonth() + 1;
260-
result = result.replace('MM', month < 10 ? '0' + month : month);
261-
result = result.replace('YYYY', value.getFullYear());
262-
263-
return result;
255+
var dateConverter = {
256+
toView: function (value, format) {
257+
var result = format;
258+
var day = value.getDate();
259+
result = result.replace('DD', month < 10 ? '0' + day : day);
260+
var month = value.getMonth() + 1;
261+
result = result.replace('MM', month < 10 ? '0' + month : month);
262+
result = result.replace('YYYY', value.getFullYear());
263+
264+
return result;
265+
},
264266
};
265267

266268
Application.getResources()['dateConverter'] = dateConverter;
@@ -275,7 +277,7 @@ export function test_usingAppLevelConvertersInRepeaterItems() {
275277

276278
TKUnit.waitUntilReady(() => repeater.isLayoutValid);
277279

278-
TKUnit.assertEqual(getChildAtText(repeater, 0), dateConverter(new Date(), 'DD.MM.YYYY'), 'element');
280+
TKUnit.assertEqual(getChildAtText(repeater, 0), dateConverter.toView(new Date(), 'DD.MM.YYYY'), 'element');
279281
}
280282

281283
helper.buildUIAndRunTest(repeater, testAction);

packages/core/js-libs/esprima/LICENSE.BSD

Lines changed: 0 additions & 19 deletions
This file was deleted.

packages/core/js-libs/esprima/README.md

Lines changed: 0 additions & 24 deletions
This file was deleted.

0 commit comments

Comments
 (0)