jsduck 3.1.0 → 3.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/README.md +14 -9
  2. data/Rakefile +31 -230
  3. data/jsduck.gemspec +2 -2
  4. data/lib/jsduck/accessors.rb +14 -6
  5. data/lib/jsduck/aggregator.rb +9 -4
  6. data/lib/jsduck/app.rb +1 -0
  7. data/lib/jsduck/app_data.rb +14 -7
  8. data/lib/jsduck/app_exporter.rb +3 -3
  9. data/lib/jsduck/class.rb +8 -5
  10. data/lib/jsduck/class_formatter.rb +1 -3
  11. data/lib/jsduck/css_parser.rb +1 -1
  12. data/lib/jsduck/doc_formatter.rb +140 -36
  13. data/lib/jsduck/doc_parser.rb +27 -44
  14. data/lib/jsduck/index_html.rb +0 -3
  15. data/lib/jsduck/inherit_doc.rb +20 -4
  16. data/lib/jsduck/js_parser.rb +1 -1
  17. data/lib/jsduck/lint.rb +15 -0
  18. data/lib/jsduck/logger.rb +9 -7
  19. data/lib/jsduck/merger.rb +18 -16
  20. data/lib/jsduck/meta_tag.rb +28 -5
  21. data/lib/jsduck/meta_tag_loader.rb +38 -21
  22. data/lib/jsduck/meta_tag_registry.rb +79 -0
  23. data/lib/jsduck/options.rb +69 -12
  24. data/lib/jsduck/renderer.rb +10 -38
  25. data/lib/jsduck/search_data.rb +53 -3
  26. data/lib/jsduck/tag/abstract.rb +14 -0
  27. data/lib/jsduck/{author_tag.rb → tag/author.rb} +2 -2
  28. data/lib/jsduck/tag/deprecated.rb +33 -0
  29. data/lib/jsduck/{doc_author_tag.rb → tag/docauthor.rb} +2 -2
  30. data/lib/jsduck/tag/markdown.rb +12 -0
  31. data/lib/jsduck/tag/preventable.rb +28 -0
  32. data/lib/jsduck/tag/protected.rb +14 -0
  33. data/lib/jsduck/tag/readonly.rb +14 -0
  34. data/lib/jsduck/tag/required.rb +21 -0
  35. data/lib/jsduck/tag/static.rb +14 -0
  36. data/lib/jsduck/tag/template.rb +23 -0
  37. data/opt/example.js +149 -0
  38. metadata +17 -9
  39. data/opt/extjs-welcome.html +0 -74
  40. data/opt/touch-iframe.html +0 -85
  41. data/opt/touch-welcome.html +0 -122
