Table of contents
  1. 1. Tools
  2. 2. Runtime
  3. 3. Syntax
  4. 4. Misc
  5. 5. Documentation

Tools

  • cmd line tool to validate and execute XML extensions (bug 4996)
    • validate XML by checking for required fields, as well as recommended fields (e.g. description)
    • invoke functions from command line for testing

Runtime

  • arrange named parameters into proper order (XML-RPC); convert ordered parameters into named ones (FORM POST) (bug 4997)
  • add ERROR type (bug 4998)
  • add BLOB type (bug 4999)
    • consider Erlang notation: << 1, 2, 3 >>
    • operations
      • access: << 1, 2, 3 >> [ 2 ] -> 2
      • concat: << 1, 3 >> .. << 3 >>
      • splice: blob.splice(<< 1, 2, 3 >>, 0, 1, _) -> << 1, 3 >>
  • throw an exception from inside an extension?!? (use case thinkfree extension)
  • concurrent execution of independent page scripts
  • caching of idempotent script function calls
  • binary encoding of XML extensions for faster execution
  • use another body for dekiscript errors: <body target="error" conflict="append">
  • functions to add
    • str.isNum(str)
    • str.isBool(str)
    • str.isUri(str)

Syntax

  • Quick access
    • *doc
      ->
      xml.text(doc)
    • *url
      ->
      web.xml(url) ?? web.text(url)
  • uri build syntax
    • url & "path" & { option : value }
      ->
      uri.build(url, path, { option : value })
  • need a better way to handle xml responses with <html>
  • discard statement (to evaluate an expression but not keep its output... do we really need this?)
  • statement for creating lists using iteration (bug 5001)
    • var x = [ foreach(var y in z) { fn1(z); fn2(z) } ];
      ->
      var x = [ ]; foreach(var y in z) { let x ..= [ fn1(z), fn2(z) ]; }
  • function definitions
  • xslt (http://msdn.microsoft.com/en-us/library/ms950792.aspx)
  • web expression language (the "on" attribute)
    • on ::= clauses
    • clauses ::= clause ( "or" clauses )?
    • clause ::= condition "then" actions ( "else" actions )?
    • condition ::= event ( "[" test "]" )?
    • event ::= message-event | element-event | mouse-event | key-event
    • message-event ::= message ( "[" test "]" )?
    • test ::= ...
    • element-event ::= "blur" | "change" | "focus"
    • mouse-event ::= "click" | "contextmenu" | "dblclick" | "mousedown" | "mousemove" | "mouseout" | "mouseover" | "mousewheel"
    • key-event ::= ( "keyup" | "keypress" | "keydown" ) ( "[" key-code "]" )?
    • key-code ::= ...
    • actions ::= action ( "after" time ) ( "if" ... )? ( "and" actions )?
    • time ::= ...
    • action ::= message-action | value-action | bind-action | set-action | css-action | layout-action | misc-action | script-action
    • message-action ::= ...
    • value-action ::= "value" "[" ... "]"
    • bind-action ::= "bind" "[" ... "]"
    • set-action ::= "set" "[" ... "]"
    • css-action ::= ( "add" | "remove" ) "[" ... "]"
    • layout-action ::= "effect" "[" ... "]" | "hidden" | "hide" | "show" | "visible" | "toggle" "[" ... "]"
    • misc-action ::= "blur" | "click" "[" ... "]" | "focus" | "clear" | "clearform" | "disable" | "enable" | "reset" | "select" | "submit" | "unselect"
    • script-action ::= "script" "[" ... "]"

Misc

  • need shorthand syntax for template invocation {{template.foo(...)}} is too long
  • need a way to define variables without keeping the xml element around
  • global variables
  • samples
    • example how to create a page with automatically substituted parmateres
    • blog post on how to use JSON in dekiscript
    • create sample how to process XML (e.g. rss reader)
    • TRICK: use __env to pass in local variables
      var username = user.name; var format = 'Hi $username' % __env;
    • wiki.directory("path:" .. page.path .. "/*")
  • definition of standard javascript library for in-page mashups
  • online directory of available extensions
  • allow constants in extensions (e.g. num.e)
  • add "default" attribute to <param> element in XML extension functions (bug 5034)

Documentation

  • 1.9
    • dynamic page composition schema and mechanics
  • 8.05.1
    • <foreach>
      work on xml documents too (e.g. <foreach in="xml['bar/foo']">)
      implicit __count var
    • multiple statements inside a single block
    • functions with <access>internal</access> should not be listed in GET for script manifest
    • foreach on maps, DON'T return key:value!!!
    • $ is now set to 'args'
      • $10 => $[10]
      • $foo => $.foo
    • uri.foo(1, 2, 3) -> uri("foo", [1, 2, 3])
    • add support for SAVE:/EDIT: in attributes (e.g. <a href="http://wiki.developer.mindtouch.com/MindTouch_Deki/DekiScript">)
    • allow substition on save or edit (i.e.{{save: ...}} or {{edit: ...}}))
    • __request.args to access request query arguments
    • <any init="var x = web.xml(foobar)" if="#x > 0" foreach="var k in x" where="k['bar']" block="var y = k['bar/foo']">inner</any>
      -->
      <eval:block value="var x = web.xml(foobar)">
          <eval:if test="#x > 0">
              <eval:foreach var="k" in="x" where="k['bar']">
                  <eval:block value="var y = k['bar/foo']">
                      <any class="script" function="syntax.xpp">inner</any>
                  </block>
              </eval:foreach>
          </eval:if>
      </eval:block>
    • Scoping dekiscript to page of vars
  • 8.05.2
    • user.emailhash
    • string.format("$p", { p: v })
    • Yahoo.GeoLocation
      Yahoo.GeoCode
  • Wik.is updates
    • flowplayer
    • twitter
    • linkedin
    • gravatar
    • spoiler
    • skype
  • 8.05.2b
    • __index
    • json.parse
    • string.substr: allow negative offset & length
    • date.calendar
    • string.ishighsurrogate
    • string.islowsurrogate
    • string.issurrogate
    • num.cast
    • string.cast
    • wiki.text, wiki.page added 'revision' parameter
  • 8.08
    • uri.* 
      • uri.build: encode segments
      • uri.isvalid
    • date.*
      • date.isoweek
      • date.parseisoweek
    • list.*
      • list.sort: added 'compare' parameter
    • web.*
      • web.* add variable cache timeout
      • web.json
      • web.toggle: show/hide html content
    • wiki.*
      • wiki.tree: make path optional, default to current page
      • wiki.text(path) -> only return text (no scripts!)
      • Optimize: wiki.toc(page.path) --> page.toc
      • wiki.directory: show all pages in main namespace by default
    • page.*
      • page.parents: returns a list of all parents, from nearest to furthest
    • extensions
      • graphviz: added format parameter accepting "png", "png+map", "svg", and "xdot"
      • implicit environment for extension requests
  • 8.08 1
    • if/else support for single statements without { }
      • requires ; for statements, e.g. if(true) 1; else 2;
    • switch/case statement
    • multi var and nil var declaration support
    • break/continue for foreach
    • break for switch/case
  • Lyons (not finalized)
    • native xml syntax (with anonymous closing tags)
      • <ul> foreach(var x in [1, 2, 3]) { <li> x </li>; } </ul>;
      • <strong> x .. 'foo'; ' '; </>;
      • <div style="float: right;" class=($class)> expr; </>;
    • multi-statement expressions
      • var x = (var y = 1; var z = y * 2; z + 3);
        ->
        x == 5
    •  

 

Tag page
You must login to post a comment.
Powered by MindTouch Deki v.8.08.1a