xchess
Version:
Chess Engine
49 lines (37 loc) • 793 B
JavaScript
export {MetaMap}
// import {PGNWriter} from '../pgn/writer.js'
import {INVALID_META_TAG, INVALID_META_VALUE} from './errors.js'
// const pgn = new PGNWriter();
function KEY(keyArg){
const key = String(keyArg);
if(/^[a-z0-9_]+$/i.test(key))
return key;
throw INVALID_META_TAG(key);
}
function VALUE(valueArg){
const value = String(valueArg);
if(value.includes('"'))
throw INVALID_META_VALUE(value);
return value;
}
class MetaMap extends Map {
toString(){
return this.pgn;
}
get pgn(){
// pgn.headers(this);
// return pgn.stream.release();
}
get(name){
return super.get(String(name));
}
has(name){
return super.has(String(name));
}
set(name, value){
return super.set(KEY(name), VALUE(value));
}
delete(name){
return super.delete(String(name));
}
}