[Plugin] bim-tools 0.13.4(june 22, 2015)
-
Hi Dan,
I also removed a "tap"-call because it was added in ruby 1.9.
Would you consider this a good substitute? Or would it be much slower?hash = {}.tap{ |r| bt_entities.each{ |ent| ent.properties_editable.each{ |k,v| (r[k]||=[]) << v } } }
hash = bt_entities.inject({}) {|h,ent| ent.properties_editable.each{ |k,v| (h[k]||=[]) << v}; h}
something I borrowed from:
http://stackoverflow.com/questions/5490952/merge-array-of-hashes-to-get-hash-of-arrays-of-values -
.
Well the 1st thing I had to do is proper indentation:hash = {}.tap {|r| bt_entities.each {|ent| ent.properties_editable.each {|k,v| (r[k]||=[]) << v } } }
and
hash = bt_entities.inject({}) {|h,ent| ent.properties_editable.each {|k,v| (h[k]||=[]) << v } h }
Then the 2nd thing, is that Ruby is designed for easily read and understood code. (Why I like it so much.)
I do not understand why some coders go out of their way, to write minimalist hard to read and understand code. Come back 3 years from now and see if the coder remembers what the code is supposed to do, without spending a half hour consulting method documentation, etc.
3. Re.,
inject()
, in the past in pre-YARV Ruby, it was notoriously slow. But things have gotten better.4. My opinion of
tap()
is that it might be nifty, but it will serve mostly to contribute to ugly code.5. I'd just do it simple like this:
hash = Hash;;new {|h,key| h[key]=[] } bt_entities.each {|ent| ent.properties_editable.each {|k,v| hash[k] << v } }
-
@dan rathbun said:
.
I do not understand why some coders go out of their way, to write minimalist hard to read and understand code. Come back 3 years from now and see if the coder remembers what the code is supposed to do, without spending a half hour consulting method documentation, etc.LOL Thank you very much! I totally agree with you. It indeed seemed a nifty piece of code I found on stackoverflow, but every time I needed to edit it, it took me half an hour to re-interpret it(and I'm still not 100% sure how the tap works).
Now you write it out it does not seem so difficult anymore
I should have added the indentation myself the moment I tried to understand what it did -
@brewsky said:
... and I'm still not 100% sure how the
tap
worksIt is very similar to the
map!
/collect!
methods forEnumerable
objects. So you could usemap!
in place oftap
for arrays.But, in Ruby 2.0,
tap
is defined inObject
, not just enumerable classes, so every object can "tap" into a block of code that can change and then return itself.So
tap
is kind of like a general purpose "bang" method, but designed for especially for chaining so it always returns it's receiver object, whether it made changes or not. ("Bang" methods usually returnnil
when they do not make changes to the receiver, making them unsuitable for method chaining.) -
Fix for mac! Menu layout needs some work still.
Check out the plugin store -
Thank you for Mac fix.
Successfully loaded and working. -
-
Does anyone know if this plugin is compatible with Sketchup Pro 2018? I'm looking to upgrade, but can't live without this one.
Thanks,
Chris B.
-
@awadrummer said:
Does anyone know if this plugin is compatible with Sketchup Pro 2018?
I did a little test and I ran into some issues for su2018
I will try to find some time to look into them...@awadrummer said:
I'm looking to upgrade, but can't live without this one.
Great to hear you like it!
-
@brewsky said:
@awadrummer said:
Does anyone know if this plugin is compatible with Sketchup Pro 2018?
I did a little test and I ran into some issues for su2018
I will try to find some time to look into them...@awadrummer said:
I'm looking to upgrade, but can't live without this one.
Great to hear you like it!
Thank you Brewsky! The only issue I've found with 2018 is it freezes/takes a long time to process, but I generally have ALOT of lines. With that being said it is still usable. Thanks for your help and designing this awesome plugin!
Advertisement