pasaran/yate — Issue #26: Изменить nodeset2boolean
Author: alexeyten
Created: 2012-02-10 11:10:31+00:00
State: open

Хочется, писать условия проще, что бы они были ближе к JS-ным.
Сейчас только пустой массив и `undefined` считаются ложными условиями.
Хочется, что бы пустая строка, `false`, `0`, `null` тоже считались ложными

02.json

{
"sOK": "OK",
"sEmpty": "", // false
"sZero": "0",
"bTrue": true,
"bFalse": false, // false
"nZero": 0, // false
"nOne": 1,
"Null": null, // false
"Undef": undefined,
"oEmpty": {},
"oOne": { "a": 1 },
"aEmpty": [],
"aZero": [0],
"aOne": [1]
}

if.02.yate

match / {
"sOK: "
if .sOK { "true" } else { "false" }
"\n"
"sEmpty: "
if .sEmpty { "true" } else { "false" }
"\n"
"sZero: "
if .sZero { "true" } else { "false" }
"\n"
"bTrue: "
if .bTrue { "true" } else { "false" }
"\n"
"bFalse: "
if .bFalse { "true" } else { "false" }
"\n"
"nZero: "
if .nZero { "true" } else { "false" }
"\n"
"nOne: "
if .nOne { "true" } else { "false" }
"\n"
"Null: "
if .Null { "true" } else { "false" }
"\n"
"Undef: "
if .Undef { "true" } else { "false" }
"\n"
"oEmpty: "
if .oEmpty { "true" } else { "false" }
"\n"
"oOne: "
if .oOne { "true" } else { "false" }
"\n"
"aEmpty: "
if .aEmpty { "true" } else { "false" }
"\n"
"aZero: "
if .aZero { "true" } else { "false" }
"\n"
"aOne: "
if .aOne { "true" } else { "false" }
}

Результат

sOK: true
sEmpty: true
sZero: true
bTrue: true
bFalse: true
nZero: true
nOne: true
Null: true
Undef: false
oEmpty: true
oOne: true
aEmpty: false
aZero: true
aOne: true