Module: Koi::Extensions::ObjectRendering
- Defined in:
- lib/koi/extensions/object_rendering.rb
Instance Method Summary collapse
-
#merge_prefix_into_object_path(prefix, object_path) ⇒ Object
Workaround for de-duplicating nested module paths for admin controllers See https://github.com/rails/rails/issues/50916.
Instance Method Details
#merge_prefix_into_object_path(prefix, object_path) ⇒ Object
Workaround for de-duplicating nested module paths for admin controllers See https://github.com/rails/rails/issues/50916
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/koi/extensions/object_rendering.rb', line 8 def merge_prefix_into_object_path(prefix, object_path) return object_path unless prefix.include?(?/) && object_path.include?(?/) prefixes = File.dirname(prefix).split("/") object_namespace = object_path.split("/") # Drop the longest run of trailing prefix segments that also appears at # the head of the object namespace, merging overlapping namespaces # rather than repeating them. max_overlap = [prefixes.length, object_namespace.length].min overlap = max_overlap.downto(0).find do |length| prefixes.last(length) == object_namespace.first(length) end (prefixes.first(prefixes.length - overlap) << object_path).join("/") end |