yaml-language-server-parser
Version:
This is a maintained fork of YAML-AST-PARSER specifically for the YAML Language server.
48 lines (37 loc) • 1.39 kB
text/typescript
declare function require(n: string): any
;
import { Type } from '../type';
import ast = require('../yamlAST');
function resolveYamlBoolean(nodeOrString: ast.YAMLNode | string) {
const booleanValue = ast.isYAMLNode(nodeOrString) ? nodeOrString.value : nodeOrString;
if (null === booleanValue) {
return false;
}
var max = booleanValue.length;
return (max === 4 && (booleanValue === 'true' || booleanValue === 'True' || booleanValue === 'TRUE')) ||
(max === 5 && (booleanValue === 'false' || booleanValue === 'False' || booleanValue === 'FALSE'));
}
function constructYamlBoolean(nodeOrString: ast.YAMLNode | string) {
if (ast.isYAMLNode(nodeOrString)) {
// YAML Boolean is already constructed
return nodeOrString;
}
return nodeOrString === 'true' ||
nodeOrString === 'True' ||
nodeOrString === 'TRUE';
}
function isBoolean(object) {
return '[object Boolean]' === Object.prototype.toString.call(object);
}
export = new Type('tag:yaml.org,2002:bool', {
kind: 'scalar',
resolve: resolveYamlBoolean,
construct: constructYamlBoolean,
predicate: isBoolean,
represent: {
lowercase: function (object) { return object ? 'true' : 'false'; },
uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },
camelcase: function (object) { return object ? 'True' : 'False'; }
},
defaultStyle: 'lowercase'
});