12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- 'use strict';
- var Scalar = require('../../nodes/Scalar.js');
- var map = require('../common/map.js');
- var seq = require('../common/seq.js');
- function intIdentify(value) {
- return typeof value === 'bigint' || Number.isInteger(value);
- }
- const stringifyJSON = ({ value }) => JSON.stringify(value);
- const jsonScalars = [
- {
- identify: value => typeof value === 'string',
- default: true,
- tag: 'tag:yaml.org,2002:str',
- resolve: str => str,
- stringify: stringifyJSON
- },
- {
- identify: value => value == null,
- createNode: () => new Scalar.Scalar(null),
- default: true,
- tag: 'tag:yaml.org,2002:null',
- test: /^null$/,
- resolve: () => null,
- stringify: stringifyJSON
- },
- {
- identify: value => typeof value === 'boolean',
- default: true,
- tag: 'tag:yaml.org,2002:bool',
- test: /^true|false$/,
- resolve: str => str === 'true',
- stringify: stringifyJSON
- },
- {
- identify: intIdentify,
- default: true,
- tag: 'tag:yaml.org,2002:int',
- test: /^-?(?:0|[1-9][0-9]*)$/,
- resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),
- stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)
- },
- {
- identify: value => typeof value === 'number',
- default: true,
- tag: 'tag:yaml.org,2002:float',
- test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,
- resolve: str => parseFloat(str),
- stringify: stringifyJSON
- }
- ];
- const jsonError = {
- default: true,
- tag: '',
- test: /^/,
- resolve(str, onError) {
- onError(`Unresolved plain scalar ${JSON.stringify(str)}`);
- return str;
- }
- };
- const schema = [map.map, seq.seq].concat(jsonScalars, jsonError);
- exports.schema = schema;
|