Sha256: 58cb71cd4b6c28cd9587f1eee63eaa0dfd7b088160ce87ce2d297c7281513b56
Contents?: true
Size: 1.07 KB
Versions: 25
Compression:
Stored size: 1.07 KB
Contents
require 'open-uri' require 'nokogiri' module Middleman::Sculptor module Helpers module Outliner def outline(&block) html = capture_html(&block) doc = Nokogiri::HTML.fragment(html, encoding='utf-8') elements = parse_elements(doc.children) partial('glyptotheque/model-outline', locals: { elements: elements }) end private 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 id = e.attributes['id'] && e.attributes['id'].value attributes = e.attributes.reject {|k| k == 'class' || k == 'id' } result << { el_name: e.name, class_name: class_name, id: id, attrs: attributes.values.map { |a| { name: a.name, value: a.value } }, children: parse_elements(e.children), text: text } end return result end end end end
Version data entries
25 entries across 25 versions & 1 rubygems