spacedocs 0.0.2 → 0.0.3

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 +6 -2
  2. data/{source → lib}/class.html.haml +1 -4
  3. data/{source → lib}/index.html.haml +2 -2
  4. data/{dox → lib/node_modules/dox}/History.md +0 -0
  5. data/{dox → lib/node_modules/dox}/Makefile +0 -0
  6. data/{dox → lib/node_modules/dox}/Readme.md +0 -0
  7. data/{dox → lib/node_modules/dox}/bin/dox +0 -0
  8. data/{dox → lib/node_modules/dox}/index.js +0 -0
  9. data/{dox → lib/node_modules/dox}/lib/dox.js +1 -10
  10. data/{dox → lib/node_modules/dox}/lib/utils.js +0 -0
  11. data/lib/node_modules/dox/node_modules/commander/History.md +99 -0
  12. data/lib/node_modules/dox/node_modules/commander/Makefile +7 -0
  13. data/lib/node_modules/dox/node_modules/commander/Readme.md +263 -0
  14. data/lib/node_modules/dox/node_modules/commander/index.js +2 -0
  15. data/lib/node_modules/dox/node_modules/commander/lib/commander.js +992 -0
  16. data/lib/node_modules/dox/node_modules/commander/package.json +38 -0
  17. data/lib/node_modules/dox/node_modules/github-flavored-markdown/README.md +17 -0
  18. data/lib/node_modules/dox/node_modules/github-flavored-markdown/_config.yml +3 -0
  19. data/lib/node_modules/dox/node_modules/github-flavored-markdown/_layouts/default.html +77 -0
  20. data/lib/node_modules/dox/node_modules/github-flavored-markdown/code.rb +67 -0
  21. data/lib/node_modules/dox/node_modules/github-flavored-markdown/images/gfm.png +0 -0
  22. data/lib/node_modules/dox/node_modules/github-flavored-markdown/index.md +78 -0
  23. data/lib/node_modules/dox/node_modules/github-flavored-markdown/package.json +27 -0
  24. data/lib/node_modules/dox/node_modules/github-flavored-markdown/preview.md +27 -0
  25. data/lib/node_modules/dox/node_modules/github-flavored-markdown/sample_content.html +169 -0
  26. data/lib/node_modules/dox/node_modules/github-flavored-markdown/scripts/preview.js +18 -0
  27. data/lib/node_modules/dox/node_modules/github-flavored-markdown/scripts/showdown.js +1414 -0
  28. data/lib/node_modules/dox/node_modules/github-flavored-markdown/stylesheets/screen.css +20 -0
  29. data/lib/node_modules/dox/package.json +43 -0
  30. data/lib/spacedocs.rb +42 -53
  31. data/lib/{assets/stylesheets/spacedocs/docs.css.sass → spacedocs.sass} +0 -0
  32. data/lib/spacedocs/version.rb +1 -1
  33. metadata +116 -25
  34. data/dox/package.json +0 -16
  35. data/dox/test/dox.test.js +0 -287
  36. data/dox/test/fixtures/a.js +0 -12
  37. data/dox/test/fixtures/b.js +0 -26
  38. data/dox/test/fixtures/c.js +0 -266
  39. data/dox/test/fixtures/d.js +0 -15
  40. data/dox/test/fixtures/titles.js +0 -14
  41. data/lib/spacedocs/engine.rb +0 -6
