<f1refly>
Honestly any other language will ruin javascript for you
<f1refly>
even javascrip will ruin javascript for you
<FromGitter>
<grkek> Crystal ruined me as well
<FromGitter>
<grkek> and I fucking love it
<raz>
yep, you're all correct. i just had to whine for a moment. sorry.
<FromGitter>
<tenebrousedge> whining to a sympathetic audience is wonderfully cathartic
<FromGitter>
<grkek> I went up and rewrote parts of Kemal framework to be more handler class oriented, rn the readme, specs and samples need updating but the source changed check it out if you guys have time for it :) https://github.com/grkek/grip
<FromGitter>
<grkek> still needs docs they will come soon
<FromGitter>
<grkek> I also plan on changing up the websocket handlers to class oriented ones
<FromGitter>
<tenebrousedge> :plus1:
<FromGitter>
<grkek> <3
<FromGitter>
<j8r> @tenebrousedge I mean, dynamic meta-programing?
<FromGitter>
<tenebrousedge> maybe typescript
<FromGitter>
<tenebrousedge> and isn't there a typed version of python ?
<raz>
@Daniel-Worrall fwiw, i also missed some rubyisms early on (reflection, more flexible Hashes). but over time you discover more and more advantages in the rigidity that crystal has over ruby. the tasks for which i reach to ruby have become increasingly sparse. more often than not i'll try something out in pry. and then write it in crystal :D
<FromGitter>
<tenebrousedge> `icr` is a reasonable replacement for pry for "Does this work the way I think it does?"
<raz>
ah thx, i've yet to try that one out.
<FromGitter>
<randiaz95> Hey guys, how are you guys feeling this holiday season
<FromGitter>
<grkek> I am already ill @randiaz95 how about you :?
<FromGitter>
<randiaz95> dang, lol
<FromGitter>
<randiaz95> I feel bad and lethargic when I drink
<FromGitter>
<randiaz95> so also ill lol
<FromGitter>
<randiaz95> I am learning crystal while growing my dart programming skills
<FromGitter>
<grkek> Want to see something interesting ?
<FromGitter>
<randiaz95> ya
<FromGitter>
<randiaz95> aslong as its not genitals
<FromGitter>
<grkek> Sorry I worded that wrongly, I meant the same route
<FromGitter>
<grkek> :)
<FromGitter>
<grkek> English is not my main language so it is no surprise I made a mistake
<FromGitter>
<Blacksmoke16> np, that clears it up
<FromGitter>
<randiaz95> ll
<FromGitter>
<Blacksmoke16> mixing the logic of two separate routes in one method would be bad
<FromGitter>
<grkek> You are the author of the athena framework
<FromGitter>
<grkek> thats nice
<FromGitter>
<randiaz95> He has Ethos
<FromGitter>
<grkek> its in one class
<FromGitter>
<randiaz95> and logos
<FromGitter>
<grkek> not in one method
<FromGitter>
<Blacksmoke16> yea for sure
<FromGitter>
<Blacksmoke16> `GET /post` and `POST /post`
<FromGitter>
<Blacksmoke16> as an example
<FromGitter>
<grkek> If you define a post method for the /post it will execute the POST handler
<FromGitter>
<grkek> I really don't understand what you mean by that
<FromGitter>
<Blacksmoke16> was just finishing my thought that separate routes should be handled in separate methods, like how it works currently, versus having one method be executed on both routes
<FromGitter>
<grkek> Oh nice, so far it has been slowly coming into shape, currently adding a way to handle the /:something/:someone
<FromGitter>
<grkek> type of a situation with routes, how do you handle something like that ?
<FromGitter>
<Blacksmoke16> the route action is stored within the obj as well after being converted to a proc
<FromGitter>
<Blacksmoke16> thanks :)
<FromGitter>
<Blacksmoke16> amber router supports some stuff radix tree one kemal uses doesnt
<FromGitter>
<Blacksmoke16> namely constraints and optional route sections
<FromGitter>
<randiaz95> amber has cli stuff too that is more productive after the initial investment
<FromGitter>
<Blacksmoke16> example being if you had a route `GET /user/:id`
<FromGitter>
<Blacksmoke16> `GET /user/19` and `GET /user/foo` would both match
<FromGitter>
<grkek> true
<FromGitter>
<grkek> you want type checking with it ?
<FromGitter>
<Blacksmoke16> but if you did like `GET /user/:id, constraints: {"id" => /\d+/}`
<FromGitter>
<Blacksmoke16> `GET /user/19` would match while `GET /user/foo` would 404
<FromGitter>
<grkek> oh that is a great idea
<FromGitter>
<Blacksmoke16> i agree, is why i added it :)
<FromGitter>
<Blacksmoke16> allows separate methods to "listen" on the same route, but handle diff cases
<FromGitter>
<Blacksmoke16> for legacy reasons or whatever
<FromGitter>
<Blacksmoke16> also supports optional segments
<FromGitter>
<Blacksmoke16> so like `GET /posts(/:page)`
<FromGitter>
<Blacksmoke16> would match both `GET /posts` and `GET /posts/2`
<FromGitter>
<grkek> that is a bit weird
<FromGitter>
<grkek> () does this even belong in the route side ?
<FromGitter>
<Blacksmoke16> it just denotes that part of the route is optional in the router
<FromGitter>
<grkek> oh lovely
<FromGitter>
<randiaz95> do we just impeach people we don't like?
<FromGitter>
<Blacksmoke16> lets not get started on that, way off topic and not the place to discuss it
<FromGitter>
<Blacksmoke16> need to think how i want to handle configuration/parameters in athena
<FromGitter>
<grkek> I am still stuck with the router
<FromGitter>
<Blacksmoke16> going to switch from radix?
<FromGitter>
<grkek> probably to amber router
<FromGitter>
<grkek> what do you think ?
<FromGitter>
<Blacksmoke16> prob doesnt matter either way
<FromGitter>
<Blacksmoke16> if you want the extra 2 features of amber's router sure go for it
<FromGitter>
<grkek> I am unable to connect the kemal router for sinatra like routes to the class router type
<FromGitter>
<Blacksmoke16> would have to do something like define the route/methods in a class/instance method that can then be used to add the routes to the router
<FromGitter>
<Blacksmoke16> like in your `add_handlers` thing
<FromGitter>
<grkek> Thank you
<FromGitter>
<Blacksmoke16> oh sorry, think i read that wrong
<FromGitter>
<Blacksmoke16> you want to also support like