Skip to content
This repository has been archived by the owner on May 4, 2019. It is now read-only.

Commit

Permalink
fix(csv-entry): seperate long function and valid namespace in CsvEntry
Browse files Browse the repository at this point in the history
  • Loading branch information
Ingyu Woo committed Aug 23, 2018
1 parent d8972cf commit c09718a
Showing 1 changed file with 76 additions and 30 deletions.
106 changes: 76 additions & 30 deletions src/CsvEntry/CsvEntryModels.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,43 +4,89 @@ export interface CsvRowModel extends ItemRevisionModel {
index: number;
}

export function parseCsv(csvValue?: string, namespaces?: NamespaceModel[]): CsvRowModel[] {
const data: CsvRowModel[] = [];
export function parseCsv(
csvValue?: string,
namespaces?: NamespaceModel[]
): CsvRowModel[] {
let data: CsvRowModel[] = [];

if (csvValue) {
if (csvValue && namespaces) {
const lines = csvValue.split("\n");
let index = 0;

for (const line of lines) {
const values = line.split(",");

const row: CsvRowModel = {
index,
namespace: values[0]
};

if (values.length === 4) {
row.hasBankKey = true;
row.bankKey = +values[1];
row.itemKey = +values[2];
row.section = values[3];
} else if (values.length === 3) {
row.hasBankKey = false;
row.bankKey = getBankKeyByNamespace(row.namespace, namespaces);
row.itemKey = +values[1];
row.section = values[2];
}

data.push(row);
index = index + 1;
data = parseLines(lines, namespaces);
}

return data;
}

function parseLines(lines: string[], namespaces: NamespaceModel[]) {
const data: CsvRowModel[] = [];
let index = 0;

for (const line of lines) {
const values = line.split(",");

const row: CsvRowModel = { index };
// row.namespace = values[0];
setNamespace(row, values[0], namespaces);

if (values.length === 4) {
setCsvRowWithBankKey(row, values);
} else if (values.length === 3) {
setCsvRowWithoutBankKey(row, values, namespaces);
} else {
continue;
}

data.push(row);
index = index + 1;
}

return data;
}

function getBankKeyByNamespace(namespace?: string, namespaces?: NamespaceModel[]): number | undefined {
function setNamespace(
row: CsvRowModel,
namespace: string,
namespaces: NamespaceModel[]
) {
const matchedNamespace: NamespaceModel = namespaces.find(
s => s.name === namespace
);
if (matchedNamespace) {
row.namespace = matchedNamespace.name;
}
}

function setCsvRowWithBankKey(row: CsvRowModel, values: string[]) {
row.hasBankKey = true;
row.bankKey = +values[1];
row.itemKey = +values[2];
row.section = values[3];
}

function setCsvRowWithoutBankKey(
row: CsvRowModel,
values: string[],
namespaces: NamespaceModel[]
) {
row.hasBankKey = false;
row.bankKey = getBankKeyByNamespace(row.namespace, namespaces);
row.itemKey = +values[1];
row.section = values[2];
}

function getBankKeyByNamespace(
namespace?: string,
namespaces?: NamespaceModel[]
): number | undefined {
let bankKey: number | undefined;

if (namespaces) {
return namespaces.filter(s => s.name === namespace)[0].bankKey;
const matchedNamespace: NamespaceModel = namespaces.find(
s => s.name === namespace
);
if (matchedNamespace) bankKey = matchedNamespace.bankKey;
}
}

return bankKey;
}

0 comments on commit c09718a

Please sign in to comment.