@designliquido/delegua-csv
v0.0.2
Published
Biblioteca CSV para Delégua.
Readme
delegua-csv
Biblioteca CSV para a linguagem Delégua.
Uso
- Funções de análise e serialização de CSV.
- Leitura e escrita de arquivos CSV usando uma interface de sistema de arquivos (
SistemaArquivosInterface).
API
Funções de CSV
textoParaObjetoCsv(interpretador, texto, opcoes)- Retorna uma tabela (
TabelaCsv) ou uma lista de registros (RegistroCsv) quandocabecalhoétrue.
- Retorna uma tabela (
objetoCsvParaTexto(interpretador, linhas, opcoes)- Converte uma
TabelaCsvem texto CSV.
- Converte uma
vetorDicionariosParaCsv(interpretador, registros, colunas, opcoes)- Converte um vetor de dicionários (
RegistroCsv[]) em texto CSV.
- Converte um vetor de dicionários (
Funções de arquivo
lerCsv(sistemaArquivos, caminho, opcoes)- Lê um arquivo CSV do sistema de arquivos.
escreverCsv(sistemaArquivos, caminho, linhas, opcoes)- Salva uma
TabelaCsvno caminho informado.
- Salva uma
escreverRegistrosCsv(sistemaArquivos, caminho, registros, colunas, opcoes)- Salva um vetor de dicionários (
RegistroCsv[]) no caminho informado.
- Salva um vetor de dicionários (
Interface de Sistema de Arquivos
A biblioteca não depende de Node.js. Para leitura e escrita de arquivos, implemente SistemaArquivosInterface:
interface SistemaArquivosInterface {
lerArquivo(caminho: string): Promise<string>;
escreverArquivo(caminho: string, conteudo: string): Promise<void>;
}Opções
OpcoesCsvInterface:
delimitador(padrão:,)aspas(padrão:")quebraLinha(padrão:\n)cabecalho(padrão:false)ignorarLinhasVazias(padrão:true)
Exemplos
Analisar CSV
import { textoParaObjetoCsv } from '@designliquido/delegua-csv';
const texto = 'nome,idade\nAna,30\nBeto,25';
const tabela = textoParaObjetoCsv(undefined, texto);
// tabela: [['nome','idade'], ['Ana','30'], ['Beto','25']]
const registros = textoParaObjetoCsv(undefined, texto, { cabecalho: true });
// registros: [{ nome: 'Ana', idade: '30' }, { nome: 'Beto', idade: '25' }]Serializar CSV
import { objetoCsvParaTexto } from '@designliquido/delegua-csv';
const linhas = [
['nome', 'observacao'],
['Ana', 'gosta, de "café"']
];
const texto = objetoCsvParaTexto(undefined, linhas);
// nome,observacao
// Ana,"gosta, de ""café"""Serializar vetor de dicionários
import { vetorDicionariosParaCsv } from '@designliquido/delegua-csv';
const registros = [
{ nome: 'Ana', idade: '30' },
{ nome: 'Beto', idade: '25' }
];
const texto = vetorDicionariosParaCsv(undefined, registros);
// nome,idade
// Ana,30
// Beto,25
// Com colunas específicas:
const texto2 = vetorDicionariosParaCsv(undefined, registros, ['idade', 'nome']);
// idade,nome
// 30,Ana
// 25,BetoLer e salvar CSV
import { lerCsv, escreverCsv, SistemaArquivosInterface } from '@designliquido/delegua-csv';
import * as fs from 'fs/promises';
// Implementação para Node.js
const sistemaArquivos: SistemaArquivosInterface = {
lerArquivo: (caminho) => fs.readFile(caminho, 'utf-8'),
escreverArquivo: (caminho, conteudo) => fs.writeFile(caminho, conteudo, 'utf-8')
};
const dados = await lerCsv(sistemaArquivos, './clientes.csv', { cabecalho: true });
await escreverCsv(sistemaArquivos, './clientes-novo.csv', dados);Testes
yarn testes-unitarios