lib/moxml.rb in moxml-0.1.0 vs lib/moxml.rb in moxml-0.1.1

- old
+ new

@@ -1,44 +1,44 @@ -# lib/moxml.rb -require_relative "moxml/version" -require_relative "moxml/config" -require_relative "moxml/document" -require_relative "moxml/node" -require_relative "moxml/element" -require_relative "moxml/text" -require_relative "moxml/cdata_section" -require_relative "moxml/comment" -require_relative "moxml/processing_instruction" -require_relative "moxml/visitor" -require_relative "moxml/errors" -require_relative "moxml/backends/base" +# frozen_string_literal: true module Moxml class << self - def config - @config ||= Config.new + def new(adapter = nil, &block) + context = Context.new(adapter) + context.config.instance_eval(&block) if block_given? + context end def configure - yield(config) + yield Config.default if block_given? end - def backend - @backend ||= begin - backend_class = case config.backend - when :nokogiri - require_relative "moxml/backends/nokogiri" - Backends::Nokogiri - when :ox - require_relative "moxml/backends/ox" - Backends::Ox - when :oga - require_relative "moxml/backends/oga" - Backends::Oga - else - raise ArgumentError, "Unknown backend: #{config.backend}" - end - backend_class.new - end + 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 end end + +require_relative "moxml/version" +require_relative "moxml/document" +require_relative "moxml/document_builder" +require_relative "moxml/error" +require_relative "moxml/builder" +require_relative "moxml/config" +require_relative "moxml/context" +require_relative "moxml/adapter"