From dbfb4f32fecf6bf8394d22a91561cdf79b27701e Mon Sep 17 00:00:00 2001 From: Plague Fox Date: Fri, 23 Aug 2024 14:33:36 +0400 Subject: [PATCH] Improve handling of states in sealed-states.command.ts --- src/commands/sealed-states.command.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/commands/sealed-states.command.ts b/src/commands/sealed-states.command.ts index 4389ea1..32ac9db 100644 --- a/src/commands/sealed-states.command.ts +++ b/src/commands/sealed-states.command.ts @@ -180,10 +180,10 @@ export const sealedStates = async (uri: Uri) => { } codeBuilder.push(`}`); - codeBuilder.push(''); // Generate the classes for each state Object.values(stateFormats).forEach(({ pascalCase, snakeCase }) => { + codeBuilder.push(''); codeBuilder.push(`/// ${pascalCase}`); codeBuilder.push(`final class \${1}\\$${pascalCase} extends \${1} {`); @@ -200,54 +200,53 @@ export const sealedStates = async (uri: Uri) => { } codeBuilder.push(`}`); - codeBuilder.push(''); }); // Base class definition with pattern matching methods if (patternMatchingOption) { + codeBuilder.push(''); codeBuilder.push(`/// Pattern matching for [\${1}].`); codeBuilder.push(`typedef \${1}Match = R Function(S element);`); - codeBuilder.push(''); } // Base class definition + codeBuilder.push(''); codeBuilder.push('@immutable'); codeBuilder.push(`abstract base class _\\$\${1}Base {`); codeBuilder.push(` const _\\$\${1}Base({required this.data, required this.message});`); - codeBuilder.push(''); // Type alias if (typeAliasOption) { + codeBuilder.push(''); codeBuilder.push(` /// Type alias for [\${1}].`); codeBuilder.push(` abstract final String type;`); - codeBuilder.push(''); } // Data entity payload + codeBuilder.push(''); codeBuilder.push(` /// Data entity payload.`); codeBuilder.push(` @nonVirtual`); codeBuilder.push(` final ${dataType} data;`); - codeBuilder.push(''); // Message or description + codeBuilder.push(''); codeBuilder.push(` /// Message or description.`); codeBuilder.push(` @nonVirtual`); codeBuilder.push(` final String message;`); - codeBuilder.push(''); // Check existence of data if (nullableDataOption) { + codeBuilder.push(''); codeBuilder.push(` /// Has data?`); codeBuilder.push(` bool get hasData => data != null;`); - codeBuilder.push(''); } // Property getters if (propertyGettersOption) { Object.values(stateFormats).forEach(({ pascalCase, snakeCase }) => { + codeBuilder.push(''); codeBuilder.push(` /// Check if is ${pascalCase}.`); codeBuilder.push(` bool get is${pascalCase} => this is \${1}\\$${pascalCase};`); - codeBuilder.push(''); }); }