Updated documentation. Added restrictions when setting $current in tx-prompt.
authorFrederic Jolliton <frederic@jolliton.com>
Wed, 1 Mar 2006 08:11:59 +0000 (08:11 +0000)
committerFrederic Jolliton <frederic@jolliton.com>
Wed, 1 Mar 2006 08:11:59 +0000 (08:11 +0000)
 * Updated documentation

 * Added restrictions when setting $current to ensure that the variable
   is a sequence of only 1 item in tx-prompt.
git-archimport-id: frederic@jolliton.com--2005-main/tx--main--0.1--patch-51

tx.txt
xpath_prompt.py

diff --git a/tx.txt b/tx.txt
index 6dec38d..2c7d552 100644 (file)
--- a/tx.txt
+++ b/tx.txt
@@ -606,6 +606,10 @@ Otherwise, a node of the type `Document`, `Element` or `Comment` is
 create with the general syntax: `w.name( child1 , .. , attribute1 = value1 , .. )`.
 Attributes make sense only for `Element` node type however.
 
+It's also possible to pass a function, which take no parameters and
+should return a correct XML tree. This function will be called at
+serialization time.
+
 -=-=-
 w._doc_(
   w.html(
@@ -678,6 +682,30 @@ DOCUMENT[0] with 24 nodes
       TEXT[23] 'Bla bla bla.'
 -=-=-
 
+Example of deferred function:
+
+-=-=-
+count = 0
+def foo() :
+  global count
+  count += 1
+  return w.p( "I'm generated %d time(s)." % count )
+
+doc = w.body( foo )
+
+print doc.serialize()
+print doc.serialize()
+print doc.serialize()
+-=-=-
+
+produce:
+
+-=-=-
+<body><p>I'm generated 1 time(s).</p></body>
+<body><p>I'm generated 2 time(s).</p></body>
+<body><p>I'm generated 3 time(s).</p></body>
+-=-=-
+
 = XPath =
 
 The module `xpath` provide a large subset of XPath 2.0.
@@ -832,7 +860,7 @@ XPath2.0> /html/head/title
 <title>Slashdot: News for nerds, stuff that matters</title>
 -=-=-
 
- * Extracting articles title:
+ * Extracting articles title (pre-september 2005):
 
  -=-=-
 XPath2.0> \s
@@ -845,6 +873,29 @@ XPath2.0> //td[@align='LEFT']//font[@color]/b[text()]/string()
 5 STRING Your Rights Online: Is Your Boss a Psychopath?
 6 STRING Linux: Australian Linux Trademark Holds Water
 7 STRING Science: Nanotubes Start to Show their Promise
+-=-=-
+
+ * Extracting articles title (post-september 2005):
+
+ -=-=-
+XPath2.0> \s
+[short]
+XPath2.0> //div[@class='generaltitle']/normalize-space()
+1 STRING Tivo Institutes 1 Year Service Contracts
+2 STRING Politics: US Senate Allows NASA To Buy Soyuz Vehicles
+3 STRING IT: Reconnaissance In Virtual Space
+4 STRING Your Rights Online: FBI Agents Put New Focus on Deviant Porn
+5 STRING Ask Slashdot: Top 50 Science Fiction TV Shows
+6 STRING Your Rights Online: Business At The Price Of Freedom
+7 STRING Apple: Music Exec Fires Back At Apple CEO
+8 STRING Science: Grammar Traces Language Roots
+9 STRING Developers: RMS Previews GPL3 Terms
+10 STRING Massachusetts Finalizes OpenDocument Standard Plan
+11 STRING Developers: Palm Teams With Microsoft for Smart Phone
+12 STRING Developers: Why Vista Had To Be Rebuilt From Scratch
+13 STRING Hardware: Nabaztag the WiFi Bunny
+14 STRING Revamping the Movie Distribution Chain
+15 STRING Politics: Municipal Broadband Projects Spread Across U.S.
 -=-=-
 
  * Extracting RSS title from an external document:
@@ -853,16 +904,16 @@ XPath2.0> //td[@align='LEFT']//font[@color]/b[text()]/string()
 XPath2.0> \s
 [short]
 XPath2.0> doc('http://rss.slashdot.org/Slashdot/slashdot')//item/title/string()
-1 STRING Toshiba May Delay HD-DVD Launch to 2006
-2 STRING FCC Seeks Tech Donations for Katrina Aid
-3 STRING Balmer Vows to Kill Google
-4 STRING Bill Gates To Star With Steve Jobs On Broadway
-5 STRING Dead Star Set to Escape the Milky Way
-6 STRING Fuddruckers Called Out on Hotlinking
-7 STRING The View from the Top of Husband Hill
-8 STRING Google Plans To Destroy Unindexed Information
-9 STRING Nikon Releases WiFi Digital Camera
-10 STRING EU Gumshoe Chases Internet Villains
+1 STRING Tivo Institutes 1 Year Service Contracts
+2 STRING US Senate Allows NASA To Buy Soyuz Vehicles
+3 STRING Reconnaissance In Virtual Space
+4 STRING FBI Agents Put New Focus on Deviant Porn
+5 STRING Top 50 Science Fiction TV Shows
+6 STRING Business At The Price Of Freedom
+7 STRING Music Exec Fires Back At Apple CEO
+8 STRING Grammar Traces Language Roots
+9 STRING RMS Previews GPL3 Terms
+10 STRING Massachusetts Finalizes OpenDocument Standard Plan
 -=-=-
 
  * Extracting 1st, 3rd and 7th comment of the document:
@@ -927,8 +978,8 @@ Sequence(19800, 4800, 2862, 4307, 4225, 4602, 5, 208, 4800, 208, 2862, \
 -=-=-
 
  * Looking for `rel` attribute, with location (the XPath expression
  that could be used to identify precisely the node in the resulting
  sequence):
+ that could be used to identify precisely the node in the resulting
+ sequence):
 
  -=-=-
 XPath2.0> \f
@@ -994,7 +1045,8 @@ node.match( 'a/b' ) # Return True if node is an element `b` with a parent elemen
 
 *Note*: Internally patterns are translated to XPath expression. Such
 expression return the empty sequence if pattern doesn't match the
-node.
+node. For example, `a/b` become something like
+`self::element(b)/parent::element(a)`.
 
 = Parsing HTML =
 
index ca681a7..ad6485c 100755 (executable)
@@ -253,7 +253,11 @@ def main() :
                                else :
                                        env[ '_' ] = result
                                        if varName is not None :
-                                               env[ varName ] = result
+                                               if varName == 'current' and len( result ) != 1 :
+                                                       print '[Error] the sequence contains %d items, expected 1' \
+                                                               % len( result )
+                                               else :
+                                                       env[ varName ] = result
                                        else :
                                                try :
                                                        printResult( result , mode , displayLocation )