mirror of
				https://github.com/Theodor-Springmann-Stiftung/kgpz_web.git
				synced 2025-10-31 01:55:29 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| '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;
 | 
