@@ -18,16 +18,17 @@ class FeatureFile {
1818 this .includeIntegrationTestBinding = false ,
1919 this .existingSteps = const < String , String > {},
2020 this .generatorOptions = const GeneratorOptions (),
21- }) : _lines = _prepareLines (
22- input.split ('\n ' ).map ((line) => line.trim ()).map (BddLine .new ),
23- ),
24- hookFile = generatorOptions.addHooks
25- ? HookFile .create (
26- featureDir: featureDir,
27- package: package,
28- generatorOptions: generatorOptions,
29- )
30- : null {
21+ }) : _lines = _prepareLines (
22+ input.split ('\n ' ).map ((line) => line.trim ()).map (BddLine .new ),
23+ ),
24+ hookFile =
25+ generatorOptions.addHooks
26+ ? HookFile .create (
27+ featureDir: featureDir,
28+ package: package,
29+ generatorOptions: generatorOptions,
30+ )
31+ : null {
3132 _testerType = parseCustomTagFromFeatureTagLine (
3233 _lines,
3334 generatorOptions.testerType,
@@ -40,23 +41,25 @@ class FeatureFile {
4041 testerNameTag,
4142 );
4243
43- _stepFiles = _lines
44- .where (
45- (line) =>
46- line.type == LineType .step || line.type == LineType .dataTableStep,
47- )
48- .map (
49- (bddLine) => StepFile .create (
50- featureDir,
51- package,
52- bddLine,
53- existingSteps,
54- generatorOptions,
55- _testerType,
56- _testerName,
57- ),
58- )
59- .toList ();
44+ _stepFiles =
45+ _lines
46+ .where (
47+ (line) =>
48+ line.type == LineType .step ||
49+ line.type == LineType .dataTableStep,
50+ )
51+ .map (
52+ (bddLine) => StepFile .create (
53+ featureDir,
54+ package,
55+ bddLine,
56+ existingSteps,
57+ generatorOptions,
58+ _testerType,
59+ _testerName,
60+ ),
61+ )
62+ .toList ();
6063 }
6164
6265 late List <StepFile > _stepFiles;
@@ -75,52 +78,57 @@ class FeatureFile {
7578 final HookFile ? hookFile;
7679
7780 String get dartContent => generateFeatureDart (
78- _lines,
79- getStepFiles (),
80- generatorOptions.testMethodName,
81- _testerType,
82- _testerName,
83- includeIntegrationTestBinding,
84- includeIntegrationTestImport,
85- hookFile,
86- generatorOptions,
87- );
81+ _lines,
82+ getStepFiles (),
83+ generatorOptions.testMethodName,
84+ _testerType,
85+ _testerName,
86+ includeIntegrationTestBinding,
87+ includeIntegrationTestImport,
88+ hookFile,
89+ generatorOptions,
90+ );
8891
8992 List <StepFile > getStepFiles () => _stepFiles;
9093
9194 static List <BddLine > _prepareLines (Iterable <BddLine > input) {
92- final lines = input.mapIndexed (
93- (index, bddLine) {
94- final isStep = bddLine.type == LineType .step;
95- final hasExamplesFormat = data_table_parser.hasExamplesFormat (
96- bddLine: bddLine,
97- );
98- final isNextTable = data_table_parser.isTable (
99- lines: input.toList (),
100- index: index + 1 ,
101- );
102- if (isStep && ! hasExamplesFormat && isNextTable) {
103- return BddLine .fromRawValue (LineType .dataTableStep, bddLine.rawLine);
104- } else {
105- return bddLine;
106- }
107- },
108- ).toList (growable: false );
95+ final lines = input
96+ .mapIndexed (
97+ (index, bddLine) {
98+ final isStep = bddLine.type == LineType .step;
99+ final hasExamplesFormat = data_table_parser.hasExamplesFormat (
100+ bddLine: bddLine,
101+ );
102+ final isNextTable = data_table_parser.isTable (
103+ lines: input.toList (),
104+ index: index + 1 ,
105+ );
106+ if (isStep && ! hasExamplesFormat && isNextTable) {
107+ return BddLine .fromRawValue (
108+ LineType .dataTableStep,
109+ bddLine.rawLine,
110+ );
111+ } else {
112+ return bddLine;
113+ }
114+ },
115+ )
116+ .toList (growable: false );
109117
110118 final headers = lines
111119 .takeWhile ((value) => value.type != LineType .feature)
112120 .where ((value) => value.type == LineType .unknown)
113121 .foldIndexed (
114- // this removes empty line dupicates
115- < BddLine > [],
116- (index, headers, line) => [
117- ...headers,
118- if (index == 0 && line.rawLine != '\n ' && line.rawLine.isNotEmpty)
119- line
120- else if (headers.isNotEmpty && headers.last.rawLine != line.rawLine)
121- line,
122- ],
123- );
122+ // this removes empty line dupicates
123+ < BddLine > [],
124+ (index, headers, line) => [
125+ ...headers,
126+ if (index == 0 && line.rawLine != '\n ' && line.rawLine.isNotEmpty)
127+ line
128+ else if (headers.isNotEmpty && headers.last.rawLine != line.rawLine)
129+ line,
130+ ],
131+ );
124132 final steps = lines.where ((value) => value.type != LineType .unknown);
125133 return [...headers, ...steps];
126134 }
0 commit comments