Comments (5)
Imba has different precedence than Ruby when it comes to blocks. I've reasoned about it a few times, and have come to the conclusion that I like the Imba precedence better, but I cannot really remember why. Looks like we should go over it again, because right now it seems like a strange decision.
By the way, how it works in imba:
# It will only happen with callable arguments
save data do yes # block is called on data
save "data" do yes # block is called on save
save "data", 100 do yes # still called on save
# I personally never use comma, but use parens around the non-block args:
save(data) do yes
I need to go over this again and try to remember why this was supposedly a better idea :) I did discuss this briefly with @judofyr, maybe he can remember the reasoning?
from imba.
in most cases i use parens too but for people who prefer parens-less syntax it's a useless payload to recall to put coma if last arg is callable.
from imba.
The reason I'm leaning towards the existing syntax (besides compatibility) is the fact that it allows for this type of pattern, which I find myself using from time to time:
load something.map do |item|
item.path
If we had ruby-like precendence, the block must be wrapped:
load something.map(do |item|
item.path
)
I find it a bit clunkier to need to wrap the block itself, than to sometimes need to wrap the preceding arguments (or use a single comma). It seems easier to control where the do block is with the current syntax, but it's what I am used to, so hard to say.
from imba.
One "solution" would be to disallow ambiguous do
blocks:
# ok:
load(something.map) do |item|
item.path
# ok:
load(something.map do |item|
item.path)
# ok:
load something.map(do |item|
item.path)
# syntax error:
load something.map do |item|
item.path
from imba.
+1 on disallowing ambiguous do
blocks
from imba.
Related Issues (20)
- npx imba create fails (Windows) HOT 1
- The new color decimal tone steps do not work with the hue color keyword.
- unitless size not working in paddings
- [CSS] Advanced CSS units
- [CSS] Support CSS values with / and spaces HOT 1
- Components that inherit from another class do not render with the appropriate CSS class HOT 1
- input's native "list" property throws error
- Draggable HTML attribute is set to "true" when it equals "false" as a string HOT 1
- [Docs] No documentation for templates. imba create points to an empty page.
- `imba create ; pnpm i` installs imba 0.9.0
- ease (Transitions) eat mouse event HOT 5
- One more or up to three more steps in Imba clever syntax
- + and ~ css selector doesn't work with indentated declarations HOT 1
- Passing objects without {} sometimes ambiguous HOT 5
- window.print not working HOT 3
- change to value of property in an `@observable` object doesn't trigger `@autorun`
- Router hooks
- bxs: outline should support inset, and suggestion to add bxs:stroke (inset) for 1px shadows
- interpolation of values to hue not working as espected
- Feature Request: Support Prolog Style op/3 User Defined Operators
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from imba.