class APIQL::Context
Public Class Methods
new(binder, *fields)
click to toggle source
# File lib/apiql.rb, line 493 def initialize(binder, *fields) @fields = fields fields.each do |field| instance_variable_set("@#{field}", binder.send(field)) class_eval do attr_accessor field end end end
Public Instance Methods
inject_delegators(target)
click to toggle source
# File lib/apiql.rb, line 505 def inject_delegators(target) @fields.each do |field| target.class_eval do delegate field, to: :@context end end end
parse_params(list)
click to toggle source
# File lib/apiql.rb, line 513 def parse_params(list) list&.split(',')&.map(&:strip)&.map do |name| if reg = name.match(/\A[a-zA-Z_]\w*\z/) params[name] else begin Float(name) rescue name end end end end
render_value(value, schema)
click to toggle source
# File lib/apiql.rb, line 527 def render_value(value, schema) if value.is_a? Hash HashEntity.new(value, self).render(schema) elsif value.respond_to?(:each) && value.respond_to?(:map) value.map do |object| render_value(object, schema) end elsif APIQL::simple_class?(value) value else begin "#{value.class.name}::Entity".constantize.new(value, self).render(schema) rescue StandardError if ::Rails.env.development? raise else nil end end end end