jsduck 3.0.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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