%PDF- %PDF-
Direktori : /home/forge/takeaseat.eco-n-tech.co.uk/node_modules/parchment/src/attributor/ |
Current File : //home/forge/takeaseat.eco-n-tech.co.uk/node_modules/parchment/src/attributor/attributor.ts |
import * as Registry from '../registry'; export interface AttributorOptions { scope?: Registry.Scope; whitelist?: string[]; } export default class Attributor { attrName: string; keyName: string; scope: Registry.Scope; whitelist: string[] | undefined; static keys(node: HTMLElement): string[] { return [].map.call(node.attributes, function(item: Attr) { return item.name; }); } constructor(attrName: string, keyName: string, options: AttributorOptions = {}) { this.attrName = attrName; this.keyName = keyName; let attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE; if (options.scope != null) { // Ignore type bits, force attribute bit this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit; } else { this.scope = Registry.Scope.ATTRIBUTE; } if (options.whitelist != null) this.whitelist = options.whitelist; } add(node: HTMLElement, value: string): boolean { if (!this.canAdd(node, value)) return false; node.setAttribute(this.keyName, value); return true; } canAdd(node: HTMLElement, value: any): boolean { let match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE)); if (match == null) return false; if (this.whitelist == null) return true; if (typeof value === 'string') { return this.whitelist.indexOf(value.replace(/["']/g, '')) > -1; } else { return this.whitelist.indexOf(value) > -1; } } remove(node: HTMLElement): void { node.removeAttribute(this.keyName); } value(node: HTMLElement): string { let value = node.getAttribute(this.keyName); if (this.canAdd(node, value) && value) { return value; } return ''; } }