pdoc 0.2.0

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 (122) hide show
  1. data/README.markdown +34 -0
  2. data/Rakefile +46 -0
  3. data/bin/pdoc +58 -0
  4. data/lib/pdoc.rb +32 -0
  5. data/lib/pdoc/error.rb +4 -0
  6. data/lib/pdoc/generators.rb +6 -0
  7. data/lib/pdoc/generators/abstract_generator.rb +16 -0
  8. data/lib/pdoc/generators/html.rb +8 -0
  9. data/lib/pdoc/generators/html/helpers.rb +256 -0
  10. data/lib/pdoc/generators/html/page.rb +71 -0
  11. data/lib/pdoc/generators/html/syntax_highlighter.rb +41 -0
  12. data/lib/pdoc/generators/html/template.rb +37 -0
  13. data/lib/pdoc/generators/html/website.rb +194 -0
  14. data/lib/pdoc/generators/json.rb +15 -0
  15. data/lib/pdoc/generators/pythonesque.rb +105 -0
  16. data/lib/pdoc/models.rb +47 -0
  17. data/lib/pdoc/models/argument.rb +37 -0
  18. data/lib/pdoc/models/base.rb +107 -0
  19. data/lib/pdoc/models/callable.rb +19 -0
  20. data/lib/pdoc/models/class.rb +28 -0
  21. data/lib/pdoc/models/class_method.rb +18 -0
  22. data/lib/pdoc/models/class_property.rb +9 -0
  23. data/lib/pdoc/models/constant.rb +9 -0
  24. data/lib/pdoc/models/constructor.rb +14 -0
  25. data/lib/pdoc/models/container.rb +114 -0
  26. data/lib/pdoc/models/entity.rb +54 -0
  27. data/lib/pdoc/models/instance_method.rb +18 -0
  28. data/lib/pdoc/models/instance_property.rb +9 -0
  29. data/lib/pdoc/models/mixin.rb +10 -0
  30. data/lib/pdoc/models/namespace.rb +10 -0
  31. data/lib/pdoc/models/root.rb +27 -0
  32. data/lib/pdoc/models/section.rb +19 -0
  33. data/lib/pdoc/models/signature.rb +27 -0
  34. data/lib/pdoc/models/utility.rb +11 -0
  35. data/lib/pdoc/parser.rb +109 -0
  36. data/lib/pdoc/parser/argument_description_nodes.rb +21 -0
  37. data/lib/pdoc/parser/basic_nodes.rb +31 -0
  38. data/lib/pdoc/parser/description_nodes.rb +42 -0
  39. data/lib/pdoc/parser/documentation_nodes.rb +483 -0
  40. data/lib/pdoc/parser/ebnf_arguments_nodes.rb +58 -0
  41. data/lib/pdoc/parser/ebnf_expression_nodes.rb +227 -0
  42. data/lib/pdoc/parser/fragment.rb +55 -0
  43. data/lib/pdoc/parser/section_content_nodes.rb +19 -0
  44. data/lib/pdoc/parser/tags_nodes.rb +14 -0
  45. data/lib/pdoc/parser/treetop_files/argument_description.treetop +31 -0
  46. data/lib/pdoc/parser/treetop_files/basic.treetop +41 -0
  47. data/lib/pdoc/parser/treetop_files/description.treetop +7 -0
  48. data/lib/pdoc/parser/treetop_files/documentation.treetop +75 -0
  49. data/lib/pdoc/parser/treetop_files/ebnf_arguments.treetop +33 -0
  50. data/lib/pdoc/parser/treetop_files/ebnf_expression.treetop +70 -0
  51. data/lib/pdoc/parser/treetop_files/ebnf_javascript.treetop +54 -0
  52. data/lib/pdoc/parser/treetop_files/events.treetop +17 -0
  53. data/lib/pdoc/parser/treetop_files/section_content.treetop +8 -0
  54. data/lib/pdoc/parser/treetop_files/tags.treetop +31 -0
  55. data/lib/pdoc/runner.rb +110 -0
  56. data/lib/pdoc/treemaker.rb +94 -0
  57. data/pdoc.gemspec +31 -0
  58. data/templates/html/assets/images/pdoc/alias.png +0 -0
  59. data/templates/html/assets/images/pdoc/class.png +0 -0
  60. data/templates/html/assets/images/pdoc/class_deprecated.png +0 -0
  61. data/templates/html/assets/images/pdoc/class_method.png +0 -0
  62. data/templates/html/assets/images/pdoc/class_property.png +0 -0
  63. data/templates/html/assets/images/pdoc/constant.png +0 -0
  64. data/templates/html/assets/images/pdoc/constructor.png +0 -0
  65. data/templates/html/assets/images/pdoc/deprecated.png +0 -0
  66. data/templates/html/assets/images/pdoc/description.png +0 -0
  67. data/templates/html/assets/images/pdoc/information.png +0 -0
  68. data/templates/html/assets/images/pdoc/instance_method.png +0 -0
  69. data/templates/html/assets/images/pdoc/instance_property.png +0 -0
  70. data/templates/html/assets/images/pdoc/method.png +0 -0
  71. data/templates/html/assets/images/pdoc/method_deprecated.png +0 -0
  72. data/templates/html/assets/images/pdoc/mixin.png +0 -0
  73. data/templates/html/assets/images/pdoc/namespace.png +0 -0
  74. data/templates/html/assets/images/pdoc/property.png +0 -0
  75. data/templates/html/assets/images/pdoc/related_to.png +0 -0
  76. data/templates/html/assets/images/pdoc/search-background.png +0 -0
  77. data/templates/html/assets/images/pdoc/section-background.png +0 -0
  78. data/templates/html/assets/images/pdoc/section.png +0 -0
  79. data/templates/html/assets/images/pdoc/selected-section-background.png +0 -0
  80. data/templates/html/assets/images/pdoc/subclass.png +0 -0
  81. data/templates/html/assets/images/pdoc/superclass.png +0 -0
  82. data/templates/html/assets/images/pdoc/utility.png +0 -0
  83. data/templates/html/assets/javascripts/pdoc/application.js +478 -0
  84. data/templates/html/assets/javascripts/pdoc/prototype.js +4874 -0
  85. data/templates/html/assets/javascripts/pdoc/tabs.js +506 -0
  86. data/templates/html/assets/stylesheets/pdoc/api.css +677 -0
  87. data/templates/html/assets/stylesheets/pdoc/pygments.css +62 -0
  88. data/templates/html/helpers.rb +35 -0
  89. data/templates/html/index.erb +18 -0
  90. data/templates/html/item_index.js.erb +6 -0
  91. data/templates/html/layout.erb +67 -0
  92. data/templates/html/leaf.erb +22 -0
  93. data/templates/html/node.erb +30 -0
  94. data/templates/html/partials/class_relationships.erb +19 -0
  95. data/templates/html/partials/classes.erb +7 -0
  96. data/templates/html/partials/constructor.erb +5 -0
  97. data/templates/html/partials/description.erb +5 -0
  98. data/templates/html/partials/link_list.erb +1 -0
  99. data/templates/html/partials/method_signatures.erb +14 -0
  100. data/templates/html/partials/methodized_note.erb +9 -0
  101. data/templates/html/partials/mixins.erb +7 -0
  102. data/templates/html/partials/namespaces.erb +7 -0
  103. data/templates/html/partials/related_utilities.erb +5 -0
  104. data/templates/html/partials/relationships.erb +11 -0
  105. data/templates/html/partials/short_description_list.erb +7 -0
  106. data/templates/html/partials/title.erb +22 -0
  107. data/templates/html/section.erb +18 -0
  108. data/test/unit/parser/argument_description_test.rb +40 -0
  109. data/test/unit/parser/basic_test.rb +55 -0
  110. data/test/unit/parser/description_test.rb +34 -0
  111. data/test/unit/parser/documentation_test.rb +520 -0
  112. data/test/unit/parser/ebnf_arguments_test.rb +81 -0
  113. data/test/unit/parser/ebnf_expression_test.rb +382 -0
  114. data/test/unit/parser/ebnf_javascript_test.rb +37 -0
  115. data/test/unit/parser/events_test.rb +27 -0
  116. data/test/unit/parser/section_content_test.rb +44 -0
  117. data/test/unit/parser/tags_test.rb +39 -0
  118. data/test/unit/parser/test_fragment.rb +80 -0
  119. data/test/unit/parser_test_helper.rb +62 -0
  120. data/test/unit/runner/basic_test.rb +14 -0
  121. data/test/unit/templates/html_helpers_test.rb +25 -0
  122. metadata +222 -0
