<commit_before># Consul Source

The consul source reads config from consul key/values

## Consul Format

The consul source expects keys under the default prefix `/micro/config`

Values are expected to be json

```
// set database
consul kv put micro/config/database '{"address": "10.0.0.1", "port": 3306}'
// set cache
consul kv put micro/config/cache '{"address": "10.0.0.2", "port": 6379}'
```

Keys are split on `/` so access becomes

```
conf.Get("micro", "config", "database")
```

## New Source

Specify source with data

```go
consulSource := consul.NewSource(
	// optionally specify consul address; default to localhost:8500
	consul.WithAddress("10.0.0.10:8500"),
	// optionally specify prefix; defaults to /micro/config
	consul.WithPrefix("/my/prefix"),
  // optionally strip the provided prefix from the keys, defaults to false
  consul.StripPrefix(true),
)
```

## Load Source

Load the source into config

```go
// Create new config
conf := config.NewConfig()

// Load file source
conf.Load(consulSource)
```
<commit_msg>Load consul source<commit_after># Consul Source

The consul source reads config from consul key/values

## Consul Format

The consul source expects keys under the default prefix `/micro/config`

Values are expected to be json

```
// set database
consul kv put micro/config/database '{"address": "10.0.0.1", "port": 3306}'
// set cache
consul kv put micro/config/cache '{"address": "10.0.0.2", "port": 6379}'
```

Keys are split on `/` so access becomes

```
conf.Get("micro", "config", "database")
```

## New Source

Specify source with data

```go
consulSource := consul.NewSource(
	// optionally specify consul address; default to localhost:8500
	consul.WithAddress("10.0.0.10:8500"),
	// optionally specify prefix; defaults to /micro/config
	consul.WithPrefix("/my/prefix"),
  // optionally strip the provided prefix from the keys, defaults to false
  consul.StripPrefix(true),
)
```

## Load Source

Load the source into config

```go
// Create new config
conf := config.NewConfig()

// Load consul source
conf.Load(consulSource)
```

{'fraction_non_alphanumeric': 0.1389290882778582, 'fraction_numerical': 0.03087313072841293, 'mean_word_length': 4.250632911392405, 'pattern_counts': {'":': 8, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 6, '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': '3687985', 'n_tokens_mistral': 705, 'n_tokens_neox': 648, 'n_words': 226}