Class
Constants
No documentation available
No documentation available
No documentation available
No documentation available
No documentation available
Attributes
Read
name is the name of the doctype external_id
is the referenced DTD
, if given
Read
name is the name of the doctype external_id
is the referenced DTD
, if given
Read
name is the name of the doctype external_id
is the referenced DTD
, if given
Read
name is the name of the doctype external_id
is the referenced DTD
, if given
Class Methods
lib/rexml/doctype.rb
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/rexml/doctype.rb, line 80
def initialize( first, parent=nil )
@entities = DEFAULT_ENTITIES
@long_name = @uri = nil
if first.kind_of? String
super()
@name = first
@external_id = parent
elsif first.kind_of? DocType
super( parent )
@name = first.name
@external_id = first.external_id
@long_name = first.instance_variable_get(:@long_name)
@uri = first.instance_variable_get(:@uri)
elsif first.kind_of? Array
super( parent )
@name = first[0]
@external_id = first[1]
@long_name = first[2]
@uri = first[3]
elsif first.kind_of? Source
super( parent )
parser = Parsers::BaseParser.new( first )
event = parser.pull
if event[0] == :start_doctype
@name, @external_id, @long_name, @uri, = event[1..-1]
end
else
super()
end
end
Constructor
dt = DocType.new( 'foo', '-//I/Hate/External/IDs' ) # <!DOCTYPE foo '-//I/Hate/External/IDs'> dt = DocType.new( doctype_to_clone ) # Incomplete. Shallow clone of doctype
Note
that the constructor:
Doctype.new( Source.new( "<!DOCTYPE foo 'bar'>" ) )
is deprecated. Do not use it. It will probably disappear.
Instance Methods
lib/rexml/doctype.rb
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/rexml/doctype.rb, line 185
def add child
super(child)
@entities = DEFAULT_ENTITIES.clone if @entities == DEFAULT_ENTITIES
@entities[ child.name ] = child if child.kind_of? Entity
end
No documentation available
lib/rexml/doctype.rb
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/rexml/doctype.rb, line 125
def attribute_of element, attribute
att_decl = find do |child|
child.kind_of? AttlistDecl and
child.element_name == element and
child.include? attribute
end
return nil unless att_decl
att_decl[attribute]
end
No documentation available
lib/rexml/doctype.rb
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/rexml/doctype.rb, line 115
def attributes_of element
rv = []
each do |child|
child.each do |key,val|
rv << Attribute.new(key,val)
end if child.kind_of? AttlistDecl and child.element_name == element
end
rv
end
No documentation available
#
lib/rexml/doctype.rb
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/rexml/doctype.rb, line 135
def clone
DocType.new self
end
No documentation available
#
lib/rexml/doctype.rb
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/rexml/doctype.rb, line 173
def context
if @parent
@parent.context
else
nil
end
end
No documentation available
lib/rexml/doctype.rb
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/rexml/doctype.rb, line 181
def entity( name )
@entities[name].unnormalized if @entities[name]
end
No documentation available
lib/rexml/doctype.rb
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/rexml/doctype.rb, line 111
def node_type
:doctype
end
No documentation available
lib/rexml/doctype.rb
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/rexml/doctype.rb, line 229
def notation(name)
notations.find { |notation_decl|
notation_decl.name == name
}
end
lib/rexml/doctype.rb
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/rexml/doctype.rb, line 221
def notations
children().select {|node| node.kind_of?(REXML::NotationDecl)}
end
#
lib/rexml/doctype.rb
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/rexml/doctype.rb, line 195
def public
case @external_id
when "SYSTEM"
nil
when "PUBLIC"
strip_quotes(@long_name)
end
end
lib/rexml/doctype.rb
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/rexml/doctype.rb, line 238
def strip_quotes(quoted_string)
quoted_string =~ /^[\'\"].*[\'\"]$/ ?
quoted_string[1, quoted_string.length-2] :
quoted_string
end
Method
contributed by Henrik Martensson
#
lib/rexml/doctype.rb
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/rexml/doctype.rb, line 207
def system
case @external_id
when "SYSTEM"
strip_quotes(@long_name)
when "PUBLIC"
@uri.kind_of?(String) ? strip_quotes(@uri) : nil
end
end
lib/rexml/doctype.rb
View on GitHub
# File tmp/rubies/ruby-2.7.6/lib/rexml/doctype.rb, line 149
def write( output, indent=0, transitive=false, ie_hack=false )
f = REXML::Formatters::Default.new
indent( output, indent )
output << START
output << ' '
output << @name
if @external_id
reference_writer = ReferenceWriter.new(@external_id,
@long_name,
@uri,
context)
reference_writer.write(output)
end
unless @children.empty?
output << ' ['
@children.each { |child|
output << "\n"
f.write( child, output )
}
output << "\n]"
end
output << STOP
end
- output
-
Where to write the string
- indent
-
An integer. If -1, no indentation will be used; otherwise, the indentation will be this number of spaces, and children will be indented an additional amount.
- transitive
-
Ignored
- ie_hack
-
Ignored