Revision
612
Author
rich@infoether.com
Date
2008-09-19 20:16:38 -0700 (Fri, 19 Sep 2008)

Log Message

add xml_parser mapping

Added Paths

Diff

Added: MacRuby/trunk/lib/hotcocoa/mappings/xml_parser.rb (0 => 612)


--- MacRuby/trunk/lib/hotcocoa/mappings/xml_parser.rb	                        (rev 0)
+++ MacRuby/trunk/lib/hotcocoa/mappings/xml_parser.rb	2008-09-20 03:16:38 UTC (rev 612)
@@ -0,0 +1,40 @@
+HotCocoa::Mappings.map :xml_parser => :NSXMLParser do
+
+  def alloc_with_options(options)
+    url = options.delete(:url)
+    data = options.delete(:data)
+    if url
+      url = NSURL.alloc.initWithString(url) if url.is_a?(String)
+      NSXMLParser.alloc.initWithContentsOfURL(url)
+    elsif data
+      NSXMLParser.alloc.initWithData(data)
+    else
+      raise "Must provide either :url or :data when constructing an NSXMLParser"
+    end
+  end
+  
+  delegating "parserDidStartDocument:",                                                       :to => :on_start_document
+  delegating "parserDidEndDocument:",                                                         :to => :on_end_document
+  delegating "parser:didStartElement:namespaceURI:qualifiedName:attributes:",                 :to => :on_start_element,               :parameters => [:didStartElement, :namespaceURI, :qualifiedName, :attributes]
+  delegating "parser:didEndElement:namespaceURI:qualifiedName:",                              :to => :on_end_element,                 :parameters => [:didEndElement, :namespaceURI, :qualifiedName]
+  delegating "parser:didStartMappingPrefix:toURI:",                                           :to => :on_start_mapping_prefix,        :parameters => [:didStartMappingPrefix, :toURI]
+  delegating "parser:didEndMappingPrefix:",                                                   :to => :on_end_mapping_prefix,          :parameters => [:didEndMappingPrefix]
+  
+  delegating "parser:foundAttributeDeclarationWithName:forElement:type:defaultValue:",        :to => :on_attribute_declaration,       :parameters => [:foundAttributeDeclarationWithName, :forElement, :type, :defaultValue]
+  delegating "parser:foundCDATA:",                                                            :to => :on_cdata,                       :parameters => [:foundCDATA]
+  delegating "parser:foundCharacters:",                                                       :to => :on_characters,                  :parameters => [:foundCharacters]
+  delegating "parser:foundComment:",                                                          :to => :on_comment,                     :parameters => [:foundComment]
+  delegating "parser:foundElementDeclarationWithName:model:",                                 :to => :on_element_declaration,         :parameters => [:foundElementDeclarationWithName, :model]
+  delegating "parser:foundExternalEntityDeclarationWithName:publicID:systemID:",              :to => :on_external_entity_declaration, :parameters => [:foundExternalEntityDeclarationWithName, :publicID, :systemID]
+  delegating "parser:foundIgnorableWhitespace:",                                              :to => :on_ignorable_whitespace,        :parameters => [:foundIgnorableWhitespace]
+  delegating "parser:foundInternalEntityDeclarationWithName:value:",                          :to => :on_internal_entity_declaration, :parameters => [:foundInternalEntityDeclarationWithName, :value]
+  delegating "parser:foundNotationDeclarationWithName:publicID:systemID:",                    :to => :on_notation_declaration,        :parameters => [:foundNotationDeclarationWithName, :data]
+  delegating "parser:foundProcessingInstructionWithTarget:data:",                             :to => :on_processing_instruction,      :parameters => [:foundProcessingInstructionWithTarget, :data]
+  delegating "parser:foundUnparsedEntityDeclarationWithName:publicID:systemID:notationName:", :to => :on_unparsed_entity_declaration, :parameters => [:foundUnparsedEntityDeclarationWithName, :publicID, :systemID, :notationName]
+
+  delegating "parser:resolveExternalEntityName:systemID:",                                    :to => :resolve_external_entity_name,   :parameters => [:resolveExternalEntityName, :systemID]
+
+  delegating "parser:parseErrorOccurred:",                                                    :to => :on_parse_error,                 :parameters => [:parseErrorOccurred]
+  delegating "parser:validationErrorOccurred:",                                               :to => :on_validation_error,            :parameters => [:validationErrorOccurred]
+
+end
\ No newline at end of file