rubyfox-server 2.8.4.0 → 2.9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE.txt +2 -2
- data/lib/rubyfox/server/data/config/ExtensionManagerLock.txt +2 -0
- data/lib/rubyfox/server/data/config/core.xml +9 -9
- data/lib/rubyfox/server/data/config/crossdomain.xml +1 -1
- data/lib/rubyfox/server/data/config/descriptors/config_room.txt +112 -3
- data/lib/rubyfox/server/data/config/descriptors/config_server.txt +550 -73
- data/lib/rubyfox/server/data/config/descriptors/config_zone.txt +11 -2
- data/lib/rubyfox/server/data/config/descriptors/runtime_mmo.txt +74 -0
- data/lib/rubyfox/server/data/config/descriptors/runtime_room.txt +33 -4
- data/lib/rubyfox/server/data/config/descriptors/runtime_user.txt +1 -1
- data/lib/rubyfox/server/data/config/descriptors/runtime_zone.txt +37 -5
- data/lib/rubyfox/server/data/config/keystore.jks +0 -0
- data/lib/rubyfox/server/data/config/log4j.properties +5 -1
- data/lib/rubyfox/server/data/config/logParser.properties +30 -0
- data/lib/rubyfox/server/data/config/server.xml +51 -9
- data/lib/rubyfox/server/data/config/templates/templates.dat +0 -0
- data/lib/rubyfox/server/data/lib/Lib/sfs2x-lib.jar +0 -0
- data/lib/rubyfox/server/data/lib/httpclient-4.3.3.jar +0 -0
- data/lib/rubyfox/server/data/lib/httpcore-4.3.2.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/VERSION.txt +7576 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/README.spnego +62 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jdbcRealm.properties +72 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-annotations.xml +20 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-debug.xml +23 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-deploy.xml +62 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-http.xml +41 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-https.xml +47 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-ipaccess.xml +31 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-jaas.xml +17 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-jmx-remote.xml +27 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-jmx.xml +43 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-logging.xml +36 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-lowresources.xml +22 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-monitor.xml +30 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-plus.xml +26 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-proxy.xml +35 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-requestlog.xml +32 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-rewrite.xml +41 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-setuid.xml +30 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-spdy-proxy.xml +158 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-spdy.xml +153 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-ssl.xml +41 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-started.xml +15 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-stats.xml +18 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-xinetd.xml +54 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty.conf +12 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty.xml +160 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/keystore +0 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/krb5.ini +23 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/spnego.conf +19 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/spnego.properties +1 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/webdefault.xml +540 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/asm-4.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/asm-commons-4.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/ext/.donotdelete +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jaspi/javax.security.auth.message-1.0.0.v201108011116.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/javax.annotation-api-1.2.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/javax.el-3.0.0.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/javax.servlet.jsp-2.3.2.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/javax.servlet.jsp-api-2.3.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/javax.servlet.jsp.jstl-1.2.0.v201105211821.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-annotations-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-client-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-continuation-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-deploy-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-http-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-io-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jaas-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jaspi-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jmx-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jndi-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jsp-jdt-2.3.3.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-plus-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-proxy-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-rewrite-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-schemas-3.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-security-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-server-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-servlet-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-servlets-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-util-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-webapp-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-xml-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jndi/javax.activation-1.1.0.v201105071233.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jndi/javax.transaction-api-1.2.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/monitor/jetty-monitor-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/org.apache.taglibs.standard.glassfish-1.2.0.v201112081803.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/org.eclipse.jdt.core-3.8.2.v20130121.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/servlet-api-3.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/setuid/jetty-setuid-java-1.0.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/setuid/libsetuid-linux.so +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/setuid/libsetuid-osx.so +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-client-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-core-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-http-common-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-http-server-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-server-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/start.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket-api-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket/javax-websocket-client-impl-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket/javax-websocket-server-impl-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket/javax.websocket-api-1.0.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket/websocket-client-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket/websocket-common-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket/websocket-server-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket/websocket-servlet-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/license-eplv10-aslv20.html +576 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/.donotdelete +0 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/annotations.mod +17 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/client.mod +6 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/continuation.mod +6 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/debug.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/deploy.mod +15 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/ext.mod +11 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/http.mod +14 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/https.mod +16 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/ipaccess.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/jaas.mod +16 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/jaspi.mod +10 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/jmx-remote.mod +18 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/jmx.mod +10 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/jndi.mod +11 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/jsp.mod +14 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/jvm.mod +23 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/logging.mod +27 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/lowresources.mod +18 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/monitor.mod +13 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn.mod +32 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_10.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_11.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_13.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_15.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_17.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_21.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_25.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_4.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_40.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_45.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_5.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_6.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_7.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_9.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/plus.mod +14 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/proxy.mod +22 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/requestlog.mod +26 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/resources.mod +10 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/rewrite.mod +12 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/security.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/server.mod +38 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/servlet.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/servlets.mod +10 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/setuid.mod +19 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/spdy.mod +23 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/ssl.mod +29 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/stats.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/webapp.mod +10 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/websocket.mod +12 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/xinetd.mod +17 -0
- data/lib/rubyfox/server/data/lib/jetty/notice.html +111 -0
- data/lib/rubyfox/server/data/lib/jetty/resources/.keep +0 -0
- data/lib/rubyfox/server/data/lib/jetty/start.d/README.TXT +24 -0
- data/lib/rubyfox/server/data/lib/jetty/start.d/http.ini +7 -0
- data/lib/rubyfox/server/data/lib/jetty/start.d/https.ini +9 -0
- data/lib/rubyfox/server/data/lib/jetty/start.d/ssl.ini +19 -0
- data/lib/rubyfox/server/data/lib/jetty/start.ini +84 -0
- data/lib/rubyfox/server/data/lib/jetty/webapps/.keep +0 -0
- data/lib/rubyfox/server/data/lib/logs-analysis-app.jar +0 -0
- data/lib/rubyfox/server/data/lib/netty-3.9.0.Final.jar +0 -0
- data/lib/rubyfox/server/data/lib/scala-library.jar +0 -0
- data/lib/rubyfox/server/data/lib/sfs2x-admin.jar +0 -0
- data/lib/rubyfox/server/data/lib/sfs2x-core.jar +0 -0
- data/lib/rubyfox/server/data/lib/sfs2x-lib.jar +0 -0
- data/lib/rubyfox/server/data/lib/sfs2x-util.jar +0 -0
- data/lib/rubyfox/server/data/lib/sfs2x.jar +0 -0
- data/lib/rubyfox/server/data/lib/slf4j-api-1.7.5.jar +0 -0
- data/lib/rubyfox/server/data/lib/slf4j-log4j12-1.7.5.jar +0 -0
- data/lib/rubyfox/server/data/sfs2x-service +9 -9
- data/lib/rubyfox/server/data/sfs2x-service.vmoptions +1 -1
- data/lib/rubyfox/server/data/sfs2x.sh +6 -6
- data/lib/rubyfox/server/data/www/root/admin/AdminTool.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/ReleaseNotes.txt +23 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bannedIPs.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bannedUsernames.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bookmarks.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bootLog.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/connection.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/globalServerStatus.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/logsDownload.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/mMOSettings.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/permissionsAndEvents.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/roomExtension.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/roomVariables.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeLog.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeRoomSettings.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeUserSettings.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeZoneSettings.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsApplication.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsDemographics.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsExceptions.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsOverview.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsTechnology.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/systemQueueStatus.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/threadPools.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/userManagement.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/zoneExtension.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/zoneTraffic.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/index.html +4 -16
- data/lib/rubyfox/server/data/www/root/admin/modules/Analytics/Analytics.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/BanManager/BanManager.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/BlueBoxMonitor/BlueBoxMonitor.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/Dashboard/Dashboard.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/ExtensionManager/ExtensionManager.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/ExtensionManager/icon.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/LicenseManager/LicenseManager.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/LogViewer/LogViewer.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/ServerConfigurator/ServerConfigurator.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/ZoneConfigurator/ZoneConfigurator.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/ZoneMonitor/ZoneMonitor.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/config.xml +1 -0
- data/lib/rubyfox/server/data/www/root/favicon.ico +0 -0
- data/lib/rubyfox/server/data/www/root/favicon.png +0 -0
- data/lib/rubyfox/server/data/www/sfs2x-ws.war +0 -0
- data/lib/rubyfox/server/data/www/sfs2x-ws.xml +30 -0
- data/lib/rubyfox/server/version.rb +1 -1
- data/rubyfox-server.gemspec +1 -0
- metadata +171 -48
- data/.rvmrc +0 -1
- data/lib/rubyfox/server/data/config/jetty/jetty.xml +0 -214
- data/lib/rubyfox/server/data/config/jetty/realm.properties +0 -21
- data/lib/rubyfox/server/data/config/jetty/webdefault.xml +0 -410
- data/lib/rubyfox/server/data/config/myprop.properties +0 -5
- data/lib/rubyfox/server/data/data/bannedusers/users.bin +0 -0
- data/lib/rubyfox/server/data/data/buddylists/BasicExamples/7364666773646667 +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/ant-1.6.5.jar +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/core-3.1.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/jetty-6.1.26.jar +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/jetty-util-6.1.26.jar +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/jsp-2.1-glassfish-2.1.v20091210.jar +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/jsp-2.1-jetty-6.1.26.jar +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/jsp-api-2.1-glassfish-2.1.v20091210.jar +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/servlet-api-2.5-20081211.jar +0 -0
- data/lib/rubyfox/server/data/lib/extras/slf4j-jdk14-1.5.10.jar +0 -0
- data/lib/rubyfox/server/data/lib/httpclient-4.0.3.jar +0 -0
- data/lib/rubyfox/server/data/lib/httpcore-4.0.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jconsole/COPYING.txt +0 -504
- data/lib/rubyfox/server/data/lib/jconsole/bug_test_case.py +0 -49
- data/lib/rubyfox/server/data/lib/jconsole/console$py.class +0 -0
- data/lib/rubyfox/server/data/lib/jconsole/console.py +0 -439
- data/lib/rubyfox/server/data/lib/jconsole/history$py.class +0 -0
- data/lib/rubyfox/server/data/lib/jconsole/history.py +0 -82
- data/lib/rubyfox/server/data/lib/jconsole/history_test_case.py +0 -133
- data/lib/rubyfox/server/data/lib/jconsole/introspect$py.class +0 -0
- data/lib/rubyfox/server/data/lib/jconsole/introspect.py +0 -373
- data/lib/rubyfox/server/data/lib/jconsole/introspect_test_case.py +0 -19
- data/lib/rubyfox/server/data/lib/jconsole/issue_17_test_case.py +0 -36
- data/lib/rubyfox/server/data/lib/jconsole/jintrospect$py.class +0 -0
- data/lib/rubyfox/server/data/lib/jconsole/jintrospect.py +0 -316
- data/lib/rubyfox/server/data/lib/jconsole/jintrospect_test_case.py +0 -107
- data/lib/rubyfox/server/data/lib/jconsole/popup$py.class +0 -0
- data/lib/rubyfox/server/data/lib/jconsole/popup.py +0 -178
- data/lib/rubyfox/server/data/lib/jconsole/run_tests.py +0 -8
- data/lib/rubyfox/server/data/lib/jconsole/static_test_case.py +0 -36
- data/lib/rubyfox/server/data/lib/jconsole/testcase.py +0 -38
- data/lib/rubyfox/server/data/lib/jconsole/tip$py.class +0 -0
- data/lib/rubyfox/server/data/lib/jconsole/tip.py +0 -47
- data/lib/rubyfox/server/data/lib/slf4j-api-1.5.10.jar +0 -0
- data/lib/rubyfox/server/data/lib/slf4j-log4j12.jar +0 -0
- data/lib/rubyfox/server/data/lib/ws-engine.jar +0 -0
- data/lib/rubyfox/server/data/www/BlueBox.war +0 -0
- data/lib/rubyfox/server/data/www/root/admin/AdminTool.html +0 -120
|
Binary file
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
history.py - Handles the History of the jython console
|
|
3
|
-
Copyright (C) 2001 Carlos Quiroz
|
|
4
|
-
|
|
5
|
-
This program is free software; you can redistribute it and/or
|
|
6
|
-
modify it under the terms of the GNU General Public License
|
|
7
|
-
as published by the Free Software Foundation; either version 2
|
|
8
|
-
of the License, or any later version.
|
|
9
|
-
|
|
10
|
-
This program is distributed in the hope that it will be useful,
|
|
11
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
-
GNU General Public License for more details.
|
|
14
|
-
|
|
15
|
-
You should have received a copy of the GNU General Public License
|
|
16
|
-
along with this program; if not, write to the Free Software
|
|
17
|
-
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
from java.lang import System, Runtime
|
|
21
|
-
from java.lang import Runnable, Thread
|
|
22
|
-
|
|
23
|
-
class History(Runnable):
|
|
24
|
-
"""
|
|
25
|
-
Command line history
|
|
26
|
-
"""
|
|
27
|
-
|
|
28
|
-
default_history_file = System.getProperty("user.home") + '/.jythonconsole.history'
|
|
29
|
-
MAX_SIZE = 200
|
|
30
|
-
|
|
31
|
-
def __init__(self, console, history_file=default_history_file):
|
|
32
|
-
Runtime.getRuntime().addShutdownHook(Thread(self))
|
|
33
|
-
|
|
34
|
-
self.history_file = history_file
|
|
35
|
-
self.history = []
|
|
36
|
-
self.loadHistory()
|
|
37
|
-
|
|
38
|
-
self.console = console
|
|
39
|
-
self.index = len(self.history) - 1
|
|
40
|
-
self.last = ""
|
|
41
|
-
|
|
42
|
-
def append(self, line):
|
|
43
|
-
if line == None or line == '\n' or len(line) == 0:
|
|
44
|
-
return
|
|
45
|
-
|
|
46
|
-
if line != self.last: # avoids duplicates
|
|
47
|
-
self.last = line
|
|
48
|
-
self.history.append(line)
|
|
49
|
-
|
|
50
|
-
self.index = len(self.history) - 1
|
|
51
|
-
|
|
52
|
-
def historyUp(self, event=None):
|
|
53
|
-
if len(self.history) > 0 and self.console.inLastLine():
|
|
54
|
-
self.console.replaceRow(self.history[self.index])
|
|
55
|
-
self.index = max(self.index - 1, 0)
|
|
56
|
-
|
|
57
|
-
def historyDown(self, event=None):
|
|
58
|
-
if len(self.history) > 0 and self.console.inLastLine():
|
|
59
|
-
if self.index == len(self.history) - 1:
|
|
60
|
-
self.console.replaceRow("")
|
|
61
|
-
else:
|
|
62
|
-
self.index += 1
|
|
63
|
-
self.console.replaceRow(self.history[self.index])
|
|
64
|
-
|
|
65
|
-
def loadHistory(self):
|
|
66
|
-
try:
|
|
67
|
-
f = open(self.history_file)
|
|
68
|
-
for line in f.readlines():
|
|
69
|
-
self.history.append(line[:-1])
|
|
70
|
-
f.close()
|
|
71
|
-
except:
|
|
72
|
-
pass
|
|
73
|
-
|
|
74
|
-
def saveHistory(self):
|
|
75
|
-
f = open(self.history_file, 'w')
|
|
76
|
-
for item in self.history[-self.MAX_SIZE:]:
|
|
77
|
-
f.write("%s\n" % item)
|
|
78
|
-
f.flush()
|
|
79
|
-
f.close()
|
|
80
|
-
|
|
81
|
-
def run(self):
|
|
82
|
-
self.saveHistory()
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import unittest
|
|
2
|
-
import tempfile
|
|
3
|
-
from history import History
|
|
4
|
-
|
|
5
|
-
try:
|
|
6
|
-
True, False
|
|
7
|
-
except NameError:
|
|
8
|
-
(True, False) = (1, 0)
|
|
9
|
-
|
|
10
|
-
class MockConsole:
|
|
11
|
-
def replaceRow(self, text):
|
|
12
|
-
self.text = text
|
|
13
|
-
|
|
14
|
-
def inLastLine(self):
|
|
15
|
-
return True
|
|
16
|
-
|
|
17
|
-
class HistoryTestCase(unittest.TestCase):
|
|
18
|
-
|
|
19
|
-
def setUp(self):
|
|
20
|
-
self.console = MockConsole()
|
|
21
|
-
|
|
22
|
-
def tearDown(self):
|
|
23
|
-
self.console = None
|
|
24
|
-
|
|
25
|
-
def testHistoryUp(self):
|
|
26
|
-
h = History(self.console, tempfile.mktemp())
|
|
27
|
-
h.append("one")
|
|
28
|
-
h.append("two")
|
|
29
|
-
h.append("three")
|
|
30
|
-
|
|
31
|
-
h.historyUp()
|
|
32
|
-
self.assertEquals("three", self.console.text)
|
|
33
|
-
|
|
34
|
-
h.historyUp()
|
|
35
|
-
self.assertEquals("two", self.console.text)
|
|
36
|
-
|
|
37
|
-
h.historyUp()
|
|
38
|
-
self.assertEquals("one", self.console.text)
|
|
39
|
-
|
|
40
|
-
# history doesn't roll, just stops at the last item
|
|
41
|
-
h.historyUp()
|
|
42
|
-
self.assertEquals("one", self.console.text)
|
|
43
|
-
|
|
44
|
-
def testHistoryDown(self):
|
|
45
|
-
h = History(self.console,tempfile.mktemp())
|
|
46
|
-
h.append("one")
|
|
47
|
-
h.append("two")
|
|
48
|
-
h.append("three")
|
|
49
|
-
|
|
50
|
-
h.historyUp()
|
|
51
|
-
h.historyUp()
|
|
52
|
-
|
|
53
|
-
h.historyUp()
|
|
54
|
-
self.assertEquals("one", self.console.text)
|
|
55
|
-
|
|
56
|
-
h.historyDown()
|
|
57
|
-
self.assertEquals("two", self.console.text)
|
|
58
|
-
|
|
59
|
-
h.historyDown()
|
|
60
|
-
self.assertEquals("three", self.console.text)
|
|
61
|
-
|
|
62
|
-
h.historyDown()
|
|
63
|
-
self.assertEquals("", self.console.text)
|
|
64
|
-
|
|
65
|
-
# History doesn't wrap
|
|
66
|
-
h.historyDown()
|
|
67
|
-
self.assertEquals("", self.console.text)
|
|
68
|
-
|
|
69
|
-
def testSkipDuplicates(self):
|
|
70
|
-
h = History(self.console, tempfile.mktemp())
|
|
71
|
-
h.append("one")
|
|
72
|
-
h.append("one")
|
|
73
|
-
h.append("two")
|
|
74
|
-
h.append("two")
|
|
75
|
-
h.append("three")
|
|
76
|
-
h.append("three")
|
|
77
|
-
|
|
78
|
-
h.historyUp()
|
|
79
|
-
self.assertEquals("three", self.console.text)
|
|
80
|
-
|
|
81
|
-
h.historyUp()
|
|
82
|
-
self.assertEquals("two", self.console.text)
|
|
83
|
-
|
|
84
|
-
h.historyUp()
|
|
85
|
-
self.assertEquals("one", self.console.text)
|
|
86
|
-
|
|
87
|
-
def testSkipEmpty(self):
|
|
88
|
-
h = History(self.console, tempfile.mktemp())
|
|
89
|
-
size = len(h.history)
|
|
90
|
-
h.append("")
|
|
91
|
-
self.assert_(len(h.history) == size)
|
|
92
|
-
|
|
93
|
-
h.append("\n")
|
|
94
|
-
self.assert_(len(h.history) == size)
|
|
95
|
-
|
|
96
|
-
h.append(None)
|
|
97
|
-
self.assert_(len(h.history) == size)
|
|
98
|
-
|
|
99
|
-
def testLoadHistory(self):
|
|
100
|
-
file = tempfile.mktemp()
|
|
101
|
-
f = open(file, "w")
|
|
102
|
-
f.write("red\n")
|
|
103
|
-
f.write("yellow\n")
|
|
104
|
-
f.write("blue\n")
|
|
105
|
-
f.flush()
|
|
106
|
-
f.close()
|
|
107
|
-
|
|
108
|
-
h = History(self.console, file)
|
|
109
|
-
h.historyUp()
|
|
110
|
-
self.assertEquals("blue", self.console.text)
|
|
111
|
-
|
|
112
|
-
h.historyUp()
|
|
113
|
-
self.assertEquals("yellow", self.console.text)
|
|
114
|
-
|
|
115
|
-
h.historyUp()
|
|
116
|
-
self.assertEquals("red", self.console.text)
|
|
117
|
-
|
|
118
|
-
def testSaveHistory(self):
|
|
119
|
-
file = tempfile.mktemp()
|
|
120
|
-
|
|
121
|
-
h = History(self.console, file)
|
|
122
|
-
h.append("a")
|
|
123
|
-
h.append("b")
|
|
124
|
-
h.append("c")
|
|
125
|
-
h.saveHistory()
|
|
126
|
-
|
|
127
|
-
f = open(file)
|
|
128
|
-
self.assertEquals("a", f.readline()[:-1])
|
|
129
|
-
self.assertEquals("b", f.readline()[:-1])
|
|
130
|
-
self.assertEquals("c", f.readline()[:-1])
|
|
131
|
-
|
|
132
|
-
if __name__ == '__main__':
|
|
133
|
-
unittest.main()
|
|
Binary file
|
|
@@ -1,373 +0,0 @@
|
|
|
1
|
-
"""Provides a variety of introspective-type support functions for
|
|
2
|
-
things like call tips and command auto completion.
|
|
3
|
-
|
|
4
|
-
NOTE: this file is a modification of Patrick O'Brien's version 1.62
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
from __future__ import nested_scopes
|
|
8
|
-
|
|
9
|
-
__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
|
|
10
|
-
__cvsid__ = "$Id: introspect.py,v 1.5 2003/05/01 03:43:53 dcoleman Exp $"
|
|
11
|
-
__revision__ = "$Revision: 1.5 $"[11:-2]
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
import cStringIO
|
|
15
|
-
import inspect
|
|
16
|
-
import sys
|
|
17
|
-
import tokenize
|
|
18
|
-
import types
|
|
19
|
-
|
|
20
|
-
try:
|
|
21
|
-
True
|
|
22
|
-
except NameError:
|
|
23
|
-
True = 1==1
|
|
24
|
-
False = 1==0
|
|
25
|
-
|
|
26
|
-
def getAutoCompleteList(command='', locals=None, includeMagic=1,
|
|
27
|
-
includeSingle=1, includeDouble=1):
|
|
28
|
-
"""Return list of auto-completion options for command.
|
|
29
|
-
|
|
30
|
-
The list of options will be based on the locals namespace."""
|
|
31
|
-
attributes = []
|
|
32
|
-
# Get the proper chunk of code from the command.
|
|
33
|
-
root = getRoot(command, terminator='.')
|
|
34
|
-
try:
|
|
35
|
-
if locals is not None:
|
|
36
|
-
object = eval(root, locals)
|
|
37
|
-
else:
|
|
38
|
-
object = eval(root)
|
|
39
|
-
except:
|
|
40
|
-
pass
|
|
41
|
-
else:
|
|
42
|
-
attributes = getAttributeNames(object, includeMagic,
|
|
43
|
-
includeSingle, includeDouble)
|
|
44
|
-
return attributes
|
|
45
|
-
|
|
46
|
-
def getAttributeNames(object, includeMagic=1, includeSingle=1,
|
|
47
|
-
includeDouble=1):
|
|
48
|
-
"""Return list of unique attributes, including inherited, for object."""
|
|
49
|
-
attributes = []
|
|
50
|
-
dict = {}
|
|
51
|
-
if not hasattrAlwaysReturnsTrue(object):
|
|
52
|
-
# Add some attributes that don't always get picked up. If
|
|
53
|
-
# they don't apply, they'll get filtered out at the end.
|
|
54
|
-
attributes += ['__bases__', '__class__', '__dict__', '__name__',
|
|
55
|
-
'func_closure', 'func_code', 'func_defaults',
|
|
56
|
-
'func_dict', 'func_doc', 'func_globals', 'func_name']
|
|
57
|
-
if includeMagic:
|
|
58
|
-
try: attributes += object._getAttributeNames()
|
|
59
|
-
except: pass
|
|
60
|
-
# Get all attribute names.
|
|
61
|
-
attrdict = getAllAttributeNames(object)
|
|
62
|
-
for attrlist in attrdict.values():
|
|
63
|
-
attributes += attrlist
|
|
64
|
-
# Remove duplicates from the attribute list.
|
|
65
|
-
for item in attributes:
|
|
66
|
-
dict[item] = None
|
|
67
|
-
attributes = dict.keys()
|
|
68
|
-
attributes.sort(lambda x, y: cmp(x.upper(), y.upper()))
|
|
69
|
-
if not includeSingle:
|
|
70
|
-
attributes = filter(lambda item: item[0]!='_' \
|
|
71
|
-
or item[1]=='_', attributes)
|
|
72
|
-
if not includeDouble:
|
|
73
|
-
attributes = filter(lambda item: item[:2]!='__', attributes)
|
|
74
|
-
# Make sure we haven't picked up any bogus attributes somehow.
|
|
75
|
-
attributes = [attribute for attribute in attributes \
|
|
76
|
-
if hasattr(object, attribute)]
|
|
77
|
-
return attributes
|
|
78
|
-
|
|
79
|
-
def hasattrAlwaysReturnsTrue(object):
|
|
80
|
-
return hasattr(object, 'bogu5_123_aTTri8ute')
|
|
81
|
-
|
|
82
|
-
def getAllAttributeNames(object):
|
|
83
|
-
"""Return dict of all attributes, including inherited, for an object.
|
|
84
|
-
|
|
85
|
-
Recursively walk through a class and all base classes.
|
|
86
|
-
"""
|
|
87
|
-
attrdict = {} # (object, technique, count): [list of attributes]
|
|
88
|
-
# !!!
|
|
89
|
-
# Do Not use hasattr() as a test anywhere in this function,
|
|
90
|
-
# because it is unreliable with remote objects: xmlrpc, soap, etc.
|
|
91
|
-
# They always return true for hasattr().
|
|
92
|
-
# !!!
|
|
93
|
-
try:
|
|
94
|
-
# Yes, this can fail if object is an instance of a class with
|
|
95
|
-
# __str__ (or __repr__) having a bug or raising an
|
|
96
|
-
# exception. :-(
|
|
97
|
-
key = str(object)
|
|
98
|
-
except:
|
|
99
|
-
key = 'anonymous'
|
|
100
|
-
# Wake up sleepy objects - a hack for ZODB objects in "ghost" state.
|
|
101
|
-
wakeupcall = dir(object)
|
|
102
|
-
del wakeupcall
|
|
103
|
-
# Get attributes available through the normal convention.
|
|
104
|
-
attributes = dir(object)
|
|
105
|
-
attrdict[(key, 'dir', len(attributes))] = attributes
|
|
106
|
-
# Get attributes from the object's dictionary, if it has one.
|
|
107
|
-
try:
|
|
108
|
-
attributes = object.__dict__.keys()
|
|
109
|
-
attributes.sort()
|
|
110
|
-
except: # Must catch all because object might have __getattr__.
|
|
111
|
-
pass
|
|
112
|
-
else:
|
|
113
|
-
attrdict[(key, '__dict__', len(attributes))] = attributes
|
|
114
|
-
# For a class instance, get the attributes for the class.
|
|
115
|
-
try:
|
|
116
|
-
klass = object.__class__
|
|
117
|
-
except: # Must catch all because object might have __getattr__.
|
|
118
|
-
pass
|
|
119
|
-
else:
|
|
120
|
-
if klass is object:
|
|
121
|
-
# Break a circular reference. This happens with extension
|
|
122
|
-
# classes.
|
|
123
|
-
pass
|
|
124
|
-
else:
|
|
125
|
-
attrdict.update(getAllAttributeNames(klass))
|
|
126
|
-
# Also get attributes from any and all parent classes.
|
|
127
|
-
try:
|
|
128
|
-
bases = object.__bases__
|
|
129
|
-
except: # Must catch all because object might have __getattr__.
|
|
130
|
-
pass
|
|
131
|
-
else:
|
|
132
|
-
if isinstance(bases, types.TupleType):
|
|
133
|
-
for base in bases:
|
|
134
|
-
if type(base) is types.TypeType:
|
|
135
|
-
# Break a circular reference. Happens in Python 2.2.
|
|
136
|
-
pass
|
|
137
|
-
if type(base) is type(type):
|
|
138
|
-
# Break a circular reference. Happens in Jython 2.2b1.
|
|
139
|
-
pass
|
|
140
|
-
else:
|
|
141
|
-
attrdict.update(getAllAttributeNames(base))
|
|
142
|
-
return attrdict
|
|
143
|
-
|
|
144
|
-
def getCallTip(command='', locals=None):
|
|
145
|
-
"""For a command, return a tuple of object name, argspec, tip text.
|
|
146
|
-
|
|
147
|
-
The call tip information will be based on the locals namespace."""
|
|
148
|
-
calltip = ('', '', '') # object name, argspec, tip text.
|
|
149
|
-
# Get the proper chunk of code from the command.
|
|
150
|
-
root = getRoot(command, terminator='(')
|
|
151
|
-
try:
|
|
152
|
-
if locals is not None:
|
|
153
|
-
object = eval(root, locals)
|
|
154
|
-
else:
|
|
155
|
-
object = eval(root)
|
|
156
|
-
except:
|
|
157
|
-
return calltip
|
|
158
|
-
name = ''
|
|
159
|
-
object, dropSelf = getBaseObject(object)
|
|
160
|
-
try:
|
|
161
|
-
name = object.__name__
|
|
162
|
-
except AttributeError:
|
|
163
|
-
pass
|
|
164
|
-
tip1 = ''
|
|
165
|
-
argspec = ''
|
|
166
|
-
if inspect.isbuiltin(object):
|
|
167
|
-
# Builtin functions don't have an argspec that we can get.
|
|
168
|
-
pass
|
|
169
|
-
elif inspect.isfunction(object):
|
|
170
|
-
# tip1 is a string like: "getCallTip(command='', locals=None)"
|
|
171
|
-
argspec = apply(inspect.formatargspec, inspect.getargspec(object))
|
|
172
|
-
if dropSelf:
|
|
173
|
-
# The first parameter to a method is a reference to an
|
|
174
|
-
# instance, usually coded as "self", and is usually passed
|
|
175
|
-
# automatically by Python; therefore we want to drop it.
|
|
176
|
-
temp = argspec.split(',')
|
|
177
|
-
if len(temp) == 1: # No other arguments.
|
|
178
|
-
argspec = '()'
|
|
179
|
-
else: # Drop the first argument.
|
|
180
|
-
argspec = '(' + ','.join(temp[1:]).lstrip()
|
|
181
|
-
tip1 = name + argspec
|
|
182
|
-
doc = ''
|
|
183
|
-
if callable(object):
|
|
184
|
-
doc = inspect.getdoc(object)
|
|
185
|
-
if doc:
|
|
186
|
-
# tip2 is the first separated line of the docstring, like:
|
|
187
|
-
# "Return call tip text for a command."
|
|
188
|
-
# tip3 is the rest of the docstring, like:
|
|
189
|
-
# "The call tip information will be based on ... <snip>
|
|
190
|
-
firstline = doc.split('\n')[0].lstrip()
|
|
191
|
-
if tip1 == firstline:
|
|
192
|
-
tip1 = ''
|
|
193
|
-
else:
|
|
194
|
-
tip1 += '\n\n'
|
|
195
|
-
docpieces = doc.split('\n\n')
|
|
196
|
-
tip2 = docpieces[0]
|
|
197
|
-
tip3 = '\n\n'.join(docpieces[1:])
|
|
198
|
-
tip = '%s%s\n\n%s' % (tip1, tip2, tip3)
|
|
199
|
-
else:
|
|
200
|
-
tip = tip1
|
|
201
|
-
calltip = (name, argspec[1:-1], tip.strip())
|
|
202
|
-
return calltip
|
|
203
|
-
|
|
204
|
-
def getRoot(command, terminator=None):
|
|
205
|
-
"""Return the rightmost root portion of an arbitrary Python command.
|
|
206
|
-
|
|
207
|
-
Return only the root portion that can be eval()'d without side
|
|
208
|
-
effects. The command would normally terminate with a '(' or
|
|
209
|
-
'.'. The terminator and anything after the terminator will be
|
|
210
|
-
dropped."""
|
|
211
|
-
command = command.split('\n')[-1]
|
|
212
|
-
if command.startswith(sys.ps2):
|
|
213
|
-
command = command[len(sys.ps2):]
|
|
214
|
-
command = command.lstrip()
|
|
215
|
-
command = rtrimTerminus(command, terminator)
|
|
216
|
-
tokens = getTokens(command)
|
|
217
|
-
if not tokens:
|
|
218
|
-
return ''
|
|
219
|
-
if tokens[-1][0] is tokenize.ENDMARKER:
|
|
220
|
-
# Remove the end marker.
|
|
221
|
-
del tokens[-1]
|
|
222
|
-
if not tokens:
|
|
223
|
-
return ''
|
|
224
|
-
if terminator == '.' and \
|
|
225
|
-
(tokens[-1][1] <> '.' or tokens[-1][0] is not tokenize.OP):
|
|
226
|
-
# Trap decimals in numbers, versus the dot operator.
|
|
227
|
-
return ''
|
|
228
|
-
else:
|
|
229
|
-
# Strip off the terminator.
|
|
230
|
-
if terminator and command.endswith(terminator):
|
|
231
|
-
size = 0 - len(terminator)
|
|
232
|
-
command = command[:size]
|
|
233
|
-
command = command.rstrip()
|
|
234
|
-
tokens = getTokens(command)
|
|
235
|
-
tokens.reverse()
|
|
236
|
-
line = ''
|
|
237
|
-
start = None
|
|
238
|
-
prefix = ''
|
|
239
|
-
laststring = '.'
|
|
240
|
-
emptyTypes = ('[]', '()', '{}')
|
|
241
|
-
for token in tokens:
|
|
242
|
-
tokentype = token[0]
|
|
243
|
-
tokenstring = token[1]
|
|
244
|
-
line = token[4]
|
|
245
|
-
if tokentype is tokenize.ENDMARKER:
|
|
246
|
-
continue
|
|
247
|
-
if tokentype in (tokenize.NAME, tokenize.STRING, tokenize.NUMBER) \
|
|
248
|
-
and laststring != '.':
|
|
249
|
-
# We've reached something that's not part of the root.
|
|
250
|
-
if prefix and line[token[3][1]] != ' ':
|
|
251
|
-
# If it doesn't have a space after it, remove the prefix.
|
|
252
|
-
prefix = ''
|
|
253
|
-
break
|
|
254
|
-
if tokentype in (tokenize.NAME, tokenize.STRING, tokenize.NUMBER) \
|
|
255
|
-
or (tokentype is tokenize.OP and tokenstring == '.'):
|
|
256
|
-
if prefix:
|
|
257
|
-
# The prefix isn't valid because it comes after a dot.
|
|
258
|
-
prefix = ''
|
|
259
|
-
break
|
|
260
|
-
else:
|
|
261
|
-
# start represents the last known good point in the line.
|
|
262
|
-
start = token[2][1]
|
|
263
|
-
elif len(tokenstring) == 1 and tokenstring in ('[({])}'):
|
|
264
|
-
# Remember, we're working backwords.
|
|
265
|
-
# So prefix += tokenstring would be wrong.
|
|
266
|
-
if prefix in emptyTypes and tokenstring in ('[({'):
|
|
267
|
-
# We've already got an empty type identified so now we
|
|
268
|
-
# are in a nested situation and we can break out with
|
|
269
|
-
# what we've got.
|
|
270
|
-
break
|
|
271
|
-
else:
|
|
272
|
-
prefix = tokenstring + prefix
|
|
273
|
-
else:
|
|
274
|
-
# We've reached something that's not part of the root.
|
|
275
|
-
break
|
|
276
|
-
laststring = tokenstring
|
|
277
|
-
if start is None:
|
|
278
|
-
start = len(line)
|
|
279
|
-
root = line[start:]
|
|
280
|
-
if prefix in emptyTypes:
|
|
281
|
-
# Empty types are safe to be eval()'d and introspected.
|
|
282
|
-
root = prefix + root
|
|
283
|
-
return root
|
|
284
|
-
|
|
285
|
-
def getTokens(command):
|
|
286
|
-
"""Return list of token tuples for command."""
|
|
287
|
-
command = str(command) # In case the command is unicode, which fails.
|
|
288
|
-
f = cStringIO.StringIO(command)
|
|
289
|
-
# tokens is a list of token tuples, each looking like:
|
|
290
|
-
# (type, string, (srow, scol), (erow, ecol), line)
|
|
291
|
-
tokens = []
|
|
292
|
-
# Can't use list comprehension:
|
|
293
|
-
# tokens = [token for token in tokenize.generate_tokens(f.readline)]
|
|
294
|
-
# because of need to append as much as possible before TokenError.
|
|
295
|
-
try:
|
|
296
|
-
## This code wasn't backward compatible with Python 2.1.3.
|
|
297
|
-
##
|
|
298
|
-
## for token in tokenize.generate_tokens(f.readline):
|
|
299
|
-
## tokens.append(token)
|
|
300
|
-
|
|
301
|
-
# This works with Python 2.1.3 (with nested_scopes).
|
|
302
|
-
def eater(*args):
|
|
303
|
-
tokens.append(args)
|
|
304
|
-
tokenize.tokenize_loop(f.readline, eater)
|
|
305
|
-
except tokenize.TokenError:
|
|
306
|
-
# This is due to a premature EOF, which we expect since we are
|
|
307
|
-
# feeding in fragments of Python code.
|
|
308
|
-
pass
|
|
309
|
-
return tokens
|
|
310
|
-
|
|
311
|
-
def rtrimTerminus(command, terminator=None):
|
|
312
|
-
"""Return command minus anything that follows the final terminator."""
|
|
313
|
-
if terminator:
|
|
314
|
-
pieces = command.split(terminator)
|
|
315
|
-
if len(pieces) > 1:
|
|
316
|
-
command = terminator.join(pieces[:-1]) + terminator
|
|
317
|
-
return command
|
|
318
|
-
|
|
319
|
-
def getBaseObject(object):
|
|
320
|
-
"""Return base object and dropSelf indicator for an object."""
|
|
321
|
-
if inspect.isbuiltin(object):
|
|
322
|
-
# Builtin functions don't have an argspec that we can get.
|
|
323
|
-
dropSelf = 0
|
|
324
|
-
elif inspect.ismethod(object):
|
|
325
|
-
# Get the function from the object otherwise
|
|
326
|
-
# inspect.getargspec() complains that the object isn't a
|
|
327
|
-
# Python function.
|
|
328
|
-
try:
|
|
329
|
-
if object.im_self is None:
|
|
330
|
-
# This is an unbound method so we do not drop self
|
|
331
|
-
# from the argspec, since an instance must be passed
|
|
332
|
-
# as the first arg.
|
|
333
|
-
dropSelf = 0
|
|
334
|
-
else:
|
|
335
|
-
dropSelf = 1
|
|
336
|
-
object = object.im_func
|
|
337
|
-
except AttributeError:
|
|
338
|
-
dropSelf = 0
|
|
339
|
-
elif inspect.isclass(object):
|
|
340
|
-
# Get the __init__ method function for the class.
|
|
341
|
-
constructor = getConstructor(object)
|
|
342
|
-
if constructor is not None:
|
|
343
|
-
object = constructor
|
|
344
|
-
dropSelf = 1
|
|
345
|
-
else:
|
|
346
|
-
dropSelf = 0
|
|
347
|
-
elif callable(object):
|
|
348
|
-
# Get the __call__ method instead.
|
|
349
|
-
try:
|
|
350
|
-
call_method = object.__call__.im_func
|
|
351
|
-
if call_method.__name__ == '__call__':
|
|
352
|
-
# unbound jython method end up here, example: string.index(
|
|
353
|
-
dropSelf = 0
|
|
354
|
-
else:
|
|
355
|
-
object = call_method
|
|
356
|
-
dropSelf = 1
|
|
357
|
-
except AttributeError:
|
|
358
|
-
# unbound python methods end up here
|
|
359
|
-
dropSelf = 0
|
|
360
|
-
else:
|
|
361
|
-
dropSelf = 0
|
|
362
|
-
return object, dropSelf
|
|
363
|
-
|
|
364
|
-
def getConstructor(object):
|
|
365
|
-
"""Return constructor for class object, or None if there isn't one."""
|
|
366
|
-
try:
|
|
367
|
-
return object.__init__.im_func
|
|
368
|
-
except AttributeError:
|
|
369
|
-
for base in object.__bases__:
|
|
370
|
-
constructor = getConstructor(base)
|
|
371
|
-
if constructor is not None:
|
|
372
|
-
return constructor
|
|
373
|
-
return None
|