docjs 0.1 → 0.1.2

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.
data/README.md CHANGED
@@ -1,19 +1,82 @@
1
- jsdoc
2
- =====
3
- After total dataloss i have to rewrite the Readme's and Test's, so please be patient.
4
- jsdoc is currently **not a bit** stable. Stay tuned.
5
-
6
- For some more information about the architecture see:
7
-
8
- - {Parser}
9
- - {CodeObject}
10
- - {Token}
11
- - {Dom}
12
- - {Renderer}
13
-
14
- The 'executable' is {JsDoc}
1
+ Doc.js
2
+ ======
3
+ Just a note: After total dataloss i have to rewrite the Readme's and Test's, so
4
+ please be patient.
5
+
6
+
7
+ Supported Ruby-Version
8
+ ======================
9
+ Currently **only > 1.9** is supported. I am working on 1.8.x, though this is not
10
+ my target platform.
11
+
12
+
13
+ Installation
14
+ ============
15
+ gem install docjs
16
+
15
17
 
16
18
  Required Gems
17
19
  =============
20
+ The following Gems are required to make docjs work and should automatically be
21
+ installed while installing docjs:
22
+
18
23
  - thor
19
24
  - rdiscount
25
+
26
+
27
+ Basic Usage
28
+ ===========
29
+
30
+ Configuration
31
+ -------------
32
+ Before you can use Doc.js you may create your own **Configuration-File**. This
33
+ can easily be done, using the built-in
34
+ configuration-generator:
35
+
36
+ docjs configure
37
+
38
+ You optionally can specify the filename of your configuration file. If no file
39
+ is specified the configs will be written to `build.yml`.
40
+
41
+ docjs configure my_config_file.yml
42
+
43
+ The configuration is an interactive one - simply answer the questions you will
44
+ be asked.
45
+
46
+
47
+ Start documenting your code
48
+ ---------------------------
49
+ To make jsdoc recognize your documentation you have to use some special tokens.
50
+ Let's write a documented function `hello_doc`:
51
+
52
+ /**
53
+ * @function hello_doc
54
+ *
55
+ * Innovative function to greet a Person.
56
+ *
57
+ * @param [String] name the person you want to greet
58
+ * @return void
59
+ */
60
+ function hello_doc(name) {
61
+ console.log("Hello " + name + "!");
62
+ }
63
+
64
+ The symbols `@function`, `@param` and `@return` are called **tokens** in Doc.js.
65
+ There are many more by default. To see which one you can use simply type:
66
+
67
+ docjs tokens
68
+
69
+
70
+ Run the documentation and enjoy!
71
+ --------------------------------
72
+ Now it's time to kickoff the documentation-process by typing:
73
+
74
+ docjs your_config.yml
75
+
76
+ You will find the docs in the output-directory you have specified in your
77
+ config-file.
78
+
79
+
80
+ License
81
+ =======
82
+ docjs is released under MIT-License. See LICENSE.md for more information.
data/bin/docjs CHANGED
@@ -26,11 +26,11 @@ Configs.set :root => Pathname.new(__FILE__).realpath + '../..'
26
26
  # @note options declared in a build.yml will override command-line ones
27
27
  # @todo command line option to copy all templates to specified directory like
28
28
  # jsdoc dump_templates ../templates/original
29
- class JsDoc < Thor
29
+ class DocJs < Thor
30
30
 
31
31
  include Thor::Actions
32
32
 
33
- desc "jsdoc CONFIG_FILE", "Starts documentation process"
33
+ desc "CONFIG_FILE", "Starts documentation process"
34
34
  set_options :files =>
35
35
  { :type => :array, :aliases => '-f', :default => [], :required => true },
36
36
 
@@ -47,12 +47,12 @@ class JsDoc < Thor
47
47
  { :type => :string, :aliases => '-n', :default => "MyAppName" },
48
48
 
49
49
  :logfile =>
50
- { :type => :string, :aliases => '-lf', :default => 'jsdoc.log' },
50
+ { :type => :string, :aliases => '-lf', :default => 'docjs.log' },
51
51
 
52
52
  :loglevel =>
53
53
  { :type => :string, :aliases => '-ll', :default => 'info' }
54
54
 
