docjs 0.1.4 → 0.1.5

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 +33 -63
  2. data/bin/docjs +30 -8
  3. data/bin/docjs.rb +30 -8
  4. data/docjs.gemspec +2 -2
  5. data/docs/ARCHITECTURE.md +0 -0
  6. data/{CONCEPT.md → docs/CONCEPT.md} +0 -0
  7. data/{DOCUMENTATION.md → docs/DOCUMENTATION.md} +2 -4
  8. data/docs/PATTERNS.md +101 -0
  9. data/docs/guides/CUSTOMIZE.md +158 -0
  10. data/docs/guides/TRY.md +63 -0
  11. data/docs/guides/USE.md +256 -0
  12. data/lib/boot.rb +2 -6
  13. data/lib/code_object/base.rb +5 -0
  14. data/lib/dom/node.rb +1 -1
  15. data/lib/{tasks/render_task.rb → generator/generator.rb} +15 -9
  16. data/lib/helper/helper.rb +2 -2
  17. data/lib/helper/linker.rb +7 -13
  18. data/lib/processor.rb +3 -12
  19. data/lib/renderer.rb +2 -0
  20. data/lib/token/container.rb +2 -1
  21. data/lib/token/handler.rb +187 -115
  22. data/lib/token/token.rb +35 -3
  23. data/templates/application.rb +7 -5
  24. data/templates/{tasks/api_index_task.rb → generators/api_index_generator.rb} +2 -2
  25. data/templates/{tasks/typed_task.rb → generators/api_pages_generator.rb} +2 -2
  26. data/templates/{tasks/docs_task.rb → generators/docs_generator.rb} +9 -2
  27. data/templates/{tasks/json_data_task.rb → generators/json_generator.rb} +2 -2
  28. data/templates/tokens/tokens.rb +2 -2
  29. data/{lib/code_object → templates/types}/function.rb +5 -3
  30. data/{lib/code_object → templates/types}/object.rb +0 -2
  31. data/templates/types/prototype.rb +2 -3
  32. data/templates/views/tokens/_default.html.erb +0 -2
  33. data/test/code_object/prototype.rb +1 -1
  34. data/test/dom/dom.absolute_nodes.rb +2 -3
  35. data/test/dom/dom.rb +3 -3
  36. data/test/dom/node.rb +9 -9
  37. data/test/integration/converter.rb +3 -3
  38. data/test/token/handler.rb +12 -9
  39. data/test/token/tokens.rb +1 -1
  40. metadata +16 -12
  41. data/RENDERING.md +0 -8
@@ -1,17 +1,49 @@
1
1
  module Token
2
+
3
+ # Serves as Base-Class for all registered tokens.
4
+ # Registering a token with
5
+ #
6
+ # Token:Handler.register :awesome, :template => :foo, :description => "Description"
7
+ #
8
+ # is pretty much equivalent to
9
+ #
10
+ # class Token::AwesomeToken < Token::Token; end
11
+ # Token::AwesomeToken.process_options({
12
+ # :token => :awesome,
13
+ # :template => :foo,
14
+ # :description => "Description"
15
+ # })
2
16
  class Token
3
17
 
4
18
  attr_reader :name, :content, :types, :children
5
19
 
6
- def initialize(args = {})
7
-
20
+ def initialize(args = {})
8
21
  @name = args[:name]
9
22
  @types = args[:types]
10
23
  @children = args[:children]
11
24
  @content = args[:content] || ""
12
25
  end
13
26
 
14
- # @note should only be performed once!!!
27
+ # Processes the options, which are added while registering the new token-handler
28
+ #
29
+ # Token:Handler.register :awesome, :template => :foo, :description => "Description"
30
+ #
31
+ # This will create a class Token::AwesomeToken, which extends {Token::Token}. After creating the class
32
+ # {.process_options} will be called with all provided options to apply those to the class.
33
+ #
34
+ # Because the options are valid for all instances of a tokenclass, the contents are stored in
35
+ # class-variables and class-methods are defined as accessors:
36
+ #
37
+ # - handler
38
+ # - token
39
+ # - template
40
+ # - html
41
+ # - area
42
+ # - description
43
+ #
44
+ # Further information about this options can be found at {Token::Handler.register}
45
+ #
46
+ # @note Because class-methods are defined in this method, it should only be performed once!!!
15
47
  def self.process_options(options = {})
