
Show HN: Lapis – A web framework for MoonScript and OpenResty - leafo
http://leafo.net/lapis/
======
bhauer
Leafo, this looks great. I was not familiar with your MoonScript language
prior to this.

Say, since you cite the benchmarks project, would you mind submitting a test
case for Lapis?

Also, just out of curiosity, what did you use to create the canvas animation?

~~~
leafo
I'd definitely like it to be part of the benchmarks project. When I get some
time I'll submit a pull request for it.

As mentioned in the other comment I use this for recording animations:
<https://github.com/rprichard/x11-canvas-screencast>

~~~
bhauer
Great! You are prolific! A language, a web framework, sites built upon that
framework, and all of the documentation. You sure you're just one person?

------
codewright
People need to get out of this habit of embedding view/template in the backend
code. It's impractical and problematic in any situation where there's division
of labor.

Otherwise interesting web framework, makes me want to look into MoonScript.

------
MichaelGlass
Nice work!

This has pretty excellent documentation. Like really excellent documentation.
But jumping into the code itself is a little bit of a beast with no tests or
comments.

so: is testing on your roadmap?

~~~
leafo
Yes I'll have a better testing setup in the near future. (Right now there are
individual unit tests scattered in the modules themselves)

Glad you like the documentation, I try to take pride in writing detailed
documentation. :)

~~~
ajacksified
Pushed native moonscript support to busted[0] this morning. :D

[0] [https://github.com/Olivine-
Labs/busted/blob/master/spec/moon...](https://github.com/Olivine-
Labs/busted/blob/master/spec/moonscript_spec.moon)

~~~
alexatkeplar
Busted is awesome - really nice test framework.

------
gte910h
Interesting performance numbers. I am happy to see something past java
frameworks working out so well.

------
snaky
Would be nice to add support for not-inlined templates with high-performance
template engine like CTPP2 (ngx_ctpp2)

------
rufugee
Looks interesting, but the use of "\" instead of "." is really a turnoff. Why
do languages (I'm looking at you, PHP) think that using the backslash in any
other way than escaping is a good idea?

~~~
fingerprinter
Couldn't agree more. I've am looking at Lua for a new project and got excited
when I saw this. However, that syntax looks terrible.

What's worse, is it is inconsistent. Take:

    
    
      csrf.assert_token @
      Users\create name: @params.username
    

I don't get why they both can't be '.', which would be very readable and
approachable to everyone.

All that said, this looks great given it is built on OpenResty (whose
performance seems outstanding at initial blush). Wonder if anyone has deployed
anything really big with it.

~~~
jacktoole1
I've used moonscript a lot, and don't particularly like the \ syntax. However,
you get used to it quickly, and it stops seeming like such a big deal.

It would be hard to have both be '.', because of lua semantics: '.' means "get
the property from the table", while ':' in lua and '\' in moonscript mean "get
the function from this table, with the first parameter for that function bound
to the table itself".

Javascript/Coffeescript can get away with both being '.' because of the
horrible mess that is implicit 'this'. All functions have an implicit first
parameter, that non-method functions usually ignore, and '.' in javascript
does the equivalent of ':' and '\' in moonscript (for functions). I find the
lua approach much simpler and cleaner, and think it is actually more
approachable than the javascript way, because the difference between '.' and
':' or '\' is conceptually simpler than all the rules behind 'this' in
javascript.

Programming in Lua explains ':' in <http://www.lua.org/pil/16.html> , and
probably has a better explanation that I wrote :).

~~~
danjessen
Would you recommend learning Lua first before going into moonscript ?

~~~
jacktoole1
I learned them concurrently, translating lua in Programming in Lua into the
equivalent moonscript. It's a pretty strait-forward translation and is
definitely doable. I already had experience with a reasonable variety of
languages before learning it though, and for people still getting into
programming, I think Lua is a simpler and still awesome language.

I don't think it's possible to learn moonscript without learning lua
concurrently, since lua makes up so much of the underlying semantics. So I
think the choice is either (a) learn lua, or (b) learn lua and moonscript for
some nice syntactic sugar.

------
luisbebop
amazing work man! I was thinking in creating something like that but with
mruby. Lua is a good option too. It is a perfect fit to use with Angular.js

