Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Dec 6, 2010
  1. [ v0.0.11 ]

    Maybe it's almost time for 0.1.0.
  2. [ use cons instead of unshift in other macros ]

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

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

  2. [ add hash and array shortcuts ]

    { 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 ]

    $ cat "(console.log process.ARGV)" > example.lisp
    $ sibilant -x example.lisp -- argument1 argument2 argument3
    [ '/path/to/sibilant',
      'argument3' ]
  4. [ allow upper case letters ]

    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.
Commits on Nov 14, 2010
  1. [ update gitignore ]

  2. [ small cleanup in translate ]

  3. [ name the token regexen ]

  4. [ always trim tokens ]

  5. [ allow equality checks between more than two things ]

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

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

    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 ]

Commits on Nov 11, 2010
  1. [ apparently new and delete aren't valid in safari, so use (get macro…

    …s ...) ]
    I thought safari was es3?  Guess not.
  2. [ regex macro ]

  3. [ document bang ]

  4. [ fix literals with hyphens and numbers ]

    time-zone-1 should be timeZone1 but was time-zone-1 which isn't valid js.
  5. [ demonstrate nested whiles ]

  6. [ add foo!, change foo? ;=> fooQ to foo? ;=> foo__QUERY ]

    foo-q should not be the same as foo? and foo-b should not be the same as foo!
    also, the B in fooB wasn't particularly meaningful, nor was the Q in fooQ.
    Slightly more verbose is foo__QUERY and foo__BANG.
    I'm planning to use the bang to mean "side effecting" because it would be nice to have a macro shortcut for:
    (setf some-string (concat some-string " also this"))
    so now I can add
    (concat! some-string "string string" var "string, etc")
    ;=> someString = someString + "string string" + var + "string, etc";
  7. [ document each and while ]

Something went wrong with that request. Please try again.