16
48
 
17
49
  # pushing defaults
@@ -1,4 +1,6 @@
1
1
  # Load CodeObject::Types
2
+ require_relative 'types/object'
3
+ require_relative 'types/function'
2
4
  require_relative 'types/prototype'
3
5
 
4
6
  # Load Default Tokens
@@ -7,8 +9,8 @@ require_relative 'tokens/tokens'
7
9
  # Load Helpers
8
10
  require_relative 'helpers/template'
9
11
 
10
- # Load Rendertasks
11
- require_relative 'tasks/typed_task'
12
- require_relative 'tasks/docs_task'
13
- require_relative 'tasks/api_index_task'
14
- require_relative 'tasks/json_data_task'
12
+ # Load Generators
13
+ require_relative 'generators/api_pages_generator'
14
+ require_relative 'generators/docs_generator'
15
+ require_relative 'generators/api_index_generator'
16
+ require_relative 'generators/json_generator'
@@ -1,6 +1,6 @@
1
- module Tasks
1
+ module Generator
2
2
 
3
- class ApiIndexTask < RenderTask
3
+ class ApiIndexGenerator < Generator
4
4
 
5
5
  describe 'renders the api_index.html file containing all documented elements as alphabetic listing'
6
6
  layout 'application'
@@ -1,6 +1,6 @@
1
- module Tasks
1
+ module Generator
2
2
 
3
- class TypedTask < RenderTask
3
+ class ApiPagesGenerator < Generator
4
4
 
5
5
  # @todo those methods and therefore all class-variables @@configs are shared with all inheriting
6
6
  # classes. i.e. The last change will be applied to all
@@ -1,6 +1,6 @@
1
- module Tasks
1
+ module Generator
2
2
 
3
- class DocsTask < RenderTask
3
+ class DocsGenerator < Generator
4
4
 
5
5
  describe 'renders all specified Markdown files to static documentation'
6
6
  layout 'application'
@@ -15,6 +15,13 @@ module Tasks
15
15
 
16
16
  render_document doc
17
17
  end
18
+
19
+
20
+ readme = Dom.docs.find('README')
21
+ in_context readme do
22
+ @document = readme
23
+ render 'doc_page', :to_file => "index.html"
24
+ end unless readme.nil?
18
25
  end
19
26
 
20
27
  def render_document(document)
@@ -1,6 +1,6 @@
1
- module Tasks
1
+ module Generator
2
2
 
3
- class JsonDataTask < RenderTask
3
+ class JsonGenerator < Generator
4
4
 
5
5
  describe 'renders all documented objects to a json file. Objects and Functions are handled seperatly'
6
6
  layout nil
@@ -5,14 +5,14 @@ module Token::Handler
5
5
  register :private, :area => :sidebar
6
6
  register :version, :area => :sidebar
7
7
 
8
- register :see, :area => :footer
8
+ register :see, :area => :footnote
9
9
 
10
10
  register :deprecated, :area => :notification
11
11
  register :todo, :area => :notification
12
12
  register :note, :area => :notification
13
13
  register :warn, :area => :notification
14
14
 
15
- register :example, :template => 'examples', :handler => :named_multiline
15
+ register :example, :template => :examples, :handler => :named_multiline
16
16
 
17
17
  # Every @overload can contain **text-documentation**, **@param**- and **@return**-tokens
18
18
  #
@@ -1,5 +1,3 @@
1
- require_relative 'object'
2
-
3
1
  module CodeObject
4
2
 
5
3
  class Function < CodeObject::Object
@@ -16,6 +14,10 @@ module CodeObject
16
14
  children[:prototype]
17
15
  end
18
16
 
17
+ def display_name
18
+ @name + '()'
19
+ end
20
+
19
21
  end