@@ -0,0 +1,14 @@
1
+ require "jsduck/meta_tag"
2
+
3
+ module JsDuck::Tag
4
+ # Implementation of @protected tag
5
+ class Protected < JsDuck::MetaTag
6
+ def initialize
7
+ @name = "protected"
8
+ @key = :protected
9
+ @signature = {:long => "protected", :short => "PRO"}
10
+ @boolean = true
11
+ end
12
+ end
13
+ end
14
+
@@ -0,0 +1,14 @@
1
+ require "jsduck/meta_tag"
2
+
3
+ module JsDuck::Tag
4
+ # Implementation of @readonly tag
5
+ class Readonly < JsDuck::MetaTag
6
+ def initialize
7
+ @name = "readonly"
8
+ @key = :readonly
9
+ @signature = {:long => "readonly", :short => "R O"}
10
+ @boolean = true
11
+ end
12
+ end
13
+ end
14
+
@@ -0,0 +1,21 @@
1
+ require "jsduck/meta_tag"
2
+
3
+ module JsDuck::Tag
4
+ # There is no @required tag.
5
+ # Instead the :required attribute is detected after @cfg:
6
+ #
7
+ # @cfg {Type} someName (required)
8
+ #
9
+ # This class is only used for displaying the required attribute, not
10
+ # for detecting it. The detection is done with custom logic in
11
+ # DocParser and Merger classes.
12
+ class Required < JsDuck::MetaTag
13
+ def initialize
14
+ @name = "--non-matching-requried-tag--"
15
+ @key = :required
16
+ @signature = {:long => "required", :short => "REQ"}
17
+ @boolean = true
18
+ end
19
+ end
20
+ end
21
+
@@ -0,0 +1,14 @@
1
+ require "jsduck/meta_tag"
2
+
3
+ module JsDuck::Tag
4
+ # Implementation of @static tag
5
+ class Static < JsDuck::MetaTag
6
+ def initialize
7
+ @name = "static"
8
+ @key = :static
9
+ @signature = {:long => "static", :short => "STA"}
10
+ @boolean = true
11
+ end
12
+ end
13
+ end
14
+
@@ -0,0 +1,23 @@
1
+ require "jsduck/meta_tag"
2
+
3
+ module JsDuck::Tag
4
+ # Implementation of @template tag
5
+ class Template < JsDuck::MetaTag
6
+ def initialize
7
+ @name = "template"
8
+ @key = :template
9
+ @signature = {:long => "template", :short => "TMP"}
10
+ @boolean = true
11
+ end
12
+
13
+ def to_html(contents)
14
+ <<-EOHTML
15
+ <div class='signature-box template'>
16
+ <p>This is a template method. A hook into the functionality of this class.
17
+ Feel free to override it in child classes.</p>
18
+ </div>
19
+ EOHTML
20
+ end
21
+ end
22
+ end
23
+
data/opt/example.js ADDED
@@ -0,0 +1,149 @@
1
+ /**
2
+ * An example class showcasing the features of JSDuck.
3
+ *
4
+ * **Markdown** is supported thoughout the [docs][1].
5
+ *
6
+ * Link to {@link Ext.form.field.Text external class} and
7
+ * {@link Ext.form.field.Text#reset its method}.
8
+ * Link to {@link #setSize method of this class}.
9
+ *
10
+ * {@img some/path.png Alt text}
11
+ *
12
+ * An embedded live example:
13
+ *
14
+ * @example
15
+ * Ext.create('Ext.master.Switch', {
16
+ * text: 'Click me, please!',
17
+ * handler: function() {
18
+ * alert('You clicked me!')
19
+ * }
20
+ * });
21
+ *
22
+ * **Note:** this is not a fully working example. When you run it
23
+ * through JSDuck you will get warnings about a lot of missing classes
24
+ * that this example class references, additionally it doesn't make
25
+ * sense for singleton class to have static methods.
26
+ *
27
+ * [1]: http://docs.sencha.com/ext-js/4.0/
28
+ */
29
+ Ext.define('Ext.master.Switch', {
30
+ // These are all detected automatically
31
+ // No need to use @extends, @alternateClassName, @mixin, @alias, @singleton
32
+ extend: 'Ext.button.Button',
33
+ alternateClassName: 'Ext.MasterSwitch',
34
+ mixins: {
35
+ observable: 'Ext.util.Observable',
36
+ floating: 'Ext.util.Floating'
37
+ },
38
+ alias: 'widget.masterswitch',
39
+ singleton: true,
40
+
41
+ /**
42
+ * @cfg {String} [text="Click Me!"]
43
+ * A config option with explicit type, name, and default value.
44
+ */
45
+
46
+ config: {
47
+ /**
48
+ * @cfg
49
+ * A config option with type, name, and default value
50
+ * auto-detected. Additionally docs for getIcon and setIcon
51
+ * accessor methods are generated.
52
+ * @accessor
53
+ */
54
+ icon: "some/file.png"
55
+ },
56
+
57
+ /**
58
+ * @cfg {String} name (required)
59
+ * A very importand config option that must be specified.
60
+ */
61
+
62
+ /**
63
+ * @property {Object} size
64
+ * A property with explicit type name and name.
65
+ * It's an object containing the following fields:
66
+ * @property {Number} size.width The width.
67
+ * @property {Number} size.height The height.
68
+ */
69
+
70
+ /**
71
+ * A property with auto-detected type and name.
72
+ */
73
+ disabled: false,
74
+
75
+ /**
76
+ * Constructor documentation.
77
+ * @param {Object} [cfg] An optional config object
78
+ */
79
+ constructor: function(cfg) {
80
+ Ext.apply(this, cfg || {});
81
+ this.addEvents(
82
+ /**
83
+ * @event
84
+ * Fired when button clicked.
85
+ * @param {Ext.master.Switch} this
86
+ * @param {Number} times The number of times clicked.
87
+ */
88
+ "click"
89
+ );
90
+ },
91
+
92
+ /**
93
+ * Sets the size.
94
+ * @param {Object} size An object describing width and height:
95
+ * @param {Number} [size.width=0] The width.
96
+ * @param {Number} [size.height=0] The height.
97
+ */
98
+ setSize: function(size) {
99
+ this.size = size;
100
+ },
101
+
102
+ /**
103
+ * Returns the size of component.
104
+ * @return {Object} Object with properties:
105
+ * @return {Number} return.width The width.
106
+ * @return {Number} return.height The height.
107
+ * @method
108
+ */
109
+ getSize: (function() {
110
+ return function() { return this.size; };
111
+ })(),
112
+
113
+ statics: {
114
+ /**
115
+ * Filters out subcomponents.
116
+ * @param {Function} fn Callback function.
117
+ * @param {Ext.Component} fn.cmp The component parameter.
118
+ * @param {Number} fn.index Component index parameter.
119
+ * @param {Boolean} fn.return The return value of callback
120
+ * must be true to include the component, false to exclude.
121
+ * @param {Object} scope Scope for the callback.
122
+ * @return {Ext.Component[]} Array of components.
123
+ * @static
124
+ */
125
+ filter: function(fn, scope) {
126
+ return this.items.filter(fn, scope);
127
+ }
128
+ },
129
+
130
+ inheritableStatics: {
131
+ /**
132
+ * Achieves something.
133
+ * @static
134
+ * @inheritable
135
+ */
136
+ doSomething: function() {
137
+ }
138
+ }
139
+ });
140
+
141
+ Ext.apply(Ext, {
142
+ /**
143
+ * A method belonging to Ext.
144
+ * @member Ext
145
+ * @method
146
+ * @inheritdoc Ext.master.Switch#setSize
147
+ */
148
+ setMasterSwitchSize: Ext.master.Switch.setSize
149
+ });
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsduck
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 13
5
5
  prerelease: false
