jsduck 4.0.beta2 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,87 @@
1
+ module JsDuck
2
+
3
+ class Override
4
+ def initialize(classes_hash, classes_array)
5
+ @classes_hash = classes_hash
6
+ @classes_array = classes_array
7
+ end
8
+
9
+ # Applies all override classes to target classes
10
+ def process_all!
11
+ overrides = []
12
+
13
+ @classes_array.each do |cls|
14
+ if cls[:override]
15
+ process(cls)
16
+ overrides << cls
17
+ end
18
+ end
19
+
20
+ # Discard override classes
21
+ overrides.each do |cls|
22
+ @classes_hash.delete(cls[:name])
23
+ @classes_array.delete(cls)
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ # Applies override class to target class
30
+ def process(override)
31
+ target = @classes_hash[override[:override]]
32
+ unless target
33
+ ctx = override[:files][0]
34
+ return Logger.instance.warn(:extend, "Class #{override[:override]} not found", ctx[:filename], ctx[:linenr])
35
+ end
36
+
37
+ # Combine comments of classes
38
+ if override[:doc].length > 0
39
+ add_doc(target, "**From override #{override[:name]}:** " + override[:doc])
40
+ end
41
+ target[:files] += override[:files]
42
+
43
+ # Build lookup table of existing members
44
+ existing = {}
45
+ each_member(target) do |m|
46
+ existing[m[:id]] = m
47
+ end
48
+
49
+ # When the same member exists in overridden class, just append
50
+ # the docs. Otherwise add the member as a whole to the class.
51
+ each_member(override) do |m|
52
+ ex = existing[m[:id]]
53
+ if ex
54
+ if m[:doc].length > 0
55
+ add_doc(ex, "**From override #{override[:name]}:** " + m[:doc])
56
+ else
57
+ add_doc(ex, "**Overridden in #{override[:name]}.**")
58
+ end
59
+ ex[:files] += m[:files]
60
+ else
61
+ add_member(target, m)
62
+ add_doc(m, "**Defined in override #{override[:name]}.**")
63
+ m[:owner] = target[:name]
64
+ end
65
+ end
66
+ end
67
+
68
+ # helpers
69
+
70
+ def each_member(cls)
71
+ [:members, :statics].each do |category|
72
+ cls[category].each_pair do |key, members|
73
+ members.each {|m| yield m }
74
+ end
75
+ end
76
+ end
77
+
78
+ def add_member(cls, m)
79
+ cls[m[:static] ? :statics : :members][m[:tagname]] << m
80
+ end
81
+
82
+ def add_doc(m, doc)
83
+ m[:doc] = (m[:doc] + "\n\n" + doc).strip
84
+ end
85
+ end
86
+
87
+ end
@@ -0,0 +1,14 @@
1
+ require "jsduck/meta_tag"
2
+
3
+ module JsDuck::Tag
4
+ # Implementation of @chainable tag
5
+ class Chainable < JsDuck::MetaTag
6
+ def initialize
7
+ @name = "chainable"
8
+ @key = :chainable
9
+ @signature = {:long => "chainable", :short => "&gt;"} # show small right-arrow
10
+ @boolean = true
11
+ end
12
+ end
13
+ end
14
+
@@ -18,7 +18,7 @@ module JsDuck
18
18
  def initialize(filename)
19
19
  @groups = JsonDuck.read(filename)
20
20
  add_names_if_missing
21
- build_map_by_name("Two videos have the same name")
21
+ build_map_by_name("Two videos have the same name", filename)
22
22
  end
23
23
 
24
24
  # Each video should have a name, which is used in URL to reference the video.
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsduck
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.beta2
5
- prerelease: 4
4
+ version: 4.0.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Rene Saarsoo
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-08-01 00:00:00.000000000 Z
13
+ date: 2012-08-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rdiscount
@@ -61,7 +61,7 @@ dependencies:
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  - !ruby/object:Gem::Dependency
64
- name: execjs
64
+ name: therubyracer
65
65
  requirement: !ruby/object:Gem::Requirement
66
66
  none: false
67
67
  requirements:
@@ -133,13 +133,12 @@ extra_rdoc_files: []
133
133
  files:
134
134
  - .gitignore
135
135
  - COPYING
136
- - Gemfile
137
- - Gemfile.lock
138
136
  - README.md
139
137
  - Rakefile
140
138
  - bin/compare
141
139
  - bin/graph
142
140
  - bin/jsduck
141
+ - esprima/esprima.js
143
142
  - js-classes/Array.js
144
143
  - js-classes/Boolean.js
145
144
  - js-classes/Date.js
@@ -194,14 +193,15 @@ files:
194
193
  - lib/jsduck/lexer.rb
