diff --git a/lib/site_maps.rb b/lib/site_maps.rb index 6ac3a2e..9001a96 100644 --- a/lib/site_maps.rb +++ b/lib/site_maps.rb @@ -54,7 +54,7 @@ def use(adapter, **options, &block) adapter_class = if adapter.is_a?(Class) # && adapter < Adapters::Adapter adapter else - const_name = Primitives::String.new(adapter.to_s).classify + const_name = Primitive::String.new(adapter.to_s).classify begin Adapters.const_get(const_name) rescue NameError diff --git a/lib/site_maps/builder/url.rb b/lib/site_maps/builder/url.rb index d918d8f..e07a354 100644 --- a/lib/site_maps/builder/url.rb +++ b/lib/site_maps/builder/url.rb @@ -14,17 +14,17 @@ class URL def initialize(link, **attributes) @attributes = DEFAULTS.merge(attributes) @attributes[:loc] = link - @attributes[:alternates] = SiteMaps::Primitives::Array.wrap(@attributes[:alternates]) - @attributes[:videos] = SiteMaps::Primitives::Array.wrap(@attributes[:videos]) - @attributes[:images] = SiteMaps::Primitives::Array.wrap(@attributes[:images]) + @attributes[:alternates] = SiteMaps::Primitive::Array.wrap(@attributes[:alternates]) + @attributes[:videos] = SiteMaps::Primitive::Array.wrap(@attributes[:videos]) + @attributes[:images] = SiteMaps::Primitive::Array.wrap(@attributes[:images]) if (video = @attributes.delete(:video)) - @attributes[:videos].concat(SiteMaps::Primitives::Array.wrap(video)) + @attributes[:videos].concat(SiteMaps::Primitive::Array.wrap(video)) end if (alternate = @attributes.delete(:alternate)) - @attributes[:alternates].concat(SiteMaps::Primitives::Array.wrap(alternate)) + @attributes[:alternates].concat(SiteMaps::Primitive::Array.wrap(alternate)) end if (image = @attributes.delete(:image)) - @attributes[:images].concat(SiteMaps::Primitives::Array.wrap(image)) + @attributes[:images].concat(SiteMaps::Primitive::Array.wrap(image)) end @attributes[:images] = @attributes[:images][0...SiteMaps::MAX_LENGTH[:images]] end @@ -121,9 +121,9 @@ def to_xml if self[:pagemap].is_a?(Hash) && (pagemap = self[:pagemap]).any? builder.pagemap :PageMap do - SiteMaps::Primitives::Array.wrap(pagemap[:dataobjects]).each do |dataobject| + SiteMaps::Primitive::Array.wrap(pagemap[:dataobjects]).each do |dataobject| builder.pagemap :DataObject, type: dataobject[:type].to_s, id: dataobject[:id].to_s do - SiteMaps::Primitives::Array.wrap(dataobject[:attributes]).each do |attribute| + SiteMaps::Primitive::Array.wrap(dataobject[:attributes]).each do |attribute| builder.pagemap :Attribute, attribute[:value].to_s, name: attribute[:name].to_s end end diff --git a/lib/site_maps/notification/event.rb b/lib/site_maps/notification/event.rb index 60bfdb0..3ec3d06 100644 --- a/lib/site_maps/notification/event.rb +++ b/lib/site_maps/notification/event.rb @@ -43,7 +43,7 @@ def payload(data = nil) # @api private def listener_method - @listener_method ||= Primitives::String.new("on_#{id}").underscore.to_sym + @listener_method ||= Primitive::String.new("on_#{id}").underscore.to_sym end end end diff --git a/lib/site_maps/primitives/array.rb b/lib/site_maps/primitive/array.rb similarity index 89% rename from lib/site_maps/primitives/array.rb rename to lib/site_maps/primitive/array.rb index b25331d..6bf5f15 100644 --- a/lib/site_maps/primitives/array.rb +++ b/lib/site_maps/primitive/array.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module SiteMaps::Primitives +module SiteMaps::Primitive class Array < ::Array def self.wrap(object) if object.nil? diff --git a/lib/site_maps/primitives/output.rb b/lib/site_maps/primitive/output.rb similarity index 98% rename from lib/site_maps/primitives/output.rb rename to lib/site_maps/primitive/output.rb index 7c881be..3dd6724 100644 --- a/lib/site_maps/primitives/output.rb +++ b/lib/site_maps/primitive/output.rb @@ -6,7 +6,7 @@ end module SiteMaps - module Primitives + module Primitive module Output module_function diff --git a/lib/site_maps/primitives/string.rb b/lib/site_maps/primitive/string.rb similarity index 97% rename from lib/site_maps/primitives/string.rb rename to lib/site_maps/primitive/string.rb index ecd20dd..335a54e 100644 --- a/lib/site_maps/primitives/string.rb +++ b/lib/site_maps/primitive/string.rb @@ -12,7 +12,7 @@ # noop end -module SiteMaps::Primitives +module SiteMaps::Primitive class String < ::String def classify new_str = if defined?(Dry::Inflector) diff --git a/lib/site_maps/runner/event_listener.rb b/lib/site_maps/runner/event_listener.rb index 20edf31..c330f2e 100644 --- a/lib/site_maps/runner/event_listener.rb +++ b/lib/site_maps/runner/event_listener.rb @@ -2,12 +2,12 @@ module SiteMaps module Runner::EventListener - extend Primitives::Output + extend Primitive::Output module_function def [](event_name) - method_name = Primitives::String.new(event_name).underscore.to_sym + method_name = Primitive::String.new(event_name).underscore.to_sym return unless respond_to?(:"on_#{method_name}") method(:"on_#{method_name}") diff --git a/spec/site_maps/primitives/array_spec.rb b/spec/site_maps/primitive/array_spec.rb similarity index 91% rename from spec/site_maps/primitives/array_spec.rb rename to spec/site_maps/primitive/array_spec.rb index 27cdfc5..94a0546 100644 --- a/spec/site_maps/primitives/array_spec.rb +++ b/spec/site_maps/primitive/array_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -RSpec.describe SiteMaps::Primitives::Array do +RSpec.describe SiteMaps::Primitive::Array do describe ".wrap" do specify do expect(described_class.wrap(nil)).to eq([]) diff --git a/spec/site_maps/primitives/string_spec.rb b/spec/site_maps/primitive/string_spec.rb similarity index 66% rename from spec/site_maps/primitives/string_spec.rb rename to spec/site_maps/primitive/string_spec.rb index ec558ce..b756090 100644 --- a/spec/site_maps/primitives/string_spec.rb +++ b/spec/site_maps/primitive/string_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -RSpec.describe SiteMaps::Primitives::String do +RSpec.describe SiteMaps::Primitive::String do describe "#classify" do context "when dry-inflector is available" do before do @@ -39,6 +39,43 @@ def self.classify(string) end end + describe "#constantize" do + let(:constant) { Class.new } + + before do + stub_const("MyConstant", constant) + end + + context "when dry-inflector is available" do + before do + stub_const("Dry::Inflector", Class.new { + def constantize(string) + MyConstant if string == "MyConstant" + end + }) + end + + it "returns the constantized string" do + expect(described_class.new("MyConstant").constantize).to eq(constant) + end + end + + context "when active-support is available" do + before do + stub_const("ActiveSupport::Inflector", Class.new { + def self.constantize(string) + MyConstant if string == "MyConstant" + end + }) + end + + it "returns the constantized string" do + expect(described_class.new("MyConstant").constantize).to eq(constant) + end + end + end + + describe "#underscore" do subject { described_class.new(arg).underscore } diff --git a/spec/site_maps/runner/event_listener_spec.rb b/spec/site_maps/runner/event_listener_spec.rb index 9fc7218..9b0229f 100644 --- a/spec/site_maps/runner/event_listener_spec.rb +++ b/spec/site_maps/runner/event_listener_spec.rb @@ -213,10 +213,10 @@ end def colorize(*args) - SiteMaps::Primitives::Output.colorize(*args) + SiteMaps::Primitive::Output.colorize(*args) end def formatted_runtime(runtime) - SiteMaps::Primitives::Output.formatted_runtime(runtime) + SiteMaps::Primitive::Output.formatted_runtime(runtime) end end