Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Не матчится value: true, на .*[.value == true()] #229

Open
smoogly opened this issue Jun 17, 2014 · 7 comments
Open

Не матчится value: true, на .*[.value == true()] #229

smoogly opened this issue Jun 17, 2014 · 7 comments

Comments

@smoogly
Copy link

smoogly commented Jun 17, 2014

module 'hello'

match / {
    apply {
        'value': true()
    } mode
}

match .*[.value == true()] mode {
    'one'
}

match .*[.value == false()] mode {
    'two'
}

В результате yr.run('hello', {}) вывод пустой.
Ожидаю увидеть one

@smoogly
Copy link
Author

smoogly commented Jun 17, 2014

yate 0.0.72

@pasaran
Copy link
Owner

pasaran commented Jun 17, 2014

match / {
    apply {
        'value': true()
    } mode
}

match /[ .value ] mode {
    'one'
}

match /[ !.value ] mode {
    'two'
}

Потому что там value лежит в корне, там нет .*.value.
Вот так работает.

(ну и вот это вот x == true() — как-то не очень выглядит :))

@smoogly
Copy link
Author

smoogly commented Jun 17, 2014

match / {
    apply {
        'value': true()
    } mode
}

match /[.value == true()] mode {
    'one'
}

match /[.value == false()] mode {
    'two'
}

Тоже не работает.
Проверять именно на наличие внутри true можно?

@pasaran
Copy link
Owner

pasaran commented Jun 17, 2014

Да, вот это уже баг. Там неправильно генерится код для такого сравнения.

Пиши просто .value и !.value пока что. Так будет работать, а я попробую починить баг.

@smoogly
Copy link
Author

smoogly commented Jun 17, 2014

Понял, спасибо.

@RohovDmytro
Copy link

Наверное по той же причине не правильно работает код

if(val == true()){
...
}

Как обойти, если мне в шаблоне нужно основываться именно на булевском значении?

@pasaran
Copy link
Owner

pasaran commented Aug 15, 2015

Код, наверное, работает правильно. Так же, как в js работает оператор ==.

На скорую руку добавил оператор === и !==.
Версия 0.0.79.

Должно сработать так:

if val === true() {
    ...
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants