On Tue, Jul 15, 2008 at 12:30 PM, Sean Chittenden <[EMAIL PROTECTED]> wrote:
But since you went ahead with swapping XML => LibXML, that probably
best anyway. I wonder about one thing though, is backward
compatibility best preserved with:
 XML = LibXML
or as you have it:
 module XML
  include LibXML
 end
Use an environment variable at require time and the module assigns.

# XX untested
if ['0','false','no','off',false,nil,'hell god damn "no!" me
harder'].include? (ENV['RUBY_LIBXML_SHORT_PATH'].nil? ? true :
ENV['RUBY_LIBXML_SHORT_PATH'].downcase])
 # Only LibXML class
else
 XML = LibXML
end

Then users can set the env variable and goto town however they want.

FYI, I moved to XSLT to LibXSLT to be consistent.  Although when I started
using it, I found it to be a bit ugly.  Take a look:

 # Create a new XSL Transform
 stylesheet_doc = LibXML::Document.file('files/fuzface.xsl')
 stylesheet     = LibXSLT::Stylesheet.new(stylesheet_doc)

 # Transform a xml document
 xml_doc = LibXML::Document.file('files/fuzface.xml')
 result = stylesheet.apply(xml_doc)


Notice how hard it becomes to distinguish the namespaces (LibXML and
LibXSLT).  Compare:

 # Create a new XSL Transform
 stylesheet_doc = XML::Document.file('files/fuzface.xsl')
 stylesheet     = XSLT::Stylesheet.new(stylesheet_doc)

Thoughts?

Use of XML was actually a conscious choice on my part.  Ditch the
puritanical or egalitarian thoughts.  Odds of two XML parsing libraries
loaded into the same instance is rare.  I imagined there would be little to
no contention for the XML namespace because everyone would've treated it as
holy.  Bah!  A "User" identifier is holy, but XML is not (one is
application, the other is library).  I think the above 'LibXML'-ification of
the namespace is appropriate, however, but focus on making the library easy
to use, hence XML vs LibXML.

Don't step on other people's dicks intentionally, but it's okay for the
library to be assertive and to match its ambitions.  Tip-toeing around 'what
if' is an endless rabbit hole.  We'll adapt and find a solution if there is
a problem at some point in the future.  Cool?

Actually I agree. XML:: and XSLT:: are a lot better. Trying to find
the right balance between ease-of-use and interoperability can be
difficult.

Ok, everyone agrees here.

I think we should reconsider wrapping what we have in a LibXML
namespace. This provides for both possibilities. Usage would entail:

  require 'libxml'

  module MyApp
    include LibXML

    # Create a new XSL Transform
    stylesheet_doc = XML::Document.file('files/fuzface.xsl')
    stylesheet     = XSLT::Stylesheet.new(stylesheet_doc)
    ...
  end

See that's nice to use and proper! :-)

I think we tend to think in terms of the toplevel, but in most
applications this isn't the case.

Its a clever idea. But I'm not convinced because I really don't like the extra include. Why exactly would I want to mixin libxml into my own classes or modules - just to make coding a bit easier doesn't seem enough justification?

I'd just as soon do this:

XML = LibXML

And be done with it.  I agree you could do this though:

XML = LibXML::XML

Um, are you really tied to this idea? Going through and changing everything again sounds really uninteresting.

Charlie

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
libxml-devel mailing list
libxml-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/libxml-devel

Reply via email to