Module: Nacelle::HasCells

Defined in:
lib/nacelle/has_cells.rb

Instance Method Summary collapse

Instance Method Details

#has_cells(*columns) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
# File 'lib/nacelle/has_cells.rb', line 3

def has_cells *columns
  define_method :cells do
    columns.flat_map do |column|
      send(column).to_s.scan(/(<cell[^>]*\/\s*>|<cell[^>]*>.*?<\/cell>)/m).map do |matches|
        tag = matches.first
        attrs = Hash.from_xml(tag)['cell']
        name, _ = attrs.delete('name').split('/')
        "#{name.camelize}Cell".constantize
      end
    end
  end
end