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