module Moxml

def configure

def configure
  yield Config.default if block_given?
end

def new(adapter = nil, &block)

def new(adapter = nil, &block)
  context = Context.new(adapter)
  context.config.instance_eval(&block) if block_given?
  context
end

def with_config(adapter_name = nil, strict_parsing = nil, default_encoding = nil)

def with_config(adapter_name = nil, strict_parsing = nil, default_encoding = nil)
  original_config = Config.default.dup
  configure do |config|
    config.adapter = adapter_name unless adapter_name.nil?
    config.strict_parsing = strict_parsing unless strict_parsing.nil?
    config.default_encoding = default_encoding unless default_encoding.nil?
  end
  yield if block_given?
  # restore the original config
  configure do |config|
    config.adapter = original_config.adapter_name
    config.strict_parsing = original_config.strict_parsing
    config.default_encoding = original_config.default_encoding
  end
  original_config = nil
end