bool SaxHandler::startElement( const QString &ns, const QString &ln, const QString &qn, const QXmlAttributes &attrs ) { if ( !jshandler.isValid() ) { error = ErrorNoHandler; return false; } KJS::Identifier funName("startElement"); if ( !jshandler.hasProperty(exec, funName) ) return QXmlDefaultHandler::startElement( ns, ln, qn, attrs ); KJS::Object fun = jshandler.get(exec, funName).toObject( exec ); if ( !fun.implementsCall() ) { error = ErrorNotCallable; return false; } KJS::List args; args.append( KJS::String(ns) ); args.append( KJS::String(ln) ); args.append( KJS::String(qn) ); // TODO: XmlAttributes not yet supported KJS::Value ret = fun.call( exec, jshandler, args ); return ret.toBoolean( exec ); }
KJS::Value KJSEmbedPart::callMethod( const QString & methodName, const KJS::List & args ) const { KJS::ExecState *exec = js->globalExec(); KJS::Identifier id = KJS::Identifier( KJS::UString(methodName.latin1() )); KJS::Object obj = js->globalObject(); KJS::Object fun = obj.get(exec, id ).toObject( exec ); KJS::Value retValue; if ( !fun.implementsCall() ) { // We need to create an exception here... } else retValue = fun.call(exec, obj, args); kdDebug( 80001 ) << "Returned type is: " << retValue.type() << endl; if( exec->hadException() ) { kdWarning( 80001 ) << "Got error: " << exec->exception().toString(exec).qstring() << endl; return exec->exception(); } else { if( retValue.type() == 1 && retValue.type() == 0) { kdDebug( 80001 ) << "Got void return type. " << endl; return KJS::Null(); } } return retValue; }
bool SaxHandler::endDocument() { if ( !jshandler.isValid() ) { error = ErrorNoHandler; return false; } KJS::Identifier funName("endDocument"); if ( !jshandler.hasProperty(exec, funName) ) return QXmlDefaultHandler::endDocument(); KJS::Object fun = jshandler.get(exec, funName).toObject( exec ); if ( !fun.implementsCall() ) { error = ErrorNotCallable; return false; } KJS::Value ret = fun.call( exec, jshandler, KJS::List() ); return ret.toBoolean( exec ); }
bool SaxHandler::characters( const QString &chars ) { if ( !jshandler.isValid() ) { error = ErrorNoHandler; return false; } KJS::Identifier funName("characters"); if ( !jshandler.hasProperty(exec, funName) ) return QXmlDefaultHandler::characters( chars ); KJS::Object fun = jshandler.get(exec, funName).toObject( exec ); if ( !fun.implementsCall() ) { error = ErrorNotCallable; return false; } KJS::List args; args.append( KJS::String(chars) ); KJS::Value ret = fun.call( exec, jshandler, args ); return ret.toBoolean( exec ); }