// Copyright (c) 2018, 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.

// Don't modify this file by hand! It's generated by tool/generate.dart.

import 'glyph_set.dart';

/// A [GlyphSet] that includes only ASCII glyphs.
class AsciiGlyphSet implements GlyphSet {
  const AsciiGlyphSet();

  /// Returns [glyph] if `this` supports Unicode glyphs and [alternative]
  /// otherwise.
  @override
  String glyphOrAscii(String glyph, String alternative) => alternative;
  @override
  String get bullet => '*';
  @override
  String get leftArrow => '<';
  @override
  String get rightArrow => '>';
  @override
  String get upArrow => '^';
  @override
  String get downArrow => 'v';
  @override
  String get longLeftArrow => '<=';
  @override
  String get longRightArrow => '=>';
  @override
  String get horizontalLine => '-';
  @override
  String get verticalLine => '|';
  @override
  String get topLeftCorner => ',';
  @override
  String get topRightCorner => ',';
  @override
  String get bottomLeftCorner => "'";
  @override
  String get bottomRightCorner => "'";
  @override
  String get cross => '+';
  @override
  String get teeUp => '+';
  @override
  String get teeDown => '+';
  @override
  String get teeLeft => '+';
  @override
  String get teeRight => '+';
  @override
  String get upEnd => "'";
  @override
  String get downEnd => ',';
  @override
  String get leftEnd => '-';
  @override
  String get rightEnd => '-';
  @override
  String get horizontalLineBold => '=';
  @override
  String get verticalLineBold => '|';
  @override
  String get topLeftCornerBold => ',';
  @override
  String get topRightCornerBold => ',';
  @override
  String get bottomLeftCornerBold => "'";
  @override
  String get bottomRightCornerBold => "'";
  @override
  String get crossBold => '+';
  @override
  String get teeUpBold => '+';
  @override
  String get teeDownBold => '+';
  @override
  String get teeLeftBold => '+';
  @override
  String get teeRightBold => '+';
  @override
  String get upEndBold => "'";
  @override
  String get downEndBold => ',';
  @override
  String get leftEndBold => '-';
  @override
  String get rightEndBold => '-';
  @override
  String get horizontalLineDouble => '=';
  @override
  String get verticalLineDouble => '|';
  @override
  String get topLeftCornerDouble => ',';
  @override
  String get topRightCornerDouble => ',';
  @override
  String get bottomLeftCornerDouble => '"';
  @override
  String get bottomRightCornerDouble => '"';
  @override
  String get crossDouble => '+';
  @override
  String get teeUpDouble => '+';
  @override
  String get teeDownDouble => '+';
  @override
  String get teeLeftDouble => '+';
  @override
  String get teeRightDouble => '+';
  @override
  String get horizontalLineDoubleDash => '-';
  @override
  String get horizontalLineDoubleDashBold => '-';
  @override
  String get verticalLineDoubleDash => '|';
  @override
  String get verticalLineDoubleDashBold => '|';
  @override
  String get horizontalLineTripleDash => '-';
  @override
  String get horizontalLineTripleDashBold => '-';
  @override
  String get verticalLineTripleDash => '|';
  @override
  String get verticalLineTripleDashBold => '|';
  @override
  String get horizontalLineQuadrupleDash => '-';
  @override
  String get horizontalLineQuadrupleDashBold => '-';
  @override
  String get verticalLineQuadrupleDash => '|';
  @override
  String get verticalLineQuadrupleDashBold => '|';
}
