aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md118
1 files changed, 118 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..1c0eb9e
--- /dev/null
+++ b/README.md
@@ -0,0 +1,118 @@
+# conf
+
+Go библиотека для чтения конфигурационных файлов в формате `.conf`.
+
+## Установка
+
+```bash
+go get go.neonxp.ru/conf
+```
+
+## Особенности формата
+
+- Простые присваивания: `key = value;`
+- Строковые значения: `"text"` или `'text'`
+- Многострочные строки: ``` `text` ```
+- Числовые значения: целые и дробные, включая отрицательные
+- Булевы значения: `true` / `false`
+- Директивы/команды: `directive arg1 arg2;`
+- Групповые директивы с блоками кода: `directive { ... }`
+- Комментарии от `#` до конца строки
+- Поддержка кириллицы и UTF-8
+
+## Пример использования
+
+```go
+package main
+
+import (
+ "fmt"
+ "go.neonxp.ru/conf"
+)
+
+func main() {
+ doc, err := conf.LoadFile("./config.conf")
+ if err != nil {
+ panic(err)
+ }
+
+ // Получение значения по ключу
+ values := doc.Get("my_key")
+ fmt.Println(values)
+
+ // Получение команд по имени
+ commands := doc.Commands("directivename")
+ fmt.Println(commands)
+
+ // Все переменные
+ vars := doc.Vars()
+
+ // Все элементы документа
+ items := doc.Items()
+}
+```
+
+## Пример конфигурационного файла
+
+```conf
+# Пример конфигурации
+
+# Простое присваивание
+simple_key = value;
+
+# Многострочное присваивание
+string_key =
+ "value"
+ 'string';
+
+# Многострочные строки (backticks)
+multiline_string = `
+ multiline
+ string
+ 123
+`;
+
+# Числа и булевы значения
+int_key = -123.456;
+bool_key = true;
+
+# Директивы
+expression1 argument1 "argument2" 123;
+
+# Групповая директива
+group_directive_without_arguments {
+ expression1 argument2 "string" 123 true;
+ expression2 argument3 "string111" 123321 false;
+
+ children_group "some argument" {
+ # Вложенная группа
+ }
+}
+
+# Групповая директива с аргументами
+group_directive_with_argument "argument1" 'argument2' {
+ child_val = "children value";
+}
+```
+
+## API
+
+### Функции
+
+- `LoadFile(filename string) (*model.Doc, error)` - загрузка конфигурации из файла
+- `Load(name string, input []byte) (*model.Doc, error)` - парсинг конфигурации из байтов
+
+### Методы `*model.Doc`
+
+- `Get(key string) Values` - получить значения по ключу
+- `Commands(name string) Commands` - получить команды по имени
+- `Vars() map[string]Values` - получить все переменные
+- `Items() []any` - получить все элементы документа
+
+## Требования
+
+- Go 1.25+
+
+## Лицензия
+
+См. файл [LICENSE](LICENSE)