Page created:
Jun 17, 2009 (? ago)
Last modified ? ago
To main page | Opera Unite HowTo's

unite_info (a-la php_info)


This function is analogous to php_info() or pprint()
function unite_info(o, r) {
    function out_repr(o, i, ri, app) {
        try {
            if (ri.toString().match(/^function /)) {
                ret = '(...)  // function';
            } else if (ri.toString().match(/^.object /)) {
                ret = ': ';
                o.write('<br>');
            } else {
                ret = ' = "' + ri + '"';
            };
        } catch(err) {
            ret = ' = [null??]';
        };
        //ret = ret.replace(/..../,'[opera_user_name]')
        //ret = ret.replace(/..../,'[device_name]')
        //ret = ret.replace(/..../,'[service_path]')
        
        str = '<span style="color: gray;">' + app + '</span>' + 
            i + ret + '<br>';
        if (i.match(/^[0-9]+$/)) {
            str = str.replace(/\.<\/span>[0-9]/,'</span>[0]');
        };
        //str = str.replace(/<br>/,'**<br>');
        //str = str.replace(/<\/span>/,'</span>**');
        o.write( str );
    };

    function rec_o(o, obj, app, lev) {
        if (app == 'r.connection.request.connection.') { return; };
        if (lev>=5) { return; }
        if (obj) {
            if (obj.toString().match(/object/)) {
                for (j in obj) {
                    out_repr(o, j, obj[j], app);
                    rec_o(o, obj[j], app+j+'.', lev+1);
                };
            };
        };
    };

    rec_o(o, r, 'r.', 0);
};

Example usage

function start_page(r) {
    var o = r.connection.response;
    unite_info(o, r); // this will call "o.write" full hierarchy of "r"
    ....
"r" is an instance of "WebServerRequestEvent" class.

To avoid cyclic references it would only go 5 levels deep, if you need more, fix "lev>=5" in function above.

Example output

See here

Slava V. [about me]


main page



Last updated


  1. Markuper (HTML templates)
  2. .ua
  3. Opera Unite HowTo's
  4. .us (files)
  5. Distribute Your Application
  6. 24/7 sites (permanent applications - idea) [stub]
  7. Issues
  8. HTTP Connections (AJAX/REST)
  9. Cookies
  10. file_wrap.js - File Wrapper
  11. Basic HowTo: Simple app (tutorial)
  12. Static images, client-side scripts
  13. Application Examples
  14. How to Debug Opera Unite apps
  15. Persistence & databases
  16. Opera Unite benchmark
  17. From PHP to Opera Unite
  18. Uniteness (Framework)
  19. Config.xml
  20. Key-value storage
  21. Widget Object
  22. Notifications (Growl'esque)
  23. Reset (debug)
  24. Cron example
  25. What I meant by CNAMEs
  26. Wish List
  27. Device Unavailable
  28. StopLorem (Opera Unite blogging)
  29. uniteness-0.11
  30. GET/POST data
  31. CRUD And Static (example)
  32. Opera object
  33. URLs
  34. Headers & Redirects
  35. Error Console
  36. JSON State (storing data)
  37. Security
  38. /storage/ (in fileio)
  39. Yusef library
  40. unite_info (a-la php_info)
  41. Javascript Imports
  42. onunload / _close
  43. fileio: Sandboxed Filesystem
  44. Request Hierarchy (like php_info)
  45. Intro: Web Apps with Opera Unite