diff --git a/blogo/plugin_plugingroup.go b/blogo/plugin_plugingroup.go new file mode 100644 index 0000000..dc86867 --- /dev/null +++ b/blogo/plugin_plugingroup.go @@ -0,0 +1,38 @@ +// Copyright 2025-present Gustavo "Guz" L. de Mello +// Copyright 2025-present The Lored.dev Contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package blogo + +const pluginGroupPluginName = "blogo-plugingroup-group" + +type pluginGroup struct { + plugins []Plugin +} + +func NewPluginGroup(plugins ...Plugin) PluginGroup { + return &pluginGroup{plugins} +} + +func (p *pluginGroup) Name() string { + return pluginGroupPluginName +} + +func (p *pluginGroup) Use(plugin Plugin) { + p.plugins = append(p.plugins, plugin) +} + +func (p *pluginGroup) Plugins() []Plugin { + return p.plugins +} diff --git a/blogo/plugins.go b/blogo/plugins.go index a30ed1f..e2a28d0 100644 --- a/blogo/plugins.go +++ b/blogo/plugins.go @@ -24,16 +24,17 @@ type Plugin interface { Name() string } -type PluginGroup interface { - Plugin - Plugins() []Plugin -} - type PluginWithPlugins interface { Plugin Use(Plugin) } +type PluginGroup interface { + Plugin + PluginWithPlugins + Plugins() []Plugin +} + type RendererPlugin interface { Plugin Render(src fs.File, out io.Writer) error