1// Copyright (c) 2020 Denis Tingajkin 2// 3// SPDX-License-Identifier: Apache-2.0 4// 5// Licensed under the Apache License, Version 2.0 (the "License"); 6// you may not use this file except in compliance with the License. 7// You may obtain a copy of the License at: 8// 9// http://www.apache.org/licenses/LICENSE-2.0 10// 11// Unless required by applicable law or agreed to in writing, software 12// distributed under the License is distributed on an "AS IS" BASIS, 13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14// See the License for the specific language governing permissions and 15// limitations under the License. 16 17package goheader 18 19import "strings" 20 21type Option interface { 22 apply(*Analyzer) 23} 24 25type applyAnalyzerOptionFunc func(*Analyzer) 26 27func (f applyAnalyzerOptionFunc) apply(a *Analyzer) { 28 f(a) 29} 30 31func WithValues(values map[string]Value) Option { 32 return applyAnalyzerOptionFunc(func(a *Analyzer) { 33 a.values = make(map[string]Value) 34 for k, v := range values { 35 a.values[strings.ToLower(k)] = v 36 } 37 }) 38} 39 40func WithTemplate(template string) Option { 41 return applyAnalyzerOptionFunc(func(a *Analyzer) { 42 a.template = template 43 }) 44} 45