Module: Schema::Utils
- Defined in:
- lib/schema/utils.rb
Overview
Schema::Utils is a collection of common utility methods used in this gem
Class Method Summary collapse
- .add_association_class(base_schema_class, schema_name, schema_type, options) ⇒ Object
- .add_association_defaults(kls, base_schema_class, schema_name) ⇒ Object
- .add_association_dynamic_types(kls, options) ⇒ Object
- .association_options(schema_name, schema_type, options) ⇒ Object
- .classify_name(name) ⇒ Object
- .create_schema_class(base_schema_class, schema_name, options) ⇒ Object
- .include_schema_modules(kls, schema_config) ⇒ Object
Class Method Details
.add_association_class(base_schema_class, schema_name, schema_type, options) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/schema/utils.rb', line 32 def add_association_class(base_schema_class, schema_name, schema_type, ) = ::Schema::Utils.(schema_name, schema_type, ) kls = ::Schema::Utils.create_schema_class( base_schema_class, schema_name, ) add_association_defaults(kls, base_schema_class, schema_name) add_association_dynamic_types(kls, ) end |
.add_association_defaults(kls, base_schema_class, schema_name) ⇒ Object
44 45 46 47 48 |
# File 'lib/schema/utils.rb', line 44 def add_association_defaults(kls, base_schema_class, schema_name) kls.include ::Schema::Associations::Base kls.base_schema_class = base_schema_class kls.schema_name = schema_name end |
.add_association_dynamic_types(kls, options) ⇒ Object
50 51 52 53 54 |
# File 'lib/schema/utils.rb', line 50 def add_association_dynamic_types(kls, ) return if ![:type_field] && ![:external_type_field] kls.include ::Schema::Associations::DynamicTypes end |
.association_options(schema_name, schema_type, options) ⇒ Object
27 28 29 30 |
# File 'lib/schema/utils.rb', line 27 def (schema_name, schema_type, ) [:class_name] ||= 'Schema' + classify_name(schema_type.to_s) + classify_name(schema_name.to_s) ::Schema::Model.(schema_name, schema_type).merge() end |
.classify_name(name) ⇒ Object
8 9 10 |
# File 'lib/schema/utils.rb', line 8 def classify_name(name) name.gsub(/[^\da-z_-]/, '').gsub(/(^.|[_|-].)/) { |m| m[-1].upcase } end |
.create_schema_class(base_schema_class, schema_name, options) ⇒ Object
12 13 14 15 16 17 18 |
# File 'lib/schema/utils.rb', line 12 def create_schema_class(base_schema_class, schema_name, ) base_schema_class.add_value_to_class_method(:schema, schema_name => ) kls = Class.new([:base_class] || Object) kls = base_schema_class.const_set([:class_name], kls) include_schema_modules(kls, base_schema_class.schema_config) unless [:base_class] kls end |
.include_schema_modules(kls, schema_config) ⇒ Object
20 21 22 23 24 25 |
# File 'lib/schema/utils.rb', line 20 def include_schema_modules(kls, schema_config) kls.include ::Schema::Model schema_config[:schema_includes].each do |mod| kls.schema_include(mod) end end |