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.
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.
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?
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.
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 :).
i'm looking at this too, and i would say no... use a framework that has most of the stuff you will need built in, it will make your life easier. adapting to other lua will just be learning the underlying features and the cool stuff you never learned, might make you a better scripter.
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.
`.` and `\` in Moonscript map to `.` and `:` in Lua.
In Lua, `foo.bar` is just syntactic sugar for `foo["bar"]`, a table lookup with a string key.
In turn, `foo:bar(baz)` is syntactic sugar for `foo.bar(foo, baz)`.
It is not uncommon to mix things up, and put a dot instead of the column. IIRC, Leafo used the backslash instead because it is more distinct, visually.
I really don't see why \ has anything do with escaping when not in the context of a string (or regex) literal. There is no ambiguity whatsoever. It's a shame more languages don't use it because it's easy to type (no shift required).
25 comments
[ 111 ms ] story [ 1134 ms ] threadThis 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?
Glad you like the documentation, I try to take pride in writing detailed documentation. :)
[0] https://github.com/Olivine-Labs/busted/blob/master/spec/moon...
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?
source: https://news.ycombinator.com/item?id=5445158
As mentioned in the other comment I use this for recording animations: https://github.com/rprichard/x11-canvas-screencast
Otherwise interesting web framework, makes me want to look into MoonScript.
What's worse, is it is inconsistent. Take:
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.
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 :).
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.
In Lua, `foo.bar` is just syntactic sugar for `foo["bar"]`, a table lookup with a string key.
In turn, `foo:bar(baz)` is syntactic sugar for `foo.bar(foo, baz)`.
It is not uncommon to mix things up, and put a dot instead of the column. IIRC, Leafo used the backslash instead because it is more distinct, visually.
is thus equivalent to (adding parens for maximum clarity).. is taken. : is taken. propose a better alternate and maybe it'll end up in the language.