{"id":25636216,"url":"https://github.com/nik2704/filevalidator","last_synced_at":"2026-04-18T01:33:24.077Z","repository":{"id":278895246,"uuid":"937106233","full_name":"nik2704/FileValidator","owner":"nik2704","description":"валидатор и форматировщик данных","archived":false,"fork":false,"pushed_at":"2025-02-22T11:01:22.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-22T11:28:37.290Z","etag":null,"topics":["dtd","json","xml","yaml","yml"],"latest_commit_sha":null,"homepage":"https://github.com/nik2704/FileValidator","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nik2704.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2025-02-22T10:56:03.000Z","updated_at":"2025-02-22T11:10:06.000Z","dependencies_parsed_at":"2025-02-22T11:28:42.506Z","dependency_job_id":"e7c7f311-b0c3-435e-99d6-00fec64d0a13","html_url":"https://github.com/nik2704/FileValidator","commit_stats":null,"previous_names":["nik2704/filevalidator"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nik2704%2FFileValidator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nik2704%2FFileValidator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nik2704%2FFileValidator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nik2704%2FFileValidator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nik2704","download_url":"https://codeload.github.com/nik2704/FileValidator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240252853,"owners_count":19772187,"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":["dtd","json","xml","yaml","yml"],"created_at":"2025-02-23T00:35:39.620Z","updated_at":"2026-04-18T01:33:24.064Z","avatar_url":"https://github.com/nik2704.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Валидатор и форматировщик данных\n\n## 📋 Описание\n\nЭтот проект предоставляет инструмент для проверки и форматирования файлов в форматах **JSON** и **XML**. Программа позволяет проверять корректность структуры файлов, а также валидировать XML с использованием DTD.\n\n## 🗂️ Структура проекта\n\n```\n├── main.cpp\n├── utils\n│   ├── utils.h\n│   └── utils.cpp\n├── dataformatter\n│   ├── DataFormatter.h\n│   ├── JSONformatter.h\n│   ├── JSONformatter.cpp\n│   ├── XMLformatter.h\n│   ├── XMLformatter.cpp\n└── sample_data\n    ├── json\n    │   ├── json_err_1.txt\n    │   ├── json_err_2.txt\n    │   ├── json_err_3.txt\n    │   ├── json_err_4.txt\n    │   └── json_ok.txt\n    ├── xml\n    │   ├── schema.dtd\n    │   ├── xml_dtd_err.txt\n    │   ├── xml_embedded_dtd.txt\n    │   ├── xml_external_dtd.txt\n    │   ├── xml_ok.txt\n    │   └── xml_syntax_err.txt\n    └── yml\n        ├── yaml_err.txt\n        └── yaml_ok.txt\n```\n\n## ⚙️ Сборка\n\n1. Убедитесь, что у вас установлен компилятор с поддержкой C++98 и следующие библиотеки:\n   - **Boost**\n   - **nlohmann_json**\n   - **LibXml2**\n2. Склонируйте репозиторий:\n   ```bash\n   git clone https://github.com/nik2704/FileValidator\n   cd FileValidator\n   ```\n3. Соберите проект с помощью **CMake**:\n   ```bash\n   mkdir build\n   cd build\n   cmake ..\n   make\n   ```\n\n## Установка\n### Linux\n- **Скачайте нужную версию**: используя ссылку\n    https://github.com/nik2704/FileValidator/releases/latest\n- **Установите пакет (например \"package_name.deb\")**:\n    - using dpkg: ```sudo dpkg -i package_name.deb```\n    - or using apt: ```sudo apt install ./package_name.deb```\n    - or using gdebi: \n        ```\n        sudo apt install gdebi-core\n        sudo gdebi package_name.deb\n        ```\n- **Комманда**: используйте ```validator``` комманду.\n\n### Windows\n- **Сконфигурируйте WSL**: ```wsl --install -d Ubuntu```\n- **Скачайте нужную версию**: используя ссылку\n    https://github.com/nik2704/FileValidator/releases/latest\n- **Установите пакет (например \"package_name.deb\")**: - также как для Linux, например:\n    - using apt: ```sudo apt install ./package_name.deb```\n- **Комманда**: используйте ```validator``` комманду.\n\n## 🚀 Использование\n\nПрограмма поддерживает проверку и форматирование JSON, XML и YAML файлов.\n\n### 📖 Примеры запуска:\n\n1. **Проверка JSON файла на корректность:**\n   ```bash\n   ./validator -s sample_data/json/json_ok.txt -f json -c check-format\n   ```\n\n2. **Проверка XML с DTD:**\n   ```bash\n   ./validator -s sample_data/xml/xml_ok.txt -f xml -d sample_data/xml/schema.dtd\n   ```\n\n### 🛠️ Доступные опции:\n\n| Параметр            | Описание                                                          |\n|---------------------|-------------------------------------------------------------------|\n| `-s, --input`       | **(Обязательный)** Имя входного файла                             |\n| `-f, --format`      | Формат файла: `json`, `xml` (по умолчанию: json)                  |\n| `-c, --check`       | Тип проверки: `check-format` или `format` (по умолчанию: format)  |\n| `-d, --dtd`         | Имя файла DTD для проверки XML                                    |\n| `-o, --output`      | Вывод результата: `console` или `file` (по умолчанию: console)    |\n| `-t, --target`      | Имя целевого файла для вывода (если выбран `file`)                |\n| `-e, --xml_element` | Имя элемента для проверки (только для XML)                        |\n| `-a, --xml_attr`    | Имя атрибута для проверки (только для XML)                        |\n| `-h, --help`        | Показать справку по командам                                      |\n\n## 🧩 Архитектура\n\n- **DataFormatter** — абстрактный базовый класс для всех форматтеров.\n- **JsonFormatter**, **XmlFormatter**, **YamlFormatter** — реализации для проверки и форматирования соответствующих форматов.\n- **utils** — вспомогательные функции для валидации и обработки данных.\n- **sample_data** — примеры входных файлов для тестирования.\n\n## 🧪 Тестовые файлы\n\n- **JSON:** правильные и ошибочные примеры.\n- **XML:** файлы с различными DTD, валидные и с ошибками.\n\n## 💡 Планы по развитию\n\n- Добавить поддержку **XSD** для XML.\n- Улучшить обработку ошибок.\n- Реализовать модульные тесты с использованием **Boost.Test**.\n\n## 🖋️ Автор\n\n- **Николай**\n\n## 📄 Лицензия\n\nЭтот проект лицензируется под MIT License.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnik2704%2Ffilevalidator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnik2704%2Ffilevalidator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnik2704%2Ffilevalidator/lists"}