Class: Namespace

Inherits:
Object
  • Object
show all
Extended by:
Attribute
Defined in:
lib/athergin/namespace.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Attribute

attribute

Constructor Details

#initialize(name, display_order) ⇒ Namespace

Returns a new instance of Namespace.



31
32
33
34
35
# File 'lib/athergin/namespace.rb', line 31

def initialize(name, display_order)
  @name, @display_order = name, display_order
  @reports = {}
  @transformers = {}
end

Instance Attribute Details

#display_orderObject (readonly)

Returns the value of attribute display_order.



3
4
5
# File 'lib/athergin/namespace.rb', line 3

def display_order
  @display_order
end

#reportsObject (readonly)

Returns the value of attribute reports.



3
4
5
# File 'lib/athergin/namespace.rb', line 3

def reports
  @reports
end

#transformersObject (readonly)

Returns the value of attribute transformers.



3
4
5
# File 'lib/athergin/namespace.rb', line 3

def transformers
  @transformers
end

Class Method Details

.allObject



18
19
20
# File 'lib/athergin/namespace.rb', line 18

def all
  Platform.namespaces.values rescue []
end

.displayableObject



22
23
24
# File 'lib/athergin/namespace.rb', line 22

def displayable
  all.select { |n| n.report_objects.present? }.sort { |a,b| a.display_order <=> b.display_order }
end

.find_by_name(name) ⇒ Object



26
27
28
# File 'lib/athergin/namespace.rb', line 26

def find_by_name(name)
  all.find { |namespace| namespace.name == name.try(:to_sym) }
end

Instance Method Details

#css_class_nameObject

todo: think this over, models are probably not a good place for the css class name



66
67
68
# File 'lib/athergin/namespace.rb', line 66

def css_class_name
  current? ? 'active' : 'inactive'
end

#current?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/athergin/namespace.rb', line 61

def current?
  name.eql? Platform.current_namespace.name
end

#report(name, &block) ⇒ Object



47
48
49
50
51
52
# File 'lib/athergin/namespace.rb', line 47

def report(name, &block)
  warn "warning: overriding report '#{ name }'" if @reports[name]

  @reports[name] = Report.new name, namespace: self
  @reports[name].instance_eval &block
end

#report_objectsObject

todo: change this to reports



38
39
40
# File 'lib/athergin/namespace.rb', line 38

def report_objects
  reports.values
end

#to_hObject



6
7
8
9
10
11
12
13
14
15
# File 'lib/athergin/namespace.rb', line 6

def to_h
  methods = [:name, :description, :current?, :css_class_name, :report_objects]
  methods.map do |method|
    key, value = method.to_s.gsub(/\?$/,'').to_sym, send(method)
    value = '' if value.nil?
    value = value.to_data if value.is_a? Array

    [key, value]
  end.to_h
end

#transformer(name, &block) ⇒ Object



54
55
56
57
58
59
# File 'lib/athergin/namespace.rb', line 54

def transformer(name, &block)
  warn "warning: overriding transformer '#{ name }'" if @transformers[name]

  @transformers[name] = Transformer.new name
  @transformers[name].instance_eval &block
end

#transformer_objectsObject

todo: change this to transformers



43
44
45
# File 'lib/athergin/namespace.rb', line 43

def transformer_objects
  transformers.values
end