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

Version Path
middleman-sculptor-0.25.2 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.25.1 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.25 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.24 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.23 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.22 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.21 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.20 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.19 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.18 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.17 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.16 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.15 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.14 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.13 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.12 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.11 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.10 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.9 lib/middleman-sculptor/helpers/outliner.rb
middleman-sculptor-0.8 lib/middleman-sculptor/helpers/outliner.rb