/usr/lib/swipl/library/http/js_write.pl
AllApplicationManualNameSummaryHelp

  • library
    • http
      • http_unix_daemon.pl -- Run SWI-Prolog HTTP server as a Unix system daemon
      • thread_httpd.pl -- Threaded HTTP server
      • http_wrapper.pl -- Server processing of an HTTP request
      • http_header.pl -- Handling HTTP headers
      • http_stream.pl -- HTTP Streams
      • http_exception.pl -- Map Prolog exceptions to HTTP errors
      • http_path.pl -- Abstract specification of HTTP server locations
      • http_dispatch.pl -- Dispatch requests in the HTTP server
      • http_host.pl -- Obtain public server location
      • http_ssl_plugin.pl -- SSL plugin for HTTP libraries
      • http_json.pl -- HTTP JSON Plugin module
      • http_client.pl -- HTTP client library
      • json.pl -- Reading and writing JSON serialization
      • http_open.pl -- HTTP client library
      • http_parameters.pl -- Extract parameters (GET and POST) from HTTP requests
      • http_multipart_plugin.pl -- Multipart form-data plugin
      • http_hook.pl -- HTTP library hooks
      • html_write.pl -- Write HTML text
      • html_quasiquotations.pl -- HTML quasi quotations
      • js_write.pl -- Utilities for including JavaScript
        • js_script//1
        • javascript/4
        • js_call//1
        • js_new//2
        • js_arg_list//1
        • js_expression//1
        • js_arg//1
      • js_grammar.pl -- JavaScript grammar
      • http_server_files.pl -- Serve files needed by modules from the server
      • hub.pl -- Manage a hub for websockets
      • websocket.pl -- WebSocket support
      • http_session.pl -- HTTP Session management
      • mimetype.pl -- Determine mime-type for a file
      • http_cors.pl -- Enable CORS: Cross-Origin Resource Sharing
      • html_head.pl -- Automatic inclusion of CSS and scripts links
      • jquery.pl -- Provide JQuery
      • term_html.pl -- Represent Prolog terms as HTML
      • http_dyn_workers.pl -- Dynamically schedule HTTP workers.
      • http_authenticate.pl -- Authenticate HTTP connections using 401 headers
      • http_digest.pl -- HTTP Digest authentication
      • json_convert.pl -- Convert between JSON terms and Prolog application terms
      • mimepack.pl -- Create a MIME message
 javascript(+Content, +Vars, +VarDict, -DOM) is det
Quasi quotation parser for JavaScript that allows for embedding Prolog variables to substitude identifiers in the JavaScript snippet. Parameterizing a JavaScript string is achieved using the JavaScript + operator, which results in concatenation at the client side.
    ...,
    js_script({|javascript(Id, Config)||
                $(document).ready(function() {
                   $("#"+Id).tagit(Config);
                 });
               |}),
    ...

The current implementation tokenizes the JavaScript input and yields syntax errors on unterminated comments, strings, etc. No further parsing is implemented, which makes it possible to produce syntactically incorrect and partial JavaScript. Future versions are likely to include a full parser, generating syntax errors.

The parser produces a term \List, which is suitable for js_script//1 and html//1. Embedded variables are mapped to \js_expression(Var), while the remaining text is mapped to atoms.

To be done
- Implement a full JavaScript parser. Users should not rely on the ability to generate partial JavaScript snippets.