]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - vendor/oojs/oojs-ui/bin/dependencytree.rb
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / vendor / oojs / oojs-ui / bin / dependencytree.rb
1 require 'pp'
2 require_relative 'docparser'
3
4 $classes = parse_any_path 'src'
5
6 def prefix lines
7         if lines.empty?
8                 ''
9         else
10                 lines.gsub(/^/, '- ')
11         end
12 end
13
14 def find_class klass_name
15         $classes.find{|c| c[:name] == klass_name }
16 end
17
18 def describe klass_name
19         out = []
20         out << klass_name
21         klass = find_class klass_name
22         if klass
23                 if klass[:parent]
24                         out.push prefix describe klass[:parent]
25                 end
26                 if klass[:mixins]
27                         klass[:mixins].each do |mixin|
28                                 out.push prefix describe mixin
29                         end
30                 end
31         end
32         out.select{|a| !a.empty? }.join "\n"
33 end
34
35 $classes.sort_by!{|klass|
36         # sort by "type" first (widget/layout/element/etc.), then by name
37         klass[:name].split(/(?=Layout|Widget|Element|Dialog|Tool|Theme)/).reverse
38 }
39
40 $classes.each{|klass|
41         puts describe klass[:name]
42 }