mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-02-25 18:05:46 +01:00
Closes issue #925.
--HG-- extra : source : 4cc88ef4f1f032faef1d49959de12003e905a9e9
This commit is contained in:
149
README.E4X
149
README.E4X
@@ -1,149 +0,0 @@
|
|||||||
A terse introduction to E4X
|
|
||||||
Public Domain
|
|
||||||
|
|
||||||
The inline XML literals in this code are part of E4X, a standard
|
|
||||||
XML processing interface for ECMAScript. In addition to syntax
|
|
||||||
for XML literals, E4X provides a new kind of native object,
|
|
||||||
"xml", and a syntax, similar to XPath, for accessing and
|
|
||||||
modifying the tree. Here is a brief synopsis of the kind of
|
|
||||||
usage you'll see herein:
|
|
||||||
|
|
||||||
> let xml =
|
|
||||||
<foo bar="baz" baz="qux">
|
|
||||||
<bar>
|
|
||||||
<baz id="1"/>
|
|
||||||
</bar>
|
|
||||||
<baz id="2"/>
|
|
||||||
</foo>;
|
|
||||||
|
|
||||||
// Select all bar elements of the root foo element
|
|
||||||
> xml.bar
|
|
||||||
<bar><baz id="1"/></bar>
|
|
||||||
|
|
||||||
// Select all baz elements anywhere beneath the root
|
|
||||||
> xml..baz
|
|
||||||
<baz id="1"/>
|
|
||||||
<baz id="2"/>
|
|
||||||
|
|
||||||
// Select all of the immediate children of the root
|
|
||||||
> xml.*
|
|
||||||
<bar><baz id="1"/></bar>
|
|
||||||
<baz id="2"/>
|
|
||||||
|
|
||||||
// Select the bar attribute of the root node
|
|
||||||
> xml.@bar
|
|
||||||
baz
|
|
||||||
|
|
||||||
// Select all id attributes in the tree
|
|
||||||
> xml..@id
|
|
||||||
1
|
|
||||||
2
|
|
||||||
|
|
||||||
// Select all attributes of the root node
|
|
||||||
> xml.@*
|
|
||||||
baz
|
|
||||||
quz
|
|
||||||
|
|
||||||
// Add a quux elemend beneath the first baz
|
|
||||||
> xml..baz[0] += <quux/>
|
|
||||||
<baz id="1"/>
|
|
||||||
<quux/>
|
|
||||||
> xml
|
|
||||||
<foo bar="baz" baz="qux">
|
|
||||||
<bar>
|
|
||||||
<baz id="1"/>
|
|
||||||
<quux/>
|
|
||||||
</bar>
|
|
||||||
<baz id="2"/>
|
|
||||||
</foo>
|
|
||||||
|
|
||||||
// and beneath the second
|
|
||||||
> xml.baz[1] = <quux id="1"/>
|
|
||||||
> xml
|
|
||||||
<foo bar="baz" baz="qux">
|
|
||||||
<bar>
|
|
||||||
<baz id="1"/>
|
|
||||||
<quux/>
|
|
||||||
</bar>
|
|
||||||
<baz id="2"/>
|
|
||||||
<quux id="1"/>
|
|
||||||
</foo>
|
|
||||||
|
|
||||||
// Replace bar's subtree with a foo element
|
|
||||||
> xml.bar.* = <foo id="1"/>
|
|
||||||
> xml
|
|
||||||
<foo bar="baz" baz="qux">
|
|
||||||
<bar>
|
|
||||||
<foo id="1"/>
|
|
||||||
</bar>
|
|
||||||
<baz id="2"/>
|
|
||||||
<quux id="1"/>
|
|
||||||
</foo>
|
|
||||||
|
|
||||||
// Add a bar below bar
|
|
||||||
> xml.bar.* += <bar id="1"/>
|
|
||||||
<foo id="1"/>
|
|
||||||
<bar id="1"/>
|
|
||||||
> xml
|
|
||||||
<foo bar="baz" baz="qux">
|
|
||||||
<bar>
|
|
||||||
<foo id="1"/>
|
|
||||||
<bar id="1"/>
|
|
||||||
</bar>
|
|
||||||
<baz id="2"/>
|
|
||||||
<quux id="1"/>
|
|
||||||
</foo>
|
|
||||||
|
|
||||||
// Adding a quux attribute to the root
|
|
||||||
> xml.@quux = "foo"
|
|
||||||
foo
|
|
||||||
> xml
|
|
||||||
<foo bar="baz" baz="qux" quux="foo">
|
|
||||||
<bar>
|
|
||||||
<foo id="1"/>
|
|
||||||
<bar id="1"/>
|
|
||||||
</bar>
|
|
||||||
<baz id="2"/>
|
|
||||||
<quux id="1"/>
|
|
||||||
</foo>
|
|
||||||
|
|
||||||
> xml.bar.@id = "0"
|
|
||||||
> xml..foo[0] = "Foo"
|
|
||||||
Foo
|
|
||||||
> xml..bar[1] = "Bar"
|
|
||||||
Bar
|
|
||||||
> xml
|
|
||||||
js> xml
|
|
||||||
<foo bar="baz" baz="qux" quux="foo" id="0">
|
|
||||||
<bar id="0">
|
|
||||||
<foo id="1">Foo</foo>
|
|
||||||
<bar id="1">Bar</bar>
|
|
||||||
</bar>
|
|
||||||
<baz id="2"/>
|
|
||||||
<quux id="1"/>
|
|
||||||
</foo>
|
|
||||||
|
|
||||||
// Selecting all bar elements where id="1"
|
|
||||||
> xml..bar.(@id == 1)
|
|
||||||
Bar
|
|
||||||
|
|
||||||
// Literals:
|
|
||||||
// XMLList literal. No root node.
|
|
||||||
> <>Foo<br/>Baz</>
|
|
||||||
Foo
|
|
||||||
<br/>
|
|
||||||
Baz
|
|
||||||
|
|
||||||
// Interpolation.
|
|
||||||
> let x = "<foo/>"
|
|
||||||
> <foo bar={x}>{x + "<?>"}</foo>
|
|
||||||
<foo/><?>
|
|
||||||
> <foo bar={x}>{x + "<?>"}</foo>.toXMLString()
|
|
||||||
<foo bar="<foo/>"><foo/><?></foo>
|
|
||||||
|
|
||||||
> let x = <foo/>
|
|
||||||
> <foo bar={x}>{x}</foo>.toXMLString()
|
|
||||||
<foo bar="">
|
|
||||||
<foo/>
|
|
||||||
</foo>
|
|
||||||
|
|
||||||
@@ -26,7 +26,6 @@ var Services = Module("Services", {
|
|||||||
this.add("appShell", "@mozilla.org/appshell/appShellService;1", "nsIAppShellService");
|
this.add("appShell", "@mozilla.org/appshell/appShellService;1", "nsIAppShellService");
|
||||||
this.add("appStartup", "@mozilla.org/toolkit/app-startup;1", "nsIAppStartup");
|
this.add("appStartup", "@mozilla.org/toolkit/app-startup;1", "nsIAppStartup");
|
||||||
this.add("bookmarks", "@mozilla.org/browser/nav-bookmarks-service;1", "nsINavBookmarksService");
|
this.add("bookmarks", "@mozilla.org/browser/nav-bookmarks-service;1", "nsINavBookmarksService");
|
||||||
this.add("bootstrap", "@dactyl.googlecode.com/base/bootstrap");
|
|
||||||
this.add("browserSearch", "@mozilla.org/browser/search-service;1", "nsIBrowserSearchService");
|
this.add("browserSearch", "@mozilla.org/browser/search-service;1", "nsIBrowserSearchService");
|
||||||
this.add("cache", "@mozilla.org/network/cache-service;1", "nsICacheService");
|
this.add("cache", "@mozilla.org/network/cache-service;1", "nsICacheService");
|
||||||
this.add("charset", "@mozilla.org/charset-converter-manager;1", "nsICharsetConverterManager");
|
this.add("charset", "@mozilla.org/charset-converter-manager;1", "nsICharsetConverterManager");
|
||||||
|
|||||||
@@ -182,9 +182,10 @@ var Storage = Module("Storage", {
|
|||||||
init: function () {
|
init: function () {
|
||||||
this.cleanup();
|
this.cleanup();
|
||||||
|
|
||||||
if (services.bootstrap && !services.bootstrap.session)
|
let { Services } = Cu.import("resource://gre/modules/Services.jsm", {});
|
||||||
services.bootstrap.session = {};
|
if (!Services.dactylSession)
|
||||||
this.session = services.bootstrap ? services.bootstrap.session : {};
|
Services.dactylSession = {};
|
||||||
|
this.session = Services.dactylSession;
|
||||||
},
|
},
|
||||||
|
|
||||||
cleanup: function () {
|
cleanup: function () {
|
||||||
|
|||||||
Reference in New Issue
Block a user