github.com/packtpublishing/learning-functional-programming-in-go@v0.0.0-20230130084745-8b849f6d58c4/Chapter03/hof/main.go (about) 1 package main 2 3 import ( 4 . "hof" 5 "log" 6 "os" 7 "github.com/julienschmidt/httprouter" 8 "net/http" 9 ) 10 11 func init() { 12 log.SetFlags(log.Lshortfile | log.Ldate) 13 log.SetOutput(os.Stdout) 14 } 15 16 17 func main() { 18 19 if os.Getenv("RUN_HTTP_SERVER") == "TRUE" { 20 router := httprouter.New() 21 router.GET("/cars", CarsIndexHandler) 22 router.GET("/cars/:id", CarHandler) 23 log.Println("Listening on port 8000") 24 log.Fatal(http.ListenAndServe(":8000", router)) 25 } else { 26 27 cars := LoadCars() 28 29 //PrintCars("ByMake - Honda", cars.Filter(ByMake("Honda"))) 30 // 31 //PrintCars("Numeric", cars.Filter(ByHasNumber())) 32 // 33 //PrintCars("Foreign, Numeric, Toyota", 34 // cars.Filter(ByForeign()). 35 // Filter(ByHasNumber()). 36 // Filter(ByMake("Toyota"))) 37 // 38 //PrintCars("Domestic, Numeric, GM", 39 // cars.Filter(ByDomestic()). 40 // Filter(ByHasNumber()). 41 // Filter(ByMake("GM"))) 42 // 43 //moreCars := LoadMoreCars() 44 // 45 //PrintCars("More Cars, Domestic, Numeric, GM", 46 // cars.AddCars(moreCars). 47 // Filter(ByDomestic()). 48 // Filter(ByHasNumber()). 49 // Filter(ByMake("GM"))) 50 // 51 //PrintCars("More Cars, Domestic, Numeric, Ford", 52 // cars.AddCars(moreCars). 53 // Filter(ByDomestic()). 54 // Filter(ByHasNumber()). 55 // Filter(ByMake("Ford"))) 56 // 57 // 58 //PrintCars("Numeric, Foreign, Map Upgraded", 59 // cars.Filter(ByHasNumber()). 60 // Filter(ByForeign()). 61 // Map(Upgrade())) 62 // 63 //PrintCars("Filter Honda, Reduce JSON", 64 // cars.Filter(ByMake("Honda")). 65 // Reduce(JsonReducer(cars), Collection{})) 66 // 67 //PrintCars("Reduce, Honda, JSON", 68 // cars.Reduce(MakeReducer("Honda", cars), Collection{}). 69 // Reduce(JsonReducer(cars), Collection{})) 70 // 71 //PrintCars2("Reduce - Lexus", 72 // cars.Filter(ByMake("Lexus")). 73 // Reduce2(CarTypeReducer(cars), []CarType{})) 74 // 75 //PrintCars("ByModel - Accord up/downgraded", 76 // cars.Filter(ByModel("Accord")). 77 // Map(Upgrade()). 78 // Map(Downgrade())) 79 80 PrintCars("GenerateCars(1, 3)", 81 cars.GenerateCars(1, 3)) 82 83 PrintCars("GenerateCars(1, 14), Domestic, Numeric, JSON", 84 cars.GenerateCars(1, 14). 85 Filter(ByDomestic()). 86 Map(Upgrade()). 87 Filter(ByHasNumber()). 88 Reduce(JsonReducer(cars), Collection{})) 89 90 } 91 } 92