package id

import (
	"crypto/rand"
	"fmt"
)

// GenerateRandomString creates a random string of characters of the given
// length from the given dictionary of possible characters.
//
// This example generates a hexadecimal string 6 characters long:
//     GenerateRandomString("0123456789abcdef", 6)
func GenerateRandomString(dictionary string, l int) string {
	var bytes = make([]byte, l)
	rand.Read(bytes)
	for k, v := range bytes {
		bytes[k] = dictionary[v%byte(len(dictionary))]
	}
	return string(bytes)
}

// GenSafeUniqueSlug generatees a reasonably unique random slug from the given
// original slug. It's "safe" because it uses 0-9 b-z excluding vowels.
func GenSafeUniqueSlug(slug string) string {
	return fmt.Sprintf("%s-%s", slug, GenerateRandomString("0123456789bcdfghjklmnpqrstvwxyz", 4))
}

// Generate62RandomString creates a random string with the given length
// consisting of characters in [A-Za-z0-9].
func Generate62RandomString(l int) string {
	return GenerateRandomString("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", l)
}

// GenerateFriendlyRandomString creates a random string of characters with the
// given length consisting of characters in [a-z0-9].
func GenerateFriendlyRandomString(l int) string {
	return GenerateRandomString("0123456789abcdefghijklmnopqrstuvwxyz", l)
}

package id

import (
	"fmt"
	"crypto/rand"
)

// GenerateRandomString creates a random string of characters of the given
// length from the given dictionary of possible characters.
//
// This example generates a hexadecimal string 6 characters long:
//     GenerateRandomString("0123456789abcdef", 6)
func GenerateRandomString(dictionary string, l int) string {
	var bytes = make([]byte, l)
	rand.Read(bytes)
	for k, v := range bytes {
		bytes[k] = dictionary[v%byte(len(dictionary))]
	}
	return string(bytes)
}

// GenSafeUniqueSlug generatees a reasonably unique random slug from the given
// original slug. It's "safe" because it uses 0-9 b-z excluding vowels.
func GenSafeUniqueSlug(slug string) string {
	return fmt.Sprintf("%s-%s", slug, GenerateRandomString("0123456789bcdfghjklmnpqrstvwxyz", 4))
}

--- 
+++ 
@@ -1,8 +1,8 @@
 package id
 
 import (
+	"crypto/rand"
 	"fmt"
-	"crypto/rand"
 )
 
 // GenerateRandomString creates a random string of characters of the given
@@ -24,3 +24,15 @@
 func GenSafeUniqueSlug(slug string) string {
 	return fmt.Sprintf("%s-%s", slug, GenerateRandomString("0123456789bcdfghjklmnpqrstvwxyz", 4))
 }
+
+// Generate62RandomString creates a random string with the given length
+// consisting of characters in [A-Za-z0-9].
+func Generate62RandomString(l int) string {
+	return GenerateRandomString("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", l)
+}
+
+// GenerateFriendlyRandomString creates a random string of characters with the
+// given length consisting of characters in [a-z0-9].
+func GenerateFriendlyRandomString(l int) string {
+	return GenerateRandomString("0123456789abcdefghijklmnopqrstuvwxyz", l)
+}
Move remaining writeas/nerds/store funcs to web-core

Finishes the work started in #8.
