Sha256: 3abf36ee9fb230a840353abca713e7fd0db2f80864bde32f4ff7a1472350a96d
Contents?: true
Size: 1.49 KB
Versions: 4
Compression:
Stored size: 1.49 KB
Contents
module Dao class Context Attrs = %w( api route path interface args status errors params result data form validations ) Attrs.each{|a| attr_accessor(a)} def Context.attrs Attrs end def Context.for(api, route, path, interface, params, *args) # setup # options = Dao.options_for!(args) parsed_params = Dao.parse(path, params, options) result = Result.new(:mode => api.mode) params = result.params params.update(parsed_params) args = if interface.arity < 1 [params, result] else [params, result].slice(0, interface.arity) end # build the context # context = new context.api = api context.interface = interface context.route = route context.path = path context.args = args context.status = Status.default context.errors = Errors.new context.result = result context.data = result.data context.params = params context.form = params.form context.validations = params.validations # wire up shared state # result.route = context.route result.path = context.path result.status = context.status result.errors = context.errors params.route = context.route params.path = context.path params.status = context.status params.errors = context.errors context end include InstanceExec def call api.instance_exec(*args, &interface) end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
dao-3.3.0 | lib/dao/api/context.rb |
dao-3.2.0 | lib/dao/api/context.rb |
dao-3.1.2 | lib/dao/api/context.rb |
dao-3.1.1 | lib/dao/api/context.rb |