20
22
 
21
23
  end
@@ -56,6 +58,6 @@ Token::Handler.register :throws, :handler => :typed
56
58
  class CodeObject::Method < CodeObject::Function; end
57
59
  Token::Handler.register :method, :handler => :noop, :area => :none
58
60
 
59
- # @constructor Foo.bar
61
+ # ConstructorAlias
60
62
  class CodeObject::Constructor < CodeObject::Function; end
61
63
  Token::Handler.register(:constructor) { |token, content| @constructor = true }
@@ -1,5 +1,3 @@
1
- require_relative 'base'
2
-
3
1
  module CodeObject
4
2
 
5
3
  class Object < CodeObject::Base
@@ -1,8 +1,7 @@
1
1
  class CodeObject::Prototype < CodeObject::Object
2
2
 
3
- def initialize(*args)
4
- super(*args)
5
- @path += '.prototype'
3
+ def initialize(path)
4
+ super(path.strip + '.prototype')
6
5
  end
7
6
 
8
7
  # get the constructor, for which this prototype is used
@@ -1,6 +1,4 @@
1
1
  <% unless tokens.nil?
2
-
3
-
4
2
  opts = tokens.first.html
5
3
  opts[:class] = (opts[:class] || "") + " subsection"
6
4
  %>
@@ -1,6 +1,6 @@
1
1
  # ../data.img#1774507:1
2
2
  require_relative '../../lib/boot'
3
- require_relative '../../templates/types/prototype'
3
+ require_relative '../../templates/application'
4
4
 
5
5
  describe CodeObject::Prototype, ".new" do
6
6
 
@@ -1,6 +1,5 @@
1
- require_relative '../../lib/dom/dom'
2
- require_relative '../../lib/code_object/function'
3
- require_relative '../../lib/processor'
1
+ require_relative '../../lib/boot'
2
+ require_relative '../../templates/application'
4
3
 
5
4
  describe Dom, ".add_child" do
6
5
 
@@ -1,13 +1,13 @@
1
1
  # ../data.img#1811393:1
2
2
  require_relative '../../lib/dom/dom'
3
- require_relative '../../lib/code_object/function'
3
+ require_relative '../../lib/code_object/base'
4
4
 
5
5
  describe Dom, ".add_child" do
6
6
 
7
7
  before do
8
8
  Dom.clear
9
- @o1 = CodeObject::Object.new
10
- @o2 = CodeObject::Object.new
9
+ @o1 = CodeObject::Base.new
10
+ @o2 = CodeObject::Base.new
11
11
  end
12
12
 
13
13
  it "should add absolute nodes" do
@@ -1,15 +1,15 @@
1
1
  # ../data.img#1772233:1
2
2
  require_relative '../../lib/dom/dom'
3
- require_relative '../../lib/code_object/function'
3
+ require_relative '../../lib/code_object/base'
4
4
 
5
5
  describe Dom::Node, "#resolve" do
6
6
 
7
7
  before do
8
8
  Dom.clear
9
- @o1 = CodeObject::Object.new
10
- @o2 = CodeObject::Object.new
11
- @o3 = CodeObject::Object.new
12
- @o4 = CodeObject::Object.new
9
+ @o1 = CodeObject::Base.new
10
+ @o2 = CodeObject::Base.new
11
+ @o3 = CodeObject::Base.new
12
+ @o4 = CodeObject::Base.new
13
13
 
14
14
  Dom.add_node "Foo.bar" , @o1
15
15
  @o1.add_node ".baz" , @o2
@@ -33,10 +33,10 @@ describe Dom::Node, "#qualified_name" do
33
33
 
34
34
  before do
35
35
  Dom.clear
36
- @o1 = CodeObject::Object.new "bar"
37
- @o2 = CodeObject::Object.new "baz"
38
- @o3 = CodeObject::Object.new "bam"
39
- @o4 = CodeObject::Object.new "poo"
36
+ @o1 = CodeObject::Base.new "bar"
37
+ @o2 = CodeObject::Base.new "baz"
38
+ @o3 = CodeObject::Base.new "bam"
39
+ @o4 = CodeObject::Base.new "poo"
40
40
 
