Module: Xpose::Controller::ClassMethods

Defined in:
lib/xpose/controller.rb

Instance Method Summary collapse

Instance Method Details

#_expose(**args) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/xpose/controller.rb', line 6

def _expose(**args)
  ::Xpose::Exposed.new(args).tap do |inst|
    @@exposed ||= {}
    @@exposed[inst.conf.name] = inst
    define_method inst.conf.name do
      if instance_variable_defined?(inst.conf.ivar_name)
        instance_variable_get(inst.conf.ivar_name)
      else
        instance_variable_set(inst.conf.ivar_name, inst.exposed_value(self))
      end
    end
    helper_method(inst.conf.name)
  end
end

#expose(names, value = nil, **args, &block) ⇒ Object



21
22
23
24
# File 'lib/xpose/controller.rb', line 21

def expose(names, value = nil, **args, &block)
  value = value || args.fetch(:value, nil) || block
  [names].flatten.each { |name| _expose({ name: name, value: value }.merge(args)) }
end

#expose!(names, value = nil, **args, &block) ⇒ Object



26
27
28
29
# File 'lib/xpose/controller.rb', line 26

def expose!(names, value = nil, **args, &block)
  expose(name, value, args, &block)
  [names].flatten.each { |name| before_action(name) }
end

#exposedObject



31
32
33
# File 'lib/xpose/controller.rb', line 31

def exposed
  @@exposed ||= {}
end