6
6
  segments:
7
7
  - 3
8
+ - 2
8
9
  - 1
9
- - 0
10
- version: 3.1.0
10
+ version: 3.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Rene Saarsoo
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-11-16 00:00:00 +02:00
19
+ date: 2011-12-07 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -91,14 +91,12 @@ files:
91
91
  - lib/jsduck/app.rb
92
92
  - lib/jsduck/app_data.rb
93
93
  - lib/jsduck/app_exporter.rb
94
- - lib/jsduck/author_tag.rb
95
94
  - lib/jsduck/auto_categories.rb
96
95
  - lib/jsduck/categories.rb
97
96
  - lib/jsduck/class.rb
98
97
  - lib/jsduck/class_formatter.rb
99
98
  - lib/jsduck/class_writer.rb
100
99
  - lib/jsduck/css_parser.rb
101
- - lib/jsduck/doc_author_tag.rb
102
100
  - lib/jsduck/doc_formatter.rb
103
101
  - lib/jsduck/doc_parser.rb
104
102
  - lib/jsduck/examples.rb
@@ -119,6 +117,7 @@ files:
119
117
  - lib/jsduck/merger.rb
120
118
  - lib/jsduck/meta_tag.rb
121
119
  - lib/jsduck/meta_tag_loader.rb
120
+ - lib/jsduck/meta_tag_registry.rb
122
121
  - lib/jsduck/null_object.rb
123
122
  - lib/jsduck/options.rb
124
123
  - lib/jsduck/os.rb
@@ -129,13 +128,22 @@ files:
129
128
  - lib/jsduck/source_file.rb
130
129
  - lib/jsduck/source_writer.rb
131
130
  - lib/jsduck/stats.rb
