abloom (owner)

Revisions

gist: 113652 Download_button fork
public
Public Clone URL: git://gist.github.com/113652.git
Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# lib/link_bar.rb
require 'singleton'
 
class LinkBar
  include Singleton
 
  class << self
    def register(callback)
      instance.register(callback)
    end
    
    def query(link_name)
      instance.query(link_name)
    end
  end
  
  def initialize
    @callbacks = []
  end
  
  def register(callback)
    @callbacks << callback
  end
  
  def query(link_name)
    returning Array.new do |arr|
      @callbacks.each do |callback|
        arr << callback.call(link_name)
      end
    end.flatten.uniq
  end
end
 
# vendor/plugins/<name>/init.rb
LinkBar.register(<Name>.method(:link_generation))
 
# vendor/plugins/<name>/lib/<name>.rb
class <Name>
  def self.link_generation(link_name)
    case link_name
    when "boards"
      [boards_url, "#{link_name} Boards"]
    when "other"
      [other_url, "#{link_name} Other"]
    end
  end
end
 
# app/controllers/some_controller.rb
class SomeController
  before_filter :find_board_links
  
  def find_board_links
    @board_links = LinkBar.query("boards")
  end
end