blob: 2d8b02a2b7c3b51ffc93178f1918d9005c19983c [file] [log] [blame]
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library docgen.models.variable;
import '../exports/source_mirrors.dart';
import '../library_helpers.dart';
import 'class.dart';
import 'doc_gen_type.dart';
import 'dummy_mirror.dart';
import 'indexable.dart';
import 'owned_indexable.dart';
/// A class containing properties of a Dart variable.
class Variable extends OwnedIndexable<VariableMirror> {
final bool isFinal;
final bool isStatic;
final bool isConst;
final DocGenType type;
final String name;
factory Variable(String name, VariableMirror mirror, Indexable owner) {
var variable = getDocgenObject(mirror);
if (variable is DummyMirror) {
return new Variable._(name, mirror, owner);
}
return variable;
}
Variable._(this.name, VariableMirror mirror, Indexable owner)
: isFinal = mirror.isFinal,
isStatic = mirror.isStatic,
isConst = mirror.isConst,
type = new DocGenType(mirror.type, owner.owningLibrary),
super(mirror, owner);
/// Generates a map describing the [Variable] object.
Map toMap() => {
'name': name,
'qualifiedName': qualifiedName,
'comment': comment,
'final': isFinal,
'static': isStatic,
'constant': isConst,
'type': new List.filled(1, type.toMap()),
'annotations': annotations.map((a) => a.toMap()).toList()
};
String get typeName => 'property';
String get comment {
if (commentField != null) return commentField;
if (owner is Class) {
(owner as Class).ensureComments();
}
return super.comment;
}
bool isValidMirror(DeclarationMirror mirror) => mirror is VariableMirror;
}