@@ -0,0 +1,55 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "parser_test_helper"))
2
+
3
+ class BasicTest < Test::Unit::TestCase
4
+ include PDocTestHelper
5
+ include Basic
6
+
7
+ def setup
8
+ @parser = BasicParser.new
9
+ end
10
+
11
+ def test_fixture_loader
12
+ assert_file_parsed "test.txt"
13
+ end
14
+
15
+ def test_space
16
+ assert_parsed " "
17
+ assert_equal Space, parse(" ").elements.first.class
18
+ end
19
+
20
+ def test_text_line
21
+ text_line = "\n * here's some text "
22
+ assert_parsed text_line
23
+ assert_equal TextLine, parse(text_line).elements.first.class
24
+ assert_equal "here's some text", parse(text_line).elements.first.to_s.strip
25
+ end
26
+
27
+ def test_line_break
28
+ assert_parsed "\n"
29
+ assert_equal LineBreak, parse("\n").elements.first.class
30
+ end
31
+
32
+ def test_blank_line
33
+ blank_line = "\n * \n"
34
+ assert_parsed blank_line
35
+ assert_equal BlankLine, parse(blank_line).elements.first.class
36
+ assert_equal "", parse(blank_line).elements.first.to_s
37
+
38
+ empty = "\n *\n"
39
+ assert_parsed empty
40
+ assert_equal BlankLine, parse(empty).elements.first.class
41
+ assert_equal "", parse(empty).elements.first.to_s
42
+ end
43
+
44
+ def test_comment_start
45
+ starts = "\n /** "
46
+ assert_parsed starts
47
+ assert_equal CommentStart, parse(starts).elements.first.class
48
+ end
49
+
50
+ def test_comment_end
51
+ ends = "\n **/ \n"
52
+ assert_parsed ends
53
+ assert_equal CommentEnd, parse(ends).elements.first.class
54
+ end
55
+ end
@@ -0,0 +1,34 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "parser_test_helper"))
2
+
3
+ class DescriptionTest < Test::Unit::TestCase
4
+ include PDocTestHelper
5
+ include Basic
6
+ include Description
7
+
8
+ def setup
9
+ @parser = DescriptionParser.new
10
+ end
11
+
12
+ def test_parsing
13
+ assert_parsed ""
14
+ assert_parsed "\n * hello"
15
+ assert_parsed "\n * \n * hello"
16
+ assert_file_parsed "text.txt"
17
+ end
18
+
19
+ def test_description
20
+ fixture = parse_file("text.txt")
21
+ assert_equal String, fixture.to_s.class
22
+ assert_equal "some text", fixture.to_a.first
23
+ assert_equal "aliqua.", fixture.to_a.last
24
+ end
25
+
26
+ def test_truncate
27
+ assert_equal "some text...", parse_file("text.txt").truncate(8)
28
+ assert_equal "some text", parse("\n * some text").truncate()
29
+ end
30
+
31
+ def test_inspect
32
+ assert_equal "#<Description::Text \"some text more t...\">", parse_file("text.txt").inspect
33
+ end
34
+ end
@@ -0,0 +1,520 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "parser_test_helper"))
2
+
3
+ class DocumentationTest < Test::Unit::TestCase
4
+ include PDocTestHelper
5
+ include Documentation
6
+ @@fixtures = nil
7
+
8
+ def setup
9
+ @parser = DocumentationParser.new
10
+ end
11
+
12
+ def fixtures
13
+ @@fixtures ||= parse_file("ajax.js") # rather hacky, I know.
14
+ end
15
+
16
+ def test_listing_methods
17
+ %w(klass_methods instance_methods constructors constants
18
+ descendants globals klass_properties instance_properties utilities
19
+ klasses).each do |method|
20
+ assert_respond_to fixtures, method
21
+ end
22
+ assert_equal 34, fixtures.size
23
+ end
24
+
25
+ def test_globals
26
+ assert_equal %w[$ $$ Ajax Element Enumerable String Toggle], fixtures.globals.map(&:name).sort
27
+ end
28
+
29
+ def test_descendants
30
+ assert_equal %w[$ $$ Ajax Base Element Enumerable Manager Request Responders String Toggle],
31
+ fixtures.descendants.map(&:name).sort
32
+ end
33
+
34
+ def test_mixins
35
+ assert_equal %w[Enumerable], fixtures.mixins.map(&:name)
36
+ end
37
+
38
+ def test_sections
39
+ assert_equal %w[DOM ajax lang], fixtures.sections.map(&:name)
40
+ assert_equal [Section, Section, Section], fixtures.sections.map(&:class)
41
+ assert_equal %w[Ajax], fixtures.sections[1].children.map(&:name)
42
+ assert_equal %w[Ajax Base Manager Request Responders], fixtures.sections[1].descendants.map(&:name)
43
+ end
44
+
45
+ def test_find_by_name
46
+ assert_equal "Ajax", fixtures.find_by_name("Ajax").name
47
+ assert_equal "Responders", fixtures.find_by_name("Ajax.Responders").name
48
+ assert_equal nil, fixtures.find_by_name("Foo.bar")
49
+ end
50
+
51
+ def test_root
52
+ assert_equal Doc, fixtures.find_by_name("Ajax").root.class
53
+ end
54
+
55
+ def test_namespace
56
+ fixture = fixtures.find_by_name("Ajax")
57
+ assert_equal Namespace, fixture.class
58
+ assert_equal [], fixture.mixins
59
+ assert_equal "Ajax", fixture.name
60
+ assert_equal "ajax", fixture.section.name
61
+ assert_equal "", fixture.namespace_string
62
+ assert_equal nil, fixture.namespace
63
+ assert !fixture.deprecated?
64
+ assert !fixture.alias?
65
+ assert_equal %w[__private__ getTransport], fixture.klass_methods.map(&:name)
66
+ assert_equal %w[activeRequestCount], fixture.klass_properties.map(&:name)
67
+ assert_equal [], fixture.instance_methods
68
+ assert_equal [], fixture.instance_properties
69
+ assert_equal [], fixture.related_utilities
70
+ assert_equal "ajax", fixture.doc_parent.name
71
+ assert_equal %w[ajax], fixture.ancestors.map(&:name)
72
+ assert_equal %w[Base Request Responders], fixture.children.map(&:name)
73
+ assert_equal %w[Base Request Responders], fixture.descendants.map(&:name)
74
+
75
+ fixture = fixtures.find_by_name("Ajax.Responders")
76
+ assert_equal Namespace, fixture.class
77
+ assert !fixture.mixin?
78
+ assert_equal ["Enumerable"], fixture.mixins.map(&:name)
79
+ assert_equal [Mixin], fixture.mixins.map(&:class)
80
+ assert_equal "Responders", fixture.name
81
+ assert_equal "ajax", fixture.section.name
82
+ assert_equal "Ajax", fixture.namespace_string
83
+ assert_equal "Ajax", fixture.namespace.full_name
84
+ assert !fixture.deprecated?
85
+ assert !fixture.alias?
86
+ assert_equal "Ajax", fixture.doc_parent.name
87
+ assert_equal %w[Ajax ajax], fixture.ancestors.map(&:name)
88
+ assert_equal [], fixture.children
89
+ assert_equal [], fixture.descendants
90
+ end
91
+
92
+ def test_mixin
93
+ fixture = fixtures.find_by_name("Enumerable")
94
+ assert_equal Mixin, fixture.class
95
+ assert fixture.mixin?
96
+ assert_equal "Enumerable", fixture.name
97
+ assert_equal "lang", fixture.section.name
98
+ assert_equal "", fixture.namespace_string
99
+ assert_equal nil, fixture.namespace
100
+ assert_equal [], fixture.klass_methods
101
+ assert_equal [], fixture.klass_properties
102
+ assert_equal ["each"], fixture.instance_methods.map(&:name)
103
+ assert_equal [], fixture.instance_properties
104
+ assert_equal [], fixture.related_utilities
105
+ assert_equal "lang", fixture.doc_parent.name
106
+ assert_equal %w[lang], fixture.ancestors.map(&:name)
107
+ assert_equal [], fixture.children
108
+ assert_equal [], fixture.descendants
109
+ end
110
+
111
+ def test_klass
112
+ fixture = fixtures.find_by_name("Ajax.Base")
113
+ assert_equal Klass, fixture.class
114
+ assert_equal "Base", fixture.name
115
+ assert_equal "Ajax", fixture.namespace_string
116
+ assert_equal "Ajax.Base", fixture.full_name
117
+ assert_equal [], fixture.mixins
118
+ assert_equal %w[Request], fixture.subklasses.map(&:name)
119
+ assert !fixture.mixin?
120
+ assert !fixture.subklass?
121
+ assert_equal nil, fixture.superklass
122
+ assert fixture.superklass?
123
+ assert_equal "ajax", fixture.section.name
124
+ assert_equal "Ajax", fixture.namespace.full_name
125
+ assert !fixture.deprecated?
126
+ assert !fixture.alias?
127
+ assert_equal [], fixture.klass_methods
128
+ assert_equal [], fixture.methodized_methods
129
+ assert_equal [], fixture.klass_properties
130
+ assert_equal [], fixture.instance_methods
131
+ assert_equal [], fixture.instance_properties
132
+ assert_equal [], fixture.related_utilities
133
+ assert_equal "Ajax", fixture.doc_parent.name
134
+ assert_equal %w[Ajax ajax], fixture.ancestors.map(&:name)
135
+ assert_equal [], fixture.children
136
+ assert_equal [], fixture.descendants
137
+
138
+ fixture = fixtures.find_by_name("Ajax.Request")
139
+ assert_equal Klass, fixture.class
140
+ assert_equal "Request", fixture.name
141
+ assert_equal "Ajax", fixture.namespace_string
142
+ assert_equal "Ajax.Request", fixture.full_name
143
+ assert_equal fixtures.find_by_name("new Ajax.Request"), fixture.constructor
144
+ assert_equal [], fixture.mixins
145
+ assert_equal [], fixture.subklasses
146
+ assert !fixture.mixin?
147
+ assert fixture.subklass?
148
+ assert !fixture.superklass?
149
+ assert_equal "Ajax.Base", fixture.superklass.full_name
150
+ assert_equal Klass, fixture.superklass.class
151
+ assert_equal "ajax", fixture.section.name
152
+ assert_equal "Ajax", fixture.namespace.full_name
153
+ assert !fixture.deprecated?
154
+ assert !fixture.alias?
155
+ assert_equal [], fixture.klass_methods
156
+ assert_equal [], fixture.methodized_methods
157
+ assert_equal %w[classProp], fixture.klass_properties.map(&:name)
158
+ assert_equal %w[request success], fixture.instance_methods.map(&:name)
159
+ assert_equal %w[dummy], fixture.instance_properties.map(&:name)
160
+ assert_equal %w[Events], fixture.constants.map(&:name)
161
+ assert_equal [], fixture.related_utilities
162
+ assert_equal "Ajax", fixture.doc_parent.name
163
+ assert_equal %w[Ajax ajax], fixture.ancestors.map(&:name)
164
+ assert_equal [], fixture.children
165
+ assert_equal [], fixture.descendants
166
+
167
+ fixture = fixtures.find_by_name("Element")
168
+ assert_equal Klass, fixture.class
169
+ assert_equal %w[setStyle], fixture.klass_methods.map(&:name)
170
+ assert_equal %w[setStyle], fixture.methodized_methods.map(&:name)
171
+ assert_equal [], fixture.klass_properties
172
+ assert_equal %w[bar foo], fixture.instance_methods.map(&:name)
173
+ assert_equal [], fixture.instance_properties
174
+ assert_equal %w[$], fixture.related_utilities.map(&:name)
175
+ assert_equal "DOM", fixture.doc_parent.name
176
+ assert_equal %w[DOM], fixture.ancestors.map(&:name)
177
+ assert_equal [], fixture.children
178
+ assert_equal [], fixture.descendants
179
+
180
+ fixture = fixtures.find_by_name("String")
181
+ assert_equal Klass, fixture.class
182
+ assert_equal %w[interpret], fixture.klass_methods.map(&:name)
183
+ end
184
+
185
+ def test_klass_method
186
+ fixture = fixtures.find_by_name("String.interpret")
187
+ assert_equal KlassMethod, fixture.class
188
+ assert_equal "interpret", fixture.name
189
+ assert_equal "String", fixture.namespace_string
190
+ assert_equal "String.interpret", fixture.full_name
191
+ assert_equal "String", fixture.klass_name
192
+ assert_equal Klass, fixture.klass.class
193
+ assert_equal "String", fixture.klass.full_name
194
+ assert_equal "lang", fixture.section.name
195
+ assert_equal Klass, fixture.namespace.class
196
+ assert_equal "String", fixture.namespace.full_name
197
+ assert !fixture.deprecated?
198
+ assert !fixture.alias?
199
+ assert_equal "String", fixture.doc_parent.name
200
+ assert_equal %w[String lang], fixture.ancestors.map(&:name)
201
+ assert_equal [], fixture.children
202
+ assert_equal [], fixture.descendants
203
+
204
+ fixture = fixtures.find_by_name("Ajax.getTransport")
205
+ assert_equal KlassMethod, fixture.class
206
+ assert_equal "getTransport", fixture.name
207
+ assert_equal "Ajax", fixture.namespace_string
208
+ assert_equal "Ajax.getTransport", fixture.full_name
209
+ assert_equal nil, fixture.klass_name
210
+ assert_equal "ajax", fixture.section.name
211
+ assert_equal Namespace, fixture.namespace.class
212
+ assert_equal "Ajax", fixture.namespace.full_name
213
+ assert !fixture.deprecated?
214
+ assert !fixture.alias?
215
+ assert_equal "Ajax", fixture.doc_parent.name
216
+ assert_equal %w[Ajax ajax], fixture.ancestors.map(&:name)
217
+ assert_equal [], fixture.children
218
+ assert_equal [], fixture.descendants
219
+ end
220
+
221
+ def test_klass_properties
222
+ fixture = fixtures.find_by_name("Ajax.Request.classProp")
223
+ assert_equal KlassProperty, fixture.class
224
+ assert_equal "classProp", fixture.name
225
+ assert_equal "Ajax.Request", fixture.namespace_string
226
+ assert_equal "Ajax.Request.classProp", fixture.full_name
227
+ assert_equal "Request", fixture.klass_name
228
+ assert_equal Klass, fixture.klass.class
229
+ assert_equal "Ajax.Request", fixture.klass.full_name
230
+ assert_equal "ajax", fixture.section.name
231
+ assert_equal Klass, fixture.namespace.class
232
+ assert_equal "Ajax.Request", fixture.namespace.full_name
233
+ assert !fixture.deprecated?
234
+ assert !fixture.alias?
235
+ assert_equal "Request", fixture.doc_parent.name
236
+ assert_equal %w[Request Ajax ajax], fixture.ancestors.map(&:name)
237
+ assert_equal [], fixture.children
238
+ assert_equal [], fixture.descendants
239
+ end
240
+
241
+ def test_utilities
242
+ fixture = fixtures.find_by_name("$")
243
+ assert_equal Utility, fixture.class
244
+ assert_equal "$", fixture.name
245
+ assert_equal "", fixture.namespace_string
246
+ assert_equal "$", fixture.full_name
247
+ assert_equal nil, fixture.klass_name
248
+ assert_equal "DOM", fixture.section.name
249
+ assert_equal fixtures.find_by_name("Element"), fixture.related_to
250
+ assert_equal nil, fixture.namespace
251
+ assert !fixture.deprecated?
252
+ assert !fixture.alias?
253
+ assert_equal "DOM", fixture.doc_parent.name
254
+ assert_equal %w[DOM], fixture.ancestors.map(&:name)
255
+ assert_equal [], fixture.children
256
+ assert_equal [], fixture.descendants
257
+
258
+ fixture = fixtures.find_by_name("$$")
259
+ assert_equal Utility, fixture.class
260
+ assert_equal "DOM", fixture.section.name
261
+ assert_equal nil, fixture.related_to
262
+ end
263
+
264
+ def test_constants
265
+ fixture = fixtures.find_by_name("Ajax.Request.Events")
266
+ assert_equal Constant, fixture.class
267
+ assert_equal Klass, fixture.namespace.class
268
+ assert_equal "Events", fixture.name
269
+ assert_equal "Ajax.Request", fixture.namespace_string
270
+ assert_equal "Ajax.Request.Events", fixture.full_name
271
+ assert_equal "Request", fixture.klass_name
272
+ assert_equal Klass, fixture.klass.class
273
+ assert_equal "Ajax.Request", fixture.klass.full_name
274
+ assert_equal "ajax", fixture.section.name
275
+ assert_equal Klass, fixture.namespace.class
276
+ assert_equal "Ajax.Request", fixture.namespace.full_name
277
+ assert !fixture.deprecated?
278
+ assert !fixture.alias?
279
+ assert_equal "Request", fixture.doc_parent.name
280
+ assert_equal %w[Request Ajax ajax], fixture.ancestors.map(&:name)
281
+ assert_equal [], fixture.children
282
+ assert_equal [], fixture.descendants
283
+
284
+ fixture = fixtures.find_by_name("Ajax.Request.classProp")
285
+ assert_equal KlassProperty, fixture.class
286
+ assert_equal "classProp", fixture.name
287
+ assert_equal "Ajax.Request", fixture.namespace_string
288
+ assert_equal "Ajax.Request.classProp", fixture.full_name
289
+ assert_equal "Request", fixture.klass_name
290
+ assert_equal Klass, fixture.klass.class
291
+ assert_equal "Ajax.Request", fixture.klass.full_name
292
+ assert_equal "ajax", fixture.section.name
293
+ assert_equal Klass, fixture.namespace.class
294
+ assert_equal "Ajax.Request", fixture.namespace.full_name
295
+ assert !fixture.deprecated?
296
+ assert !fixture.alias?
297
+ assert_equal "Request", fixture.doc_parent.name
298
+ assert_equal %w[Request Ajax ajax], fixture.ancestors.map(&:name)
299
+ assert_equal [], fixture.children
300
+ assert_equal [], fixture.descendants
301
+ end
302
+
303
+ def test_instance_properties
304
+ fixture = fixtures.find_by_name("Ajax.Request#dummy")
305
+ assert_equal InstanceProperty, fixture.class
306
+ assert_equal "dummy", fixture.name
307
+ assert_equal "Ajax.Request", fixture.namespace_string
308
+ assert_equal "Ajax.Request#dummy", fixture.full_name
309
+ assert_equal "Request", fixture.klass_name
310
+ assert_equal Klass, fixture.klass.class
311
+ assert_equal "Ajax.Request", fixture.klass.full_name
312
+ assert_equal "ajax", fixture.section.name
313
+ assert_equal Klass, fixture.namespace.class
314
+ assert_equal "Ajax.Request", fixture.namespace.full_name
315
+ assert !fixture.deprecated?
316
+ assert !fixture.alias?
317
+ assert_equal "Request", fixture.doc_parent.name
318
+ assert_equal %w[Request Ajax ajax], fixture.ancestors.map(&:name)
319
+ assert_equal [], fixture.children
320
+ assert_equal [], fixture.descendants
321
+ end
322
+
323
+ def test_instance_method
324
+ fixture = fixtures.find_by_name("Ajax.Request#request")
325
+ assert_equal InstanceMethod, fixture.class
326
+ assert_equal "request", fixture.name
327
+ assert_equal "Ajax.Request", fixture.namespace_string
328
+ assert_equal "Ajax.Request#request", fixture.full_name
329
+ assert_equal "Request", fixture.klass_name
330
+ assert_equal Klass, fixture.klass.class
331
+ assert_equal "Ajax.Request", fixture.klass.full_name
332
+ assert_equal "ajax", fixture.section.name
333
+ assert_equal Klass, fixture.namespace.class
334
+ assert_equal "Ajax.Request", fixture.namespace.full_name
335
+ assert !fixture.deprecated?
336
+ assert !fixture.alias?
337
+ assert !fixture.methodized?
338
+ assert_equal "Request", fixture.doc_parent.name
339
+ assert_equal %w[Request Ajax ajax], fixture.ancestors.map(&:name)
340
+ assert_equal [], fixture.children
341
+ assert_equal [], fixture.descendants
342
+
343
+ fixture = fixtures.find_by_name("Element.setStyle")
344
+ assert_equal KlassMethod, fixture.class
345
+ assert_equal "setStyle", fixture.name
346
+ assert_equal "Element", fixture.namespace_string
347
+ assert_equal "Element.setStyle", fixture.full_name
348
+ assert_equal "Element", fixture.klass_name
349
+ assert_equal Klass, fixture.klass.class
350
+ assert_equal "Element", fixture.klass.full_name
351
+ assert_equal "DOM", fixture.section.name
352
+ assert_equal Klass, fixture.namespace.class
353
+ assert_equal "Element", fixture.namespace.full_name
354
+ assert !fixture.deprecated?
355
+ assert !fixture.alias?
356
+ assert fixture.methodized?
357
+ assert_equal "Element", fixture.doc_parent.name
358
+ assert_equal %w[Element DOM], fixture.ancestors.map(&:name)
359
+ assert_equal [], fixture.children
360
+ assert_equal [], fixture.descendants
361
+ end
362
+
363
+ def test_constructor
364
+ fixture = fixtures.find_by_name("new Ajax.Request")
365
+ assert_equal Constructor, fixture.class
366
+ assert_equal "new", fixture.name
367
+ assert_equal "Ajax.Request", fixture.namespace_string
368
+ assert_equal "new Ajax.Request", fixture.full_name
369
+ assert_equal "Request", fixture.klass_name
370
+ assert_equal Klass, fixture.klass.class
371
+ assert_equal "Ajax.Request", fixture.klass.full_name
372
+ assert_equal "ajax", fixture.section.name
373
+ assert_equal Klass, fixture.namespace.class
374
+ assert_equal "Ajax.Request", fixture.namespace.full_name
375
+ assert !fixture.deprecated?
376
+ assert !fixture.alias?
377
+ assert !fixture.methodized?
378
+ assert_equal "Request", fixture.doc_parent.name
379
+ assert_equal %w[Request Ajax ajax], fixture.ancestors.map(&:name)
380
+ assert_equal [], fixture.children
381
+ assert_equal [], fixture.descendants
382
+ end
383
+
384
+ def test_deprecated
385
+ fixture = fixtures.find_by_name("Toggle")
386
+
387
+ assert_equal Namespace, fixture.class
388
+ assert_equal [], fixture.mixins
389
+ assert_equal "Toggle", fixture.name
390
+ assert_equal nil, fixture.klass
391
+ assert_equal "DOM", fixture.section.name
392
+ assert_equal "", fixture.namespace_string
393
+ assert_equal nil, fixture.namespace
394
+ assert fixture.deprecated?
395
+ assert !fixture.alias?
396
+ assert_equal %w[display foo], fixture.klass_methods.map(&:name)
397
+ assert_equal [], fixture.klass_properties
398
+ assert_equal [], fixture.instance_methods
399
+ assert_equal [], fixture.instance_properties
400
+ assert_equal [], fixture.related_utilities
401
+ assert_equal "DOM", fixture.doc_parent.name
402
+ assert_equal %w[DOM], fixture.ancestors.map(&:name)
403
+ assert_equal %w[], fixture.children.map(&:name)
404
+ assert_equal %w[], fixture.descendants.map(&:name)
405
+
406
+ fixture = fixtures.find_by_name("Toggle.display")
407
+ assert_equal KlassMethod, fixture.class
408
+ assert_equal "display", fixture.name
409
+ assert_equal "Toggle", fixture.namespace_string
410
+ assert_equal "Toggle.display", fixture.full_name
411
+ assert_equal nil, fixture.klass_name
412
+ assert_equal "DOM", fixture.section.name
413
+ assert_equal Namespace, fixture.namespace.class
414
+ assert_equal "Toggle", fixture.namespace.full_name
415
+ assert fixture.deprecated?
416
+ assert !fixture.alias?
417
+ assert_equal "Toggle", fixture.doc_parent.name
418
+ assert_equal %w[Toggle DOM], fixture.ancestors.map(&:name)
419
+ assert_equal [], fixture.children
420
+ assert_equal [], fixture.descendants
421
+
422
+ fixture = fixtures.find_by_name("Toggle.foo")
423
+ assert_equal KlassMethod, fixture.class
424
+ assert_equal "foo", fixture.name
425
+ assert_equal "Toggle", fixture.namespace_string
426
+ assert_equal "Toggle.foo", fixture.full_name
427
+ assert_equal nil, fixture.klass_name
428
+ assert_equal "DOM", fixture.section.name
429
+ assert_equal Namespace, fixture.namespace.class
430
+ assert_equal "Toggle", fixture.namespace.full_name
431
+ assert fixture.deprecated?
432
+ assert !fixture.alias?
433
+ assert_equal "Toggle", fixture.doc_parent.name
434
+ assert_equal %w[Toggle DOM], fixture.ancestors.map(&:name)
435
+ assert_equal [], fixture.children
436
+ assert_equal [], fixture.descendants
437
+ end
438
+
439
+ def test_description
440
+ assert_equal "The Element class", fixtures.find_by_name("Element").description
441
+ assert_equal "Sets the style of element\nand returns it", fixtures.find_by_name("Element.setStyle").description
442
+ assert_equal "Calls `iterator` for each item in the collection.", fixtures.find_by_name("Enumerable#each").description
443
+ end
444
+
445
+ def test_arguments_descriptions
446
+ fixture = fixtures.find_by_name("Element.setStyle")
447
+ assert_equal %w[element styles], fixture.arguments.map(&:name)
448
+ assert_equal %w[String Element], fixture.arguments.first.types
449
+ assert_equal "an id or DOM node", fixture.arguments.first.description
450
+ assert_equal %w[String Object Hash], fixture.arguments.last.types
451
+ assert_equal "can be either a regular CSS string or a hash or regular object, in which case, properties need to be camelized",
452
+ fixture.arguments.last.description
453
+
454
+ assert_equal [], fixtures.find_by_name("Element#foo").arguments
455
+ end
456
+
457
+ def test_event
458
+ assert_equal %w[element:style:updated], fixtures.find_by_name("Element.setStyle").fires
459
+ assert_equal [], fixtures.find_by_name("Element#foo").fires
460
+ assert_equal %w[click], fixtures.find_by_name("Element#bar").fires
461
+ end
462
+
463
+ def test_aliases
464
+ fixture = fixtures.find_by_name("Element.setStyle")
465
+ assert_equal [], fixture.aliases
466
+ assert !fixture.alias?
467
+ assert_equal nil, fixture.alias_of
468
+
469
+ fixture = fixtures.find_by_name("Element#foo")
470
+ assert_equal ["bar"], fixture.aliases.map(&:name)
471
+ assert !fixture.alias?
472
+ assert_equal nil, fixture.alias_of
473
+
474
+ fixture = fixtures.find_by_name("Element#bar")
475
+ assert_equal [], fixture.aliases.map(&:name)
476
+ assert fixture.alias?
477
+ assert_equal "foo", fixture.alias_of.name
478
+ end
479
+
480
+ def test_weird
481
+ weird = parse(<<-EOS
482
+
483
+ /** section: DOM
484
+ * document
485
+ *
486
+ * Prototype extends the built-in `document` object with several convenience
487
+ * methods related to events.
488
+ **/
489
+
490
+
491
+ EOS
492
+ )
493
+ doc = weird.find_by_name("document")
494
+ assert_equal 'document', doc.name
495
+ assert_equal Documentation::Namespace, doc.class
496
+ end
497
+
498
+ def test_weirder
499
+ weird = parse(<<-EOS
500
+
501
+ /**
502
+ * document.viewport
503
+ *
504
+ * The `document.viewport` namespace contains methods that return information
505
+ * about the viewport &mdash; the rectangle that represents the portion of a web
506
+ * page within view. In other words, it's the browser window minus all chrome.
507
+ **/
508
+
509
+
510
+ EOS
511
+ )
512
+ doc = weird.find_by_name("document.viewport")
513
+ assert_equal 'viewport', doc.name
514
+ assert_equal Documentation::Namespace, doc.class
515
+ end
516
+
517
+ def test_weirdest
518
+
519
+ end
520
+ end