# File lib/asciidoctor/lexer.rb, line 1714 def self.store_attribute(name, value, doc = nil, attrs = nil) if name.end_with?('!') # a nil value signals the attribute should be deleted (undefined) value = nil name = name.chop end name = sanitize_attribute_name(name) accessible = true unless doc.nil? accessible = value.nil? ? doc.delete_attribute(name) : doc.set_attribute(name, value) end unless !accessible || attrs.nil? Document::AttributeEntry.new(name, value).save_to(attrs) end [name, value] end