// Generated by CoffeeScript 2.4.1 (function() { var NodeType, XMLDTDAttList, XMLNode; XMLNode = require('./XMLNode'); NodeType = require('./NodeType'); // Represents an attribute list module.exports = XMLDTDAttList = class XMLDTDAttList extends XMLNode { // Initializes a new instance of `XMLDTDAttList` // `parent` the parent `XMLDocType` element // `elementName` the name of the element containing this attribute // `attributeName` attribute name // `attributeType` type of the attribute // `defaultValueType` default value type (either #REQUIRED, #IMPLIED, // #FIXED or #DEFAULT) // `defaultValue` default value of the attribute // (only used for #FIXED or #DEFAULT) constructor(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) { super(parent); if (elementName == null) { throw new Error("Missing DTD element name. " + this.debugInfo()); } if (attributeName == null) { throw new Error("Missing DTD attribute name. " + this.debugInfo(elementName)); } if (!attributeType) { throw new Error("Missing DTD attribute type. " + this.debugInfo(elementName)); } if (!defaultValueType) { throw new Error("Missing DTD attribute default. " + this.debugInfo(elementName)); } if (defaultValueType.indexOf('#') !== 0) { defaultValueType = '#' + defaultValueType; } if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) { throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT. " + this.debugInfo(elementName)); } if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) { throw new Error("Default value only applies to #FIXED or #DEFAULT. " + this.debugInfo(elementName)); } this.elementName = this.stringify.name(elementName); this.type = NodeType.AttributeDeclaration; this.attributeName = this.stringify.name(attributeName); this.attributeType = this.stringify.dtdAttType(attributeType); if (defaultValue) { this.defaultValue = this.stringify.dtdAttDefault(defaultValue); } this.defaultValueType = defaultValueType; } // Converts the XML fragment to string // `options.pretty` pretty prints the result // `options.indent` indentation for pretty print // `options.offset` how many indentations to add to every line for pretty print // `options.newline` newline sequence for pretty print toString(options) { return this.options.writer.dtdAttList(this, this.options.writer.filterOptions(options)); } }; }).call(this);