@@ -0,0 +1,20 @@
1
+ .site {
2
+ width: 45em;
3
+ }
4
+
5
+ #content.site {
6
+ width: 44em;
7
+ }
8
+
9
+ #user_input, #html_result {
10
+ width: 580px;
11
+ height: 170px;
12
+ }
13
+
14
+ #result {
15
+ width: 560px;
16
+ min-height: 150px;
17
+ border: 1px solid #999;
18
+ margin-top: 15px;
19
+ padding: 10px;
20
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "dox",
3
+ "description": "Markdown / JSdoc documentation generator",
4
+ "version": "0.3.1",
5
+ "author": {
6
+ "name": "TJ Holowaychuk",
7
+ "email": "tj@vision-media.ca"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git://github.com/visionmedia/dox.git"
12
+ },
13
+ "keywords": [
14
+ "documentation",
15
+ "docs",
16
+ "markdown",
17
+ "jsdoc"
18
+ ],
19
+ "bin": {
20
+ "dox": "./bin/dox"
21
+ },
22
+ "dependencies": {
23
+ "github-flavored-markdown": ">= 0.0.1",
24
+ "commander": "0.5.2"
25
+ },
26
+ "devDependencies": {
27
+ "mocha": "*",
28
+ "should": "*"
29
+ },
30
+ "_id": "dox@0.3.1",
31
+ "optionalDependencies": {},
32
+ "engines": {
33
+ "node": "*"
34
+ },
35
+ "_engineSupported": true,
36
+ "_npmVersion": "1.1.3",
37
+ "_nodeVersion": "v0.6.11",
38
+ "_defaultsLoaded": true,
39
+ "dist": {
40
+ "shasum": "ac9eaa1a58907e81eedb9f7f3851179a9769bc6a"
41
+ },
42
+ "_from": "./dox/"
43
+ }
data/lib/spacedocs.rb CHANGED
@@ -1,22 +1,41 @@
1
1
  require 'tilt'
2
+
2
3
  require 'haml'
4
+ require 'sass'
5
+ require 'compass'
6
+
3
7
  require 'json'
8
+
4
9
  require 'fileutils'
5
10
 
6
11
  module Spacedocs
7
12
  class << self
8
- def doc(project_dir, file)
13
+ def generate_stylesheet(output_dir)
14
+ tilt_path = File.dirname(__FILE__)
15
+
16
+ stylesheets_dir = File.join(output_dir, 'stylesheets')
17
+
18
+ FileUtils.mkdir_p stylesheets_dir
19
+
20
+ stylesheet_template = Tilt.new(File.join(tilt_path, 'spacedocs.sass'), Compass.configuration.to_sass_engine_options)
21
+
22
+ File.open(File.join(stylesheets_dir, 'spacedocs.css'), 'w') do |f|
23
+ f.write(stylesheet_template.render self)
24
+ end
25
+ end
26
+
27
+ def doc(file_path, output_dir)
9
28
  tilt_path = File.dirname(__FILE__)
10
29
 
11
- #TODO Dangerous
12
- json = %x[dox < "#{File.join project_dir, file}"]
30
+ # can't use < unless it's a file
31
+ json = `#{File.join tilt_path, 'node_modules/dox/bin/dox'} < #{file_path}`
13
32
 
14
33
  doc_json = JSON.parse json
15
34
 
16
35
  processed_data = process_data doc_json
17
36
 
18
- template = Tilt.new(File.join tilt_path, "../source/class.html.haml")
19
- index_template = Tilt.new(File.join tilt_path, "../source/index.html.haml")
37
+ template = Tilt.new(File.join tilt_path, "class.html.haml")
38
+ index_template = Tilt.new(File.join tilt_path, "index.html.haml")
20
39
 
21
40
  files = {}
22
41
 
@@ -26,48 +45,26 @@ module Spacedocs
26
45
  files[namespace] = true
27
46
  end
28
47
 
29
- docs_dir = File.join(project_dir, 'docs')
30
-
31
- FileUtils.rm_rf docs_dir
32
- FileUtils.mkdir_p docs_dir
48
+ FileUtils.rm_rf output_dir
49
+ FileUtils.mkdir_p output_dir
33
50
 
34
- if __FILE__ == $0
35
- File.open("source/index.html", 'w') do |f|
36
- f.write(index_template.render self, { class_names: files.keys, dev: true })
37
- end
38
-
39
- files.each_key do |file_name|
40
- methods = class_data[file_name]['methods']
41
-
42
- File.open("source/#{file_name}.html", 'w') do |f|
43
- f.write(template.render self, {
44
- class_name: file_name,
45
- method_list: methods.keys,
46
- methods: methods,
47
- class_names: files.keys,
48
- class_summary: class_data[file_name]['summary'],
49
- dev: true
50
- })
51
- end
52
- end
53
- else
54
- File.open(File.join(project_dir, "docs/index.html"), 'w') do |f|
55
- f.write(index_template.render self, { class_names: files.keys })
56
- end
51
+ File.open(File.join(output_dir, "index.html"), 'w') do |f|
52
+ f.write(index_template.render self, {
53
+ class_names: files.keys,
54
+ })
55
+ end
57
56
 