55
- def jsdoc(config_file = nil)
55
+ def docjs(config_file = nil)
56
56
  # @see Thor#merge_options
57
57
  configs = config_file ? merge_options(options, config_file) : options
58
58
 
@@ -63,7 +63,7 @@ class JsDoc < Thor
63
63
  require Configs.templates + '/application.rb'
64
64
 
65
65
  # Config Thor settings
66
- JsDoc.source_root(Configs.templates)
66
+ DocJs.source_root(Configs.templates)
67
67
  self.destination_root = Configs.output
68
68
 
69
69
  Processor.prepare_documents
@@ -119,20 +119,20 @@ class JsDoc < Thor
119
119
  })
120
120
 
121
121
  # Setup Thor paths
122
- JsDoc.source_root(Configs.root)
122
+ DocJs.source_root(Configs.root)
123
123
  self.destination_root = Configs.output
124
- Configs.set(:scaffolding_path, output_dir)
125
-
126
-
127
- answers = {}
124
+
128
125
  yes_no = "(y|n)"
129
126
 
130
- Logger.info "We need some information from you, to customize the scaffolding process to your needs."
131
-
132
- answers[:build] = yes? "Do you wan't to generate a build.yml? #{yes_no}"
133
- write_build_file if answers[:build]
134
-
135
- Configs.set :answers, answers
127
+ Logger.info "We need some information from you, to customize the scaffolding process to your needs."
128
+ if yes? "Do you wan't to generate a build.yml? #{yes_no}"
129
+ configure(Configs.wdir + '/build.yml', {
130
+ 'templates' => output_dir,
131
+ 'output' => 'docs',
132
+ 'logfile' => 'logfile.log',
133
+ 'loglevel' => 'info'
134
+ })
135
+ end
136
136
 
137
137
  # Work with the answers
138
138
  Logger.info "Copying the template files to #{Configs.templates}"
@@ -141,20 +141,16 @@ class JsDoc < Thor
141
141
  Logger.info "Copying the included *.rb files to #{Configs.includes}"
142
142
  end
143
143
 
144
-
145
- protected
146
-
147
- def write_build_file
148
-
144
+ desc "configure [NEW_CONFIGFILE]", "Helps you creating your build.yml to start off with doc.js"
145
+ def configure(output_file = "build.yml", preconfigured = {})
146
+
149
147
  build = {
150
148
  'files' => [],
151
- 'docs' => [],
152
- 'output' => 'docs',
153
- 'logfile' => 'logfile.log',
154
- 'loglevel' => 'info',
155
- 'templates' => Configs.scaffolding_path
149
+ 'docs' => []
156
150
  }
157
151
 
152
+ build.merge! preconfigured
153
+
158
154
  say "\nPlease enter the name of your App", :bold
159
155
  build['appname'] = ask ">"
160
156
 
@@ -176,15 +172,43 @@ class JsDoc < Thor
176
172
  build['docs'] << answer
177
173
  end
178
174
 
175
+ if not build['templates'] and yes? "Are you using your own templates?"
176
+ say "\nPlease enter the path to your templates", :bold
177
+ build['templates'] = ask ">"
178
+ end
179
+
180
+ if not build['loglevel']
181
+ say "\nPlease specify the loglevel of your output: (error|warn|info|debug)", :bold
182
+
183
+ while true do
184
+ answer = ask ">"
185
+ if %w(error warn info debug).include? answer
186
+ build['loglevel'] = answer
187
+ break
188
+ end
189
+ say "\nThe answer you've given is not one of (error|warn|info|debug). Please try again", :bold
190
+ end
191
+ end
192
+
193
+ if not build['logfile'] and yes? "Do you wan't to save your logs to a file?"
194
+ say "\nPlease enter the path to your logfile", :bold
195
+ build['logfile'] = ask ">"
196
+ end
197
+
179
198
  # answers[:scss_build] = yes? "Do you wan't to integrate SCSS into your build-process? #{yes_no}"
180
199
 
181
200
  # maybe ask some more information to generate build.yml
182
- create_file Configs.wdir + "/build.yml", build.to_yaml
201
+ create_file output_file, build.to_yaml
183
202
  end
184
203
 
204
+
185
205
  end
186
206
 
