Class: NavigatorRails::Store

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/navigator_rails/store.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeStore

Returns a new instance of Store.



16
17
18
# File 'lib/navigator_rails/store.rb', line 16

def initialize
  @items     ||= []
end

Class Method Details

.add(item) ⇒ Object



8
# File 'lib/navigator_rails/store.rb', line 8

def add item; Store.instance.add item; end

.children_of(resource) ⇒ Object



12
# File 'lib/navigator_rails/store.rb', line 12

def children_of resource; Store.instance.children_of resource; end

.collectObject



11
# File 'lib/navigator_rails/store.rb', line 11

def collect;  Store.instance.collect; end

.delete(item) ⇒ Object



10
# File 'lib/navigator_rails/store.rb', line 10

def delete item; Store.instance.delete item; end

.get(path) ⇒ Object



9
# File 'lib/navigator_rails/store.rb', line 9

def get path; Store.instance.get path; end

.itemsObject



7
# File 'lib/navigator_rails/store.rb', line 7

def items; Store.instance.items; end

.process_config_buildersObject



14
# File 'lib/navigator_rails/store.rb', line 14

def process_config_builders; Store.instance.process_config_builders; end

.process_itemsObject



13
# File 'lib/navigator_rails/store.rb', line 13

def process_items; Store.instance.process_items; end

Instance Method Details

#add(item) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/navigator_rails/store.rb', line 22

def add item
  @items.each do |dbitem|
    return if dbitem.path == item.path
  end
  @items << item
  fill_gaps
end

#children_of(resource) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/navigator_rails/store.rb', line 37

def children_of resource
  unordered_items = @items.collect do |item|
    next unless item.path  =~ /^#{resource.path}\//
    next unless item.level == resource.level+1
    [item, item.order]
  end.compact
  orderable_items = unordered_items.collect do |item,order|
    [order,item] if order
  end.compact
  items = []
  items += orderable_items.sort.to_h.values unless orderable_items.empty?
  items += unordered_items.collect do |item,order|
    item unless order
  end.compact
end

#collectObject



86
87
88
89
90
91
92
93
94
# File 'lib/navigator_rails/store.rb', line 86

def collect
  config = NavigatorRails.config
  return unless config and config[:search_at]
  config[:search_at].each do |dir|
    Dir["#{dir}/**/*.rb"].each do |file|
      get_items_of get_controller(dir, file)
    end
  end
end

#delete(item) ⇒ Object



34
35
36
# File 'lib/navigator_rails/store.rb', line 34

def delete item
  @items.delete(item)
end

#get(path) ⇒ Object



29
30
31
32
33
# File 'lib/navigator_rails/store.rb', line 29

def get path
  @items.collect do |item|
    item if item.path == path
  end.compact.first
end

#get_controller(dir, file) ⇒ Object



67
68
69
70
71
72
73
# File 'lib/navigator_rails/store.rb', line 67

def get_controller dir, file
  begin 
    return file.sub(/^#{dir}\//, '').sub(/\.rb$/,'').classify.constantize
  rescue NameError
    return
  end
end

#get_items_of(controller) ⇒ Object



77
78
79
80
81
82
83
84
85
# File 'lib/navigator_rails/store.rb', line 77

def get_items_of controller
  if defined?(controller.navigator_rails_items)
    register_controller controller
    return unless controller.navigator_rails_items
    controller.navigator_rails_items.collect do |item|
      item.save
    end
  end
end

#itemsObject



19
20
21
# File 'lib/navigator_rails/store.rb', line 19

def items
  @items
end

#process_config_buildersObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/navigator_rails/store.rb', line 52

def process_config_builders
  NavigatorRails.config.each do |param,value|
    next unless param =~ /^build_/
    case param
    when :build_devise_at
      parent_path = Item.normalize_path value
      Item.new(path: "#{parent_path}/Profile", type: :link, constraint: 'user_signed_in?', content: "link_to('Profile', edit_user_registration_url)").save
      Item.new(path: "#{parent_path}/SignOut", type: :link, constraint: 'user_signed_in?', content: "link_to('Sign Out', destroy_user_session_url, method: :delete)").save
      Item.new(path: "#{parent_path}/SignIn", type: :link, constraint: 'not user_signed_in?', content: "link_to('Sign In', new_user_session_url)").save
      Item.new(path: "#{parent_path}/SignUp", type: :link, constraint: 'not user_signed_in?', content: "link_to('Sign Up', new_user_registration_url)").save
    when :build_brand
      Item.new(type: :brand, type: :brand, path: value[:path], content: "link_to(raw('#{value[:content]}'),root_url, class: 'navbar-brand')").save
    end
  end
end

#register_controller(controller) ⇒ Object



74
75
76
# File 'lib/navigator_rails/store.rb', line 74

def register_controller controller
  NavigatorRails.config[:controllers] << controller
end