class JSON::SchemaDsl::Renderers::Alias

Aliases certain attributes and camel-cases all others. The only exception are property names which are set by the user and will not be camel-cased.

Constants

ALIASES

Public Instance Methods

visit(entity) click to toggle source

Camel-case and/or alias the attribute names of the given structure.

# File lib/json/schema_dsl/renderers/alias.rb, line 15
def visit(entity)
  traverse(entity
    .transform_keys { |key| ALIASES[key.to_s]&.to_sym || key }
    .transform_keys { |key| camelize_snake_cased(key) })
end

Private Instance Methods

camelize_snake_cased(key) click to toggle source
# File lib/json/schema_dsl/renderers/alias.rb, line 23
def camelize_snake_cased(key)
  key = key.to_s
  (key.capitalize == key ? key : key.camelize(:lower)).to_sym
end
traverse(entity) click to toggle source
# File lib/json/schema_dsl/renderers/alias.rb, line 28
def traverse(entity)
  entity.map do |key, value|
    if key.to_s.match?(/properties$/i) && value.is_a?(Hash)
      [key, value.transform_values { |v| visit(v) }]
    else
      [key, step(value)]
    end
  end.to_h
end