class Bluesky::ViewController
Attributes
appearance[RW]
children[RW]
data[RW]
parent[RW]
Public Class Methods
attribute(name, *args, &block)
click to toggle source
# File lib/bluesky/view_controller.rb, line 15 def self.attribute(name, *args, &block) case args.length when 0 define_method(name) { data.fetch(name) } when 1 if args[0].respond_to?(:call) define_method(name) { data.fetch(name) { data.store(name, args[0].call) } } else define_method(name) { data.fetch(name, args[0]) } end else raise ArgumentError, %{ wrong number of arguments (#{args.length} for 1..2) } end define_method("#{name}=") { |value| data.store(name, value) } end
inherited(subclass)
click to toggle source
# File lib/bluesky/view_controller.rb, line 32 def self.inherited(subclass) define_method(subclass.name) do |**data| subclass.new(delegate: self, data: data) end end
new(*_, children: [], parent: nil, data: {})
click to toggle source
# File lib/bluesky/view_controller.rb, line 40 def initialize(*_, children: [], parent: nil, data: {}) @children = children @parent = parent @data = data @appearance = :disappeared @force_update = false @delegate = self end
Public Instance Methods
add_child_view_controller(view_controller)
click to toggle source
# File lib/bluesky/view_controller.rb, line 96 def add_child_view_controller(view_controller) view_controller.will_move_to_parent_view_controller(self) view_controller.remove_from_parent_view_controller children.push(view_controller) view_controller.parent = self view_controller.did_move_to_parent_view_controller(self) end
appeared?()
click to toggle source
# File test/test_helper.rb, line 40 def appeared? !!(@will_appear && @did_appear && @will_appear < @did_appear && (@will_disappear ? @will_appear > @will_disappear : true) && (@did_disappear ? @did_appear > @did_disappear : true)) end
begin_appearance_transition(appearing)
click to toggle source
# File lib/bluesky/view_controller.rb, line 69 def begin_appearance_transition(appearing) if appearing return unless @appearance == :disappeared # raise "Invalid appearance #{@appearance} when appearing" if @appearance != :disappeared @appearance = :appearing view_will_appear() else return unless @appearance == :appeared # raise "Invalid appearance #{@appearance} when disappearing" if @appearance != :appeared @appearance = :disappearing view_will_disappear() end end
did_move_to_parent_view_controller(view_controller)
click to toggle source
# File lib/bluesky/view_controller.rb, line 131 def did_move_to_parent_view_controller(view_controller) end
disappeared?()
click to toggle source
# File test/test_helper.rb, line 46 def disappeared? !!(@will_disappear && @did_disappear && @will_disappear < @did_disappear && (@will_appear ? @will_disappear > @will_appear : true) && (@did_appear ? @did_disappear > @did_appear : true)) end
dismiss()
click to toggle source
# File lib/bluesky/view_controller.rb, line 117 def dismiss raise 'not implemented' end
dispatch(target, action, *payload, &block)
click to toggle source
# File lib/bluesky/view_controller.rb, line 61 def dispatch(target, action, *payload, &block) try(parent, :dispatch, target, action, *payload, &block) end
dump()
click to toggle source
# File test/test_helper.rb, line 57 def dump puts "will_appear == #{@will_appear}" puts "did_appear == #{@did_appear}" puts "will_disappear == #{@will_disappear}" puts "did_disappear == #{@did_disappear}" end
end_appearance_transition()
click to toggle source
# File lib/bluesky/view_controller.rb, line 83 def end_appearance_transition() case @appearance when :appearing @appearance = :appeared view_did_appear() when :disappearing @appearance = :disappeared view_did_disappear() else # raise "Invalid appearance #{@appearance} when transitioning" end end
force_update() { || ... }
click to toggle source
Dispatch methods
# File lib/bluesky/view_controller.rb, line 148 def force_update @force_update = true @parent.refresh do @force_update = false yield if block_given? end end
force_update?()
click to toggle source
# File lib/bluesky/view_controller.rb, line 49 def force_update? @force_update end
index()
click to toggle source
# File test/test_helper.rb, line 19 def index @index ||= 0 @index += 1 end
notify(source, event, *payload)
click to toggle source
# File lib/bluesky/view_controller.rb, line 65 def notify(source, event, *payload) try(parent, :notify, source, event, *payload) end
present(_view_controller)
click to toggle source
# File lib/bluesky/view_controller.rb, line 113 def present(_view_controller) raise 'not implemented' end
refresh(&block)
click to toggle source
# File lib/bluesky/view_controller.rb, line 156 def refresh(&block) @parent.refresh(&block) end
remove_from_parent_view_controller()
click to toggle source
# File lib/bluesky/view_controller.rb, line 104 def remove_from_parent_view_controller return unless parent parent.children.delete(self) end
render()
click to toggle source
# File lib/bluesky/view_controller.rb, line 57 def render view end
reset!()
click to toggle source
# File test/test_helper.rb, line 52 def reset! @will_appear = @did_appear = @will_disappear = @did_disappear = false @index = 0 end
show(_view_controller)
click to toggle source
# File lib/bluesky/view_controller.rb, line 109 def show(_view_controller) raise 'not implemented' end
view()
click to toggle source
# File lib/bluesky/view_controller.rb, line 53 def view nil end
view_did_appear()
click to toggle source
# File lib/bluesky/view_controller.rb, line 137 def view_did_appear end
view_did_disappear()
click to toggle source
# File lib/bluesky/view_controller.rb, line 143 def view_did_disappear end
view_will_appear()
click to toggle source
# File lib/bluesky/view_controller.rb, line 134 def view_will_appear end
view_will_disappear()
click to toggle source
# File lib/bluesky/view_controller.rb, line 140 def view_will_disappear end
will_move_to_parent_view_controller(view_controller)
click to toggle source
Callbacks
# File lib/bluesky/view_controller.rb, line 128 def will_move_to_parent_view_controller(view_controller) end