#!/bin/bash
## -----------------------------------------------------------------------
## Intent: getopts parsing and set flag status for --is-empty swtiches
## -----------------------------------------------------------------------

## -----------------------------------------------------------------------
## Intent: Parse command line switch, when *-empty detected take action
##   - remove is-empty OR is-not-empty from swtich string
##   - set values in map %attrs=() to capture detection bits
## Return:
##   %attrs
##    --is-empty        empty=true
##    --is-not-empty    empty=true, not=true
## -----------------------------------------------------------------------
function getopts_switch__empty()
{ 
    local -n gse_arg=$1; shift
    declare -g -A attrs

    case "$gse_arg" in
        *'-is-empty')
            is_switch_valid__is_empty "$gse_arg"
            attrs['empty']=1
            # declare -g -i argv_is_empty=1
            gse_arg="${gse_arg/-is-empty/}"
            local -i rc=0
            ;;
        *) local -i rc=1 ;;
    esac

    [[ $rc -eq 0 ]] && { true; } || { false; }
    return
}

## -----------------------------------------------------------------------
## Intent: Define flags based on detected switch modifiers
## -----------------------------------------------------------------------
function gen_attrs__empty()
{
    local switch="$1"; shift
    declare -g attrs

    local is="${switch}_is_empty"
    local not="${switch}_not_empty"
    declare -g -i "$is"
    declare -g -i "$not"
    
    ## Clear prior state
    [[ -v "$is" ]]  && { echo "IS"; unset "$is"; }
    [[ -v "$not" ]] && { echo "NOT"; unset "$not"; }

    ## Apply current attributes
    ## [TODO] parameterize flag creation
    if [[ ! -v attrs['empty'] ]]; then
        : # fall through
    elif [[ -v attrs['not'] ]]; then
        declare -g -i $not=1
    else
        declare -g -i $is=1
    fi

    : # assign ($?==0)
    return
}


# [EOF]
