Change enum properties to use camel case instead of dash separated names

Make regular Alignment values look more like enumProperties while
leaving more complex AlignmentDirectional values unchanged.
This commit is contained in:
Jacob Richman 2017-12-07 10:32:56 -08:00 committed by GitHub
parent 0350c9ecff
commit ed54868c22
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 27 additions and 63 deletions

View file

@ -1510,8 +1510,8 @@ class IterableProperty<T> extends DiagnosticsProperty<Iterable<T>> {
/// An property than displays enum values tersely.
///
/// The enum value is converted to a hyphen-separated string. For example:
/// [HitTestBehavior.deferToChild] is shown as `defer-to-child`.
/// The enum value is displayed with the class name stripped. For example:
/// [HitTestBehavior.deferToChild] is shown as `deferToChild`.
///
/// See also:
///
@ -1536,7 +1536,7 @@ class EnumProperty<T> extends DiagnosticsProperty<T> {
String valueToString({ TextTreeConfiguration parentConfiguration }) {
if (value == null)
return value.toString();
return camelCaseToHyphenatedName(describeEnum(value));
return describeEnum(value);
}
}
@ -2056,32 +2056,6 @@ String describeEnum(Object enumEntry) {
return description.substring(indexOfDot + 1);
}
/// Returns a lowercase hyphen-separated version of a camel case name.
///
/// ## Sample code
///
/// ```dart
/// validateCamelCaseToHyphenatedName() {
/// assert(camelCaseToHyphenatedName('deferToChild') == 'defer-to-child');
/// assert(camelCaseToHyphenatedName('Monday') == 'monday');
/// assert(camelCaseToHyphenatedName('monday') == 'monday');
/// }
/// ```
String camelCaseToHyphenatedName(String word) {
final String lowerWord = word.toLowerCase();
if (word == lowerWord)
return word;
final StringBuffer buffer = new StringBuffer();
for (int i = 0; i < word.length; i++) {
final String lower = lowerWord[i];
if (word[i] != lower && i > 0)
buffer.write('-');
buffer.write(lower);
}
return buffer.toString();
}
/// Builder to accumulate properties and configuration used to assemble a
/// [DiagnosticsNode] from a [Diagnosticable] object.
class DiagnosticPropertiesBuilder {

View file

@ -335,23 +335,23 @@ class Alignment extends AlignmentGeometry {
static String _stringify(double x, double y) {
if (x == -1.0 && y == -1.0)
return 'Alignment.topLeft';
return 'topLeft';
if (x == 0.0 && y == -1.0)
return 'Alignment.topCenter';
return 'topCenter';
if (x == 1.0 && y == -1.0)
return 'Alignment.topRight';
return 'topRight';
if (x == -1.0 && y == 0.0)
return 'Alignment.centerLeft';
return 'centerLeft';
if (x == 0.0 && y == 0.0)
return 'Alignment.center';
return 'center';
if (x == 1.0 && y == 0.0)
return 'Alignment.centerRight';
return 'centerRight';
if (x == -1.0 && y == 1.0)
return 'Alignment.bottomLeft';
return 'bottomLeft';
if (x == 0.0 && y == 1.0)
return 'Alignment.bottomCenter';
return 'bottomCenter';
if (x == 1.0 && y == 1.0)
return 'Alignment.bottomRight';
return 'bottomRight';
return 'Alignment(${x.toStringAsFixed(1)}, '
'${y.toStringAsFixed(1)})';
}

View file

@ -670,16 +670,6 @@ void main() {
expect(describeEnum(ExampleEnum.deferToChild), equals('deferToChild'));
});
test('toHyphenedName test', () {
expect(camelCaseToHyphenatedName(''), equals(''));
expect(camelCaseToHyphenatedName('hello'), equals('hello'));
expect(camelCaseToHyphenatedName('Hello'), equals('hello'));
expect(camelCaseToHyphenatedName('HELLO'), equals('h-e-l-l-o'));
expect(camelCaseToHyphenatedName('deferToChild'), equals('defer-to-child'));
expect(camelCaseToHyphenatedName('DeferToChild'), equals('defer-to-child'));
expect(camelCaseToHyphenatedName('helloWorld'), equals('hello-world'));
});
test('string property test', () {
expect(
new StringProperty('name', 'value', quoted: false).toString(),
@ -1087,7 +1077,7 @@ void main() {
expect(deferToChild.level, equals(DiagnosticLevel.info));
expect(deferToChild.value, equals(ExampleEnum.deferToChild));
expect(deferToChild.toString(), equals('name: defer-to-child'));
expect(deferToChild.toString(), equals('name: deferToChild'));
validatePropertyJsonSerialization(deferToChild);
expect(nullEnum.level, equals(DiagnosticLevel.info));

View file

@ -213,10 +213,10 @@ void main() {
test('AlignmentGeometry toString', () {
expect(const Alignment(1.0001, 2.0001).toString(), 'Alignment(1.0, 2.0)');
expect(const Alignment(0.0, 0.0).toString(), 'Alignment.center');
expect(const Alignment(-1.0, 1.0).add(const AlignmentDirectional(1.0, 0.0)).toString(), 'Alignment.bottomLeft + AlignmentDirectional.centerEnd');
expect(const Alignment(0.0, 0.0).toString(), 'center');
expect(const Alignment(-1.0, 1.0).add(const AlignmentDirectional(1.0, 0.0)).toString(), 'bottomLeft + AlignmentDirectional.centerEnd');
expect(const Alignment(0.0001, 0.0001).toString(), 'Alignment(0.0, 0.0)');
expect(const Alignment(0.0, 0.0).toString(), 'Alignment.center');
expect(const Alignment(0.0, 0.0).toString(), 'center');
expect(const AlignmentDirectional(0.0, 0.0).toString(), 'AlignmentDirectional.center');
expect(const Alignment(1.0, 1.0).add(const AlignmentDirectional(1.0, 1.0)).toString(), 'Alignment(1.0, 2.0) + AlignmentDirectional.centerEnd');
});

View file

@ -69,7 +69,7 @@ void main() {
],
).toString(),
equals(
'LinearGradient(Alignment.topLeft, Alignment.bottomLeft, [Color(0x33333333), Color(0x66666666)], null, TileMode.clamp)',
'LinearGradient(topLeft, bottomLeft, [Color(0x33333333), Color(0x66666666)], null, TileMode.clamp)',
),
);
});

View file

@ -202,7 +202,7 @@ void main() {
' parentData: MISSING\n'
' constraints: MISSING\n'
' size: MISSING\n'
' alignment: Alignment.center\n'
' alignment: center\n'
' textDirection: ltr\n'),
);
});

