Permalink
Commits on Dec 17, 2010
  1. [ if compiles to ?: ]

    jbr committed Dec 17, 2010
Commits on Dec 13, 2010
  1. [ add rename-macro and alias-macro ]

    jbr committed Dec 13, 2010
    This commit also fixes a bug in which -> was tokenized as - (a number) and > (an other-char).  Now - is an other-char unless followed by at least one [0-9], allowing -> to be tokenized as a single other-char.  As a result, -> is a valid macro name.
Commits on Dec 12, 2010
  1. [ move strip-shebang and translate-file from cli.lisp to sibilant.lisp ]

    jbr committed Dec 12, 2010
    This allows you to use sibilant.translate-file from elsewhere.  I found use for this in recompiling a client-side sibilant script to js for each request.
    
    This use case also indicates that it probably should be continuation-passing / async style, instead of just returning the string.
    
    (chain http
      (create-server (lambda (request response)
        (switch request.url
          ('client.js
            (response.write-head 200
              { "Content-Type" "application/javacript" })
            (response.end (sibilant.translate-file 'client.lisp)))
          (default (serve-other-stuff)))))
      (listen 7650 "127.0.0.1"))
Commits on Dec 11, 2010
  1. [ add to readme: librelist ml ]

    jbr committed Dec 11, 2010
Commits on Dec 8, 2010
  1. [ use {} in chain example ]

    jbr committed Dec 8, 2010
Commits on Dec 6, 2010
  1. [ v0.0.11 ]

    jbr committed Dec 6, 2010
    Maybe it's almost time for 0.1.0.
  2. [ use cons instead of unshift in other macros ]

    jbr committed Dec 6, 2010
    This has bothered me for a while but I wasn't sure the right way to implement cons in js.
  3. [ add cons macro ]

    jbr committed Dec 6, 2010
Commits on Dec 5, 2010
Commits on Dec 1, 2010
Commits on Nov 30, 2010
  1. [ document json syntax ]

    jbr committed Nov 30, 2010
  2. [ add hash and array shortcuts ]

    jbr committed Nov 30, 2010
    { a b c d } is a shortcut for (hash a b c d).
    [ a b c ] is a shortcut for (list a b c).
    
    I still feel a little weird about it, but it's just a handful of lines.
    
    Technically, { a b c [ d e ) ) would work just as well as { a b c [ d e ] }, but I can't imagine why you'd want to do that.  Not worth going out of my way to make it break, though.
    
    Eventually, I'd like to make this accessible from within the code as simply as (register-shortcut "{" 'hash) or (unregister-shortcut "{").
    
    Since : and , are ignored currently, this means you can do something that looks like json:
    
    {
      a: b,
      c: [ d, e ]
    }
  3. [ ignore any args after --, remove sibilant stuff from process.argv ]

    jbr committed Nov 30, 2010
    $ cat "(console.log process.ARGV)" > example.lisp
    $ sibilant -x example.lisp -- argument1 argument2 argument3
    
    STDOUT:
    [ '/path/to/sibilant',
      '/path/to/example.lisp',
      'argument1',
      'argument2',
      'argument3' ]
    
    https://github.com/jbr/sibilant/issues#issue/26
  4. [ allow upper case letters ]

    jbr committed Nov 30, 2010
    This simplifies things like JSON and process.ARGV and imports with upper-case initial letters.  I still feel a little weird about this, but that's probably being overly proscriptive.  Idiom/convention will suffice.
    
    https://github.com/jbr/sibilant/issues#issue/25
Commits on Nov 14, 2010
  1. [ update gitignore ]

    jbr committed Nov 14, 2010
  2. [ small cleanup in translate ]

    jbr committed Nov 14, 2010
  3. [ name the token regexen ]

    jbr committed Nov 14, 2010
  4. [ always trim tokens ]

    jbr committed Nov 14, 2010
  5. [ allow equality checks between more than two things ]

    jbr committed Nov 14, 2010
    (= a b c d e)
    
    becomes
    
    (a === b &&
     a === c &&
     a === d &&
     a === d &&
     a === e)
Commits on Nov 13, 2010
  1. [ allow progn to be called with no arguments ]

    jbr committed Nov 13, 2010
    As shown in the test, the correct behavior is that (progn) is "return undefined;"
  2. [ fix bug with return, progn and switch ]

    jbr committed Nov 13, 2010
    The issue here was that Array.prototype.shift is (obviously) side-effecting and we were actually modifying the AST.  Some macros make several translation passes over their contents, so it's not cool to make changes that can only be made once (like shifting something off of the AST).  The fix was effectively to use (defvar first (first x) remainder (rest x)) instead of (defvar first (x.shift) remainder x).
Commits on Nov 12, 2010
  1. [ bump version to 0.0.10 ]

    jbr committed Nov 12, 2010
  2. [ go back to using require("sys") because it works on 0.2.3, 0.2.4, a…

    jbr committed Nov 12, 2010
    …nd 0.3.x branches ]
Commits on Nov 11, 2010
  1. [ apparently new and delete aren't valid in safari, so use (get macro…

    jbr committed Nov 11, 2010
    …s ...) ]
    
    I thought safari was es3?  Guess not.
  2. [ regex macro ]

    jbr committed Nov 11, 2010