welcome: please sign in

Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment
What program is the main source of Conkeror's design philosophy?

location: ClientRedirect

The module client-redirect provides a mechanism by which Conkeror can automatically preform a defined redirection on configured urls and url patterns. When a matching url is encountered as the location of a buffer, a client-redirect translates it into another url to load instead. This mechanism can be used to "skip" intermediary webpages when browsing, and go straight to the content you want.

1. Enabling Client Redirects

require("client-redirect");

2. define_client_redirect

Client redirects are created by calling define_client_redirect. This procedure takes as its arguments a name for the redirect and any number of transforms. The transforms are composed together into a procedure that either matches an url and returns a new url to load instead, or it returns null, meaning no match, and no redirection.

define_client_redirect(name, transform...);
name
The name is just a string naming the redirect. Client redirects are defined in their own namespace, separate from functions, variables, commands, etcetera.
transform...

Each transform may be a function or a RegExp. If the first transform is a function, it will be called with an nsIURI object; if it is a RegExp, it will be matched against the string spec of the uri. If any transform returns null (or false) the entire chain of transforms returns null, meaning no match, and no redirect. The end result of the chain of transforms must be a string url, but intermediate results between one transform and the next can be anything at all. The result of a RegExp match is a regexp result object, so a transform function following a RegExp should take this type of object as its argument.

3. Examples

3.1. Google Images

This is an example of a client redirect that uses a single function for the transform. It skips the intermediary "imgres" page at Google Images.

define_client_redirect("google-images",
    function (uri) {
        return /(images|www)\.google\.com$/.test(uri.host)
            && uri.filePath == "/imgres"
            && regexp_exec(/imgurl=([^&]+)/, uri.query, 1);
    });

3.2. Imgur

This is an example of a client redirect that uses two transforms. The first is a regular expression that matches urls at imgur.com, and the second is a function that transforms the match result into the url of the jpeg image.

define_client_redirect("imgur",
    build_url_regexp($domain = "imgur", $path = /.*/),
    function (m) {
        return m[0].replace("//", "//i.")+".jpg";
    });