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"