41
41
  Dom.add_node "Foo.bar" , @o1
42
42
  @o1.add_node ".baz" , @o2
@@ -21,7 +21,7 @@ describe CodeObject::Converter, "#to_code_object" do
21
21
  subject { @objects[0] }
22
22
 
23
23
  it "should be a function named 'say_hello'" do
24
- subject.class.should == CodeObject::Function
24
+ subject.is_a?(CodeObject::Function).should == true
25
25
  subject.name.should == "say_hello"
26
26
  end
27
27
 
@@ -45,7 +45,7 @@ describe CodeObject::Converter, "#to_code_object" do
45
45
  subject { @objects[1] }
46
46
 
47
47
  it "should be an Object named 'FOO'" do
48
- subject.class.should == CodeObject::Object
48
+ subject.is_a?(CodeObject::Object).should == true
49
49
  subject.name.should == "FOO"
50
50
  end
51
51
  end
@@ -54,7 +54,7 @@ describe CodeObject::Converter, "#to_code_object" do
54
54
  subject { @objects[2] }
55
55
 
56
56
  it "should be an Function named 'some_function'" do
57
- subject.class.should == CodeObject::Function
57
+ subject.is_a?(CodeObject::Function).should == true
58
58
  subject.name.should == "some_function"
59
59
  end
60
60
 
@@ -1,6 +1,9 @@
1
1
  # ../data.img#1771563:1
2
2
  require_relative '../../lib/parser/comment'
3
- require_relative '../../lib/code_object/function'
3
+ require_relative '../../templates/types/function'
4
+
5
+ # Warning! This Tests have some sideeffects. All registered Tokens will create Classes, that are not
6
+ # removed on unregister
4
7
 
5
8
  describe Token::Handler, ".register" do
6
9
 
@@ -36,7 +39,7 @@ describe Token::Handler, ".register" do
36
39
  context "using a typed handler" do
37
40
 
38
41
  before do
39
- Token::Handler.register :test_handler, :typed
42
+ Token::Handler.register :test_handler, :handler => :typed
40
43
  token = Parser::Tokenline.new :test_handler, "[MyType] This is some content"
41
44
  @object.process_token(token)
42
45
  end
@@ -56,7 +59,7 @@ describe Token::Handler, ".register" do
56
59
  context "using a typed_with_name handler" do
57
60
 
58
61
  before do
59
- Token::Handler.register :test_handler, :typed_with_name
62
+ Token::Handler.register :test_handler, :handler => :typed_with_name
60
63
  token = Parser::Tokenline.new :test_handler, "[Foo, Bar, Baz] MyName This is some content"
61
64
  @object.process_token(token)
62
65
  end
@@ -76,7 +79,7 @@ describe Token::Handler, ".register" do
76
79
 
77
80
  context "processing a token without handler" do
78
81
 
79
- token = Parser::Tokenline.new :test_handler, "[Foo, Bar, Baz] MyName This is some content"
82
+ token = Parser::Tokenline.new :some_not_known_handler, "[Foo, Bar, Baz] MyName This is some content"
80
83
 
81
84
  it "should raise an error" do
82
85
  should_raise Token::NoTokenHandler do
@@ -111,24 +114,24 @@ describe Token::Handler, ".register" do
111
114
  context "using a user-defined block as token-handler" do
112
115
 
113
116
  before do
114
- Token::Handler.register(:test_handler) do |token, content|
117
+ Token::Handler.register(:test) do |tokenklass, content|
115
118
  define_singleton_method :test_token do
116
- token
119
+ tokenklass
117
120
  end
118
121
 
119
122
  define_singleton_method :test_content do
120
123
  content
121
124
  end
122
125
  end
123
- @object.process_token Parser::Tokenline.new :test_handler, "This is some content"
126
+ @object.process_token Parser::Tokenline.new :test, "This is some content"
124
127
  end
