jsduck 3.1.0 → 3.2.1

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.
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>