before adding cryptoshuffler

This commit is contained in:
2022-03-03 05:51:22 -05:00
parent 480dcd7e24
commit 77d5271b5a
5 changed files with 116 additions and 23 deletions

View File

@@ -1,5 +1,42 @@
package pwgenerator
/*
Has returns true if a CharSet contains char.
char can be one of: Char, byte, rune, or a string (of length 1).
*/
func (c *CharSet) Has(char interface{}) (contains bool, err error) {
var chkChar Char
switch t := char.(type) {
case Char:
chkChar = t
case byte:
chkChar = Char(t)
case rune:
chkChar = Char(t)
case string:
if len(t) != 1 {
err = ErrBadType
return
}
chkChar = Char(t[0])
default:
err = ErrBadType
return
}
for _, i := range *c {
if chkChar == i {
contains = true
break
}
}
return
}
// Len returns the length of a CharSet (needed for sort.Interface).
func (c *CharSet) Len() (l int) {
@@ -23,7 +60,7 @@ func (c *CharSet) RandChar() (char Char, err error) {
var selectIdx int
if selectIdx, err = saferRandInt(len(*c) - 1); err != nil {
if selectIdx, err = saferRandInt(len(*c)); err != nil {
return
}