Skip to content

Latest commit

 

History

History
 
 

enum

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
  • infos = Information about the enum plugin is in keys below
  • infos/author = Thomas Waser thomas.waser@libelektra.org
  • infos/licence = BSD
  • infos/provides = check
  • infos/needs =
  • infos/recommends =
  • infos/placements = presetstorage postgetstorage
  • infos/status = productive maintained unittest tested nodep libc
  • infos/metadata = check/enum check/enum/# check/enum/multi
  • infos/description = validates values against enum

Introduction

The enum plugin checks string values of Keys by comparing it against a list of valid values.

Usage

The plugin checks every Key in the Keyset for the Metakey check/enum containing a list with the syntax 'string1', 'string2', 'string3', ..., 'stringN' and compares each value with the string value of the Key. If no match is found an error is returned.

Alternatively, if check/enum starts with #, a meta array check/enum is used. For example:

check/enum = #3
check/enum/#0 = small
check/enum/#1 = middle
check/enum/#2 = large
check/enum/#3 = huge

Furthermore check/enum/multi may contain a separator character, that separates multiple allowed occurrences. For example:

check/enum/multi = _

Then the value middle_small would validate. But middle_small_small would fail because every entry might only occur once.

Example

# Backup-and-Restore:/tests/enum

sudo kdb mount enum.ecf /tests/enum enum dump

# valid initial value + setup valid enum list
kdb set /tests/enum/value middle
kdb setmeta user/tests/enum/value check/enum "'low', 'middle', 'high'"

# should succeed
kdb set /tests/enum/value low

# should fail with error 121
kdb set /tests/enum/value no
# RET:5
# ERROR:121

Or with multi-enums:

# valid initial value + setup array with valid enums
kdb set /tests/enum/multivalue middle_small
kdb setmeta user/tests/enum/multivalue check/enum/#0 small
kdb setmeta user/tests/enum/multivalue check/enum/#1 middle
kdb setmeta user/tests/enum/multivalue check/enum/#2 large
kdb setmeta user/tests/enum/multivalue check/enum/#3 huge
kdb setmeta user/tests/enum/multivalue check/enum/multi _
kdb setmeta user/tests/enum/multivalue check/enum "#3"

# should succeed
kdb set /tests/enum/multivalue ___small_middle__

# should fail with error 121
kdb set /tests/enum/multivalue ___all_small__
# RET:5
# ERROR:121

# cleanup
kdb rm -r /tests/enum
sudo kdb umount /tests/enum

Limitations

You cannot give enum values specific values. If you only want to check for numerical values, the plugin range is better suited.