{"id":26014538,"url":"https://github.com/brenonsc/libcsv","last_synced_at":"2025-06-22T07:05:58.069Z","repository":{"id":248639508,"uuid":"827439118","full_name":"brenonsc/LibCSV","owner":"brenonsc","description":"Biblioteca criada em C, com o objetivo de fazer o processamento e filtragem de CSVs.","archived":false,"fork":false,"pushed_at":"2024-07-21T13:53:05.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-06T02:36:17.672Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brenonsc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-11T16:42:40.000Z","updated_at":"2024-07-21T13:55:39.000Z","dependencies_parsed_at":"2024-07-21T16:25:00.247Z","dependency_job_id":null,"html_url":"https://github.com/brenonsc/LibCSV","commit_stats":null,"previous_names":["brenonsc/libcsv"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/brenonsc/LibCSV","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brenonsc%2FLibCSV","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brenonsc%2FLibCSV/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brenonsc%2FLibCSV/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brenonsc%2FLibCSV/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brenonsc","download_url":"https://codeload.github.com/brenonsc/LibCSV/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brenonsc%2FLibCSV/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261250275,"owners_count":23130541,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-06T02:31:40.795Z","updated_at":"2025-06-22T07:05:53.058Z","avatar_url":"https://github.com/brenonsc.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LibCSV 📚\n![Language](https://badgen.net/badge/Language/C/green?icon=)\n![License](https://badgen.net/badge/License/MIT/purple?icon=)\n![Docker](https://badgen.net/badge/icon/Available?icon=docker\u0026label)\n\nLibCSV é uma biblioteca em C para processamento de arquivos CSV, permitindo a aplicação de filtros e a seleção de colunas conforme especificado. A biblioteca é projetada para ser utilizada como uma biblioteca compartilhada (.so) em aplicações C.\n\u003cbr\u003e\n\n## Objetivo ✅\nImplementar uma que faça a seleção de colunas e aplicação de filtros de forma eficiente. A biblioteca oferece funções para processamento de dados CSV diretamente de strings ou arquivos, produzindo saídas filtradas e formatadas conforme especificações fornecidas pelo usuário. Ideal para aplicações que necessitam de manipulação dinâmica e precisa de grandes volumes de dados CSV, LibCSV suporta filtros de comparação (\u003e, \u003c, =, !=, \u003e= e \u003c=) e garante a integridade e a ordem das colunas e filtros, atendendo a requisitos de desempenho e compatibilidade com a arquitetura x86_64.\n\u003cbr\u003e\n\n## Testando a aplicação 👨‍🔬\nPara configurar a aplicação para executar em ambiente local, é necessário ter instalado o Docker, e assim seguir o passo a passo abaixo:\n\n#### 1. Clone o Projeto\n\n```bash\ngit clone https://github.com/brenonsc/LibCSV.git\ncd LibCSV\n```\n\n#### 2. Construa a imagem no Docker\n\n```bash\ndocker build -t libcsv .\n```\n**Observação:** Caso o sistema em uso seja de uma arquitetura diferente de x86_64, é necessário adicionar a flag `--platform=linux/arm64`.\n\n#### 3. Rode o contêiner\n\n```bash\ndocker run -d libcsv\n```\n\u003cbr\u003e\n\n## Funções da biblioteca e seus respectivos atributos  :pushpin:\nprocessCsv\n- csv: String com os dados do CSV, onde cada linha representa um registro e as colunas são separadas por vírgulas.\n    - Exemplo: `\"header1,header2,header3\\n1,2,3\\n4,5,6\"`\n- selectedColumns: Uma string onde os nomes das colunas a serem selecionadas são separados por vírgulas.\n    - Exemplo: `\"header1,header3\"`\n- rowFilterDefinitions: Uma string onde cada filtro é definido em uma nova linha, no formato `header(comparador)valor`.\n    - Exemplo: `\"header1\u003e1\\nheader2=2\\nheader3\u003c6\"`\n\nprocessCsvFile\n- csvFilePath: String com o caminho do arquivo CSV.\n    - Exemplo: `\"path/to/csv_file.csv\"`\n- selectedColumns: Uma string onde os nomes das colunas a serem selecionadas são separados por vírgulas.\n    - Exemplo: `\"header1,header3\"`\n- rowFilterDefinitions: Uma string onde cada filtro é definido em uma nova linha, no formato `header(comparador)valor`.\n    - Exemplo: `\"header1\u003e1\\nheader2=2\\nheader3\u003c6\"`\n\n\u003cbr\u003e\n\nExemplo:\n\n```c\nconst char csv[] = \"header1,header2,header3\\n1,2,3\\n4,5,6\\n7,8,9\";\nprocessCsv(csv, \"header1,header3\", \"header1\u003e1\\nheader3\u003c8\");\n\n// output\n// header1,header3\n// 4,6\n\nconst char csv_file[] = \"path/to/csv_file.csv\";\nprocessCsvFile(csv_file, \"header1,header3\", \"header1\u003e1\\nheader3\u003c8\");\n\n// output\n// header1,header3\n// 4,6\n```\n\n\u003cbr\u003e\n\n## Testes Unitários :test_tube:\nA aplicação contempla testes unitários utilizando-se de CUnit, e está presente dentro da pasta `test`. Caso queira, os mesmos podem ser acessados da seguinte forma (após a clonagem do repositório):\n\n#### 1. Acesse o diretório\n\n```bash\ncd test\n```\n\n#### 2. Rode o comando make\n\n```bash\nmake\n```\n\n#### 3. Rode os testes\n\n```bash\n./test_libcsv\n```\n\u003cbr\u003e\n\n## Licença \n\nEste software está licenciado sob a [Licença MIT](https://github.com/brenonsc/LibCSV/blob/main/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrenonsc%2Flibcsv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrenonsc%2Flibcsv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrenonsc%2Flibcsv/lists"}