Sha256: aecd234ee0ae6cbc8e5adff4fcc182b61982452bd7e7f2e3d637ea897f4af8eb
Contents?: true
Size: 892 Bytes
Versions: 1
Compression:
Stored size: 892 Bytes
Contents
# frozen_string_literal: true require_relative 'blood/version' require 'tree_html' require 'set' require 'cgi' module Blood def self.source(mods) hier = Hash.new{ |h, k| h[k] = Set.new } mods.each do |mod| ances = mod.ancestors ances.each_with_index do |child, i| parent = ances[i + 1] hier[parent] << child end end Node.new(BasicObject, hier) end class Node include TreeHtml def initialize(mod, hier) @mod = mod @hier = hier end def label_for_tree_html name = ::CGI.escapeHTML(@mod.to_s) Class === @mod ? "<span class='hl'>#{name}</span>" : name end def children_for_tree_html children.map{ |sub| Node.new(sub, @hier) } end def css_for_tree_html '.hl{color: #cc342d;}' end private def children @hier[@mod].sort_by(&:to_s) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
blood-0.1.0 | lib/blood.rb |