From 92d84f6633767830ed964ebab8c3b94c77663394 Mon Sep 17 00:00:00 2001 From: Alexander Neonxp Kiryukhin Date: Tue, 10 Mar 2026 14:44:50 +0300 Subject: =?UTF-8?q?=D0=9E=D1=82=D0=BF=D0=BE=D0=BB=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BB=20=D0=B1=D0=B8=D0=B1=D0=BB=D0=B8=D0=BE=D1=82=D0=B5?= =?UTF-8?q?=D0=BA=D1=83,=20=D1=87=D1=82=D0=BE=D0=B1=D1=8B=20=D0=B2=20?= =?UTF-8?q?=D0=B8=D0=B4=D0=B5=D0=B0=D0=BB=D0=B5=20=D0=B1=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D1=88=D0=B5=20=D0=B5=D1=91=20=D0=BD=D0=B5=20=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=8F=D1=82=D1=8C=20=D0=B4=D0=BE=D0=BB=D0=B3=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=B3=D0=BE=D0=B4=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/model.go | 58 +++++++++++++++++----------------------------------------- 1 file changed, 17 insertions(+), 41 deletions(-) (limited to 'model/model.go') diff --git a/model/model.go b/model/model.go index 2bc6dfb..6f18f6f 100644 --- a/model/model.go +++ b/model/model.go @@ -1,44 +1,20 @@ +// Package model implements custom types and methods used in conf parser. +// +// This file is part of conf library. +// Copyright (C) 2026 Alexander NeonXP Kiryukhin +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . package model -import ( - "iter" -) - type Ident string - -type Command struct { - Name Ident - Args []any - Group Group -} - -// Value returns first argument of command. -func (c *Command) Value() any { - if len(c.Args) > 0 { - return c.Args[0] - } - return nil -} - -type Group []Command - -// Get returns first command with given name. -func (g Group) Get(name Ident) *Command { - for _, c := range g { - if c.Name == name { - return &c - } - } - return nil -} - -// Filter commands by predicate and returns iterator over filtered commands. -func (g Group) Filter(predicate func(c *Command) bool) iter.Seq[*Command] { - return func(yield func(*Command) bool) { - for _, c := range g { - if predicate(&c) && !yield(&c) { - return - } - } - } -} -- cgit v1.2.3