Добавлен модуль cfg_oneline.d
This commit is contained in:
parent
4461987947
commit
20b2f6c463
|
@ -1,4 +1,5 @@
|
||||||
# Наработки D
|
# Наработки D
|
||||||
|
|
||||||
**Содержит модули:**
|
**Содержит модули:**
|
||||||
- [cfg.d](cdf.d) - чтение конфигурационного файла в формате `Параметр = Значение`
|
- [cfg.d](cfg.d) - чтение конфигурационного файла в формате `Параметр = Значение`
|
||||||
|
- [cfg_oneline.d](cfg_oneline.d) (тест) - чтение конфигурационного файла в формате `Параметр = Значение`
|
|
@ -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;
|
||||||
|
}
|
Reference in New Issue