Sha256: 68990068a9b72625def472382ea0d2947f39b5b288e99147a4eae163f857d7d6

Contents?: true

Size: 827 Bytes

Versions: 1

Compression:

Stored size: 827 Bytes

Contents

# frozen_string_literal: true

require "dry/inflector"

module ROM
  module InflectorMethods
    # ZeitwerkCompatibility
    def camelize(name, *)
      super(name)
    end

    # Default for inferring ids from class names or any string/symbol
    def component_id(value)
      name = (value.is_a?(Class) ? (value.name || value.superclass.name) : value).to_s
      underscore(demodulize(name)).to_sym
    end

    # Default for inferring namespace from class names or any string/symbol
    def namespace(value)
      name = (value.is_a?(Class) ? (value.name || value.superclass.name) : value).to_s
      pluralize(underscore(demodulize(name))).to_sym
    end
  end

  Inflector = Dry::Inflector.new do |i|
    i.plural(/people\z/i, "people")
    i.plural(/schema\z/i, "schemas")
  end

  Inflector.extend(InflectorMethods)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rom-6.0.0.alpha1 lib/rom/support/inflector.rb