LCOV - code coverage report
Current view: top level - src/templates - map_extension_template.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 0 25 0.0 %
Date: 2021-10-15 15:56:51 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:enum_assist/src/templates/template_core.dart';
       2             : import 'package:enum_assist/src/util/util.dart';
       3             : 
       4             : /// {@template enum_assist.map_template}
       5             : /// Returns the map extension template
       6             : /// {@endtemplate}
       7             : class MapTemplate extends TemplateCoreSimple<_Item> {
       8             :   /// {@macro enum_assist.map_template}
       9           0 :   MapTemplate(String enumName, Iterable<String> fields)
      10           0 :       : super(enumName, fields);
      11             : 
      12           0 :   @override
      13             :   StringBuffer writeTemplate(StringBuffer buffer) {
      14             :     buffer
      15           0 :       ..writeln('/// Map of all values of the enum')
      16           0 :       ..writeobj(
      17             :         'T map<T extends Object?>',
      18             :         open: '({',
      19           0 :         body: (mapBuffer, tab) {
      20           0 :           mapBuffer.writeln(map((i) => tabn(i.arg, tab)));
      21             :         },
      22             :         close: '})',
      23             :       )
      24           0 :       ..writeobj(
      25             :         '',
      26           0 :         body: (bodyBuffer, bodyTab) {
      27           0 :           bodyBuffer.writeobj(
      28             :             'switch(this)',
      29             :             tab: bodyTab,
      30           0 :             body: (switchBuffer, bodyTab) {
      31           0 :               String cases(_Item item) {
      32           0 :                 String _tab([int n = 0]) => tabn('', bodyTab + n);
      33           0 :                 return item.caseItem(_tab(), _tab(1));
      34             :               }
      35             : 
      36           0 :               switchBuffer.writeln(map(cases));
      37             :             },
      38             :           );
      39             :         },
      40             :       );
      41             : 
      42             :     return buffer;
      43             :   }
      44             : 
      45           0 :   @override
      46           0 :   _Item convert(String e) => _Item(enumName, e);
      47             : }
      48             : 
      49             : class _Item extends FieldTemplate<String> {
      50           0 :   const _Item(String enumName, String field) : super(enumName, field);
      51             : 
      52           0 :   String get arg => 'required T $field,';
      53           0 :   String get wholeEnum => '$enumName.$field';
      54           0 :   String get caseString => 'case $wholeEnum:';
      55           0 :   String get returnString => 'return $field;';
      56           0 :   String caseItem(String caseTab, String returnTab) => '''
      57           0 : $caseTab$caseString
      58           0 : $returnTab$returnString''';
      59             : }

Generated by: LCOV version 1.15