View file

@ -74,7 +74,7 @@ void main() {
' constraints: BoxConstraints(25.0<=w<=100.0, 25.0<=h<=100.0)\n'
' size: Size(25.0, 25.0)\n'
' image: [10×10]\n'
' alignment: Alignment.center\n'
' alignment: center\n'
),
);

View file

@ -36,7 +36,7 @@ void main() {
' │ parentData: <none>\n'
' │ constraints: BoxConstraints(w=800.0, h=600.0)\n'
' │ size: Size(800.0, 600.0)\n'
' │ alignment: Alignment.center\n'
' │ alignment: center\n'
' │ minWidth: 0.0\n'
' │ maxWidth: Infinity\n'
' │ minHeight: 0.0\n'
@ -122,7 +122,7 @@ void main() {
' │ parentData: <none>\n'
' │ constraints: BoxConstraints(w=800.0, h=600.0)\n'
' │ size: Size(800.0, 600.0)\n'
' │ alignment: Alignment.center\n'
' │ alignment: center\n'
' │ minWidth: 10.0\n'
' │ maxWidth: 500.0\n'
' │ minHeight: 0.0\n'
@ -158,7 +158,7 @@ void main() {
' │ parentData: <none>\n'
' │ constraints: BoxConstraints(w=800.0, h=600.0)\n'
' │ size: Size(800.0, 600.0)\n'
' │ alignment: Alignment.center\n'
' │ alignment: center\n'
' │ minWidth: 10.0\n'
' │ maxWidth: use parent maxWidth constraint\n'
' │ minHeight: use parent minHeight constraint\n'

View file

@ -96,7 +96,7 @@ void main() {
' │ parentData: offset=Offset(7.0, 7.0) (can use size)\n'
' │ constraints: BoxConstraints(w=39.0, h=64.0)\n'
' │ size: Size(39.0, 64.0)\n'
' │ alignment: Alignment.bottomRight\n'
' │ alignment: bottomRight\n'
' │ widthFactor: expand\n'
' │ heightFactor: expand\n'
'\n'
@ -173,7 +173,7 @@ void main() {
' │ parentData: offset=Offset(7.0, 7.0) (can use size)\n'
' │ constraints: BoxConstraints(w=39.0, h=64.0)\n'
' │ size: Size(39.0, 64.0)\n'
' │ alignment: Alignment.bottomRight\n'
' │ alignment: bottomRight\n'
' │ widthFactor: expand\n'
' │ heightFactor: expand\n'
'\n'
@ -281,7 +281,7 @@ void main() {
' │ layer: null\n'
' │ semantics node: null\n'
' │ size: Size(39.0, 64.0)\n'
' │ alignment: Alignment.bottomRight\n'
' │ alignment: bottomRight\n'
' │ textDirection: null\n'
' │ widthFactor: expand\n'
' │ heightFactor: expand\n'
@ -412,7 +412,7 @@ void main() {
' │ isBlockingSemanticsOfPreviouslyPaintedNodes: false\n'
' │ isSemanticBoundary: false\n'
' │ size: Size(39.0, 64.0)\n'
' │ alignment: Alignment.bottomRight\n'
' │ alignment: bottomRight\n'
' │ textDirection: null\n'
' │ widthFactor: expand\n'
' │ heightFactor: expand\n'

View file

@ -42,7 +42,7 @@ void main() {
.where((DiagnosticsNode n) => !n.isFiltered(DiagnosticLevel.info))
.map((DiagnosticsNode n) => n.toString()).toList();
expect(description, <String>[
'alignment: Alignment.center',
'alignment: center',
'minWidth: 1.0',
'maxWidth: 2.0',
'minHeight: 3.0',