<commit_before>// Copyright 2016 <NAME>. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.

// Package goserv provides a fast, easy and minimalistic framework for
// web applications in Go.
//
// Getting Started
//
// Every goserv application starts with a single instance of goserv.Server. This
// instance is the entry point for all incoming requests.
//
//      server := goserv.NewServer()
//
// To start handling paths you must register handlers to paths using one of the Server's
// embedded Router functions, like Get.
//
//      server.Get("/", homeHandler)
//
// The first argument in the Get() call is the path for which the
// handler gets registered. To learn more about paths take a look at the Path section.
// As the name of the function suggests the requests are only getting dispatched to the handler
// if the request method is "GET". There are a lot more methods like this one available, just take
// a look at the documentation of the Router.
//
// At this point it is worth noting that goserv provides it's own Handler type using the
// goserv.ResponseWriter and goserv.Request. This means that all http.Handlers cannot
// be used with goserv without wrapping them in a goserv.Handler. To make this more convenient
// a function called WrapHTTPHandler exists.
//
//      server.Get("/", WrapHTTPHandler(httpHomeHandler))
//
// Sometimes it is useful to have handlers that are invoked all the time, also known as middleware.
// To register middleware use the Use() function.
//
//      server.Use(accessLogger)
//
// Path Syntax
//
// All Routes and Routers are registered under a path. This path is matched against the path
// of incoming requests. A Route created from "/mypath" will only match the request path if it is exactly
// "/mypath". In case that the Route should match everything starting with "/mypath" a wildcard
// can be appended to the path, i.e.
//
//	/mypath*
//
// The wildcard can be at any position in the path. It is also possible to just use the wildcard
// as path.
//
// Sometimes it is necessary to capture values from parts of the request path, so called parameters.
// To include parameters in a Route the path must contain a named parameter, e.g.
//	/users/:user_id
//
// Parameters always start with a ":" after a "/". The name (without the leading ":") can contain
// alphanumeric symbols as well as "_" and "-". The number of parameters in a Route is not limited, but
// they must be separated by at least a single "/".
//	/:value1/:value2
//
// Routers allow you to register handlers for each parameter in a Route. Each handler gets invoked
// once per request. That means even though a Router may invoke multiple Routes the
// parameter handlers are invoked only once.
//
//      router.Get("/users/:user_id", handler)
//      router.Param("user_id", userIDHandler)
//
// When a Route processes a request it automatically extracts the captured parameter values from the path
// and stores the values under their name in the .Param field of the Request.
//
// Strict vs non-strict Slash
//
// A Route can have either strict slash or non-strict slash behavior. In non-strict mode paths with or
// without a trailing slash are considered to be the same, i.e. a Route registered with "/mypath" in<commit_msg>Improve doc<commit_after>// Copyright 2016 <NAME>. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.

// Package goserv provides a fast, easy and minimalistic framework for
// web applications in Go.
//
// Getting Started
//
// Every goserv application starts with a single instance of goserv.Server. This
// instance is the entry point for all incoming requests.
//
//      server := goserv.NewServer()
//
// To start handling paths you must register handlers to paths using one of the Server's
// embedded Router functions, like Get.
//
//      server.Get("/", homeHandler)
//
// The first argument in the Get() call is the path for which the
// handler gets registered. To learn more about paths take a look at the "Path Syntax" section.
// As the name of the function suggests the requests are only getting dispatched to the handler
// if the request method is "GET". There are a lot more methods like this one available, just take
// a look at the documentation of the Router.
//
// At this point it is worth noting that goserv provides it's own Handler type using the
// goserv.ResponseWriter and goserv.Request. This means that all http.Handlers cannot
// be used with goserv without wrapping them in a goserv.Handler. To make this more convenient
// a function called WrapHTTPHandler exists.
//
//      server.Get("/", WrapHTTPHandler(httpHomeHandler))
//
// Sometimes it is useful to have handlers that are invoked all the time, also known as middleware.
// To register middleware use the Use() function.
//
//      server.Use(accessLogger)
//
// Path Syntax
//
// All Routes and Routers are registered under a path. This path is matched against the path
// of incoming requests. A Route created from "/mypath" will only match the request path if it is exactly
// "/mypath". In case that the Route should match everything starting with "/mypath" a wildcard
// can be appended to the path, i.e.
//
//	/mypath*
//
// The wildcard can be at any position in the path. It is also possible to use just the wildcard
// as path.
//
// Sometimes it is necessary to capture values from parts of the request path, so called parameters.
// To include parameters in a Route the path must contain a named parameter, e.g.
//	/users/:user_id
//
// Parameters always start with a ":" after a "/". The name (without the leading ":") can contain
// alphanumeric symbols as well as "_" and "-". The number of parameters in a Route is not limited, but
// they must be separated by at least a single "/".
//	/:value1/:value2
//
// Routers allow you to register handlers for each parameter in a Route. Each handler gets invoked
// once per request. That means even though a Router may invoke multiple Routes the
// parameter handlers are invoked only once.
//
//      router.Get("/users/:user_id", handler)
//      router.Param("user_id", userIDHandler)
//
// When a Route processes a request it automatically extracts the captured parameter values from the path
// and stores the values under their name in the .Param field of the Request.
//
// Strict vs non-strict Slash
//
// A Route can have either strict slash or non-strict slash behavior. In non-strict mode paths with or
// without a trailing slash are considered to be the same, i.e. a Route registered with "/mypath" in
{'fraction_non_alphanumeric': 0.08689138576779026, 'fraction_numerical': 0.0017977528089887641, 'mean_word_length': 3.1440099317194288, 'pattern_counts': {'":': 4, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3640550', 'n_tokens_mistral': 1742, 'n_tokens_neox': 1702, 'n_words': 977}