187
- unless ARGV.first and JsDoc.method_defined?(ARGV.first)
188
- ARGV.unshift 'jsdoc'
207
+ if ARGV.size == 0
208
+ ARGV.unshift 'help'
209
+
210
+ elsif not (ARGV.size > 0 and DocJs.method_defined?(ARGV.first))
211
+ ARGV.unshift 'docjs'
189
212
  end
190
- JsDoc.start(ARGV)
213
+
214
+ DocJs.start(ARGV)
@@ -4,11 +4,11 @@ Gem::Specification.new do |s|
4
4
 
5
5
 
6
6
  s.name = 'docjs'
7
- s.version = '0.1'
7
+ s.version = '0.1.2'
8
8
  s.date = '2011-06-07'
9
9
  s.summary = "Javascript Documentation Generator"
10
10
  s.description = "Create beautyful Javascript documentations with this ruby-gem. It's pretty easy to customize and add your own tokens/DSL."
11
- s.homepage = "https://github.com/b-studios/docjs"
11
+ s.homepage = "https://github.com/b-studios/doc.js"
12
12
  s.authors = ["Jonathan Brachthäuser"]
13
13
  s.email = "jonathan@b-studios.de"
14
14
  s.rubyforge_project = s.name
@@ -1,6 +1,6 @@
1
1
  require 'thor'
2
- require 'json'
3
2
  require 'yaml'
3
+ require 'json'
4
4
 
5
5
  require_relative 'thor'
6
6
  require_relative 'logger'
@@ -10,7 +10,7 @@ require_relative 'code_object/function'
10
10
  require_relative 'dom/dom'
11
11
  require_relative 'processor'
12
12
 
13
- def setup_application(options)
13
+ def setup_application(options = {})
14
14
 
15
15
  # initialize Logger
16
16
  Logger.setup :logfile => File.expand_path(options[:logfile], Dir.pwd),
@@ -16,7 +16,7 @@ module Logger
16
16
  def self.setup(args = {})
17
17
 
18
18
  @@shell = Thor::Base.shell.new
19
- @@logfile = args[:file]
19
+ @@logfile = args[:logfile]
20
20
  @@level = LEVEL[args[:level] || :info]
21
21
 
22
22
  # write start sequence
@@ -37,7 +37,7 @@ module Logger
37
37
 
38
38
  msg = msg.join "\n"
39
39
 
40
- unless @@logfile.nil?
40
+ unless @@logfile.nil? or @@logfile == ""
41
41
  File.open(@@logfile, "a") do |f|
42
42
  f.write "#{level.prefix} #{msg}\n"
43
43
  end
@@ -52,4 +52,4 @@ module Tasks
52
52
  end
53
53
  end
54
54
 
55
- Processor.register_render_task :json_data, Tasks::JsonDataTask
55
+ Processor.register_render_task :json_data, Tasks::JsonDataTask
@@ -1,5 +1,6 @@
1
1
  # ../data.img#1774507:1
2
2
  require_relative '../../lib/boot'
3
+ require_relative '../../templates/types/prototype'
3
4
 
4
5
  describe CodeObject::Prototype, ".new" do
5
6
 
@@ -1,3 +1,6 @@
1
+ # This is a fix, because JSON::Parser has to be registered before our Parser-Module
2
+ require 'json'
3
+
1
4
  def should_raise(exception_type, &block)
2
5
  begin
3
6
  block.call
@@ -20,4 +23,4 @@ class Object
20
23
  self.content.should == content
21
24
  end
22
25
 
23
- end
26
+ end
@@ -1,6 +1,7 @@
1
1
  require_relative '../../lib/parser/comment'
2
2
  require_relative '../../lib/code_object/function'
3
- require_relative '../../lib/token/tokens'
3
+
4
+ require_relative '../../templates/tokens/tokens'
4
5
 
5
6
  describe Token::Handler, ".register" do
6
7
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: docjs
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: "0.1"
5
+ version: 0.1.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - "Jonathan Brachth\xC3\xA4user"
@@ -153,7 +153,7 @@ files:
153
153
  - test/token/handler.rb
154
154
  - test/token/tokens.rb
155
155
  has_rdoc: true
156
- homepage: https://github.com/b-studios/docjs
156
+ homepage: https://github.com/b-studios/doc.js
157
157
  licenses: []
158
158
 
159
159
  post_install_message: