public
Description: JavaScript inline documentation parser
Homepage: http://pdoc.org
Clone URL: git://github.com/tobie/pdoc.git
Allow lowercased namespaces.
tobie (author)
Sun May 04 16:38:05 -0700 2008
commit  f46ae6877af6fd02125f8d61bf953413ae115fbf
tree    70761405769b03ed567ec7daebdbb33972ae5fb2
parent  68ee9266c6ffb9c8f198c8dc152aedf7c11df24f
...
 
 
1
2
3
...
28
29
30
31
 
32
33
34
...
1
2
3
4
5
...
30
31
32
 
33
34
35
36
0
@@ -1,3 +1,5 @@
0
+* Allow lowercased namespaces. [#2 state:resolved] (tobie)
0
+
0
 * Remove trailing whitespaces. Outdent descriptions. [#1 state:resolved, #3 state:resolved] (tobie)
0
 
0
 * Switch argument type selector from `,` to `|`. (tobie)
0
@@ -28,7 +30,7 @@
0
 
0
 * Refactor PDoc::Generators::Html::Helpers (tobie)
0
 
0
-* Rename rakefile as Rakefile. [savetheclocktower]
0
+* Rename rakefile as Rakefile. (savetheclocktower)
0
 
0
 * Add PDoc::Runner. (tobie)
0
 
...
44
45
46
47
48
 
 
 
 
 
 
 
 
 
 
49
50
51
...
84
85
86
87
88
 
 
 
 
 
 
 
 
 
 
89
90
91
...
44
45
46
 
 
47
48
49
50
51
52
53
54
55
56
57
58
59
...
92
93
94
 
 
95
96
97
98
99
100
101
102
103
104
105
106
107
0
@@ -44,8 +44,16 @@ module EbnfExpression
0
   end
0
   
0
   class KlassMethod < Method
0
-    def full_name
0
-      "#{super}.#{name}"
0
+    def klass_name
0
+      js_namespace.to_a.slice(-2)
0
+    end
0
+    
0
+    def name
0
+      js_namespace.to_a.last
0
+    end
0
+
0
+    def namespace
0
+      js_namespace.to_a.slice(0..-2).join(".")
0
     end
0
   end
0
   
0
@@ -84,8 +92,16 @@ module EbnfExpression
0
   end
0
   
0
   class KlassProperty < Base
0
-    def full_name
0
-      "#{super}.#{name}"
0
+    def klass_name
0
+      js_namespace.to_a.slice(-2)
0
+    end
0
+    
0
+    def name
0
+      js_namespace.to_a.last
0
+    end
0
+
0
+    def namespace
0
+      js_namespace.to_a.slice(0..-2).join(".")
0
     end
0
   end
0
   
...
21
22
23
24
 
25
26
27
...
29
30
31
32
 
33
34
35
...
21
22
23
 
24
25
26
27
...
29
30
31
 
32
33
34
35
0
@@ -21,7 +21,7 @@ grammar EbnfExpression
0
   end
0
 
0
   rule klass_method
0
-    space* js_namespace '.' js_variable args return_value <KlassMethod>
0
+    space* js_namespace args return_value <KlassMethod>
0
   end
0
   
0
   rule instance_method
0
@@ -29,7 +29,7 @@ grammar EbnfExpression
0
   end
0
   
0
   rule klass_property
0
-    space* js_namespace '.' js_variable return_value <KlassProperty>
0
+    space* js_namespace return_value <KlassProperty>
0
   end
0
   
0
   rule instance_property
...
33
34
35
36
 
37
38
39
...
33
34
35
 
36
37
38
39
0
@@ -33,7 +33,7 @@ grammar EbnfJavascript
0
   end
0
   
0
   rule js_namespace
0
-    js_constant ('.' js_constant)* {
0
+    (js_constant / js_variable) ('.' (js_constant / js_variable))* {
0
       def namespace
0
         to_a.slice(0..-2).join(".")
0
       end
...
35
36
37
 
 
 
 
 
 
 
 
 
 
38
39
40
...
64
65
66
 
 
 
 
 
 
 
 
 
 
 
67
68
69
...
181
182
183
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
185
186
...
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
...
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
...
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
0
@@ -35,6 +35,16 @@ class EbnfExpressionTest < Test::Unit::TestCase
0
     assert_equal "Responders",                 parse(ebnf).klass_name
0
     assert_equal "Array",                      parse(ebnf).returns
0
     assert_equal ebnf,                         parse(ebnf).to_s
0
+    
0
+    ebnf = "document.viewport.foo -> Bar"
0
+    assert_parsed ebnf
0
+    assert_equal KlassProperty,                parse(ebnf).class
0
+    assert_equal "document.viewport",          parse(ebnf).namespace
0
+    assert_equal "foo",                        parse(ebnf).name
0
+    assert_equal "document.viewport.foo",      parse(ebnf).full_name
0
+    assert_equal "viewport",                   parse(ebnf).klass_name
0
+    assert_equal "Bar",                        parse(ebnf).returns
0
+    assert_equal ebnf,                         parse(ebnf).to_s
0
   end
0
   
0
   def test_utility
0
@@ -64,6 +74,17 @@ class EbnfExpressionTest < Test::Unit::TestCase
0
     assert_equal %w[element content],          parse(ebnf).arguments.map(&:name)
0
     assert_equal "Element",                    parse(ebnf).returns
0
     assert_equal ebnf,                         parse(ebnf).to_s
0
+    
0
+    ebnf = "document.viewport.getWidth() -> Number"
0
+    assert_parsed ebnf
0
+    assert_equal KlassMethod,                  parse(ebnf).class
0
+    assert_equal "document.viewport",          parse(ebnf).namespace
0
+    assert_equal "getWidth",                   parse(ebnf).name
0
+    assert_equal "document.viewport.getWidth", parse(ebnf).full_name
0
+    assert_equal "viewport",                   parse(ebnf).klass_name
0
+    assert_equal [],                           parse(ebnf).arguments
0
+    assert_equal "Number",                     parse(ebnf).returns
0
+    assert_equal ebnf,                         parse(ebnf).to_s
0
   end
0
   
0
   def test_instance_method
0
@@ -181,6 +202,26 @@ class EbnfExpressionTest < Test::Unit::TestCase
0
     assert_equal %w[Enumerable],               parse(ebnf).mixins.map(&:name)
0
     assert_equal [""],                         parse(ebnf).mixins.map(&:namespace)
0
     assert_equal ebnf,                         parse(ebnf).to_s
0
+    
0
+    ebnf = "document"
0
+    assert_parsed ebnf
0
+    assert_equal Namespace,                    parse(ebnf).class
0
+    assert_equal "",                           parse(ebnf).namespace
0
+    assert_equal "document",                   parse(ebnf).name
0
+    assert_equal "document",                   parse(ebnf).full_name
0
+    assert_equal nil,                          parse(ebnf).klass_name
0
+    assert_equal [],                           parse(ebnf).mixins
0
+    assert_equal ebnf,                         parse(ebnf).to_s
0
+    
0
+    ebnf = "document.viewport"
0
+    assert_parsed ebnf
0
+    assert_equal Namespace,                    parse(ebnf).class
0
+    assert_equal "document",                   parse(ebnf).namespace
0
+    assert_equal "viewport",                   parse(ebnf).name
0
+    assert_equal "document.viewport",          parse(ebnf).full_name
0
+    assert_equal nil,                          parse(ebnf).klass_name
0
+    assert_equal [],                           parse(ebnf).mixins
0
+    assert_equal ebnf,                         parse(ebnf).to_s
0
   end
0
   
0
   def test_mixin
...
30
31
32
 
 
 
33
34
...
30
31
32
33
34
35
36
37
0
@@ -30,5 +30,8 @@ class EbnfJavascriptTest < Test::Unit::TestCase
0
   
0
   def test_namespace # basic and non-recursive
0
     assert_parsed "Foo.Bar"
0
+    assert_parsed "foo.bar"
0
+    assert_parsed "foo.Bar"
0
+    assert_parsed "Foo.bar"
0
   end
0
 end

Comments