std::string WRegExpValidator::javaScriptValidate() const { loadJavaScript(WApplication::instance()); WStringStream js; js << "new " WT_CLASS ".WRegExpValidator(" << isMandatory() << ','; if (regexp_) { js << WWebWidget::jsStringLiteral(regexp_->pattern()) << ",'"; #ifndef WT_TARGET_JAVA WFlags<RegExpFlag> flags = regexp_->flags(); #else int flags = regexp_->flags(); #endif if (flags & MatchCaseInsensitive) js << 'i'; js << '\''; } else js << "null, null"; js << ',' << WWebWidget::jsStringLiteral(invalidBlankText()) << ',' << WWebWidget::jsStringLiteral(invalidNoMatchText()) << ");"; return js.str(); }
std::string WLengthValidator::javaScriptValidate() const { loadJavaScript(WApplication::instance()); WStringStream js; js << "new " WT_CLASS ".WLengthValidator(" << isMandatory() << ','; if (minLength_ != 0) js << minLength_; else js << "null"; js << ','; if (maxLength_ != std::numeric_limits<int>::max()) js << maxLength_; else js << "null"; js << ',' << invalidBlankText().jsStringLiteral() << ',' << invalidTooShortText().jsStringLiteral() << ',' << invalidTooLongText().jsStringLiteral() << ");"; return js.str(); }
std::string WIntValidator::javaScriptValidate() const { loadJavaScript(WApplication::instance()); WStringStream js; js << "new " WT_CLASS ".WIntValidator(" << isMandatory() << ','; if (bottom_ != std::numeric_limits<int>::min()) js << bottom_; else js << "null"; js << ','; if (top_ != std::numeric_limits<int>::max()) js << top_; else js << "null"; js << "," << WWebWidget::jsStringLiteral(WLocale::currentLocale() .groupSeparator()) << ',' << invalidBlankText().jsStringLiteral() << ',' << invalidNotANumberText().jsStringLiteral() << ',' << invalidTooSmallText().jsStringLiteral() << ',' << invalidTooLargeText().jsStringLiteral() << ");"; return js.str(); }
std::string WTimeValidator::javaScriptValidate() const { loadJavaScript(WApplication::instance()); WStringStream js; js << "new " WT_CLASS ".WTimeValidator(" << (isMandatory() ? "true" : "false") << ",["; for (unsigned i = 0; i < formats_.size(); ++i) { WTime::RegExpInfo r = WTime::formatToRegExp(formats_[i]); if (i != 0) js << ','; js << "{" << "regexp:" << WWebWidget::jsStringLiteral(r.regexp) << ',' << "getHour:function(results){" << r.hourGetJS << ";}," << "getMinute:function(results){" << r.minuteGetJS << ";}," << "getSecond:function(results){" << r.secGetJS << ";}" << "getMSec:function(results){" << r.msecGetJS << ";}" << "}"; } js << "],"; if (!bottom_.isNull()) js << "new Time(" << bottom_.hour() << ',' << bottom_.minute()-1 << ',' << bottom_.second() << ")"; else js << "null"; js << ','; if (!top_.isNull()) js << "new Time(" << top_.hour() << ',' << top_.minute()-1 << ',' << top_.second() << ")"; else js << "null"; js << ',' << invalidBlankText().jsStringLiteral() << ',' << invalidNotATimeText().jsStringLiteral() << ',' << invalidTooEarlyText().jsStringLiteral() << ',' << invalidTooLateText().jsStringLiteral() << ");"; return js.str(); }
std::string WDateValidator::javaScriptValidate() const { loadJavaScript(WApplication::instance()); WStringStream js; js << "new " WT_CLASS ".WDateValidator(" << isMandatory() << ",["; for (unsigned i = 0; i < formats_.size(); ++i) { WDate::RegExpInfo r = WDate::formatToRegExp(formats_[i]); if (i != 0) js << ','; js << "{" << "regexp:" << WWebWidget::jsStringLiteral(r.regexp) << ',' << "getMonth:function(results){" << r.monthGetJS << ";}," << "getDay:function(results){" << r.dayGetJS << ";}," << "getYear:function(results){" << r.yearGetJS << ";}" << "}"; } js << "],"; if (!bottom_.isNull()) js << "new Date(" << bottom_.year() << ',' << bottom_.month()-1 << ',' << bottom_.day() << ")"; else js << "null"; js << ','; if (!top_.isNull()) js << "new Date(" << top_.year() << ',' << top_.month()-1 << ',' << top_.day() << ")"; else js << "null"; js << ',' << invalidBlankText().jsStringLiteral() << ',' << invalidNotADateText().jsStringLiteral() << ',' << invalidTooEarlyText().jsStringLiteral() << ',' << invalidTooLateText().jsStringLiteral() << ");"; return js.str(); }
std::string WMatchValidator::javaScriptValidate() const { loadJavaScript(WApplication::instance()); WStringStream js; js << "new " WT_CLASS ".WMatchValidator("; if(0 == m_pCompareWidget) { js << "null"; } else { js << m_pCompareWidget->jsRef(); } js << ',' << isMandatory() << ',' << invalidBlankText().jsStringLiteral() << ',' << invalidDataText().jsStringLiteral() << ',' << mismatchText().jsStringLiteral() << ");"; return js.str(); }
std::string WRegExpValidator::javaScriptValidate() const { loadJavaScript(WApplication::instance()); WStringStream js; js << "new " WT_CLASS ".WRegExpValidator(" << isMandatory() << ','; js << WWebWidget::jsStringLiteral(pattern_) << ",'"; if (regex_.flags() & std::regex::icase) js << 'i'; js << '\''; js << ',' << WWebWidget::jsStringLiteral(invalidBlankText()) << ',' << WWebWidget::jsStringLiteral(invalidNoMatchText()) << ");"; return js.str(); }
WValidator::State WDoubleValidator::validate(std::wstring& input, int& pos) const { if (isMandatory()) { if (input.empty()) return InvalidEmpty; } else { if (input.empty()) return Valid; } try { double i = boost::lexical_cast<double>(input); if ((i >= bottom_) && (i <= top_)) return Valid; else return Invalid; } catch (boost::bad_lexical_cast& e) { return Invalid; } return Valid; }