125
128
 
126
129
  it "should be added to the list of handlers" do
127
- Token::Handler.handlers.include?(:test_handler).should == true
130
+ Token::Handler.handlers.include?(:test).should == true
128
131
  end
129
132
 
130
133
  it "should be evaled in CodeObject context" do
131
- @object.test_token.should == :test_handler
134
+ @object.test_token.should == Token::Token::TestToken
132
135
  @object.test_content.should == "This is some content"
133
136
  end
134
137
 
@@ -1,5 +1,5 @@
1
1
  require_relative '../../lib/parser/comment'
2
- require_relative '../../lib/code_object/function'
2
+ require_relative '../../templates/types/function'
3
3
 
4
4
  require_relative '../../templates/tokens/tokens'
5
5
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: docjs
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.4
5
+ version: 0.1.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - "Jonathan Brachth\xC3\xA4user"
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-06-17 00:00:00 +02:00
13
+ date: 2011-06-25 00:00:00 +02:00
14
14
  default_executable: bin/docjs
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -44,26 +44,29 @@ extensions: []
44
44
  extra_rdoc_files: []
45
45
 
46
46
  files:
47
- - CONCEPT.md
48
- - DOCUMENTATION.md
49
47
  - LICENSE.md
50
48
  - README.md
51
- - RENDERING.md
52
49
  - bin/docjs
53
50
  - bin/docjs.rb
54
51
  - docjs.gemspec
52
+ - docs/ARCHITECTURE.md
53
+ - docs/CONCEPT.md
54
+ - docs/DOCUMENTATION.md
55
+ - docs/PATTERNS.md
56
+ - docs/guides/CUSTOMIZE.md
57
+ - docs/guides/TRY.md
58
+ - docs/guides/USE.md
55
59
  - lib/boot.rb
56
60
  - lib/code_object/base.rb
57
61
  - lib/code_object/converter.rb
58
62
  - lib/code_object/exceptions.rb
59
- - lib/code_object/function.rb
60
- - lib/code_object/object.rb
61
63
  - lib/configs.rb
62
64
  - lib/document/document.rb
63
65
  - lib/dom/dom.rb
64
66
  - lib/dom/exceptions.rb
65
67
  - lib/dom/no_doc.rb
66
68
  - lib/dom/node.rb
69
+ - lib/generator/generator.rb
67
70
  - lib/helper/helper.rb
68
71
  - lib/helper/linker.rb
69
72
  - lib/logger.rb
@@ -74,13 +77,16 @@ files:
74
77
  - lib/parser/parser.rb
75
78
  - lib/processor.rb
76
79
  - lib/renderer.rb
77
- - lib/tasks/render_task.rb
78
80
  - lib/thor.rb
79
81
  - lib/token/container.rb
80
82
  - lib/token/exceptions.rb
81
83
  - lib/token/handler.rb
82
84
  - lib/token/token.rb
83
85
  - templates/application.rb
86
+ - templates/generators/api_index_generator.rb
87
+ - templates/generators/api_pages_generator.rb
88
+ - templates/generators/docs_generator.rb
89
+ - templates/generators/json_generator.rb
84
90
  - templates/helpers/template.rb
85
91
  - templates/resources/css/.sass-cache/98c121fba905284c2c8ca6220fe3c590e5c9ec19/application.scssc
86
92
  - templates/resources/css/application.css
@@ -112,11 +118,9 @@ files:
112
118
  - templates/resources/scss/_resets.scss
113
119
  - templates/resources/scss/_tooltip.scss
114
120
  - templates/resources/scss/application.scss
115
- - templates/tasks/api_index_task.rb
116
- - templates/tasks/docs_task.rb
117
- - templates/tasks/json_data_task.rb
118
- - templates/tasks/typed_task.rb
119
121
  - templates/tokens/tokens.rb
122
+ - templates/types/function.rb
123
+ - templates/types/object.rb
120
124
  - templates/types/prototype.rb
121
125
  - templates/views/api_index.html.erb
122
126
  - templates/views/doc_page.html.erb