
class AbstractSmartDatePart
{
    constructor(placeholder, isStatic)
    {
        this._state = AbstractSmartDatePart.STATE_NONE;
        this._cleanedValue = '';
        this._parsedValue = '';
        
        this._scanned = '';
        this._placeholder = placeholder;
        this._static = isStatic;
    }
    
    state()
    {
        return this._state;
    }
    
    isNoState()
    {
        return this._state === AbstractSmartDatePart.STATE_NONE;
    }
    
    isIncomplete()
    {
        return this._state === AbstractSmartDatePart.STATE_INCOMPLETE;
    }
    
    isComplete()
    {
        return this._state === AbstractSmartDatePart.STATE_COMPLETE;
    }
    
    resetState()
    {
        this._state = AbstractSmartDatePart.STATE_NONE;
    }
    
    cleanedValue()
    {
        return this._cleanedValue;
    }
    
    parsedValue()
    {
        return this._parsedValue;
    }
    
    placeHolder()
    {
        return this._placeholder;
    }
    
    isStatic()
    {
        return this._static;
    }
    
    _isNumericSymbol(symbol)
    {
        return '0' <= symbol && symbol <= '9';
    }

    /**
     * @param {SmartDateCheckState} state
     * @returns {Boolean}
     */
    check(state)
    {
        return false;
    }
};

AbstractSmartDatePart.STATE_NONE = 0;
AbstractSmartDatePart.STATE_INCOMPLETE = 1;
AbstractSmartDatePart.STATE_COMPLETE = 2;