131
+ - lib/jsduck/tag/abstract.rb
132
+ - lib/jsduck/tag/author.rb
133
+ - lib/jsduck/tag/deprecated.rb
134
+ - lib/jsduck/tag/docauthor.rb
135
+ - lib/jsduck/tag/markdown.rb
136
+ - lib/jsduck/tag/preventable.rb
137
+ - lib/jsduck/tag/protected.rb
138
+ - lib/jsduck/tag/readonly.rb
139
+ - lib/jsduck/tag/required.rb
140
+ - lib/jsduck/tag/static.rb
141
+ - lib/jsduck/tag/template.rb
132
142
  - lib/jsduck/template_dir.rb
133
143
  - lib/jsduck/type_parser.rb
134
144
  - lib/jsduck/videos.rb
135
145
  - lib/jsduck/welcome.rb
136
- - opt/extjs-welcome.html
137
- - opt/touch-iframe.html
138
- - opt/touch-welcome.html
146
+ - opt/example.js
139
147
  - template-min/README.md
140
148
  - template-min/template.html
141
149
  - template-min/eg-iframe.html
@@ -1,74 +0,0 @@
1
- <div id="extjs-welcome">
2
- <div class="content">
3
- <header>
4
- <h5 class="logo"><a href="http://www.sencha.com">Sencha</a></h5>
5
- </header>
6
- <section>
7
- <div class="auto_columns two">
8
- <div class="column">
9
- <h2>Welcome to <strong>Ext JS 4</strong>!</h2>
10
- <p class="intro">Ext JS 4 is a pure JavaScript application framework that works everywhere from IE6 to Chrome 11. It enables you to create the best cross-platform applications using nothing but a browser, and has a phenomenal API.</p>
11
- <p class="intro">This is the biggest upgrade we've ever made to Ext JS and we think you're going to love it.</p>
12
- <p class="button-group">
13
- <a href="#!/example" class="button-link">View the Examples</a>
14
- <a href="http://www.sencha.com/forum/forumdisplay.php?79-Ext-JS-Community-Forums-4.x" class="more-icon">Discuss Ext JS 4 on the forum</a>
15
- </p>
16
- </div>
17
- <div class="column">
18
- <img src="resources/images/hero-extjs4-alt.png" class="feature-img pngfix" />
19
- <div class="auto_columns two right">
20
- <div class="column">
21
- <h3>What&rsquo;s New</h3>
22
- <p>We have also been posting summaries of new features and changes to <a href="http://www.sencha.com/blog/">our blog</a>:</p>
23
- <ul class="type13">
24
- <li><a href="#!/guide/drawing_and_charting">Drawing &amp; Charting</a></li>
25
- <li><a href="http://www.sencha.com/blog/ext-js-4-anatomy-of-a-model/">Anatomy of a Model</a></li>
26
- <li><a href="#!/guide/data">Data Package</a></li>
27
- <li><a href="http://www.sencha.com/blog/countdown-to-ext-js-4-dynamic-loading-and-new-class-system/">Dynamic Loading and the New Class System</a></li>
28
- </ul>
29
- <p><a href="http://www.sencha.com/products/extjs4-preview/" class="more-icon">Learn more on sencha.com</a></p>
30
- <p><a href="#!/api" class="more-icon">API Docs</a></p>
31
- <p><a href="extjs/release-notes.html" class="more-icon">Release Notes</a></p>
32
- </div>
33
- <div class="column">
34
- <h3>Upgrading</h3>
35
- <p>First, check out our <a href="#!/guide/upgrade">overview guide</a> to see what has changed.</p>
36
-
37
- <p>Sencha also offers <a href="http://www.sencha.com/training/">training courses</a> and <a href="http://www.sencha.com/support/services/">professional services</a> for companies wishing to use Ext JS 4.</p>
38
- </div>
39
- </div>
40
-
41
- </div>
42
- </div>
43
- </section>
44
- </div>
45
- <div class="news">
46
- <div class="l">
47
- <h1>SDK Updates</h1>
48
- <div class="item"><span class="date">Oct 19</span> Ext 4.0.7 Released</div>
49
- <div class="item"><span class="date">Aug 30</span> Ext 4.0.6 Released (support subscribers only)</div>
50
- <div class="item"><span class="date">Jul 24</span> Ext 4.0.5 Released (support subscribers only)</div>
51
- <div class="item"><span class="date">Jun 29</span> Ext 4.0.4 Released (support subscribers only)</div>
52
- <div class="item"><span class="date">Jun 14</span> Ext 4.0.3 Released (support subscribers only)</div>
53
- <div class="item"><span class="date">Jun 9</span> Ext 4.0.2a Released</div>
54
- <div class="item"><span class="date">May 17</span> Ext 4.0.1 Released</div>
55
- <div class="item"><span class="date">Apr 26</span> Ext 4.0.0 Final Released</div>
56
- </div>
57
- <div class="r">
58
- <h1>Documentation updates</h1>
59
- <div class="item"><span class="date">Oct 10</span> Grid tutorials</div>
60
- <div class="item"><span class="date">Aug 22</span> JSDuck 3</div>
61
- <div class="item"><span class="date">Jul 14</span> Favorite classes</div>
62
- <div class="item"><span class="date">Jul 8</span> Search results pagination</div>
63
- <div class="item"><span class="date">Jun 29</span> Components Guide</div>
64
- <div class="item"><span class="date">Jun 26</span> Inline examples</div>
65
- <div class="item"><span class="date">Jun 21</span> Forms guide</div>
66
- <div class="item"><span class="date">Jun 16</span> Tree guide updates</div>
67
- <div class="item"><span class="date">Jun 15</span> Layouts guide</div>
68
- <div class="item"><span class="date">Jun 9</span> Grid guide updates</div>
69
- <div class="item"><span class="date">Jun 6</span> Data guide updates</div>
70
- <div class="item"><span class="date">Jun 2</span> MVC guide updates</div>
71
- <div class="item"><span class="date">May 31</span> Getting started guide updates</div>
72
- </div>
73
- </div>
74
- </div>
@@ -1,85 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
- <title>Sencha Examples</title>
6
-
7
- <script type="text/javascript" src="touch/sencha-touch-all.js"></script>
8
- <link rel="stylesheet" type="text/css" href="touch/resources/css/sencha-touch.css">
9
-
10
- <style id="iframe-css" type="text/css"></style>
11
- <style type="text/css" media="screen">
12
- html {
13
- overflow: hidden
14
- }
15
-
16
- .home {
17
- text-align: center;
18
- }
19
-
20
- .home img {
21
- width: 64%;
22
- }
23
-
24
- .home h1 {
25
- font-weight: bold;
26
- font-size: 1.2em;
27
- }
28
-
29
- .home p {
30
- color: #666;
31
- font-size: 0.8em;
32
- line-height: 1.5em;
33
- margin: 10px 20px 12px 20px;
34
- }
35
-
36
- .home h2 {
37
- color: #999;
38
- font-size: 0.7em;
39
- }
40
-
41
- .twitterView .x-dataview-item {
42
- padding: 10px;
43
- min-height: 50px;
44
- }
45
-
46
- .twitterView .x-dataview-item img {
47
- float: left;
48
- display: block;
49
- margin-top: 36px;
50
- }
51
-
52
- .twitterView .x-dataview-item h2 {
53
- font-weight: bold;
54
- color: #333;
55
- margin: 0px 0px 10px 60px;
56
- }
57
-
58
- .twitterView .x-dataview-item p {
59
- color: #666;
60
- margin-left: 60px;
61
- font-size: 0.8em;
62
- }
63
- </style>
64
-
65
- <script type="text/javascript">
66
- function loadInlineExample(code, options) {
67
- try {
68
- document.body.innerHTML = '';
69
- if (!options.raw) {
70
- code = "Ext.setup({onReady: function(){" + code + "}});";
71
- }
72
- if (options.tablet) {
73
- // Scale example down to 70% size. Default font-size is 114%
74
- Ext.get('iframe-css').update("body {font-size: 79.8% !important}");
75
- }
76
- eval(code);
77
- } catch (e) {
78
- document.body.innerHTML = e;
79
- }
80
- }
81
- </script>
82
- </head>
83
- <body>
84
- </body>
85
- </html>