Добавлен модуль cfg_oneline.d

This commit is contained in:
Alexander 2022-05-05 23:57:09 +03:00
parent 4461987947
commit 20b2f6c463
2 changed files with 29 additions and 1 deletions

View File

@ -1,4 +1,5 @@
# Наработки D # Наработки D
**Содержит модули:** **Содержит модули:**
- [cfg.d](cdf.d) - чтение конфигурационного файла в формате `Параметр = Значение` - [cfg.d](cfg.d) - чтение конфигурационного файла в формате `Параметр = Значение`
- [cfg_oneline.d](cfg_oneline.d) (тест) - чтение конфигурационного файла в формате `Параметр = Значение`

27
cfg_oneline.d Normal file
View File

@ -0,0 +1,27 @@
module azh.cfg_oneline;
import std.regex;
import std.stdio;
import std.algorithm;
import std.array;
import std.typecons;
import std.functional;
/**
* Тестовая функция
* Params:
* path = путь к файлу конфигурации
* Returns: ассоциативный массив ['Параметр' => 'Значение']
*/
string[string] readConfigFile(string path)
{
auto p_property = regex(r"^ *(\w+) *= *(.+) *$", "r");
const properties = File(path)
.byLineCopy
.map!(line => matchFirst(line, p_property))
.filter!(m => !m.empty) // OR: .filter!(not!empty)
.map!(m => tuple(m[1], m[2]))
.assocArray;
return properties;
}