GetOptionKit\Option::initFromSpecString PHP Method

initFromSpecString() protected method

Build spec attributes from spec string.
protected initFromSpecString ( string $specString )
$specString string
    protected function initFromSpecString($specString)
    {
        $pattern = '/
        (
                (?:[a-zA-Z0-9-]+)
                (?:
                    \\|
                    (?:[a-zA-Z0-9-]+)
                )?
        )

        # option attribute operators
        ([:+?])?

        # value types
        (?:=(boolean|string|number|date|file|dir|url|email|ip|ipv6|ipv4))?
        /x';
        $ret = preg_match($pattern, $specString, $regs);
        if ($ret === false || $ret === 0) {
            throw new Exception('Incorrect spec string');
        }
        $orig = $regs[0];
        $name = $regs[1];
        $attributes = isset($regs[2]) ? $regs[2] : null;
        $type = isset($regs[3]) ? $regs[3] : null;
        $short = null;
        $long = null;
        // check long,short option name.
        if (strpos($name, '|') !== false) {
            list($short, $long) = explode('|', $name);
        } else {
            if (strlen($name) === 1) {
                $short = $name;
            } else {
                if (strlen($name) > 1) {
                    $long = $name;
                }
            }
        }
        $this->short = $short;
        $this->long = $long;
        // option is required.
        if (strpos($attributes, ':') !== false) {
            $this->required();
        } else {
            if (strpos($attributes, '+') !== false) {
                // option with multiple value
                $this->multiple();
            } else {
                if (strpos($attributes, '?') !== false) {
                    // option is optional.(zero or one value)
                    $this->optional();
                } else {
                    $this->flag();
                }
            }
        }
        if ($type) {
            $this->isa($type);
        }
    }