From 3e6428390fc60435361158c1a2be6230e7386ab7 Mon Sep 17 00:00:00 2001 From: Dima Granetchi Date: Sat, 11 Mar 2017 02:06:18 +0200 Subject: [PATCH] setup default behaviour --- README.md | 11 +++++++++++ README_ru.md | 11 +++++++++++ extraParams.hx | 1 + haxelib.json | 4 ++-- src/bindx/macro/BindSignalProvider.hx | 10 ++++++++-- src/bindx/macro/BindableMacros.hx | 5 +++-- submit.sh | 3 ++- test.hxml | 1 + tests.hxml | 1 + 9 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 extraParams.hx diff --git a/README.md b/README.md index 9a24f2e..31879e7 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ - neat API for subscribing to properties and methods changes - extended API for custom expressions binding - API for fast properties binding +- support `@:bindable` attribute in interfaces ====== @@ -108,6 +109,16 @@ Log level | Description ====== +## Setup: + +Define | Description | Default value +------------ | ------------- | ------------- +`bindx_lazy_signal` | lazy signal initiazation. `-D bindx_lazy_signal=0` disable option | true +`bindx_inline_signal_getter` | inline signal getter | false +`bindx_inline_setter` | inline autogenerated setter | false + +====== + ## Additional - BindExt and `this`. Use `this.bindableA.bindableB` to listen changes of `bindableA`, not only `bindableB` diff --git a/README_ru.md b/README_ru.md index 302faed..cd077b3 100644 --- a/README_ru.md +++ b/README_ru.md @@ -11,6 +11,7 @@ - удобное API для подписки на изменения свойств или методов класса, - расширенное API для связывания произвольного выражения, - API для быстрого связывания свойств +- поддержка и валидация `@:bindable` аттрибутов в интерфейсах ====== @@ -108,6 +109,16 @@ Log level | Description ====== +## Настройка: + +Define | Description | Default value +------------ | ------------- | ------------- +`bindx_lazy_signal` | инициализация сигналов по требованию. `-D bindx_lazy_signal=0` выключает опцию | true +`bindx_inline_signal_getter` | геттер сигнала инлайнить | false +`bindx_inline_setter` | инлайнить ли автоматически сгенерированные сеттеры | false + +====== + ## Дополнительно - BindExt и `this`. Используйте `this.bindableA.bindableB` если необходимо слушать изменения `bindableA`, а не только `bindableB` diff --git a/extraParams.hx b/extraParams.hx new file mode 100644 index 0000000..35f9538 --- /dev/null +++ b/extraParams.hx @@ -0,0 +1 @@ +-D bindx_lazy_signal=1 \ No newline at end of file diff --git a/haxelib.json b/haxelib.json index efded81..06151d2 100644 --- a/haxelib.json +++ b/haxelib.json @@ -5,8 +5,8 @@ "tags": ["bind", "binding", "bindings", "cross"], "description": "Powerful and fast macro-based data binding engine inspired by Flex Bindings with easy-to-use syntax.", "classPath": "src", - "version": "2.6.0", - "releasenote": "log catched errors, haxe 3.4 support", + "version": "2.6.1", + "releasenote": "more options to setup library behaviour", "contributors": [ "deep" ] diff --git a/src/bindx/macro/BindSignalProvider.hx b/src/bindx/macro/BindSignalProvider.hx index 5145792..4fcae7d 100644 --- a/src/bindx/macro/BindSignalProvider.hx +++ b/src/bindx/macro/BindSignalProvider.hx @@ -15,10 +15,12 @@ class BindSignalProvider implements IBindingSignalProvider { * default value: true */ static inline var LAZY_SIGNAL = "lazySignal"; + static inline var DEFAULT_LAZY_SIGNAL = #if (bindx_lazy_signal > 0) true; #else false; #end /** * default value: false */ static inline var INLINE_SIGNAL_GETTER = "inlineSignalGetter"; + static inline var DEFAULT_INLINE_SIGNAL_GETTER = #if (bindx_inline_signal_getter > 0) true; #else false; #end public function new() {} @@ -126,7 +128,7 @@ class BindSignalProvider implements IBindingSignalProvider { return $i{signalPrivateName}; }; var getterAccess = [APrivate]; - if (inlineSignalGetter.isNotNullAndTrue()) getterAccess.push(AInline); + if (hasInlineSignalGetter(inlineSignalGetter)) getterAccess.push(AInline); res.push({ name: signalGetterName(field.name), @@ -162,7 +164,11 @@ class BindSignalProvider implements IBindingSignalProvider { } } + @:extern inline function hasInlineSignalGetter(param:Expr):Bool { + return if (DEFAULT_INLINE_SIGNAL_GETTER) param.isNullOrTrue(); else param.isNotNullAndTrue(); + } + @:extern inline function hasLazy(meta:MetadataEntry):Bool { - return meta.findParam(LAZY_SIGNAL).isNullOrTrue(); + return if (DEFAULT_LAZY_SIGNAL) meta.findParam(LAZY_SIGNAL).isNullOrTrue(); else meta.findParam(LAZY_SIGNAL).isNotNullAndTrue(); } } \ No newline at end of file diff --git a/src/bindx/macro/BindableMacros.hx b/src/bindx/macro/BindableMacros.hx index dbf0401..1a2827d 100644 --- a/src/bindx/macro/BindableMacros.hx +++ b/src/bindx/macro/BindableMacros.hx @@ -18,7 +18,8 @@ class BindableMacros { /** * default value: false */ - static public inline var INLINE_SETTER = "inlineSetter"; + static inline var INLINE_SETTER = "inlineSetter"; + static inline var DEFAULT_INLINE_SETTER = #if (bindx_inline_setter > 0) true; #else false; #end /** * default value: false */ @@ -139,7 +140,7 @@ class BindableMacros { return value; }; var setterAccess = [APrivate]; - if (inlineSetter.isNotNullAndTrue()) setterAccess.push(AInline); + if (DEFAULT_INLINE_SETTER ? inlineSetter.isNullOrTrue() : inlineSetter.isNotNullAndTrue()) setterAccess.push(AInline); res.push({ name: setterName, kind: FFun(switch (setter.expr) { case EFunction (_, func): func; case _: throw false; }), diff --git a/submit.sh b/submit.sh index b31ba84..0aabadc 100755 --- a/submit.sh +++ b/submit.sh @@ -1,4 +1,5 @@ #!/bin/bash -zip -r haxelib.zip src haxelib.json README.md LICENSE +rm -f haxelib.zip +zip -r haxelib.zip src haxelib.json README.md LICENSE extraParams.hx haxelib submit haxelib.zip \ No newline at end of file diff --git a/test.hxml b/test.hxml index 5366f2a..2b0b552 100644 --- a/test.hxml +++ b/test.hxml @@ -4,3 +4,4 @@ -D dump=pretty --interp -lib buddy +-D bindx_lazy_signal \ No newline at end of file diff --git a/tests.hxml b/tests.hxml index cc1a060..14f7aea 100644 --- a/tests.hxml +++ b/tests.hxml @@ -2,3 +2,4 @@ -cp src -cp test -lib buddy +-D bindx_lazy_signal \ No newline at end of file