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

- old
+ new

@@ -1,23 +1,47 @@ -# lib/moxml/config.rb +# frozen_string_literal: true + module Moxml class Config - attr_accessor :backend, :huge_document, + VALID_ADAPTERS = %i[nokogiri oga ox].freeze + DEFAULT_ADAPTER = VALID_ADAPTERS.first + + class << self + def default + @default ||= new(DEFAULT_ADAPTER, true, "UTF-8") + end + end + + attr_reader :adapter_name + attr_accessor :strict_parsing, :default_encoding, - :default_indent, - :cdata_sections, - :cdata_patterns, - :strict_parsing, - :entity_encoding + :entity_encoding, + :default_indent - def initialize - @backend = :nokogiri - @huge_document = false - @default_encoding = "UTF-8" + def initialize(adapter_name = nil, strict_parsing = nil, default_encoding = nil) + self.adapter = adapter_name || Config.default.adapter_name + @strict_parsing = strict_parsing || Config.default.strict_parsing + @default_encoding = default_encoding || Config.default.default_encoding + # reserved for future use @default_indent = 2 - @cdata_sections = true - @cdata_patterns = ["script", "style"] - @strict_parsing = true @entity_encoding = :basic + end + + def adapter=(name) + name = name.to_sym + @adapter = nil + + unless VALID_ADAPTERS.include?(name) + raise ArgumentError, "Invalid adapter: #{name}. Valid adapters are: #{VALID_ADAPTERS.join(", ")}" + end + + @adapter_name = name + adapter + end + + alias default_adapter= adapter= + + def adapter + @adapter ||= Adapter.load(@adapter_name) end end end