58
- files.each_key do |file_name|
59
- methods = class_data[file_name]['methods']
60
-
61
- File.open(File.join(project_dir, "docs/#{file_name}.html"), 'w') do |f|
62
- f.write(template.render self, {
63
- class_name: file_name,
64
- method_list: methods.keys,
65
- methods: methods,
66
- class_names: files.keys,
67
- class_summary: class_data[file_name]['summary'],
68
- dev: false
69
- })
70
- end
57
+ files.each_key do |file_name|
58
+ methods = class_data[file_name]['methods']
59
+
60
+ File.open(File.join(output_dir, "#{file_name}.html"), 'w') do |f|
61
+ f.write(template.render self, {
62
+ class_name: file_name,
63
+ method_list: methods.keys,
64
+ methods: methods,
65
+ class_names: files.keys,
66
+ class_summary: class_data[file_name]['summary'],
67
+ })
71
68
  end
72
69
  end
73
70
  end
@@ -201,15 +198,7 @@ module Spacedocs
201
198
  }
202
199
  end
203
200
 
204
- # File.open("source/sanity.json", 'w') do |f|
205
- # f.write(JSON.pretty_generate(docs_data))
206
- # end
207
-
208
201
  return { docs_data: docs_data, class_names: class_names }
209
202
  end
210
203
  end
211
204
  end
212
-
213
- if __FILE__ == $0
214
- Spacedocs.doc 'projects/6', 'game.js'
215
- end
@@ -1,3 +1,3 @@
1
1
  module Spacedocs
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spacedocs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,9 +9,89 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-12 00:00:00.000000000 Z
13
- dependencies: []
14
- description: Generates beautiful API docs based on JSON output from the Node project
12
+ date: 2013-05-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: compass
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: haml
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: sass
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: tilt
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: Generate beautiful API docs based on JSON output from the Node project
15
95
  dox. Supports jsDocToolkit comment style
16
96
  email:
17
97
  - mdiebolt@gmail.com
@@ -19,26 +99,37 @@ executables: []
19
99
  extensions: []
20
100
  extra_rdoc_files: []
21
101
  files:
22
- - dox/bin/dox
23
- - dox/History.md
24
- - dox/index.js
25
- - dox/lib/dox.js
26
- - dox/lib/utils.js
27
- - dox/Makefile
28
- - dox/package.json
29
- - dox/Readme.md
30
- - dox/test/dox.test.js
31
- - dox/test/fixtures/a.js
32
- - dox/test/fixtures/b.js
33
- - dox/test/fixtures/c.js
34
- - dox/test/fixtures/d.js
35
- - dox/test/fixtures/titles.js
36
- - lib/assets/stylesheets/spacedocs/docs.css.sass
37
- - lib/spacedocs/engine.rb
102
+ - lib/class.html.haml
103
+ - lib/index.html.haml
104
+ - lib/node_modules/dox/bin/dox
105
+ - lib/node_modules/dox/History.md
106
+ - lib/node_modules/dox/index.js
107
+ - lib/node_modules/dox/lib/dox.js
108
+ - lib/node_modules/dox/lib/utils.js
109
+ - lib/node_modules/dox/Makefile
110
+ - lib/node_modules/dox/node_modules/commander/History.md
111
+ - lib/node_modules/dox/node_modules/commander/index.js
112
+ - lib/node_modules/dox/node_modules/commander/lib/commander.js
113
+ - lib/node_modules/dox/node_modules/commander/Makefile
114
+ - lib/node_modules/dox/node_modules/commander/package.json
115
+ - lib/node_modules/dox/node_modules/commander/Readme.md
116
+ - lib/node_modules/dox/node_modules/github-flavored-markdown/_config.yml
117
+ - lib/node_modules/dox/node_modules/github-flavored-markdown/_layouts/default.html
118
+ - lib/node_modules/dox/node_modules/github-flavored-markdown/code.rb
119
+ - lib/node_modules/dox/node_modules/github-flavored-markdown/images/gfm.png
120
+ - lib/node_modules/dox/node_modules/github-flavored-markdown/index.md
121
+ - lib/node_modules/dox/node_modules/github-flavored-markdown/package.json
122
+ - lib/node_modules/dox/node_modules/github-flavored-markdown/preview.md
123
+ - lib/node_modules/dox/node_modules/github-flavored-markdown/README.md
124
+ - lib/node_modules/dox/node_modules/github-flavored-markdown/sample_content.html
125
+ - lib/node_modules/dox/node_modules/github-flavored-markdown/scripts/preview.js
126
+ - lib/node_modules/dox/node_modules/github-flavored-markdown/scripts/showdown.js
127
+ - lib/node_modules/dox/node_modules/github-flavored-markdown/stylesheets/screen.css
128
+ - lib/node_modules/dox/package.json
129
+ - lib/node_modules/dox/Readme.md
38
130
  - lib/spacedocs/version.rb
