| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * Data structures representing an API definition, and visitor base classes | 6 * Data structures representing an API definition, and visitor base classes |
| 7 * for visiting those data structures. | 7 * for visiting those data structures. |
| 8 */ | 8 */ |
| 9 library api; | 9 library api; |
| 10 | 10 |
| (...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 370 | 370 |
| 371 accept(ApiVisitor visitor) => visitor.visitTypeReference(this); | 371 accept(ApiVisitor visitor) => visitor.visitTypeReference(this); |
| 372 } | 372 } |
| 373 | 373 |
| 374 /** | 374 /** |
| 375 * Type which represents a union among multiple choices. | 375 * Type which represents a union among multiple choices. |
| 376 */ | 376 */ |
| 377 class TypeUnion extends TypeDecl { | 377 class TypeUnion extends TypeDecl { |
| 378 final List<TypeDecl> choices; | 378 final List<TypeDecl> choices; |
| 379 | 379 |
| 380 TypeUnion(this.choices, dom.Element html) : super(html); | 380 /** |
| 381 * The field that is used to disambiguate this union |
| 382 */ |
| 383 final String field; |
| 384 |
| 385 TypeUnion(this.choices, this.field, dom.Element html) : super(html); |
| 381 | 386 |
| 382 accept(ApiVisitor visitor) => visitor.visitTypeUnion(this); | 387 accept(ApiVisitor visitor) => visitor.visitTypeUnion(this); |
| 383 } | 388 } |
| 384 | 389 |
| 385 /** | 390 /** |
| 386 * Type of a JSON object with specified fields, some of which may be optional. | 391 * Type of a JSON object with specified fields, some of which may be optional. |
| 387 */ | 392 */ |
| 388 class TypeObject extends TypeDecl { | 393 class TypeObject extends TypeDecl { |
| 389 final List<TypeObjectField> fields; | 394 final List<TypeObjectField> fields; |
| 390 | 395 |
| 391 TypeObject(this.fields, dom.Element html) : super(html); | 396 TypeObject(this.fields, dom.Element html) : super(html); |
| 392 | 397 |
| 393 accept(ApiVisitor visitor) => visitor.visitTypeObject(this); | 398 accept(ApiVisitor visitor) => visitor.visitTypeObject(this); |
| 399 |
| 400 /** |
| 401 * Return the field with the given [name], or null if there is no such field. |
| 402 */ |
| 403 TypeObjectField getField(String name) { |
| 404 for (TypeObjectField field in fields) { |
| 405 if (field.name == name) { |
| 406 return field; |
| 407 } |
| 408 } |
| 409 return null; |
| 410 } |
| 394 } | 411 } |
| 395 | 412 |
| 396 /** | 413 /** |
| 397 * Description of a single field in a [TypeObject]. | 414 * Description of a single field in a [TypeObject]. |
| 398 */ | 415 */ |
| 399 class TypeObjectField extends ApiNode { | 416 class TypeObjectField extends ApiNode { |
| 400 final String name; | 417 final String name; |
| 401 final TypeDecl type; | 418 final TypeDecl type; |
| 402 final bool optional; | 419 final bool optional; |
| 403 | 420 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 455 } | 472 } |
| 456 | 473 |
| 457 /** | 474 /** |
| 458 * Description of a single allowed value for an enum. | 475 * Description of a single allowed value for an enum. |
| 459 */ | 476 */ |
| 460 class TypeEnumValue extends ApiNode { | 477 class TypeEnumValue extends ApiNode { |
| 461 final String value; | 478 final String value; |
| 462 | 479 |
| 463 TypeEnumValue(this.value, dom.Element html) : super(html); | 480 TypeEnumValue(this.value, dom.Element html) : super(html); |
| 464 } | 481 } |
| OLD | NEW |