Changeset 8953
- Timestamp:
- 02/29/08 14:01:54 (7 months ago)
- Files:
-
- spinoffs/pdoc/trunk/CHANGELOG (modified) (1 diff)
- spinoffs/pdoc/trunk/lib/p_doc/parser.rb (modified) (1 diff)
- spinoffs/pdoc/trunk/lib/p_doc/parser/argument_description_nodes.rb (added)
- spinoffs/pdoc/trunk/lib/p_doc/parser/argument_nodes.rb (deleted)
- spinoffs/pdoc/trunk/lib/p_doc/parser/documentation_nodes.rb (modified) (1 diff)
- spinoffs/pdoc/trunk/lib/p_doc/parser/treetop_files/argument_description.treetop (added)
- spinoffs/pdoc/trunk/lib/p_doc/parser/treetop_files/argument.treetop (deleted)
- spinoffs/pdoc/trunk/lib/p_doc/parser/treetop_files/documentation.treetop (modified) (5 diffs)
- spinoffs/pdoc/trunk/test/fixtures/ajax.js (modified) (1 diff)
- spinoffs/pdoc/trunk/test/test_helper.rb (modified) (1 diff)
- spinoffs/pdoc/trunk/test/unit/argument_description_test.rb (added)
- spinoffs/pdoc/trunk/test/unit/argument_test.rb (deleted)
- spinoffs/pdoc/trunk/test/unit/documentation_test.rb (modified) (25 diffs)
- spinoffs/pdoc/trunk/test/unit/ebnf_arguments_test.rb (modified) (4 diffs)
- spinoffs/pdoc/trunk/test/unit/ebnf_expression_test.rb (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
spinoffs/pdoc/trunk/CHANGELOG
r8952 r8953 1 * Finalize support for argument description [Tobie] 2 1 3 * Add initial support for argument description [Tobie] 2 4 spinoffs/pdoc/trunk/lib/p_doc/parser.rb
r8952 r8953 2 2 require 'treetop' 3 3 4 %w[basic tags argument description ebnf_arguments ebnf_expression section_content documentation].each do |s|4 %w[basic tags argument_description description ebnf_arguments ebnf_expression section_content documentation].each do |s| 5 5 require "#{s}_nodes" 6 6 end 7 7 8 %w[basic argument tags description ebnf_javascript ebnf_arguments ebnf_expression section_content documentation].each do |s|8 %w[basic argument_description tags description ebnf_javascript ebnf_arguments ebnf_expression section_content documentation].each do |s| 9 9 Treetop.load File.expand_path(File.join(PARSER_DIR, "treetop_files", s)) 10 10 end spinoffs/pdoc/trunk/lib/p_doc/parser/documentation_nodes.rb
r8944 r8953 224 224 ebnf_expressions.first.namespace 225 225 end 226 227 def arguments 228 arguments_definitions.elements 229 end 226 230 end 227 231 spinoffs/pdoc/trunk/lib/p_doc/parser/treetop_files/documentation.treetop
r8944 r8953 1 1 grammar Documentation 2 2 include Tags 3 include ArgumentDescription 3 4 include Description 4 5 include SectionContent … … 18 19 19 20 rule constructor_doc 20 start ebnf:(line constructor)+ text comment_end <Constructor>21 start ebnf:(line constructor)+ arguments_definitions text comment_end <Constructor> 21 22 end 22 23 … … 30 31 31 32 rule klass_method_doc 32 start ebnf:(line klass_method)+ text comment_end <KlassMethod>33 start ebnf:(line klass_method)+ arguments_definitions text comment_end <KlassMethod> 33 34 end 34 35 35 36 rule instance_method_doc 36 start ebnf:(line instance_method)+ text comment_end <InstanceMethod>37 start ebnf:(line instance_method)+ arguments_definitions text comment_end <InstanceMethod> 37 38 end 38 39 … … 50 51 51 52 rule utility_doc 52 start ebnf:(line utility)+ text comment_end <Utility>53 start ebnf:(line utility)+ arguments_definitions text comment_end <Utility> 53 54 end 54 55 … … 60 61 comment_start space* (tags)? 61 62 end 62 63 rule argument _desc64 line '-' js_variable space* types:(arg_types)? space* ':' space* (.)*63 64 rule arguments_definitions 65 argument_description* 65 66 end 66 67 rule arg_types68 "(" first:arg_type more:(arg_type space* ',')* ")"69 end70 71 rule arg_type72 [\w]+73 end74 75 67 end spinoffs/pdoc/trunk/test/fixtures/ajax.js
r8944 r8953 42 42 /** 43 43 * Element#setStyle(@element, styles) -> Element 44 * - element (String, Element): an id or DOM node 45 * - styles (String, Object, Hash): can be either a regular CSS string or 46 * a hash or regular object, in which case, properties need to be camelized 44 47 * Sets the style of element 45 48 * and returns it spinoffs/pdoc/trunk/test/test_helper.rb
r8944 r8953 36 36 end 37 37 end 38 39 # Stolen from Rails 40 unless :test.respond_to?(:to_proc) 41 class Symbol 42 # Turns the symbol into a simple proc, which is especially useful for enumerations. Examples: 43 # 44 # # The same as people.collect { |p| p.name } 45 # people.collect(&:name) 46 # 47 # # The same as people.select { |p| p.manager? }.collect { |p| p.salary } 48 # people.select(&:manager?).collect(&:salary) 49 def to_proc 50 Proc.new { |*args| args.shift.__send__(self, *args) } 51 end 52 end 53 end spinoffs/pdoc/trunk/test/unit/documentation_test.rb
r8944 r8953 24 24 25 25 def test_globals 26 assert_equal %w[$ $$ Ajax Element Enumerable String Toggle], fixtures.globals.map {|g| g.name}.sort26 assert_equal %w[$ $$ Ajax Element Enumerable String Toggle], fixtures.globals.map(&:name).sort 27 27 end 28 28 29 29 def test_descendants 30 30 assert_equal %w[$ $$ Ajax Base Element Enumerable Request Responders String Toggle], 31 fixtures.descendants.map {|d| d.name}.sort31 fixtures.descendants.map(&:name).sort 32 32 end 33 33 34 34 def test_mixins 35 assert_equal %w[Enumerable], fixtures.mixins.map {|g| g.name}35 assert_equal %w[Enumerable], fixtures.mixins.map(&:name) 36 36 end 37 37 38 38 def test_sections 39 assert_equal %w[ajax dom lang], fixtures.sections.map {|s| s.name}40 assert_equal [Section, Section, Section], fixtures.sections.map { |s| s.class }41 assert_equal %w[Ajax], fixtures.sections.first.children.map {|d| d.name}42 assert_equal %w[Ajax Base Request Responders], fixtures.sections.first.descendants.map {|d| d.name}39 assert_equal %w[ajax dom lang], fixtures.sections.map(&:name) 40 assert_equal [Section, Section, Section], fixtures.sections.map(&:class) 41 assert_equal %w[Ajax], fixtures.sections.first.children.map(&:name) 42 assert_equal %w[Ajax Base Request Responders], fixtures.sections.first.descendants.map(&:name) 43 43 end 44 44 … … 63 63 assert !fixture.deprecated? 64 64 assert !fixture.alias? 65 assert_equal %w[getTransport], fixture.klass_methods.map {|m| m.name}66 assert_equal %w[activeRequestCount], fixture.klass_properties.map {|m| m.name}65 assert_equal %w[getTransport], fixture.klass_methods.map(&:name) 66 assert_equal %w[activeRequestCount], fixture.klass_properties.map(&:name) 67 67 assert_equal [], fixture.instance_methods 68 68 assert_equal [], fixture.instance_properties 69 69 assert_equal [], fixture.related_utilities 70 70 assert_equal "ajax", fixture.doc_parent.name 71 assert_equal %w[ajax], fixture.ancestors.map {|a| a.name }72 assert_equal %w[Base Request Responders], fixture.children.map {|m| m.name}73 assert_equal %w[Base Request Responders], fixture.descendants.map {|m| m.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 74 75 75 fixture = fixtures.find_by_name("Ajax.Responders") 76 76 assert_equal Namespace, fixture.class 77 77 assert !fixture.mixin? 78 assert_equal ["Enumerable"], fixture.mixins.map {|m| m.name}79 assert_equal [Mixin], fixture.mixins.map {|m| m.class}78 assert_equal ["Enumerable"], fixture.mixins.map(&:name) 79 assert_equal [Mixin], fixture.mixins.map(&:class) 80 80 assert_equal "Responders", fixture.name 81 81 assert_equal "ajax", fixture.section.name … … 85 85 assert !fixture.alias? 86 86 assert_equal "Ajax", fixture.doc_parent.name 87 assert_equal %w[Ajax ajax], fixture.ancestors.map {|a| a.name }87 assert_equal %w[Ajax ajax], fixture.ancestors.map(&:name) 88 88 assert_equal [], fixture.children 89 89 assert_equal [], fixture.descendants … … 100 100 assert_equal [], fixture.klass_methods 101 101 assert_equal [], fixture.klass_properties 102 assert_equal ["each"], fixture.instance_methods.map {|m| m.name}102 assert_equal ["each"], fixture.instance_methods.map(&:name) 103 103 assert_equal [], fixture.instance_properties 104 104 assert_equal [], fixture.related_utilities 105 105 assert_equal "lang", fixture.doc_parent.name 106 assert_equal %w[lang], fixture.ancestors.map {|a| a.name }106 assert_equal %w[lang], fixture.ancestors.map(&:name) 107 107 assert_equal [], fixture.children 108 108 assert_equal [], fixture.descendants … … 116 116 assert_equal "Ajax.Base", fixture.full_name 117 117 assert_equal [], fixture.mixins 118 assert_equal %w[Request], fixture.subklasses.map {|s| s.name }118 assert_equal %w[Request], fixture.subklasses.map(&:name) 119 119 assert !fixture.mixin? 120 120 assert !fixture.subklass? … … 132 132 assert_equal [], fixture.related_utilities 133 133 assert_equal "Ajax", fixture.doc_parent.name 134 assert_equal %w[Ajax ajax], fixture.ancestors.map {|a| a.name }134 assert_equal %w[Ajax ajax], fixture.ancestors.map(&:name) 135 135 assert_equal [], fixture.children 136 136 assert_equal [], fixture.descendants … … 155 155 assert_equal [], fixture.klass_methods 156 156 assert_equal [], fixture.methodized_methods 157 assert_equal %w[classProp], fixture.klass_properties.map {|k| k.name}158 assert_equal %w[request success], fixture.instance_methods.map {|k| k.name}159 assert_equal %w[dummy], fixture.instance_properties.map {|k| k.name}160 assert_equal %w[Events], fixture.constants.map {|k| k.name}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 161 assert_equal [], fixture.related_utilities 162 162 assert_equal "Ajax", fixture.doc_parent.name 163 assert_equal %w[Ajax ajax], fixture.ancestors.map {|a| a.name }163 assert_equal %w[Ajax ajax], fixture.ancestors.map(&:name) 164 164 assert_equal [], fixture.children 165 165 assert_equal [], fixture.descendants … … 168 168 assert_equal Klass, fixture.class 169 169 assert_equal [], fixture.klass_methods 170 assert_equal %w[setStyle], fixture.methodized_methods.map {|k| k.name}170 assert_equal %w[setStyle], fixture.methodized_methods.map(&:name) 171 171 assert_equal [], fixture.klass_properties 172 assert_equal %w[bar foo setStyle], fixture.instance_methods.map {|k| k.name}172 assert_equal %w[bar foo setStyle], fixture.instance_methods.map(&:name) 173 173 assert_equal [], fixture.instance_properties 174 assert_equal %w[$], fixture.related_utilities.map {|k| k.name}174 assert_equal %w[$], fixture.related_utilities.map(&:name) 175 175 assert_equal "dom", fixture.doc_parent.name 176 assert_equal %w[dom], fixture.ancestors.map {|a| a.name }176 assert_equal %w[dom], fixture.ancestors.map(&:name) 177 177 assert_equal [], fixture.children 178 178 assert_equal [], fixture.descendants … … 180 180 fixture = fixtures.find_by_name("String") 181 181 assert_equal Klass, fixture.class 182 assert_equal %w[interpret], fixture.klass_methods.map {|k| k.name}182 assert_equal %w[interpret], fixture.klass_methods.map(&:name) 183 183 end 184 184 … … 198 198 assert !fixture.alias? 199 199 assert_equal "String", fixture.doc_parent.name 200 assert_equal %w[String lang], fixture.ancestors.map {|a| a.name }200 assert_equal %w[String lang], fixture.ancestors.map(&:name) 201 201 assert_equal [], fixture.children 202 202 assert_equal [], fixture.descendants … … 214 214 assert !fixture.alias? 215 215 assert_equal "Ajax", fixture.doc_parent.name 216 assert_equal %w[Ajax ajax], fixture.ancestors.map {|a| a.name }216 assert_equal %w[Ajax ajax], fixture.ancestors.map(&:name) 217 217 assert_equal [], fixture.children 218 218 assert_equal [], fixture.descendants … … 234 234 assert !fixture.alias? 235 235 assert_equal "Request", fixture.doc_parent.name 236 assert_equal %w[Request Ajax ajax], fixture.ancestors.map {|a| a.name }236 assert_equal %w[Request Ajax ajax], fixture.ancestors.map(&:name) 237 237 assert_equal [], fixture.children 238 238 assert_equal [], fixture.descendants … … 252 252 assert !fixture.alias? 253 253 assert_equal "dom", fixture.doc_parent.name 254 assert_equal %w[dom], fixture.ancestors.map {|a| a.name }254 assert_equal %w[dom], fixture.ancestors.map(&:name) 255 255 assert_equal [], fixture.children 256 256 assert_equal [], fixture.descendants … … 278 278 assert !fixture.alias? 279 279 assert_equal "Request", fixture.doc_parent.name 280 assert_equal %w[Request Ajax ajax], fixture.ancestors.map {|a| a.name }280 assert_equal %w[Request Ajax ajax], fixture.ancestors.map(&:name) 281 281 assert_equal [], fixture.children 282 282 assert_equal [], fixture.descendants … … 296 296 assert !fixture.alias? 297 297 assert_equal "Request", fixture.doc_parent.name 298 assert_equal %w[Request Ajax ajax], fixture.ancestors.map {|a| a.name }298 assert_equal %w[Request Ajax ajax], fixture.ancestors.map(&:name) 299 299 assert_equal [], fixture.children 300 300 assert_equal [], fixture.descendants … … 316 316 assert !fixture.alias? 317 317 assert_equal "Request", fixture.doc_parent.name 318 assert_equal %w[Request Ajax ajax], fixture.ancestors.map {|a| a.name }318 assert_equal %w[Request Ajax ajax], fixture.ancestors.map(&:name) 319 319 assert_equal [], fixture.children 320 320 assert_equal [], fixture.descendants … … 337 337 assert !fixture.methodized? 338 338 assert_equal "Request", fixture.doc_parent.name 339 assert_equal %w[Request Ajax ajax], fixture.ancestors.map {|a| a.name }339 assert_equal %w[Request Ajax ajax], fixture.ancestors.map(&:name) 340 340 assert_equal [], fixture.children 341 341 assert_equal [], fixture.descendants … … 356 356 assert fixture.methodized? 357 357 assert_equal "Element", fixture.doc_parent.name 358 assert_equal %w[Element dom], fixture.ancestors.map {|a| a.name }358 assert_equal %w[Element dom], fixture.ancestors.map(&:name) 359 359 assert_equal [], fixture.children 360 360 assert_equal [], fixture.descendants … … 377 377 assert !fixture.methodized? 378 378 assert_equal "Request", fixture.doc_parent.name 379 assert_equal %w[Request Ajax ajax], fixture.ancestors.map {|a| a.name }379 assert_equal %w[Request Ajax ajax], fixture.ancestors.map(&:name) 380 380 assert_equal [], fixture.children 381 381 assert_equal [], fixture.descendants … … 394 394 assert fixture.deprecated? 395 395 assert !fixture.alias? 396 assert_equal %w[display foo], fixture.klass_methods.map {|m| m.name}396 assert_equal %w[display foo], fixture.klass_methods.map(&:name) 397 397 assert_equal [], fixture.klass_properties 398 398 assert_equal [], fixture.instance_methods … … 400 400 assert_equal [], fixture.related_utilities 401 401 assert_equal "dom", fixture.doc_parent.name 402 assert_equal %w[dom], fixture.ancestors.map {|a| a.name }403 assert_equal %w[], fixture.children.map {|a| a.name }404 assert_equal %w[], fixture.descendants.map {|a| a.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 405 406 406 fixture = fixtures.find_by_name("Toggle.display") … … 416 416 assert !fixture.alias? 417 417 assert_equal "Toggle", fixture.doc_parent.name 418 assert_equal %w[Toggle dom], fixture.ancestors.map {|a| a.name }418 assert_equal %w[Toggle dom], fixture.ancestors.map(&:name) 419 419 assert_equal [], fixture.children 420 420 assert_equal [], fixture.descendants … … 432 432 assert !fixture.alias? 433 433 assert_equal "Toggle", fixture.doc_parent.name 434 assert_equal %w[Toggle dom], fixture.ancestors.map {|a| a.name }434 assert_equal %w[Toggle dom], fixture.ancestors.map(&:name) 435 435 assert_equal [], fixture.children 436 436 assert_equal [], fixture.descendants … … 442 442 end 443 443 444 def test_argument_definitions 445 fixture = fixtures.find_by_name("Element#setStyle") 446 assert_equal %w[element styles], fixture.arguments.map(&:name) 447 assert_equal %w[String Element], fixture.arguments.first.types 448 assert_equal "an id or DOM node", fixture.arguments.first.description 449 assert_equal %w[String Object Hash], fixture.arguments.last.types 450 assert_equal "can be either a regular CSS string or a hash or regular object, in which case, properties need to be camelized", 451 fixture.arguments.last.description 452 453 assert_equal [], fixtures.find_by_name("Element#foo").arguments 454 end 455 444 456 def test_aliases 445 457 fixture = fixtures.find_by_name("Element#setStyle") … … 449 461 450 462 fixture = fixtures.find_by_name("Element#foo") 451 assert_equal ["bar"], fixture.aliases.map {|a| a.name}463 assert_equal ["bar"], fixture.aliases.map(&:name) 452 464 assert !fixture.alias? 453 465 assert_equal nil, fixture.alias_of 454 466 455 467 fixture = fixtures.find_by_name("Element#bar") 456 assert_equal [], fixture.aliases.map {|a| a.name}468 assert_equal [], fixture.aliases.map(&:name) 457 469 assert fixture.alias? 458 470 assert_equal "foo", fixture.alias_of.name spinoffs/pdoc/trunk/test/unit/ebnf_arguments_test.rb
r8944 r8953 12 12 assert_parsed " " 13 13 assert_parsed "" 14 assert_equal [], parse(" ").to_a.map {|arg| arg.name}14 assert_equal [], parse(" ").to_a.map(&:name) 15 15 end 16 16 … … 27 27 assert_parsed "foo , bar" 28 28 assert_parsed "foo , bar" 29 assert_equal ["foo", "bar"], parse("foo,bar").to_a.map {|arg| arg.name}29 assert_equal ["foo", "bar"], parse("foo,bar").to_a.map(&:name) 30 30 end 31 31 … … 52 52 assert_parsed "[foo][,bar]" 53 53 assert_parsed "[ foo ] [ , bar ]" 54 assert_equal ["foo", "bar"], parse("[foo][,bar]").to_a.map {|arg| arg.name}54 assert_equal ["foo", "bar"], parse("[foo][,bar]").to_a.map(&:name) 55 55 end 56 56 … … 60 60 assert_parsed "hello,world[,foo][,bar=43]" 61 61 assert_parsed "hello , world [ , foo ] [ , bar=43 ]" 62 assert_equal ["foo", "bar"], parse("[foo],bar").to_a.map {|arg| arg.name}62 assert_equal ["foo", "bar"], parse("[foo],bar").to_a.map(&:name) 63 63 assert_equal "content", parse("hello[,content]").to_a.last.name 64 64 assert_equal "content", parse("hello[,content=foo]").to_a.last.name spinoffs/pdoc/trunk/test/unit/ebnf_expression_test.rb
r8944 r8953 49 49 assert_equal "$", parse(ebnf).full_name 50 50 assert_equal nil, parse(ebnf).klass_name 51 assert_equal %w[element], parse(ebnf).arguments.map { |arg| arg.name }51 assert_equal %w[element], parse(ebnf).arguments.map(&:name) 52 52 assert_equal "Element | Array", parse(ebnf).returns 53 53 assert_equal ebnf, parse(ebnf).to_s … … 62 62 assert_equal "Element.update", parse(ebnf).full_name 63 63 assert_equal "Element", parse(ebnf).klass_name 64 assert_equal %w[element content], parse(ebnf).arguments.map { |arg| arg.name }64 assert_equal %w[element content], parse(ebnf).arguments.map(&:name) 65 65 assert_equal "Element", parse(ebnf).returns 66 66 assert_equal ebnf, parse(ebnf).to_s … … 75 75 assert_equal "Element#update", parse(ebnf).full_name 76 76 assert_equal "Element", parse(ebnf).klass_name 77 assert_equal %w[content], parse(ebnf).arguments.map { |arg| arg.name }77 assert_equal %w[content], parse(ebnf).arguments.map(&:name) 78 78 assert_equal "Element", parse(ebnf).returns 79 79 assert_equal ebnf, parse(ebnf).to_s … … 88 88 assert_equal "new Element", parse(ebnf).full_name 89 89 assert_equal "Element", parse(ebnf).klass_name 90 assert_equal %w[tagName attributes], parse(ebnf).arguments.map { |arg| arg.name }90 assert_equal %w[tagName attributes], parse(ebnf).arguments.map(&:name) 91 91 assert_equal ebnf, parse(ebnf).to_s 92 92 … … 98 98 assert_equal "new Ajax.Request", parse(ebnf).full_name 99 99 assert_equal "Request", parse(ebnf).klass_name 100 assert_equal %w[url options], parse(ebnf).arguments.map { |arg| arg.name }100 assert_equal %w[url options], parse(ebnf).arguments.map(&:name) 101 101 assert_equal ebnf, parse(ebnf).to_s 102 102 end … … 140 140 ebnf = "class Array\n * includes: Enumerable" 141 141 assert_parsed ebnf 142 assert_equal %w[Enumerable], parse(ebnf).mixins.map {|m| m.name}143 assert_equal [""], parse(ebnf).mixins.map {|m| m.namespace}142 assert_equal %w[Enumerable], parse(ebnf).mixins.map(&:name) 143 assert_equal [""], parse(ebnf).mixins.map(&:namespace) 144 144 assert_equal ebnf, parse(ebnf).to_s 145 145 146 146 ebnf = "class Array\n * includes: Enumerable, Foo.Comparable" 147 147 assert_parsed ebnf 148 assert_equal %w[Enumerable Comparable], parse(ebnf).mixins.map {|m| m.name}149 assert_equal ["", "Foo"], parse(ebnf).mixins.map {|m| m.namespace}148 assert_equal %w[Enumerable Comparable], parse(ebnf).mixins.map(&:name) 149 assert_equal ["", "Foo"], parse(ebnf).mixins.map(&:namespace) 150 150 assert_equal ebnf, parse(ebnf).to_s 151 151 end … … 179 179 assert_equal "Ajax", parse(ebnf).full_name 180 180 assert_equal nil, parse(ebnf).klass_name 181 assert_equal %w[Enumerable], parse(ebnf).mixins.map {|m| m.name}182 assert_equal [""], parse(ebnf).mixins.map {|m| m.namespace}181 assert_equal %w[Enumerable], parse(ebnf).mixins.map(&:name) 182 assert_equal [""], parse(ebnf).mixins.map(&:namespace) 183 183 assert_equal ebnf, parse(ebnf).to_s 184 184 end … … 233 233 assert_equal 2, parse(ebnf).arguments.length 234 234 assert_equal 2, parse(ebnf_with_space).arguments.length 235 assert_equal ["event", "selector"], parse(ebnf).arguments.map { |arg| arg.name }236 assert_equal [nil, nil], parse(ebnf).arguments.map { |arg| arg.default_value }237 assert_equal [false, false], parse(ebnf).arguments.map { |arg| arg.optional? }235 assert_equal ["event", "selector"], parse(ebnf).arguments.map(&:name) 236 assert_equal [nil, nil], parse(ebnf).arguments.map(&:default_value) 237 assert_equal [false, false], parse(ebnf).arguments.map(&:optional?) 238 238 end 239 239 … … 272 272 assert_equal 2, parse(ebnf).arguments.length 273 273 assert_equal 2, parse(ebnf_with_space).arguments.length 274 assert_equal ["selector", "index"], parse(ebnf).arguments.map { |arg| arg.name }275 assert_equal [nil, "0"], parse(ebnf).arguments.map { |arg| arg.default_value }276 assert_equal [true, true], parse(ebnf).arguments.map { |arg| arg.optional? }274 assert_equal ["selector", "index"], parse(ebnf).arguments.map(&:name) 275 assert_equal [nil, "0"], parse(ebnf).arguments.map(&:default_value) 276 assert_equal [true, true], parse(ebnf).arguments.map(&:optional?) 277 277 end 278 278 … … 285 285 assert_equal 3, parse(ebnf).arguments.length 286 286 assert_equal 3, parse(ebnf_with_space).arguments.length 287 assert_equal ["element", "selector", "index"], parse(ebnf).arguments.map { |arg| arg.name }288 assert_equal [nil, nil, "0"], parse(ebnf).arguments.map { |arg| arg.default_value }289 assert_equal [false, true, true], parse(ebnf).arguments.map { |arg| arg.optional? }287 assert_equal ["element", "selector", "index"], parse(ebnf).arguments.map(&:name) 288 assert_equal [nil, nil, "0"], parse(ebnf).arguments.map(&:default_value) 289 assert_equal [false, true, true], parse(ebnf).arguments.map(&:optional?) 290 290 end 291 291 … … 301 301 assert_equal 3, parse(ebnf).arguments.length 302 302 assert_equal 3, parse(ebnf_with_space).arguments.length 303 assert_equal ["element", "selector", "index"], parse(ebnf).arguments.map { |arg| arg.name }304 assert_equal [nil, nil, "0"], parse(ebnf).arguments.map { |arg| arg.default_value }305 assert_equal [false, true, true], parse(ebnf).arguments.map { |arg| arg.optional? }306 assert_equal ["selector", "index"], parse(ebnf).methodized_arguments.map { |arg| arg.name }307 assert_equal [nil, "0"], parse(ebnf).methodized_arguments.map { |arg| arg.default_value }308 assert_equal [true, true], parse(ebnf).methodized_arguments.map { |arg| arg.optional? }303 assert_equal ["element", "selector", "index"], parse(ebnf).arguments.map(&:name) 304 assert_equal [nil, nil, "0"], parse(ebnf).arguments.map(&:default_value) 305 assert_equal [false, true, true], parse(ebnf).arguments.map(&:optional?) 306 assert_equal ["selector", "index"], parse(ebnf).methodized_arguments.map(&:name) 307 assert_equal [nil, "0"], parse(ebnf).methodized_arguments.map(&:default_value) 308 assert_equal [true, true], parse(ebnf).methodized_arguments.map(&:optional?) 309 309 end 310 310 end