39
131
  - lib/spacedocs.rb
40
- - source/class.html.haml
41
- - source/index.html.haml
132
+ - lib/spacedocs.sass
42
133
  - README.md
43
134
  homepage: http://mdiebolt.github.com/spacedocs
44
135
  licenses: []
@@ -54,7 +145,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
54
145
  version: '0'
55
146
  segments:
56
147
  - 0
57
- hash: -2195415310241243817
148
+ hash: -1585695545739810584
58
149
  required_rubygems_version: !ruby/object:Gem::Requirement
59
150
  none: false
60
151
  requirements:
@@ -63,10 +154,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
63
154
  version: '0'
64
155
  segments:
65
156
  - 0
66
- hash: -2195415310241243817
157
+ hash: -1585695545739810584
67
158
  requirements: []
68
159
  rubyforge_project:
69
- rubygems_version: 1.8.10
160
+ rubygems_version: 1.8.23
70
161
  signing_key:
71
162
  specification_version: 3
72
163
  summary: Documentation from space
data/dox/package.json DELETED
@@ -1,16 +0,0 @@
1
- { "name": "dox"
2
- , "description": "Markdown / JSdoc documentation generator"
3
- , "version": "0.3.1"
4
- , "author": "TJ Holowaychuk <tj@vision-media.ca>"
5
- , "repository": { "type": "git", "url": "git://github.com/visionmedia/dox.git" }
6
- , "keywords": ["documentation", "docs", "markdown", "jsdoc"]
7
- , "bin": { "dox": "./bin/dox" }
8
- , "dependencies": {
9
- "github-flavored-markdown": ">= 0.0.1"
10
- , "commander": "0.5.2"
11
- }
12
- , "devDependencies": {
13
- "mocha": "*"
14
- , "should": "*"
15
- }
16
- }
data/dox/test/dox.test.js DELETED
@@ -1,287 +0,0 @@
1
-
2
- /**
3
- * Module dependencies.
4
- */
5
-
6
- var dox = require('../')
7
- , should = require('should')
8
- , fs = require('fs');
9
-
10
- function fixture(name, fn) {
11
- fs.readFile(__dirname + '/fixtures/' + name, 'utf8', fn);
12
- }
13
-
14
- module.exports = {
15
- 'test .version': function(){
16
- dox.version.should.match(/^\d+\.\d+\.\d+$/);
17
- },
18
-
19
- 'test .parseComments() blocks': function(done){
20
- fixture('a.js', function(err, str){
21
- var comments = dox.parseComments(str)
22
- , file = comments.shift()
23
- , version = comments.shift();
24
- file.should.have.property('ignore', true);
25
- file.description.full.should.equal('<p>A<br />Copyright (c) 2010 Author Name <Author Email><br />MIT Licensed</p>');
26
- file.description.summary.should.equal('<p>A<br />Copyright (c) 2010 Author Name <Author Email><br />MIT Licensed</p>');
27
- file.description.body.should.equal('');
28
- file.tags.should.be.empty;
29
-
30
- version.should.have.property('ignore', false);
31
- version.description.full.should.equal('<p>Library version.</p>');
32
- version.description.summary.should.equal('<p>Library version.</p>');
33
- version.description.body.should.equal('');
34
- version.tags.should.be.empty;
35
- done();
36
- });
37
- },
38
-
39
- 'test .parseComments() tags': function(done){
40
- fixture('b.js', function(err, str){
41
- var comments = dox.parseComments(str);
42
-
43
- var version = comments.shift();
44
- version.description.summary.should.equal('<p>Library version.</p>');
45
- version.description.full.should.equal('<p>Library version.</p>');
46
- version.tags.should.have.length(2);
47
- version.tags[0].type.should.equal('type');
48
- version.tags[0].types.should.eql(['String']);
49
- version.tags[1].type.should.equal('api');
50
- version.tags[1].visibility.should.equal('public');
51
- version.ctx.type.should.equal('property');
52
- version.ctx.receiver.should.equal('exports');
53
- version.ctx.name.should.equal('version');
54
- version.ctx.value.should.equal("'0.0.1'");
55
-
56
- var parse = comments.shift();
57
- parse.description.summary.should.equal('<p>Parse the given <code>str</code>.</p>');
58
- parse.description.body.should.equal('<h2>Examples</h2>\n\n<pre><code>parse(str)\n// =&amp;gt; "wahoo"\n</code></pre>');
59
- parse.description.full.should.equal('<p>Parse the given <code>str</code>.</p>\n\n<h2>Examples</h2>\n\n<pre><code>parse(str)\n// =&amp;gt; "wahoo"\n</code></pre>');
60
- parse.tags[0].type.should.equal('param');
61
- parse.tags[0].name.should.equal('str');
62
- parse.tags[0].description.should.equal('to parse');
63
- parse.tags[0].types.should.eql(['String', 'Buffer']);
64
- parse.tags[1].type.should.equal('return');
65
- parse.tags[1].types.should.eql(['String']);
66
- parse.tags[2].visibility.should.equal('public');
67
- done();
68
- });
69
- },
70
-
71
- 'test .parseComments() complex': function(done){
72
- fixture('c.js', function(err, str){
73
- var comments = dox.parseComments(str);
74
-
75
- var file = comments.shift();
76
-
77
- file.tags.should.be.empty;
78
- // the following doesn't work as gh-md now obfuscates emails different on every pass
79
- //file.description.full.should.equal('<p>Dox<br />Copyright (c) 2010 TJ Holowaychuk <a href=\'mailto:tj@vision-media.ca\'>tj@vision-media.ca</a><br />MIT Licensed</p>');
80
- file.description.full.should.be.a('string');
81
- file.ignore.should.be.true;
82
-
83
- var mods = comments.shift();
84
- mods.tags.should.be.empty;
85
- mods.description.full.should.equal('<p>Module dependencies.</p>');
86
- mods.description.summary.should.equal('<p>Module dependencies.</p>');
87
- mods.description.body.should.equal('');
88
- mods.ignore.should.be.false;
89
- mods.code.should.equal('var markdown = require(\'github-flavored-markdown\').parse;');
90
- mods.ctx.type.should.equal('declaration');
91
- mods.ctx.name.should.equal('markdown');
92
- mods.ctx.value.should.equal('require(\'github-flavored-markdown\').parse');
93
-
94
- var version = comments.shift();
95
- version.tags.should.be.empty;
96
- version.description.full.should.equal('<p>Library version.</p>');
97
-
98
- var parseComments = comments.shift();
99
- parseComments.tags.should.have.length(4);
100
- parseComments.ctx.type.should.equal('method');
101
- parseComments.ctx.receiver.should.equal('exports');
102
- parseComments.ctx.name.should.equal('parseComments');
103
- parseComments.description.full.should.equal('<p>Parse comments in the given string of <code>js</code>.</p>');
104
- parseComments.description.summary.should.equal('<p>Parse comments in the given string of <code>js</code>.</p>');
105
- parseComments.description.body.should.equal('');
106
-
107
- var parseComment = comments.shift();
108
- parseComment.tags.should.have.length(4);
109
- parseComment.description.summary.should.equal('<p>Parse the given comment <code>str</code>.</p>');
110
- parseComment.description.full.should.equal('<p>Parse the given comment <code>str</code>.</p>\n\n<h2>The comment object returned contains the following</h2>\n\n<ul>\n<li><code>tags</code> array of tag objects</li>\n<li><code>description</code> the first line of the comment</li>\n<li><code>body</code> lines following the description</li>\n<li><code>content</code> both the description and the body</li>\n<li><code>isPrivate</code> true when "@api private" is used</li>\n</ul>');
111
- parseComment.description.body.should.equal('<h2>The comment object returned contains the following</h2>\n\n<ul>\n<li><code>tags</code> array of tag objects</li>\n<li><code>description</code> the first line of the comment</li>\n<li><code>body</code> lines following the description</li>\n<li><code>content</code> both the description and the body</li>\n<li><code>isPrivate</code> true when "@api private" is used</li>\n</ul>');
112
-
113
- var escape = comments.pop();
114
- escape.tags.should.have.length(3);
115
- escape.description.full.should.equal('<p>Escape the given <code>html</code>.</p>');
116
- escape.ctx.type.should.equal('function');
117
- escape.ctx.name.should.equal('escape');
118
- done();
119
- });
120
- },
121
-
122
- 'test .parseComments() tags': function (done){
123
- fixture('d.js', function(err, str){
124
- var comments = dox.parseComments(str);
125
- var first = comments.shift();
126
- first.tags.should.have.length(4);
127
- first.description.full.should.equal('<p>Parse tag type string "{Array|Object}" etc.</p>');
128
- first.description.summary.should.equal('<p>Parse tag type string "{Array|Object}" etc.</p>');
129
- first.description.body.should.equal('');
130
- first.ctx.type.should.equal('method');
131
- first.ctx.receiver.should.equal('exports');
132
- first.ctx.name.should.equal('parseTagTypes');
133
- first.code.should.equal('exports.parseTagTypes = function(str) {\n return str\n .replace(/[{}]/g, \'\')\n .split(/ *[|,\\/] */);\n};');
134
- done();
135
- });
136
- },
137
-
138
- 'test .parseComments() code': function(done){
139
- fixture('b.js', function(err, str){
140
- var comments = dox.parseComments(str)
141
- , version = comments.shift()
142
- , parse = comments.shift();
143
-
144
- version.code.should.equal("exports.version = '0.0.1';");
145
- parse.code.should.equal('exports.parse = function(str) {\n return "wahoo";\n}');
146
- done();
147
- });
148
- },
149
-
150
- 'test .parseComments() titles': function(done){
151
- fixture('titles.js', function(err, str){
152
- var comments = dox.parseComments(str);
153
- comments[0].description.body.should.include('<h2>Some examples</h2>');
154
- comments[0].description.body.should.not.include('<h2>for example</h2>');
155
- comments[0].description.body.should.include('<p>Some longer thing<br />for example:</p>');
156
- done();
157
- });
158
- },
159
-
160
- 'test .parseCodeContext() function statement': function(){
161
- var ctx = dox.parseCodeContext('function foo(){\n\n}');
162
- ctx.type.should.equal('function');
163
- ctx.name.should.equal('foo');
164
- },
165
-
166
- 'test .parseCodeContext() function expression': function(){
167
- var ctx = dox.parseCodeContext('var foo = function(){\n\n}');
168
- ctx.type.should.equal('function');
169
- ctx.name.should.equal('foo');
170
- },
171
-
172
- 'test .parseCodeContext() prototype method': function(){
173
- var ctx = dox.parseCodeContext('User.prototype.save = function(){}');
174
- ctx.type.should.equal('method');
175
- ctx.constructor.should.equal('User');
176
- ctx.name.should.equal('save');
177
- },
178
-
179
- 'test .parseCodeContext() prototype property': function(){
180
- var ctx = dox.parseCodeContext('Database.prototype.enabled = true;\nasdf');
181
- ctx.type.should.equal('property');
182
- ctx.constructor.should.equal('Database');
183
- ctx.name.should.equal('enabled');
184
- ctx.value.should.equal('true');
185
- },
186
-
187
- 'test .parseCodeContext() method': function(){
188
- var ctx = dox.parseCodeContext('user.save = function(){}');
189
- ctx.type.should.equal('method');
190
- ctx.receiver.should.equal('user');
191
- ctx.name.should.equal('save');
192
- },
193
-
194
- 'test .parseCodeContext() property': function(){
195
- var ctx = dox.parseCodeContext('user.name = "tj";\nasdf');
196
- ctx.type.should.equal('property');
197
- ctx.receiver.should.equal('user');
198
- ctx.name.should.equal('name');
199
- ctx.value.should.equal('"tj"');
200
- },
201
-
202
- 'test .parseCodeContext() declaration': function(){
203
- var ctx = dox.parseCodeContext('var name = "tj";\nasdf');
204
- ctx.type.should.equal('declaration');
205
- ctx.name.should.equal('name');
206
- ctx.value.should.equal('"tj"');
207
- },
208
-
209
- 'test .parseTag() @constructor': function(){
210
- var tag = dox.parseTag('@constructor');
211
- tag.type.should.equal('constructor');
212
- },
213
-
214
- 'test .parseTag() @see': function(){
215
- var tag = dox.parseTag('@see http://google.com');
216
- tag.type.should.equal('see');
217
- tag.title.should.equal('');
218
- tag.url.should.equal('http://google.com');
219
-
220
- var tag = dox.parseTag('@see Google http://google.com');
221
- tag.type.should.equal('see');
222
- tag.title.should.equal('Google');
223
- tag.url.should.equal('http://google.com');
224
-
225
- var tag = dox.parseTag('@see exports.parseComment');
226
- tag.type.should.equal('see');
227
- tag.local.should.equal('exports.parseComment');
228
- },
229
-
230
- 'test .parseTag() @api': function(){
231
- var tag = dox.parseTag('@api private');
232
- tag.type.should.equal('api');
233
- tag.visibility.should.equal('private');
234
- },
235
-
236
- 'test .parseTag() @type': function(){
237
- var tag = dox.parseTag('@type {String}');
238
- tag.type.should.equal('type');
239
- tag.types.should.eql(['String']);
240
- },
241
-
242
- 'test .parseTag() @param': function(){
243
- var tag = dox.parseTag('@param {String|Buffer}');
244
- tag.type.should.equal('param');
245
- tag.types.should.eql(['String', 'Buffer']);
246
- tag.name.should.equal('');
247
- tag.description.should.equal('');
248
- },
249
-
250
- 'test .parseTag() @return': function(){
251
- var tag = dox.parseTag('@return {String} a normal string');
252
- tag.type.should.equal('return');
253
- tag.types.should.eql(['String']);
254
- tag.description.should.equal('a normal string');
255
- },
256
-
257
- 'test .parseTag() @augments': function(){
258
- var tag = dox.parseTag('@augments otherClass');
259
- tag.type.should.equal('augments');
260
- tag.otherClass.should.equal('otherClass')
261
- },
262
-
263
- 'test .parseTag() @author': function(){
264
- var tag = dox.parseTag('@author Bob Bobson');
265
- tag.type.should.equal('author');
266
- tag.string.should.equal('Bob Bobson');
267
- },
268
-
269
- 'test .parseTag() @borrows': function(){
270
- var tag = dox.parseTag('@borrows foo as bar');
271
- tag.type.should.equal('borrows');
272
- tag.otherMemberName.should.equal('foo');
273
- tag.thisMemberName.should.equal('bar');
274
- },
275
-
276
- 'test .parseTag() @memberOf': function(){
277
- var tag = dox.parseTag('@memberOf Foo.bar')
278
- tag.type.should.equal('memberOf')
279
- tag.parent.should.equal('Foo.bar')
280
- },
281
-
282
- 'test .parseTag() default': function(){
283
- var tag = dox.parseTag('@hello universe is better than world');
284
- tag.type.should.equal('hello');
285
- tag.string.should.equal('universe is better than world');
286
- }
287
- };