jsduck 4.0.beta2 → 4.0.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.
@@ -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