Skip to content

Commit

Permalink
♻️Configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
lsaudon committed Sep 12, 2023
1 parent b13f22a commit 8d2cc0e
Show file tree
Hide file tree
Showing 11 changed files with 26 additions and 64 deletions.
3 changes: 1 addition & 2 deletions src/codeActions/localizationActionProvider.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import * as vscode from 'vscode';
import { CommandParameters } from '../commands/commandParameters';
import { InputBoxCommand } from '../commands/inputBoxCommand';
import { empty } from '../shared/constants';
import { getUnescapedString } from '../shared/parser/parser';

export class LocalizationActionProvider implements vscode.CodeActionProvider {
public static readonly providedCodeActionKinds = [vscode.CodeActionKind.QuickFix];

provideCodeActions(document: vscode.TextDocument, range: vscode.Range): vscode.ProviderResult<vscode.CodeAction[]> {
const text = getUnescapedString(document.getText(range));
if (text === empty) {
if (text === '') {
return;
}

Expand Down
7 changes: 3 additions & 4 deletions src/extension/getArbFiles.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import * as vscode from 'vscode';
import * as yaml from 'yaml';
import { defaultYamlFile, first, parentSection, yamlFileSection } from '../shared/constants';
import { getConfiguration } from './getConfiguration';
import { getYamlFileName } from '../shared/configuration';

export async function getArbFiles(projectName: string): Promise<[vscode.Uri[], vscode.Uri | undefined]> {
const yamlFileName = getConfiguration(parentSection).get<string>(yamlFileSection, defaultYamlFile);
const yamlFileName = getYamlFileName;

let yamlFiles = await vscode.workspace.findFiles(`**/${projectName}/${yamlFileName}`);
if (yamlFiles.length === 0) {
Expand All @@ -16,7 +15,7 @@ export async function getArbFiles(projectName: string): Promise<[vscode.Uri[], v
vscode.window.showErrorMessage(errorMessage);
throw new Error(errorMessage);
}
const yamlFile = yamlFiles[first];
const yamlFile = yamlFiles[0];
const textDocument = await vscode.workspace.openTextDocument(yamlFile);
const parsedConfiguration = yaml.parseDocument(textDocument.getText());
const arbDir = parsedConfiguration.get('arb-dir') as string;
Expand Down
18 changes: 4 additions & 14 deletions src/extension/getChangesForArbFiles.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,7 @@
import * as vscode from 'vscode';
import {
appLocalizationsVariableSection,
arbSortSection,
copyMetadataInAllFilesSection,
defaultArbSort,
defaultCopyMetadataInAllFiles,
defaultVariable,
parentSection,
} from '../shared/constants';
import { getAppLocalizationsVariable, getCopyMetadataInAllFiles, getSortArbEnabled } from '../shared/configuration';
import { EditFilesParameters } from '../commands/editFilesParameters';
import { getArbFiles } from './getArbFiles';
import { getConfiguration } from './getConfiguration';
import { getFunctionCall } from './getFunctionCall';
import { getProjectName } from './getProjectName';
import { toJson } from './toJson';
Expand All @@ -33,19 +24,18 @@ export async function getChangesForArbFiles(parameters: EditFilesParameters): Pr
const workspaceEdit = new vscode.WorkspaceEdit();
const { key, value } = parameters.keyValue;
const { description, placeholders } = parameters;
const sortArbEnabled = getConfiguration(parentSection).get<boolean>(arbSortSection, defaultArbSort);

const sortArbEnabled = getSortArbEnabled;
(await Promise.all(openTextDocuments)).forEach((content, index) => {
const file = files[index];
const isMetadataEnabled = getConfiguration(parentSection).get<boolean>(copyMetadataInAllFilesSection, defaultCopyMetadataInAllFiles);
const isMetadataEnabled = getCopyMetadataInAllFiles;
workspaceEdit.replace(
file,
new vscode.Range(new vscode.Position(0, 0), new vscode.Position(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER)),
toJson(content.getText(), isMetadataEnabled || file === templateFile, key, description, value, placeholders, sortArbEnabled),
);
});

const appLocalizationsVariable = getConfiguration(parentSection).get<string>(appLocalizationsVariableSection, defaultVariable);
const appLocalizationsVariable = getAppLocalizationsVariable;
workspaceEdit.replace(
parameters.uri,
parameters.range,
Expand Down
5 changes: 0 additions & 5 deletions src/extension/getConfiguration.ts

This file was deleted.

3 changes: 1 addition & 2 deletions src/extension/getProjectName.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import * as vscode from 'vscode';
import { empty, first } from '../shared/constants';

export function getProjectName(documentUri: vscode.Uri): string {
return documentUri.path.split('/lib/')[first].split('/').pop() ?? empty;
return documentUri.path.split('/lib/')[0].split('/').pop() ?? '';
}
5 changes: 2 additions & 3 deletions src/extension/runFlutterPubGet.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import { defaultGeneration, generationEnabledSection, parentSection } from '../shared/constants';
import { getConfiguration } from './getConfiguration';
import { getGenerationActivted } from '../shared/configuration';
import { runIfExist } from './runIfExist';

export async function runGeneration(): Promise<void> {
if (!getConfiguration(parentSection).get<boolean>(generationEnabledSection, defaultGeneration)) {
if (!getGenerationActivted) {
return;
}
await runIfExist('flutter.task.genl10n');
Expand Down
6 changes: 3 additions & 3 deletions src/extension/setEditFilesParameters.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/* eslint-disable max-depth */
/* eslint-disable no-await-in-loop */
import { LionizationPickItem, showQuickPick } from '../quickPick/showQuickPick';
import { defaultHaveDescription, haveDescriptionSection, parentSection } from '../shared/constants';

import { includeInCustomPattern, includeInDecimalDigits, includeInSymbol, validNumberFormats } from '../placeholders/numberFormat';
import { CommandParameters } from '../commands/commandParameters';
import { EditFilesParameters } from '../commands/editFilesParameters';
Expand All @@ -10,7 +10,7 @@ import { Placeholder } from '../placeholders/placeholder';
import { PlaceholderType } from '../placeholders/placeholderType';
import { camelize } from '../shared/camelize';
import { extractInterpolatedVariables } from '../shared/parser/parser';
import { getConfiguration } from './getConfiguration';
import { getHaveDescription } from '../shared/configuration';
import { showDateFormatQuickPick } from '../placeholders/dateFormatQuickPick';
import { showInputBox } from '../inputBox/showInputBox';
import { showPlaceholderQuickPick } from '../placeholders/placeholderQuickPick';
Expand Down Expand Up @@ -67,7 +67,7 @@ export async function setEditFilesParameters(commandParameters: CommandParameter
const key = await showInputBox('Enter the message name', camelize(commandParameters.value));

let description = null;
if (getConfiguration(parentSection).get<boolean>(haveDescriptionSection, defaultHaveDescription)) {
if (getHaveDescription) {
description = await showInputBox('Enter the description', '');
}

Expand Down
6 changes: 2 additions & 4 deletions src/shared/camelize.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import { empty } from './constants';

export const camelize = (value: string): string =>
value
.normalize('NFD')
.replace(/[\u0300-\u036F]/u, empty)
.replace(/[\u0300-\u036F]/u, '')
.split(/[^a-zA-Z0-9]/u)
.map((element, index) => (index === 0 ? element.toLowerCase() : element.charAt(0).toUpperCase() + element.substring(1).toLowerCase()))
.join(empty);
.join('');
9 changes: 9 additions & 0 deletions src/shared/configuration.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import * as vscode from 'vscode';

const getConfiguration = vscode.workspace.getConfiguration('l10nization');
export const getYamlFileName = getConfiguration.get<string>('yamlFile', 'l10n.yaml');
export const getAppLocalizationsVariable = getConfiguration.get<string>('appLocalizationsVariable', 'l10n');
export const getHaveDescription = getConfiguration.get<boolean>('haveMetadatas', false);
export const getCopyMetadataInAllFiles = getConfiguration.get<boolean>('copyMetadataInAllFiles', true);
export const getSortArbEnabled = getConfiguration.get<boolean>('arbSort', true);
export const getGenerationActivted = getConfiguration.get<boolean>('flutterPubGetEnabled', true);
25 changes: 0 additions & 25 deletions src/shared/constants.ts

This file was deleted.

3 changes: 1 addition & 2 deletions src/shared/parser/parser.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { empty } from '../constants';
import { escapeSequences } from './escape';

export const getUnescapedString = (input: string): string => escapeSequences.find((e) => input.startsWith(e.start))?.getUnescapedString(input) ?? empty;
export const getUnescapedString = (input: string): string => escapeSequences.find((e) => input.startsWith(e.start))?.getUnescapedString(input) ?? '';

export const extractInterpolatedVariables = (input: string): string[] => Array.from(input.matchAll(/\$\{?([^\s{}]+)\}?/gu), (match) => match[1]);

0 comments on commit 8d2cc0e

Please sign in to comment.