jsduck 3.0.1 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/bin/stats DELETED
@@ -1,92 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # Print stats for JSON export
3
-
4
- # For running when gem not installed
5
- $:.unshift File.dirname(File.dirname(__FILE__)) + "/lib"
6
-
7
- require "rubygems"
8
- require "jsduck/json_duck"
9
-
10
- def read_all_classes(dir)
11
- classes = []
12
- Dir[dir+"/*.json"].each do |filename|
13
- print "."
14
- STDOUT.flush
15
- classes << JsDuck::JsonDuck.read(filename)
16
- end
17
- puts "OK"
18
- classes
19
- end
20
-
21
- def count_members(classes, group, type)
22
- classes.map do |c|
23
- c[group][type].find_all {|m| m["owner"] == c["name"] }
24
- end.flatten.length
25
- end
26
-
27
- # Strips HTML and counts words in text
28
- def wc(string)
29
- string.gsub(/<\/?[^>]*>/, "").scan(/\w+/).size
30
- end
31
-
32
- def property_wc(property)
33
- cnt = wc(property["doc"])
34
- (property["properties"] || []).each {|p| cnt += property_wc(p) }
35
- cnt
36
- end
37
-
38
- def class_wc(cls)
39
- cnt = wc(cls["doc"])
40
- ["members", "statics"].each do |group|
41
- cls[group].each_value do |members|
42
- members.find_all {|m| m["owner"] == cls["name"] }.each do |m|
43
- cnt += wc(m["doc"])
44
- (m["params"] || []).each {|p| cnt += property_wc(p) }
45
- (m["properties"] || []).each {|p| cnt += property_wc(p) }
46
- cnt += wc(m["return"]["doc"]) if m["return"]
47
- end
48
- end
49
- end
50
- cnt
51
- end
52
-
53
- classes = read_all_classes(ARGV[0])
54
-
55
- puts "%d classes in total" % classes.length
56
- puts "%d public classes" % classes.find_all {|c| !c["private"] }.length
57
- puts "%d private classes" % classes.find_all {|c| c["private"] }.length
58
- puts
59
-
60
- mem = count_members(classes, "members", "cfg")
61
- sta = count_members(classes, "statics", "cfg")
62
- puts "%d public cfgs" % (mem+sta)
63
- puts " %d instance" % mem
64
- puts " %d static" % sta
65
-
66
- mem = count_members(classes, "members", "property")
67
- sta = count_members(classes, "statics", "property")
68
- puts "%d public properties" % (mem+sta)
69
- puts " %d instance" % mem
70
- puts " %d static" % sta
71
-
72
- mem = count_members(classes, "members", "method")
73
- sta = count_members(classes, "statics", "method")
74
- puts "%d public methods" % (mem+sta)
75
- puts " %d instance" % mem
76
- puts " %d static" % sta
77
-
78
- mem = count_members(classes, "members", "event")
79
- sta = count_members(classes, "statics", "event")
80
- puts "%d public events" % (mem+sta)
81
- puts " %d instance" % mem
82
- puts " %d static" % sta
83
-
84
- puts
85
- puts "Word counts"
86
- puts "-----------"
87
- classes.map {|cls| [cls, class_wc(cls)] }.sort {|a,b| a[1] <=> b[1] }.each do |pair|
88
- puts "%d %s" % [pair[1], pair[0]["name"]]
89
- end
90
-
91
- puts
92
- puts "%d total words in documentation" % classes.map {|cls| class_wc(cls) }.inject(0) {|a,b| a+b }
@@ -1,54 +0,0 @@
1
- require 'jsduck/logger'
2
-
3
- module JsDuck
4
-
5
- class Aliases
6
- def initialize(relations)
7
- @relations = relations
8
- end
9
-
10
- def resolve_all
11
- @relations.each do |cls|
12
- cls.each_member do |member|
13
- if member[:alias]
14
- resolve(member)
15
- end
16
- end
17
- end
18
- end
19
-
20
- # Copy over doc/params/return from original member to alias.
21
- def resolve(al)
22
- orig = find_original(al)
23
- al[:doc] = al[:doc] + "\n\n" + orig[:doc]
24
- al[:params] = orig[:params] if orig[:params]
25
- al[:return] = orig[:return] if orig[:return]
26
- end
27
-
28
- # Given aliased member, finds the original member.
29
- # If the original also happens to be an alias, continue recursively.
30
- def find_original(al)
31
- context = al[:files][0]
32
- al_def = al[:alias]
33
-
34
- orig = @relations[al_def[:cls]]
35
- unless orig
36
- Logger.instance.warn("Class #{al_def[:cls]} not found", context[:filename], context[:linenr])
37
- return al
38
- end
39
- orig = orig.get_member(al_def[:member], al_def[:type] || al[:tagname])
40
- unless orig
41
- Logger.instance.warn("Member #{al_def[:cls]}##{al_def[:member]} not found", context[:filename], context[:linenr])
42
- return al
43
- end
44
-
45
- if orig[:alias]
46
- find_original(orig)
47
- else
48
- orig
49
- end
50
-
51
- end
52
- end
53
-
54
- end