Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add CaseSensitiveKeys option #1673

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Commits on Oct 20, 2023

  1. Add CaseSensitiveKeys option

    When reading configuration from sources with case-sensitive keys,
    such as YAML, TOML, and JSON, a user may wish to preserve the case
    of keys that appear in maps.  For example, consider when the value
    of a setting is a map with string keys that are case-sensitive.
    Ideally, if the value is not going to be indexed by a Viper lookup
    key, then the map value should be treated as an opaque value by
    Viper, and its keys should not be modified.  See spf13#1014
    
    Viper's default behaviour is that keys are case-sensitive, and this
    behavior is implemented by converting all keys to lower-case.  For
    users that wish to preserve the case of keys, this commit introduces
    an Option `CaseSensitiveKeys()` that can be used to configure Viper
    to use case-sensitive keys.  When CaseSensitiveKeys is enabled, all
    keys retain the original case, and lookups become case-sensitive
    (except for lookups of values bound to environment variables).
    
    The behavior of Viper could become hard to understand if a user
    could change the CaseSensitiveKeys setting after values have been
    stored.  For this reason, the setting may only be set when creating
    a Viper instance, and it cannot be set on the "global" Viper.
    travisnewhouse committed Oct 20, 2023
    Configuration menu
    Copy the full SHA
    21336ce View commit details
    Browse the repository at this point in the history