1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-01-22 15:24:11 +01:00
Martin Stubenschrott 473c461d3f fixed :open completions for slow computers. We now yield
incremental results, and the user gets more completion, the more often
he presses tab. Need to find out, how to change the "Waiting..." message
to "More results...". Also reminds me, how ugly the completion context
code is partly. We should try to clean it up and remove/merge useless
function to make it's interface smaller and more side-effect free.
2009-01-07 03:07:29 +01:00
2008-12-07 13:55:40 +01:00
2008-07-29 23:22:29 +00:00
2008-12-04 22:21:38 -05:00

               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="&lt;foo/>">&lt;foo/&gt;&lt;?&gt;</foo>

> let x = <foo/>
> <foo bar={x}>{x}</foo>.toXMLString()
  <foo bar="">
      <foo/>
  </foo>

Description
Pentadactyl for Pale Moon
Readme 139 MiB
Languages
JavaScript 93.7%
C++ 1.8%
CSS 1.6%
XSLT 1.3%
Vim script 0.8%
Other 0.6%