diff options
author | Alex Pilon <apilon@hashicorp.com> | 2019-02-22 18:24:37 -0500 |
---|---|---|
committer | Alex Pilon <apilon@hashicorp.com> | 2019-02-22 18:24:37 -0500 |
commit | 15c0b25d011f37e7c20aeca9eaf461f78285b8d9 (patch) | |
tree | 255c250a5c9d4801c74092d33b7337d8c14438ff /vendor/github.com/agext/levenshtein/params.go | |
parent | 07971ca38143c5faf951d152fba370ddcbe26ad5 (diff) | |
download | terraform-provider-statuscake-15c0b25d011f37e7c20aeca9eaf461f78285b8d9.tar.gz terraform-provider-statuscake-15c0b25d011f37e7c20aeca9eaf461f78285b8d9.tar.zst terraform-provider-statuscake-15c0b25d011f37e7c20aeca9eaf461f78285b8d9.zip |
deps: github.com/hashicorp/terraform@sdk-v0.11-with-go-modules
Updated via: go get github.com/hashicorp/terraform@sdk-v0.11-with-go-modules and go mod tidy
Diffstat (limited to 'vendor/github.com/agext/levenshtein/params.go')
-rw-r--r-- | vendor/github.com/agext/levenshtein/params.go | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/vendor/github.com/agext/levenshtein/params.go b/vendor/github.com/agext/levenshtein/params.go new file mode 100644 index 0000000..a85727b --- /dev/null +++ b/vendor/github.com/agext/levenshtein/params.go | |||
@@ -0,0 +1,152 @@ | |||
1 | // Copyright 2016 ALRUX Inc. | ||
2 | // | ||
3 | // Licensed under the Apache License, Version 2.0 (the "License"); | ||
4 | // you may not use this file except in compliance with the License. | ||
5 | // You may obtain a copy of the License at | ||
6 | // | ||
7 | // http://www.apache.org/licenses/LICENSE-2.0 | ||
8 | // | ||
9 | // Unless required by applicable law or agreed to in writing, software | ||
10 | // distributed under the License is distributed on an "AS IS" BASIS, | ||
11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
12 | // See the License for the specific language governing permissions and | ||
13 | // limitations under the License. | ||
14 | |||
15 | package levenshtein | ||
16 | |||
17 | // Params represents a set of parameter values for the various formulas involved | ||
18 | // in the calculation of the Levenshtein string metrics. | ||
19 | type Params struct { | ||
20 | insCost int | ||
21 | subCost int | ||
22 | delCost int | ||
23 | maxCost int | ||
24 | minScore float64 | ||
25 | bonusPrefix int | ||
26 | bonusScale float64 | ||
27 | bonusThreshold float64 | ||
28 | } | ||
29 | |||
30 | var ( | ||
31 | defaultParams = NewParams() | ||
32 | ) | ||
33 | |||
34 | // NewParams creates a new set of parameters and initializes it with the default values. | ||
35 | func NewParams() *Params { | ||
36 | return &Params{ | ||
37 | insCost: 1, | ||
38 | subCost: 1, | ||
39 | delCost: 1, | ||
40 | maxCost: 0, | ||
41 | minScore: 0, | ||
42 | bonusPrefix: 4, | ||
43 | bonusScale: .1, | ||
44 | bonusThreshold: .7, | ||
45 | } | ||
46 | } | ||
47 | |||
48 | // Clone returns a pointer to a copy of the receiver parameter set, or of a new | ||
49 | // default parameter set if the receiver is nil. | ||
50 | func (p *Params) Clone() *Params { | ||
51 | if p == nil { | ||
52 | return NewParams() | ||
53 | } | ||
54 | return &Params{ | ||
55 | insCost: p.insCost, | ||
56 | subCost: p.subCost, | ||
57 | delCost: p.delCost, | ||
58 | maxCost: p.maxCost, | ||
59 | minScore: p.minScore, | ||
60 | bonusPrefix: p.bonusPrefix, | ||
61 | bonusScale: p.bonusScale, | ||
62 | bonusThreshold: p.bonusThreshold, | ||
63 | } | ||
64 | } | ||
65 | |||
66 | // InsCost overrides the default value of 1 for the cost of insertion. | ||
67 | // The new value must be zero or positive. | ||
68 | func (p *Params) InsCost(v int) *Params { | ||
69 | if v >= 0 { | ||
70 | p.insCost = v | ||
71 | } | ||
72 | return p | ||
73 | } | ||
74 | |||
75 | // SubCost overrides the default value of 1 for the cost of substitution. | ||
76 | // The new value must be zero or positive. | ||
77 | func (p *Params) SubCost(v int) *Params { | ||
78 | if v >= 0 { | ||
79 | p.subCost = v | ||
80 | } | ||
81 | return p | ||
82 | } | ||
83 | |||
84 | // DelCost overrides the default value of 1 for the cost of deletion. | ||
85 | // The new value must be zero or positive. | ||
86 | func (p *Params) DelCost(v int) *Params { | ||
87 | if v >= 0 { | ||
88 | p.delCost = v | ||
89 | } | ||
90 | return p | ||
91 | } | ||
92 | |||
93 | // MaxCost overrides the default value of 0 (meaning unlimited) for the maximum cost. | ||
94 | // The calculation of Distance() stops when the result is guaranteed to exceed | ||
95 | // this maximum, returning a lower-bound rather than exact value. | ||
96 | // The new value must be zero or positive. | ||
97 | func (p *Params) MaxCost(v int) *Params { | ||
98 | if v >= 0 { | ||
99 | p.maxCost = v | ||
100 | } | ||
101 | return p | ||
102 | } | ||
103 | |||
104 | // MinScore overrides the default value of 0 for the minimum similarity score. | ||
105 | // Scores below this threshold are returned as 0 by Similarity() and Match(). | ||
106 | // The new value must be zero or positive. Note that a minimum greater than 1 | ||
107 | // can never be satisfied, resulting in a score of 0 for any pair of strings. | ||
108 | func (p *Params) MinScore(v float64) *Params { | ||
109 | if v >= 0 { | ||
110 | p.minScore = v | ||
111 | } | ||
112 | return p | ||
113 | } | ||
114 | |||
115 | // BonusPrefix overrides the default value for the maximum length of | ||
116 | // common prefix to be considered for bonus by Match(). | ||
117 | // The new value must be zero or positive. | ||
118 | func (p *Params) BonusPrefix(v int) *Params { | ||
119 | if v >= 0 { | ||
120 | p.bonusPrefix = v | ||
121 | } | ||
122 | return p | ||
123 | } | ||
124 | |||
125 | // BonusScale overrides the default value for the scaling factor used by Match() | ||
126 | // in calculating the bonus. | ||
127 | // The new value must be zero or positive. To guarantee that the similarity score | ||
128 | // remains in the interval 0..1, this scaling factor is not allowed to exceed | ||
129 | // 1 / BonusPrefix. | ||
130 | func (p *Params) BonusScale(v float64) *Params { | ||
131 | if v >= 0 { | ||
132 | p.bonusScale = v | ||
133 | } | ||
134 | |||
135 | // the bonus cannot exceed (1-sim), or the score may become greater than 1. | ||
136 | if float64(p.bonusPrefix)*p.bonusScale > 1 { | ||
137 | p.bonusScale = 1 / float64(p.bonusPrefix) | ||
138 | } | ||
139 | |||
140 | return p | ||
141 | } | ||
142 | |||
143 | // BonusThreshold overrides the default value for the minimum similarity score | ||
144 | // for which Match() can assign a bonus. | ||
145 | // The new value must be zero or positive. Note that a threshold greater than 1 | ||
146 | // effectively makes Match() become the equivalent of Similarity(). | ||
147 | func (p *Params) BonusThreshold(v float64) *Params { | ||
148 | if v >= 0 { | ||
149 | p.bonusThreshold = v | ||
150 | } | ||
151 | return p | ||
152 | } | ||