00:01 Pe_Elle left 00:31 Pe_Elle joined 01:33 Pe_Elle left 01:36 Pe_Elle joined 01:41 Pe_Elle left 02:02 Pe_Elle joined 02:08 Pe_Elle left, Pe_Elle joined 03:05 Pe_Elle left 03:06 Pe_Elle joined 03:10 Pe_Elle left 03:17 guifa left 03:35 Pe_Elle joined, Pe_Elle left, Pe_Elle joined 03:38 Pe_Elle left 03:39 Pe_Elle joined 03:44 Pe_Elle left 03:49 guifa joined 04:12 Pe_Elle joined 04:16 Pe_Elle left 04:53 Pe_Elle joined 05:58 Pe_Elle left 06:28 Pe_Elle joined 07:33 Pe_Elle left 07:56 Pe_Elle joined 08:01 Pe_Elle left 08:14 Pe_Elle joined 08:30 guifa left 09:16 Pe_Elle left 09:40 Pe_Elle joined 09:45 Pe_Elle left 10:01 Pe_Elle joined 10:35 sena_kun joined 11:00 Pe_Elle left 11:30 Pe_Elle joined 11:35 Pe_Elle left 11:37 Pe_Elle joined
SmokeMachine Is there a way to add raku sub to the template (as the built in ones (like HTML()))? 11:43
12:43 Pe_Elle left 13:08 guifa joined 13:11 Pe_Elle joined 14:38 Pe_Elle left 14:58 Pe_Elle joined
librasteve smokemachine: i just took an initial look at Cromponent. My initial overall feedback is (i) it is awesome, (ii) about 80% of what I was aiming to do (and I have had a big coder’s block on getting my head around this problem… so kudos to you for a very nice cut). My next thought is to play around with your code when i get a chance, and then give blow by blow feedback and maybe feed in some new angles. 15:00
15:04 Pe_Elle left
SmokeMachine I’m strat playing on moving some part of Cromponents to use Cro constructs now I have a bit more understanding on how Cro::WebApp;:Template work (I still don’t get how the Builtins are “injected” into the AST) 15:05
librasteve I’m keen to be able to nest components and my guess is that is why you are asking if a crotmp can contain a raku sub call. To my surprise, I found that your approach with template inline is more promising that trying to follow my Template-Register idea. My initial idea was to register both the main crotmp (containing crotmp subs & macros) and then to register caller crotmp stubs, but I think that it may be better 15:13
to stay with the purely template-inline and to provide composition by exporting components as subs that can call one another … with arguments to deliver named data to each components for hydration. For nesting you need to be able to pass (a list of) inners and their needs to be a marker in the crotmp like <:body> to where the inner resides. Rather than monkey with the Cro Template internals, when not just do a substitution of
a simple body marker like that?
my mental model for composable subs is maybe like HTML::Functional - you know you could have a sub called grid() and another called todo() and then go something like grid(:row2, :col2, todo() xx 4) 15:17
SmokeMachine You already can have nested components, no? It’s just the case of your base component have another components as its attributes, right?
On the case you described, from where would come the todo data? 15:18
librasteve grid(:row2, :col2, todo('bleble') xx 2, todo('blabla') xx2 ) 15:20
its just raku code
vars, blocks, $_ as you like 15:21
SmokeMachine On cromponent, the component is a combination of an object (on my example a `Todo.new: :data(“the todo string”)`) and a Cro template sub auto created by the return of the method RENDER.
But I need to do 2 different things: 1 - pass the object to the render function; 2 - call the sub passing the object as argument… 15:22
librasteve sorry - I am not able to really work on this right now (must walk dog only 45 mins daylight!!) 15:23
SmokeMachine Please, feel free to leave… I’ll just put some thoughts here so you (or anyone else) can see later when you have some time, ok? 15:25
One way I was thinking on improving it (to not need to do that on 2 steps) is to make the component be a template register itself… and have a method that would run the RENDER, compile the template, cache it and sun the template passing self. The problem with that approach is that using a component on template would need something like: `<&HTML(.my-component)>`. 15:29
15:34 Pe_Elle joined
SmokeMachine Another possible solution I thought would be adding a new type of tag to Cro template, a Component tag <*>… it would have 5 “formats”: <*.my-component> (where .my-component references to the component object), <*$my-component> (where the variable $my-component is a component object), <*> (where the topic variable is a component object), <*MyComponentClass> and <*MyComponentClass(parameters)> 15:38
15:39 Pe_Elle left
SmokeMachine (The last 2 would receive a class, the last one would use the parameter list to call the classes new(), and the other one would use the class itself… 15:40
The tag would call the obj’s (or classe’s) .RENDER, compile it, cache it, render it and return it with out escaping it… 15:43
15:44 Pe_Elle joined
SmokeMachine Another solution I thought it basically the same as the <*> one, but instead of creating a new tag, create a new sub, and we would be able to do something like: <&COMPONENT(.my-component)>… and that’s why I was asking if it is possible to create new template subs in raku… I was kind of able to do that assim it as a builtin… but one of the best parts of this solution is that, if I can create the sub in raku, I don’t need to 15:47
modify Cro and can create a new module for doing that…
Só, is there a way to create template subs in raku from outside Cro::WebApp code? 15:48
Another thing I thought is that (back to Cromponent code) the component could be defined by a sub (as it is currently) or you could choose it to be defined as a macro, that way you could easily use <:body> on the component’s RENDER method… 15:54
Any of this make sense? 16:47
16:48 Pe_Elle left 17:36 Pe_Elle joined 17:40 Pe_Elle left 17:46 Pe_Elle joined 18:50 Pe_Elle left 19:20 Pe_Elle joined 19:28 Pe_Elle left 19:57 Pe_Elle joined 20:01 Pe_Elle left 20:31 Pe_Elle joined 20:55 Pe_Elle left 21:24 Pe_Elle joined 21:28 Pe_Elle left 22:00 Pe_Elle joined 22:05 Pe_Elle left 22:51 Pe_Elle joined 22:56 Pe_Elle left 23:11 sena_kun left 23:29 Pe_Elle joined