class Middleman::Extensions::Outliner
Public Class Methods
new(app, options_hash={})
click to toggle source
Calls superclass method
# File lib/sculptor/extensions/outliner.rb, line 2 def initialize(app, options_hash={}) super require 'open-uri' require 'nokogiri' end
Public Instance Methods
outline(html)
click to toggle source
# File lib/sculptor/extensions/outliner.rb, line 10 def outline(html) doc = Nokogiri::HTML.fragment(html, encoding='utf-8') elements = parse_elements(doc.children) partial('glyptotheque/model-outline', locals: { elements: elements }) end
parse_elements(elements)
click to toggle source
# File lib/sculptor/extensions/outliner.rb, line 20 def parse_elements(elements) result = [] elements.each do |e| text = e.xpath('text()').text next unless e.element? class_name = e.attributes['class'] && e.attributes['class'].value attributes = e.attributes.reject {|k| k == 'class' } result << { el_name: e.name, class_name: class_name, attrs: attributes.values.map { |a| { name: a.name, value: a.value } }, children: parse_elements(e.children), text: text } end return result end