Module: Rubydora::Ext::ModelLoader::ModelLoaderMixin
- Defined in:
- lib/rubydora/ext/model_loader.rb
Class Method Summary collapse
- .extended(document) ⇒ Object
-
.string_to_constant(lower_case_and_underscored_word) ⇒ Module
convert a model string to a Ruby class (see ActiveSupport::Inflector#constantize).
Class Method Details
.extended(document) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/rubydora/ext/model_loader.rb', line 22 def self.extended(document) self.module_names(document).each do |model| document.class.extension_parameters[:ModelLoaderMixin][:namespaces].each do |ns| begin mod = self.string_to_constant [ns, model].compact.map { |x| x.to_s }.join("/") document.send(:extend, mod) rescue NameError, LoadError end end end end |
.string_to_constant(lower_case_and_underscored_word) ⇒ Module
convert a model string to a Ruby class (see ActiveSupport::Inflector#constantize)
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/rubydora/ext/model_loader.rb', line 37 def self.string_to_constant lower_case_and_underscored_word camel_cased_word = lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase } names = camel_cased_word.split('::') names.shift if names.empty? || names.first.empty? constant = Object names.each do |name| if Module.method(:const_get).arity == 1 constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name) else constant = constant.const_defined?(name,false) ? constant.const_get(name) : constant.const_missing(name) end end constant end |