195
194
  - lib/jsduck/lint.rb
196
195
  - lib/jsduck/logger.rb
197
- - lib/jsduck/markdown.rb
198
196
  - lib/jsduck/merger.rb
199
197
  - lib/jsduck/meta_tag.rb
200
198
  - lib/jsduck/meta_tag_loader.rb
201
199
  - lib/jsduck/meta_tag_registry.rb
202
200
  - lib/jsduck/null_object.rb
201
+ - lib/jsduck/option_parser.rb
203
202
  - lib/jsduck/options.rb
204
203
  - lib/jsduck/os.rb
204
+ - lib/jsduck/override.rb
205
205
  - lib/jsduck/parallel_wrap.rb
206
206
  - lib/jsduck/relations.rb
207
207
  - lib/jsduck/renderer.rb
@@ -215,6 +215,7 @@ files:
215
215
  - lib/jsduck/tag/abstract.rb
216
216
  - lib/jsduck/tag/aside.rb
217
217
  - lib/jsduck/tag/author.rb
218
+ - lib/jsduck/tag/chainable.rb
218
219
  - lib/jsduck/tag/deprecated.rb
219
220
  - lib/jsduck/tag/docauthor.rb
220
221
  - lib/jsduck/tag/hide.rb
@@ -668,7 +669,6 @@ files:
668
669
  - template-min/extjs/ext-all.js
669
670
  - template-min/build-js.html
670
671
  - template-min/index.php
671
- - esprima/esprima.js
672
672
  homepage: https://github.com/senchalabs/jsduck
673
673
  licenses: []
674
674
  post_install_message:
@@ -684,9 +684,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
684
684
  required_rubygems_version: !ruby/object:Gem::Requirement
685
685
  none: false
686
686
  requirements:
687
- - - ! '>'
687
+ - - ! '>='
688
688
  - !ruby/object:Gem::Version
689
- version: 1.3.1
689
+ version: 1.3.5
690
690
  requirements: []
691
691
  rubyforge_project: jsduck
692
692
  rubygems_version: 1.8.24
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source :rubygems
2
-
3
- gemspec
4
-
@@ -1,45 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- jsduck (3.11.0)
5
- execjs
6
- json
7
- parallel
8
- rdiscount
9
-
10
- GEM
11
- remote: http://rubygems.org/
12
- specs:
13
- chunky_png (1.2.5)
14
- compass (0.12.2)
15
- chunky_png (~> 1.2)
16
- fssm (>= 0.2.7)
17
- sass (~> 3.1)
18
- diff-lcs (1.1.3)
19
- execjs (1.4.0)
20
- multi_json (~> 1.0)
21
- fssm (0.2.9)
22
- json (1.7.3)
23
- multi_json (1.3.6)
24
- parallel (0.5.17)
25
- rake (0.9.2.2)
26
- rdiscount (1.6.8)
27
- rspec (2.10.0)
28
- rspec-core (~> 2.10.0)
29
- rspec-expectations (~> 2.10.0)
30
- rspec-mocks (~> 2.10.0)
31
- rspec-core (2.10.1)
32
- rspec-expectations (2.10.0)
33
- diff-lcs (~> 1.1.3)
34
- rspec-mocks (2.10.1)
35
- sass (3.1.19)
36
-
37
- PLATFORMS
38
- ruby
39
- x86-mingw32
40
-
41
- DEPENDENCIES
42
- compass
43
- jsduck!
44
- rake
45
- rspec
@@ -1,46 +0,0 @@
1
-
2
- module JsDuck
3
-
4
- # Wrapper which chooses the available Markdown implementation and
5
- # provides a uniform interface to it.
6
- #
7
- # Possible engines in order of preference:
8
- #
9
- # - rdiscount
10
- # - kramdown
11
- #
12
- class Markdown
13
-
14
- if RUBY_PLATFORM == "java"
15
- require "kramdown"
16
- begin
17
- @@engine = :kramdown
18
- rescue LoadError
19
- throw "ERROR: Kramdown gem not available."
20
- end
21
- else
22
- begin
23
- require "rdiscount"
24
- @@engine = :rdiscount
25
- rescue LoadError
26
- begin
27
- require "kramdown"
28
- @@engine = :kramdown
29
- rescue LoadError
30
- throw "ERROR: Neither RDiscount nor Kramdown gem available."
31
- end
32
- end
33
- end
34
-
35
- # Converts Markdown text into HTML
36
- def self.to_html(input)
37
- if @@engine == :rdiscount
38
- RDiscount.new(input).to_html
39
- else
40
- Kramdown::Document.new(input).to_html
41
- end
42
- end
43
-
44
- end
45
-
46
- end