mirror of
https://github.com/openfaas/faas.git
synced 2025-06-09 00:36:46 +00:00
Add sample function
Signed-off-by: Alex Ellis (VMware) <alexellis2@gmail.com>
This commit is contained in:
parent
f5939c9a60
commit
63e948fce1
14
sample-functions/business-strategy-generator/handler.go
Normal file
14
sample-functions/business-strategy-generator/handler.go
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package function
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/nishakm/strategy_generator/pkg"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Handle a serverless request
|
||||||
|
func Handle(req []byte) string {
|
||||||
|
|
||||||
|
statement := pkg.Generate()
|
||||||
|
return fmt.Sprintf("%s", statement)
|
||||||
|
}
|
9
sample-functions/business-strategy-generator/vendor/github.com/nishakm/strategy_generator/README.md
generated
vendored
Normal file
9
sample-functions/business-strategy-generator/vendor/github.com/nishakm/strategy_generator/README.md
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# Business Strategy Generator written in Go
|
||||||
|
|
||||||
|
This was inspired by [a blog post by Simon Wardley](http://blog.gardeviance.org/2014/07/a-quick-route-to-building-strategy.html)
|
||||||
|
|
||||||
|
It also doubles as a Go programming guide and hence has more comments than actual lines of code
|
||||||
|
|
||||||
|
Content in the code is governed by the [Creative Commons Attribution-Share Alike 3.0 License](http://creativecommons.org/licenses/by-sa/3.0/)
|
||||||
|
|
||||||
|
It's a silly project but you can submit PRs to it if you'd like
|
24
sample-functions/business-strategy-generator/vendor/github.com/nishakm/strategy_generator/main.go
generated
vendored
Normal file
24
sample-functions/business-strategy-generator/vendor/github.com/nishakm/strategy_generator/main.go
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
// Business Strategy Generator written in Go
|
||||||
|
// Inspired by http://blog.gardeviance.org/2014/07/a-quick-route-to-building-strategy.html
|
||||||
|
// Doubles as a learning guide for Go (so there are more comments than actual lines of code)
|
||||||
|
// Copyright (c) Nisha Kumar (@nishakm) All Rights Reserved
|
||||||
|
// SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
|
||||||
|
// Entry point of any Go program is the main package
|
||||||
|
// The file name can be called anything
|
||||||
|
// I am calling it 'main.go' for clarity
|
||||||
|
package main
|
||||||
|
|
||||||
|
// Import other golang packages here. Names are in ""
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/nishakm/strategy_generator/pkg"
|
||||||
|
)
|
||||||
|
|
||||||
|
// this is the main function
|
||||||
|
func main() {
|
||||||
|
statement := pkg.Generate()
|
||||||
|
|
||||||
|
fmt.Println(statement)
|
||||||
|
}
|
111
sample-functions/business-strategy-generator/vendor/github.com/nishakm/strategy_generator/pkg/generator.go
generated
vendored
Normal file
111
sample-functions/business-strategy-generator/vendor/github.com/nishakm/strategy_generator/pkg/generator.go
generated
vendored
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
package pkg
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"math/rand"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Statement is a struct and something to encapsulate the
|
||||||
|
// string and the type of word that gets filled in
|
||||||
|
// note that we are using Capital letters for the variables
|
||||||
|
// this is so we can access them directly
|
||||||
|
type Statement struct {
|
||||||
|
Sentence string // the sentence to substitute a word in
|
||||||
|
WordType int // 0 for noun and 1 for adjective (more word organization needed! Pull Requests accepted :)
|
||||||
|
}
|
||||||
|
|
||||||
|
// nouns is an array assignment with no specific limits
|
||||||
|
// that means other words can be added here
|
||||||
|
var nouns = []string{
|
||||||
|
"efficiency",
|
||||||
|
"competitive advantage",
|
||||||
|
"ecosystems",
|
||||||
|
"synergy",
|
||||||
|
"learning organization",
|
||||||
|
"network",
|
||||||
|
"social media",
|
||||||
|
"revolution",
|
||||||
|
"big data",
|
||||||
|
"security",
|
||||||
|
"internet of things",
|
||||||
|
"digital business",
|
||||||
|
"data leaders",
|
||||||
|
"big data",
|
||||||
|
"insight from data",
|
||||||
|
"platform",
|
||||||
|
"culture"}
|
||||||
|
|
||||||
|
var adjectives = []string{
|
||||||
|
"digital first",
|
||||||
|
"agile",
|
||||||
|
"open",
|
||||||
|
"innovative",
|
||||||
|
"networked",
|
||||||
|
"collaborative",
|
||||||
|
"cloud based",
|
||||||
|
"growth focused",
|
||||||
|
"secure",
|
||||||
|
"customer focused",
|
||||||
|
"disruptive",
|
||||||
|
"platform based",
|
||||||
|
"sustainable",
|
||||||
|
"value added"}
|
||||||
|
|
||||||
|
// Each statement has a %s which is for string substitution
|
||||||
|
// in Go there is no tuple substitution like python so the
|
||||||
|
// whole statement needs to be divided in this way
|
||||||
|
var statements = []Statement{
|
||||||
|
Statement{"Our strategy is %s. ", 1},
|
||||||
|
Statement{"We will lead a %s ", 1},
|
||||||
|
Statement{"effort of the market through our use of %s ", 0},
|
||||||
|
Statement{"and %s ", 0},
|
||||||
|
Statement{"to build a %s. ", 0},
|
||||||
|
Statement{"By being both %s ", 1},
|
||||||
|
Statement{"and %s, ", 1},
|
||||||
|
Statement{"our %s ", 1},
|
||||||
|
Statement{"approach will drive %s throughout the organization. ", 0},
|
||||||
|
Statement{"Synergies between our %s ", 0},
|
||||||
|
Statement{"and %s ", 0},
|
||||||
|
Statement{"will enable us to capture the upside by becoming %s ", 1},
|
||||||
|
Statement{"in a %s world. ", 0},
|
||||||
|
Statement{"These transformations combined with %s ", 0},
|
||||||
|
Statement{"due to our %s ", 0},
|
||||||
|
Statement{"will create a %s ", 0},
|
||||||
|
Statement{"through %s ", 0},
|
||||||
|
Statement{"and %s.", 0}}
|
||||||
|
|
||||||
|
// Generate produces a random business statedgy statement.
|
||||||
|
// Note: any of the functions called from the packages imported
|
||||||
|
// has to start with a Capital letter this is because of the rule
|
||||||
|
// that only functions starting with a capital letter are 'exported'
|
||||||
|
// so you can call them here from another package.
|
||||||
|
// It's not really the same as public and private but more like direct
|
||||||
|
// and indirect reference or use
|
||||||
|
// https://www.ardanlabs.com/blog/2014/03/exportedunexported-identifiers-in-go.html
|
||||||
|
func Generate() string {
|
||||||
|
|
||||||
|
// implicit variable assignment
|
||||||
|
// not available outside the function
|
||||||
|
statement := ""
|
||||||
|
|
||||||
|
// explicit unassigned variable
|
||||||
|
var word string
|
||||||
|
|
||||||
|
// rand uses a global package called Source
|
||||||
|
// https://golang.org/pkg/math/rand/#Source
|
||||||
|
// The source has to be initialized by some seed
|
||||||
|
// the seed needs to change every time a random number needs to
|
||||||
|
// be generated or else the same number will be generated
|
||||||
|
for i := 0; i < len(statements); i++ {
|
||||||
|
rand.Seed(time.Now().UnixNano())
|
||||||
|
if statements[i].WordType == 0 {
|
||||||
|
word = nouns[rand.Intn(len(nouns))]
|
||||||
|
} else { //like C else has to be right after the closing }
|
||||||
|
word = adjectives[rand.Intn(len(adjectives))]
|
||||||
|
}
|
||||||
|
statement = statement + fmt.Sprintf(statements[i].Sentence, word)
|
||||||
|
}
|
||||||
|
|
||||||
|
return statement
|
||||||
|
}
|
@ -86,4 +86,7 @@ functions:
|
|||||||
lang: dockerfile
|
lang: dockerfile
|
||||||
handler: ./WordCountFunction
|
handler: ./WordCountFunction
|
||||||
image: functions/wordcount:latest
|
image: functions/wordcount:latest
|
||||||
|
business-strategy-generator:
|
||||||
|
lang: go
|
||||||
|
handler: ./business-strategy-generator
|
||||||
|
image: functions/business-strategy-generator:0.1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user