|
00:38
ismustachio joined
00:43
ismustachio left
01:55
ismustachio joined
01:59
ismustachio left
02:33
ismustachio joined
02:37
ismustachio left
03:27
discord-raku-bot left,
discord-raku-bot joined
03:31
tirnanog left
05:05
ismustachio joined
05:10
ismustachio left
|
|||
| Jaguart | Can anyone please point me to some decent examples of pod6 - have not been able to track down a style guide, and am finding things like =LICENCE missing from HTML but present in Markdown etc. | 06:22 | |
|
06:32
frost joined
|
|||
| jaguart | Im coming to the conclusion that pod6 has diverged quite a lot from the original intent. I can't find docs on the intent for each semantic block - the list is different from Perl. | 06:54 | |
| Even the basics don't seem to work as I assume they used to - I found this is well pod6'd: modules.raku.org/dist/Linux::Cpuin...pan:JSTOWE | 06:56 | ||
| but a raku --doc=HTML on the code in this repo looks broken | 06:57 | ||
| I'm starting to worry - I feel that I am missing something fundamental in Raku. The language is mind-blowing - cool, fun, rich - wow! I love it. But I feel I will really struggle to get Raku adopted in an actual working environment because basics like system-wide doc generation, packaging etc. are still works-in-progress. Have I just missed something that describes the basics for using | 07:04 | ||
| Raku at work? | |||
|
07:12
guifa left
07:33
ismustachio joined
07:38
ismustachio left
08:12
tirnanog joined
|
|||
| CIAvash | jaguart: The module you mentioned doesn't contain `=LICENCE` in its POD, the "Licence" part is just in the `README.md` file. | 08:45 | |
| Jaguart | Yeah - but if I have an =LICENCE block it shows in Markdown but not in HTML | 09:07 | |
| so I see that people have moved away from semantic-blocks and are just using head1, head2 blocks etc. | 09:08 | ||
| which kind of implies that there is no consistent recognition of the semantic blocks, and rather than use half semantic and half descriptive, you may as well use all descriptive | 09:09 | ||
| jaguart | With a large code base - something like javadoc just seems easier to use - I haven't found the pod6 equivs for @param @return @see etc. Happy to be corrected though :pray: | 09:23 | |
| CIAvash | it shows in HTML for me, what module and version of it are you using for `Pod::To::HTML`? But yeah I think the state of POD converters is not good. Here is one of my PODs: github.com/CIAvash/PatternMatching...ng.rakumod | ||
| jaguart: for that you should use POD declarator blocks(also for parameters), and if your code is typed, POD renderers show that information: docs.raku.org/language/pod#Declarator_blocks | 09:26 | ||
| jaguart | So far, my experiments with those look pretty naff - e.g. can't seem to get ``#| B<strong> - lightly roasted`` or control papa spacing etc etc etc. | 09:33 | |
| s/papa/para/ | 09:34 | ||
| CIAvash | That is because Rakudo hasn't implemented them, I think | 09:35 | |
| jaguart | FWIW I'm using ``Pod::To::HTML:ver<0.8.1>:auth<github:Raku>`` - says v0.8.1 but I see that the git release version is 0.3.4 - havent checked to see if there is an embedded POD version... ĀÆ\_(ć)_/ĀÆ | 09:37 | |
| lol - there is actually no pod in Pod::To::HTML.pm6 | 09:39 | ||
| @CIAVash - I see you have put a lot of effort into your pod, and you have used semantic blocks - though they are not the old CPANish ones... do you have a style-guide/standard? | 09:41 | ||
| CIAvash | I just mixed the Perl POD style guide with the new POD6 features: perldoc.perl.org/perlpodstyle | 09:44 | |
| jaguart | My rusty Perl-pod has the semantics as: TITLE, NAME, SYNOPSIS, DESCRIPTION, OPTIONS, ERRORS, CAVEATS, BUGS, AUTHOR, VERSION, COPYRIGHT, LICENCE | 09:48 | |
| oh - I clearly pruned my list - RETURN VALUE, DIAGNOSTICS, EXAMPLES, ENVIRONMENT, FILES, RESTRICTIONS, NOTES, HISTORY, SEE ALSO | 09:52 | ||
| CIAvash | FWIW there is also a `Pod::To::HTML2` module provided by `Raku::Pod::Render` | 10:02 | |
|
10:03
ismustachio joined
|
|||
| jaguart | Thanks I will check it out. Seems I will have to write something custom to render POD across a code-base. The big thing apparently missing is the per-entity semantics - @param @return @see etc. I guess I could add that to my ``#| comments`` using a render of the javadoc standard. | 10:05 | |
| Incidentally, Pod::To::HTML seems to just treat formatting like C<xxx> etc. in ``#|`` as literals | 10:06 | ||
| and if I dump $=pod - the #| entries are not there... hmm | 10:07 | ||
|
10:08
ismustachio left
10:17
frost left
10:27
frost joined
12:43
ismustachio joined
|
|||
| MasterDuke | jaguart: tbrowder, codesections, and maybe moritz are probably the best people to ask about pod6. i don't know who/if zag (github.com/podlite/podlite-desktop) is on irc | 13:04 | |
|
13:25
MasterDuke left,
frost left
14:22
ismustachio left
14:29
frost joined
14:34
ismustachio joined
14:35
ismustachio left
14:50
frost left
14:52
discord-raku-bot left
14:56
discord-raku-bot joined
15:09
guifa joined
15:21
jgaz joined
16:25
Util left
16:55
MasterDuke joined
17:15
jgaz left
|
|||
| guifa | jaguart: not sure if anyone answered (I seem to have been disconnected), but I think POD6 hasn't reached the level of usage to develop a good feel for style / depth / content, etc. I'm slowly trying to for myself, and there are some new stuff like Comma's new support for it and the Podlite app that hopefully will push more adoption | 18:19 | |
| right now most people are justing using Markdown for Github (likely because GH didn't/doesn't have support for POD6 rendering, and that's where the ecosystem had historically lived) | 18:20 | ||
|
18:26
discord-raku-bot left
18:30
discord-raku-bot joined
|
|||
| klebs | hi folks! is there some way to match a grammar rule against the text in a file with an actions class, and return a list of all matches made? | 20:12 | |
| guifa | klebs: the .parse method returns a match object (you call .made on it to get the result of the actions) | 20:23 | |
| you can use .parsefile to run it on a file | 20:24 | ||
| If the grammar should be matching multiple times over in a single file (e.g. you would have called the regex with :global or :exhausting, etc), you'll want to package the grammar into an umbrella grammar. There was a lot of talk about different ways to do that over the past week or two on Raku's subreddit, actually | 20:30 | ||
| klebs | in my case i know in advance there are multiple matches in the file -- i am starting with something like this: | 20:31 | |
| termbin.com/yi01 | |||
| thanks for the help š | |||
| basically in my example, i have a bunch of generated files in which i accidentally forgot :g while converting snake case to kebab case | 20:32 | ||
| now am realizing it later | |||
| so i want something that can globally search and replace kebab-snake-case to plain kebab-case | 20:33 | ||
| i think i might almost have it -- i didn't realize I could access a grammar's token scoped inside <> like `$in ~~ m:g/<KebabSnake::TOP>/;` | |||
| but now i suppose my question is: how do I write *almost* exactly this except *including* the actions? | 20:34 | ||
| is it possible to `$in ~~ m:g/<rule>/` with an actions class? | |||
| output of the script as-is, is something like: termbin.com/4o03 | 20:35 | ||
| guifa | The actions can only be attached via the .parse method. Personally, I'd adjust TOP to handle the global scope using something like | 20:36 | |
| klebs | maybe there is a way to apply an actions object after the fact? | ||
| guifa | token TOP {Ā <stuff-not-interested-in> %% <old-TOP> } | ||
| klebs | ohh that's a nice trick š | 20:37 | |
| wow | |||
| never thought of that | |||
| but that seems mega useful | |||
| so, could <stuff-not-interested-in> be .* | |||
| ? | |||
| is that the way to specify anything my old-top doesn't care about? | 20:38 | ||
| guifa | thinking off the top of my head | ||
| klebs | i am trying it now -- i think i am missing something | 20:41 | |
| token TOP { [.*]+ %% <kebab-snake> } just matches the whole file | 20:43 | ||
| `token TOP { [.*]+ %% <kebab-snake> }` just matches the whole file | |||
| guifa | right, because .* is greedy | 20:44 | |
| klebs | the problem is that i dont want to specify in advance <stuff-not-interested-in> other than the fact that it is anything which does not match <kebab-case> | ||
| guifa | you might try | 20:45 | |
| klebs | if I do `token TOP { [.*?]+ %% <kebab-snake> } `i get Nil | 20:46 | |
| i could actually just use the matches returned from `$in ~~ m:g/<rule>/` to find start and end points and then substitute using them and the results of a regular grammar parse -- but then i have to parse the file twice | 20:48 | ||
| or once, plus N small parses | |||
| it seems like this is common enough that there might be a clean pattern for this | |||
| guifa | eh my regex fu is failing me right now | 20:50 | |
| but I think you'd be easiest with | |||
| tio.run/##XVDBaoNAED27XzEEQY2taRLo...eB4BlGff8L | 20:58 | ||
| sorry for long URL | |||
| in fact | 21:03 | ||
| even easier | |||
| make this role, and attach it to you grammar | 21:04 | ||
| klebs | nice! this works pretty well! but then my next question would be: in general how do i update the original string? i know what i'd do if each replacement text is the same length as the text it replaces | ||
| in this case, it is | |||
| but supposing in the future i want something like this again, but the result of .made is a different length from the match -- what would i do then? it is like some sort of splicing operation | 21:05 | ||
| guifa | tio.run/##bVBLCsIwEF3HU8wiC4tSXLnw...3xWcZrm@QM | 21:06 | |
| ^^ this is reusable. just say "grammar Foo does GlobalSubparse" and now you can add the :g option to subparse | |||
| klebs | oh nice. that is wizard! | ||
| thank u so much for that š | |||
| guifa | grammars in and of themselves aren't designed to do substitutions | 21:07 | |
| but what you can then do is | |||
| $orig.substr-rw( .from, .to - .from ) = .made.whatever-your-make-generated for @matches | 21:08 | ||
| the length of the replacement won't matter | 21:09 | ||
| guifa has to go afk, but hopefully that helps a bit | |||
| klebs | ah, i wasnt aware of that last part | 21:10 | |
| that is great! | |||
| i think i can handle it from here -- thank you! although now i am getting a failed match when i try the role | |||
| termbin.com/6c04 | 21:12 | ||
| that now gives failed match on the same input | |||
| ah wait i think i fixed it | 21:13 | ||
| termbin.com/vvd4 | |||
| i changed the role: ```raku | 21:14 | ||
| role GlobalSubparse { | |||
| method global_subparse($string, :$actions) { | |||
| my $pos = 0; | |||
| my @matches; | |||
| while $pos < $string.chars { | |||
| my $match = self.subparse($string, :$pos, :$actions); | |||
| if $match { | |||
| @matches.push: $match; | |||
| $pos = $match.to; | |||
| } else { $pos++ } | |||
| } | 21:15 | ||
| @matches | |||
| } | |||
| oh, i can write :global instead of :g and now it works again | 21:17 | ||
| sorry, this area of raku is a bit new to me | |||
| i wrote :global(:$g) in the signature and now it is again working for me | |||
| oh! but if i write `$orig.substr-rw(.from, .to - .from) = .made` in a loop then doesn't it update the indices of `$orig`? ie, if the sizes change wont .from and .to of the next call be incorrect? | 21:19 | ||
| ~~i think i can handle it from here~~ -- thank you! although now i am getting a failed match when i try the role | |||
| i wrote :global(:$g) in the signature and now specifying `:g` is again working for me | 21:21 | ||
| i suppose in this case with the kebab-snake business it is correct behavior anyway! so no worries! | 21:23 | ||
| in general, i am curious though (last question) how to batch update a string with substr-rw where the indices might change between items in a batch | 21:25 | ||
| i suppose it is kind of like applying a patch in git | 21:29 | ||
|
22:55
jgaz joined
|
|||
| guifa | klebs: actually, just apply the replaces in reverse | 23:06 | |
| that way previous changes don't affect offsets | 23:07 | ||
| Nemokosch | not gonna lie, it almost hurts returning to doing generic algorithmic stuff in Javascript after Raku | 23:08 | |
| and mind you, I rather like Javascript | |||
|
23:10
tirnanog left
|
|||
| guifa | I found most other languages are pretty painful after Raku haha. In generally, if there's something I don't like about how Raku works by default, I can change iit | 23:11 | |