Sha256: 0ba681aa48a2081e2867780a53c89129ee4dd8aaf413d9c6ed9b4488e4107027
Contents?: true
Size: 1.45 KB
Versions: 1
Compression:
Stored size: 1.45 KB
Contents
# frozen_string_literal: true require 'forwardable' require_relative 'errors' require_relative 'json_schema/schemas' module Meta class Entity class << self extend Forwardable attr_reader :schema_builder def inherited(base) base.instance_eval do @schema_builder = JsonSchema::ObjectSchemaBuilder.new @schema_builder.schema_name(self.name) if self.name end end def_delegators :schema_builder, :property, :param, :expose, :use, :lock, :locked, :schema_name, :to_schema def method_missing(method, *args) if method =~ /^lock_(\w+)$/ schema_builder.send(method, *args) else super end end private # TODO: 不需要在 Entity 内自动生成名称了,交给 ObjectSchema::Naming 去做吧 def generate_schema_name(stage, locked_scopes) # 匿名类不考虑自动生成名称 return nil unless self.name schema_name = self.name.gsub('::', '_') schema_name = schema_name.delete_suffix('Entity') unless schema_name == 'Entity' # 先考虑 stage case stage when :param schema_name += 'Params' when :render schema_name += 'Entity' end # 再考虑 locked_scope scope_suffix = locked_scopes.join('_') schema_name = "#{schema_name}_#{scope_suffix}" unless scope_suffix.empty? schema_name end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
meta-api-0.1.0 | lib//meta/entity.rb |