🦋 Welcome to the MAIN() IRC channel of the Raku Programming Language (raku.org). Log available at irclogs.raku.org/raku/live.html . If you're a beginner, you can also check out the #raku-beginner channel! Set by lizmat on 6 September 2022. |
|||
00:00
reportable6 left
|
|||
Nemokosch | rf: soon there will be a patch with basic stash resetting, please try it | 00:01 | |
00:03
reportable6 joined
|
|||
aaand there it is | 00:13 | ||
I'm gonna go now, anything further will have to wait until tomorrow | 00:14 | ||
rf | Thanks | 00:17 | |
tonyo | rf: can you link me the template system you used before, can't seem to find the link for it | 00:19 | |
(the fp one) | |||
rf | The OCaml one? | 00:20 | |
github.com/ocsigen/tyxml | |||
About as good as a template DSL gets IMO | |||
tonyo: Did protones README get clobbered? | 00:23 | ||
Looking at git history I don't see it, maybe I'm dreaming lol | 00:24 | ||
tonyo | ahh, i think this'd be pretty easy to implement in raku | 00:25 | |
forgot it was xml/html | |||
rf | I mean once you have an XML templating system HTML is only a step away | 00:31 | |
tonyo | rf: am i groking this correctly? `a` is analogous to a fn ref? | ||
div ~a:[a_class ["content"]] [ # div being a function ref here? | |||
nvm, i'm in lisp mode | 00:32 | ||
rf | div is a function ~a is a named arg | ||
a_class is a function too, being passed a list with "content" | |||
tonyo | yea this would be pretty easy to generate | 00:33 | |
rf | Yeah you don't have to go crazy with validity too, tyxml is fairly simple the hard part for the team that did it was adding typing and formal verification to your HTML | ||
tonyo: Here's a larger example codeberg.org/boldcaml/librehouse.n...le_edit.ml from a friends old project | 00:37 | ||
tonyo | ~a being essentially a value given to the template render method? | 00:38 | |
rf | No ~a is your HTML attributes | ||
tonyo | i don't think this even requires a grammar | 00:39 | |
rf | so div ~a:[ a_class "foo bar"] --> <div class="foo bar"></div> | ||
tonyo | oh, it's just saying use the ~a type to get to class='foo bar' | ||
is the spacing important or just convention? | 00:40 | ||
rf | Which spacing sorry | ||
tonyo | in the template you linked | ||
rf | Convention | 00:41 | |
If I were to write this div function in Raku its sig would be: sub div(Array[HTMLAttribute] :@a) { ... } | |||
tonyo | to raku-ize it would change the look a little bit but pretty easy | 00:42 | |
rf | sub div(Array[HTMLAttribute] :@a, Array[HTMLNodes] @children) { ... } | ||
Geth | doc/main: b2011f0bb6 | (Will Coleda)++ | doc/Language/about.rakudoc Simplify, shorten, update language/about Closes #4258 |
00:48 | |
¦ doc: coke self-assigned No mention of NFG in the docs? github.com/Raku/doc/issues/3258 | |||
tonyo | rf: i think i could put this together after some extensive data scraping | 00:50 | |
00:56
Manifest0 left
|
|||
rf | tonyo: I'm waiting with utmost anticipation | 00:58 | |
01:08
jpn joined
|
|||
tonyo | heh, scraping an index of html5 tags and valid attributes | 01:13 | |
01:13
jpn left
|
|||
rf | That'll probably be the hardest part | 01:15 | |
tonyo | yea Web::Scraper didn't age well | 01:36 | |
Geth | doc/NFG: e8f56b1355 | (Will Coleda)++ | xt/headings.rakutest more exceptions |
01:38 | |
doc/NFG: 95f08d07f0 | (Will Coleda)++ | util/test-modified.sh Test added files also |
|||
doc/NFG: a14318c2be | (Will Coleda)++ | 6 files Add NFG entry. WIP! THESE COMMITS WILL BE SQUASHED |
|||
02:13
evalable6 left,
linkable6 left
02:14
linkable6 joined,
evalable6 joined
02:39
human-blip joined
02:40
human-blip left,
human-blip joined
02:45
deoac left
03:05
razetime joined
03:07
rf left
03:32
derpydoo joined
04:05
swaggboi left
04:06
razetime left
04:12
swaggboi joined
04:19
xelxebar_ is now known as xelxebar
04:25
Woodi_ is now known as Woodi
04:51
tea3po is now known as TEATIME
05:29
razetime joined
05:42
TEATIME is now known as teatime2,
teatime2 is now known as teatime
06:00
reportable6 left
06:02
reportable6 joined
06:10
derpydoo left
06:47
teatwo joined
06:50
teatime left
07:50
coverable6 left,
linkable6 left,
reportable6 left,
unicodable6 left,
quotable6 left,
benchable6 left,
notable6 left,
evalable6 left,
committable6 left,
statisfiable6 left,
bisectable6 left,
squashable6 left,
tellable6 left,
sourceable6 left,
nativecallable6 left,
shareable6 left,
evalable6 joined,
reportable6 joined,
committable6 joined
07:51
unicodable6 joined,
bisectable6 joined
07:52
tellable6 joined,
shareable6 joined,
notable6 joined,
coverable6 joined,
quotable6 joined
07:53
nativecallable6 joined,
squashable6 joined,
linkable6 joined,
benchable6 joined,
statisfiable6 joined,
sourceable6 joined
08:07
jpn joined
08:12
jpn left
08:24
razetime left
08:39
Sgeo left
08:40
razetime joined
08:53
Manifest0 joined
08:57
dakkar joined
09:00
jpn joined
09:04
jpn left
|
|||
Geth | doc/main: 2e9043c445 | (Elizabeth Mattijsen)++ | doc/Type/independent-routines.rakudoc Document done(value) |
09:37 | |
09:39
jpn joined
|
|||
Geth | doc/main: 15028a8811 | (Elizabeth Mattijsen)++ | 2 files Document Buf.Blob and Blob.Buf |
09:44 | |
09:50
ab5tract joined
10:00
Nemokosch joined
10:02
Nemokosch left
10:04
razetime left
11:04
linkable6 left,
evalable6 left
11:05
evalable6 joined
11:07
linkable6 joined
11:15
yoreei joined
11:27
abraxxa joined
|
|||
guifa | AntonAntonov: having to head out for a trip but on Sunday remind me and I'll send you the slides | 11:32 | |
11:32
guifa left
12:00
reportable6 left
12:02
reportable6 joined
13:02
reportable6 left,
linkable6 left,
quotable6 left,
unicodable6 left,
bisectable6 left,
benchable6 left,
sourceable6 left,
coverable6 left,
squashable6 left,
committable6 left,
tellable6 left,
evalable6 left,
notable6 left,
shareable6 left,
releasable6 left,
nativecallable6 left,
statisfiable6 left,
unicodable6 joined
13:03
bisectable6 joined,
sourceable6 joined,
shareable6 joined,
coverable6 joined,
quotable6 joined,
nativecallable6 joined
13:04
tellable6 joined,
evalable6 joined,
benchable6 joined,
releasable6 joined
13:05
statisfiable6 joined,
squashable6 joined,
linkable6 joined,
reportable6 joined,
committable6 joined,
notable6 joined
|
|||
Anton Antonov | @guifa Thanks! | 13:20 | |
Geth | doc/main: 20f577e214 | (Elizabeth Mattijsen)++ | doc/Type/DateTime.rakudoc Add availability notice for DateTime.methods Specifically day-fraction, modified-julian-date and julian-date |
13:27 | |
13:51
rf joined
|
|||
rf | m: my @foo; given @foo[0] { default {say 123} }; | 13:54 | |
camelia | 123 | ||
rf | This hangs forever | ||
Is that intended? | |||
Also, good morning :^) | 13:55 | ||
wut | |||
lizmat | doesn't hang forever for me either | 13:57 | |
rf | Huh, must have something broken in my code | 13:58 | |
Geth | doc/main: 02c89783b9 | (Elizabeth Mattijsen)++ | doc/Type/Enumeration.rakudoc Document that an enum class can be considered a Map For the purpose of calling keys, values, kv, pairs, antipairs, invert methods. |
||
doc/main: 5be763bf90 | (Elizabeth Mattijsen)++ | doc/Type/IO/Path.rakudoc Document IO::Path.user|group |
14:08 | ||
14:24
[Coke] joined
|
|||
[Coke] | is there a way to get the Unicode 1 Name of a character? | 14:26 | |
tellable6 | 2023-03-07T20:51:24Z #raku-dev <NemokoschKiwi> [Coke]: anyway, sorry, I didn't notice that there was a context in the first place. I thought you just said it as a generic paradigm. | ||
[Coke] | e.g. want to be able to search and find "guillemet", which is in that field, not the main name. | ||
14:37
squashable6 left
14:38
squashable6 joined
14:48
yoreei left
14:52
jpn left
14:57
flash548 joined
|
|||
Geth | doc/main: 4aebd168e6 | cfa++ | doc/Type/Enumeration.rakudoc Fix example typo |
14:57 | |
15:10
jpn joined
15:12
flash548 left
|
|||
Geth | ¦ doc: cfa self-assigned docs.raku.org/language/testing.html does-ok github.com/Raku/doc/issues/4253 | 15:14 | |
tonyo | m: say Array.elems | 15:18 | |
camelia | 1 | ||
tonyo | m: say Array.Set | ||
camelia | (timeout) | ||
Geth | doc/main: fcb96e15b2 | cfa++ | doc/Language/testing.rakudoc Remove unnecessary does-ok =item A link to docs.raku.org/type/Test#sub_does-ok immediately follows, with a more detailed signature. Index entry maintained. Closes #4253. |
15:21 | |
15:27
Sgeo joined
15:41
razetime joined
|
|||
rf | Ahh 2 hours of debugging just to have a sneaky little statement at the end of my sub being used as the return value :L | 15:53 | |
lizmat | tonyo: interesting, care to make an issue for it ? | 15:58 | |
tonyo | not at all | 15:59 | |
both of those are bugs, yea? | |||
lizmat | no, the first one is correct | 16:01 | |
any scalar value can act as a single element list, and thus has 1 elemen | 16:02 | ||
t | |||
rf | m: my @m is Array; say @m.Set | ||
camelia | Set() | ||
lizmat | yea, calling .Set on the Array (or List) type object hangs | 16:03 | |
it should produce a set with the Array type object in it | |||
tonyo | ah | 16:04 | |
lizmat | [Coke] I don't think there's a guillemet named codepoint | ||
there are: | |||
AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK « | |||
BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK » | |||
tonyo | updated the bug | 16:05 | |
lizmat | I assume that is what you were looking for? | ||
rf | m: [email@hidden.address] | ||
m: "foo@bar.ca".encode.decode.say; | |||
camelia | foo@bar.ca | ||
lizmat | tonyo: updated the title :-) | 16:06 | |
tonyo | danke | ||
or tak | |||
i don't know which dutch uses : ) | |||
lizmat | very formal: "dank u wel" | ||
less formal: "dank je" | |||
"danke" is actually German :-) | 16:07 | ||
tonyo | weirdos | 16:08 | |
16:09
Sussysham joined
|
|||
Voldenet | "tak" means "yes" in polish | 16:09 | |
Sussysham | Good evening guys | ||
El_Che | it means branch in dutch | ||
tonyo | apko is my favorite polish word | ||
El_Che | that's how wars get started | ||
Nemokosch | also means "so" in Polish | ||
Sussysham | Namaskar is greating in hindi | ||
16:10
abraxxa left
|
|||
lizmat | "tak" is also Danish and Swedish, I believe | 16:10 | |
Nemokosch | maintaining the tradition of "yes" being derived from what the situation is like | ||
Voldenet | "no" means yes in polish as well | ||
;> | |||
Sussysham | have anyone setup comma plugin with jetbrains ide | ||
tonyo | i definitely used it in kobenhavn for thanks | ||
lizmat | I believe nxadm has such a setup | ||
Nemokosch | "no" doesn't mean yes in Polish, it's rather an interjection | 16:11 | |
Sussysham | i just wanted to say quickly know steps to setup | ||
Nemokosch | interjections are hellish to get right in all languages tbh | 16:12 | |
Voldenet | It's very informal language, but it's more fun if you present it as "yes" ;) | 16:13 | |
rf | I found an interesting thing. For some reason @ is being encoded as \%40 somehow in Humming-Bird urlencoded requests | ||
16:13
abraxxa joined
|
|||
Nemokosch | encodeURIComponent says that's right | 16:13 | |
dakkar | oh fun, hummingbird will also truncate header values github.com/rawleyfowler/Humming-Bi...akumod#L64 | 16:15 | |
(think of `foo: bar: baz`) | |||
16:16
Geth left,
Geth joined
|
|||
dakkar better stop looking at that code | 16:16 | ||
Nemokosch | isn't it better to know if there is an issue | 16:17 | |
dakkar | it is, but if *I* keep looking, I'll end up rewriting most of it | ||
I'm not the right person to provide *constructive* criticism, sometimes | 16:18 | ||
Geth | doc/main: e93658ffd1 | (Elizabeth Mattijsen)++ | doc/Type/Cool.rakudoc Date availability of Cool.uniname |
||
tonyo | rf: i may have stumbled into something pretty cool: body[ :charset<en/US>, h1[ :text-value<Hello there!> ], div[ p[..], p[..] ] ] | 16:21 | |
rf | tonyo: That is excellent | ||
tonyo | testing it right now, precomp is taking forever | ||
16:21
Sussysham left
|
|||
rf | dakkar: If I had enough time to tackle every problem I would have :^) | 16:21 | |
16:22
Sussysham joined
|
|||
rf | dakkar: That code also isn't for decoding headers, that's just for the pre-flight checks. | 16:22 | |
ie, looking for content-length and transfer-encoding | 16:23 | ||
dakkar | rf: eh! at a minimum, you probably want to `$string.split(': ',2)` | ||
(also, I'm not completely sure that the space after the colon is required by HTTP/1) | |||
rf | NGiNX and httpd will re-write to use them | 16:24 | |
Note: Humming-Bird is not meant to face the internet directly. Please use a reverse proxy such as httpd or NGiNX. | |||
dakkar | ah, ok, that simplifies your life quite a bit! good idea | ||
El_Che | caddy is a nice one to recommend | ||
(auto https through letsencrypt and trivial to setup) | 16:25 | ||
16:26
lichtkind joined
|
|||
rf | dakkar: Yeah, mostly just focused on application layer stuff, I've written HTTP servers before but I find it's a waste to reinvent the wheel when most modern systems just use NGiNX or Apache as gateways anyways | 16:26 | |
El_Che | or specialized devices | 16:27 | |
dakkar | github.com/rawleyfowler/Humming-Bi...kumod#L153 another `split` that should have a limit | ||
(otherwise a body with a \r\n\r\n in it will get truncated) | 16:28 | ||
rf | $body = @split_request[1] || $body; | ||
dakkar | yes, by @split_request may have more than 2 elements | ||
s/by/but/ | |||
rf | Ah, good catch | 16:29 | |
dakkar | github.com/rawleyfowler/Humming-Bi...kumod#L157 same split here for the headers | ||
(much less important: Cookie uses encode/decode the "wrong" way around, with e.g. `encode` going from string to data structure) | |||
(I would call them `new-from-request-header-value` and `to-response-header-value`…) | 16:31 | ||
(but I'm infamous for my long method names) | |||
rf | I prefer the idea of str -> object == encode, object -> str == decode | 16:32 | |
El_Che | req and resp | ||
val | |||
dakkar | rf: ehrm… most of the rest of the world doesn't | ||
El_Che | every programmer will understand those abbrevations | ||
Voldenet | rf: but it's the other way around in perl | ||
dakkar | and in the Unicode spec, and in most RFCs… | ||
"encode" goes from internal representation to external representation, "decode" goes the other way | 16:33 | ||
16:33
Sussysham5 joined
|
|||
dakkar | (then again, this is mostly an internal class, so meh) | 16:33 | |
Voldenet | tbh. I'd put headers/body parsing as state machine encapsulating the header and never allocate unnecessary strings out of it | ||
16:33
Sussysham18 joined
|
|||
dakkar | Voldenet: we're still at the "make it correct" stage, the "make it fast" comes later 😜 | 16:34 | |
Voldenet | But making it fast would then need rewrite | ||
dakkar | and that's what good test coverage is for | ||
Voldenet | it's probably easier to get it working fast before features are added | ||
16:34
Sussysham left
|
|||
dakkar | (I'm not being completely serious, in case it weren't clear) | 16:34 | |
16:34
Sussysham18 left
|
|||
rf | I think the performance isn't particularly bad right now anyways | 16:35 | |
16:35
Sussysham joined
|
|||
rf | Could be cope haha but it's only been alive for 3 months | 16:36 | |
dakkar | my general progression is 1) correct 2) usable 3) fast | ||
Voldenet | I think performance is crucial everywhere, making this one-time-use script faster will save you precious 20ms of your life | ||
dakkar | (correct+usable tend to happen together while I write the tests) | ||
Voldenet | for me it's 1) fast 2) quick 3) speedy | ||
dakkar | Voldenet: ah, you're one of those who can give the wrong answer very quickly 😁 | 16:37 | |
Voldenet | It's not wrong, it's | ||
uh | |||
approximate | |||
dakkar | rotfl | ||
Seymour Cray would be proud | |||
Voldenet | True (+- 1) | ||
16:38
Sussysham5 left
|
|||
rf | I think the search for correctness can leave you wanting, especially if you're being correct just for the sake of it, but that might be a hot topic | 16:38 | |
No practical software is 100% correct, and I have yet to find an outlier | |||
Nemokosch | > "encode" goes from internal representation to external representation, "decode" goes the other way um... wait what | 16:39 | |
Voldenet | that's why I like that new convention of to-json and from-json | ||
to-string and from-string | |||
etc. | |||
it's more verbose in what it does | |||
tonyo | m: class AA { has $!tag; submethod BUILD(Str:D $!tag) {} }; AA.new("A") | 16:40 | |
camelia | Default constructor for 'AA' only takes named arguments in block <unit> at <tmp> line 1 |
||
Nemokosch | one can quickly develop a sense that Perl did everything backwards | ||
dakkar | eh, see my ideas for the Cookie methods (remember that the `set-cookie` response header uses a different format than the `cookie` request header!) | ||
Nemokosh: uh? | |||
(sorry for the nick typo) | 16:41 | ||
tonyo | m: class AA { has $!tag; submethod BUILD(Str:D $!tag) {} }; AA.new(:tag<a>) | 16:42 | |
camelia | Too few positionals passed; expected 2 arguments but got 1 in submethod BUILD at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
Nemokosch | namespaces, dependency management, loop control statements, versioning, and now the meaning of encoding and decoding as well? | ||
16:42
silug left,
silug8 joined
|
|||
dakkar | Nemokosh: where did you ever find "encode" to mean "from external representation to internal"? | 16:42 | |
16:42
Scotteh left
16:43
razetime left,
Scotteh joined,
razetime joined
|
|||
dakkar | (btw, Perl doesn't use either of those terms anywhere in the language, so I'm not sure what you're talking about) | 16:43 | |
16:44
Sussysham left
|
|||
Nemokosch | now, either we have different ideas about what "external" or "internal" mean, or there is encodeURIComponent I just used like 20 minutes ago | 16:44 | |
the high-level representation being encoded into something an URI can contain | |||
dakkar | encodeURIComponent goes from bytes to %things, right? | ||
the %thing is the external form (the one you send over the network) | 16:45 | ||
Voldenet | encodeURIComponent goes from string to string | ||
Nemokosch | no, it goes from high-level strings to them | ||
Voldenet | _obviously_ | ||
dakkar | the bytes are the (more) internal representation (the one your application cares about) | ||
so… I'm confused | |||
Nemokosch | there are no bytes involved | ||
dakkar | ok, now I fear I'm thinking of something completely different | 16:46 | |
Voldenet | the terminology doesn't involve casting but converting between codes | ||
so, you encode things to url component format | |||
s/url/uri/ | |||
dakkar | sure, but the %00 format only encodes values between 0 and 255 | 16:47 | |
Nemokosch | like, wasn't it always like, you have data on one end, encode it, send it to the other, than decode it and get the high-level representation again? | ||
then* | |||
dakkar | (you can't encode 💩 directly, you need to encode the character into a byte sequence, usually with utf-8) | ||
Nemokosh: yes | |||
"have data" → internal representation | 16:48 | ||
"send it" → external | |||
so we're saying the same thing | |||
Nemokosch | so yes, you have the opposite perspective for internal and external | ||
dakkar | I'm looking from my application's point of view | 16:49 | |
Nemokosch | that's why I rather said high-level (abstract, if you may) and low-level (concrete) | ||
dakkar | the network (or the disk) is outside | ||
rf | I see it as, if I have a Raku object that is my encoded state because it is unusable for external consumers | ||
dakkar gives up ☺ | |||
rf | It's like encrypt vs decrypr | ||
Nemokosch | the high-level version is not encoded | ||
rf | I mean it's all semantics I don't think it's worth getting fired up about | 16:50 | |
16:50
Sussysham joined
|
|||
Nemokosch | in an ideal world, the encoded version wouldn't exist, so to speak | 16:50 | |
Voldenet | In an ideal world it still would, because encoded version can be compressed for example | 16:51 | |
dakkar | my Turing machine has a very long tape! | ||
Voldenet | encoding and decoding are only transport-related | ||
Nemokosch | depends on how ideal 😛 | ||
Voldenet | My ideal is better than yours | ||
can't we both agree on that :> | 16:52 | ||
Nemokosch | but do you have functors | ||
Voldenet | right, in an ideal world sending data is just a pure function that alters the world into other state of the world | ||
rf | No, it uses lenses :^) | 16:53 | |
Nemokosch | by the way, that's how it is in Raku as well. you encode a string into a buffer, and decode that buffer back to a string | ||
rf | m: "foobar".encode.decode.say; | 16:54 | |
camelia | foobar | ||
rf | m: "foobar".encode.say; | ||
camelia | utf8:0x<66 6F 6F 62 61 72> | ||
Voldenet | But a string is an internal representation in this case and bytes are used by the transport | ||
Nemokosch | I find the word "internal" unhelpful here. Sure, internal in the sense that it cannot be ejected into a physical network. | 16:55 | |
Still that's the high-level interface towards humans | |||
it's external towards the human reader, from which perspective whatever machinery the computers are doing is an "internal" detail | 16:56 | ||
Voldenet | now I don't like this terminology too much, it's so unclear | ||
it's too related to character encoding | 16:57 | ||
Nemokosch | well, for me, the other one is too related to transportation | 16:58 | |
Voldenet | it's almost like .encode method shouldn't even be present on a Str to begin with | 16:59 | |
Nemokosch | why is it like that? | ||
Voldenet | because it's the transport defining its method of encoding | ||
Nemokosch | btw it's the same in Python actually | ||
as long as we say that saving a file to a disk is also a manner of transportation | 17:00 | ||
Voldenet | in C# there's `Encoding.UTF8.GetBytes("string")` and `.GetString` | ||
now that I think of it, it's obvious why | |||
dakkar | perl5's `Encode` module works that way too | 17:03 | |
Nemokosch | the gordian knot | 17:04 | |
lizmat | hmmm looks like Github is having problem delivering wehbooks | ||
*webhooks | |||
Geth | doc/main: fcb96e15b2 | cfa++ | doc/Language/testing.rakudoc Remove unnecessary does-ok =item A link to docs.raku.org/type/Test#sub_does-ok immediately follows, with a more detailed signature. Index entry maintained. Closes #4253. |
17:05 | |
17:05
Sussysham left
|
|||
Geth | doc/main: ee6ecf6821 | (Elizabeth Mattijsen)++ | doc/Type/IterationBuffer.rakudoc Document IterationBuffer |
17:10 | |
17:11
Sussysham joined
17:26
razetime left
|
|||
rf | Is there a way to convert the blobs from Digest sha256 to Str's without it exploding? | 17:29 | |
tonyo | if you want the hex, there's the hex funcs in the module | 17:31 | |
rf | That would be ideal | ||
thanks | |||
tonyo | if you have the buf[uint8] you can do this too: | 17:32 | |
m: my Buf[uint8] $b .=new(30..96); say $b>>.map(*.base(16)).join(" ") | |||
camelia | 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 | ||
tonyo | s/>>/ | 17:34 | |
17:34
dakkar left
|
|||
tonyo | also works | 17:34 | |
[Coke] | lizmat: yes, I'm saying that AB was called like left guillemet in unicode 1, so it's probably in there as an alias. | 17:38 | |
more generally, want App:Uni to be able to search aliases. | 17:39 | ||
Geth | doc/main: 8e50545cf6 | cfa++ | 3 files Spelling, spacing |
17:42 | |
[Coke] | unicodable6: « | 17:44 | |
unicodable6 | [Coke], U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK [Pi] («) | ||
[Coke] | unicodable6: ︘ | 17:45 | |
unicodable6 | [Coke], U+FE18 PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET [Pe] (︘) | ||
[Coke] | m: say ("︘".uniprop('nameAlias'); | 17:46 | |
camelia | ===SORRY!=== Error while compiling <tmp> Unable to parse expression in parenthesized expression; couldn't find final ')' (corresponding starter was at line 1) at <tmp>:1 ------> say ("︘".uniprop('nameAlias');⏏<EOL> |
||
[Coke] | m: say("︘".uniprop('nameAlias'); | ||
camelia | ===SORRY!=== Error while compiling <tmp> Unable to parse expression in argument list; couldn't find final ')' (corresponding starter was at line 1) at <tmp>:1 ------> say("︘".uniprop('nameAlias');⏏<EOL> expecting any of:… |
||
[Coke] | m: say "︘".uniprop('nameAlias'); | ||
camelia | 0 | ||
[Coke] | ah well. that's the class alias (which I suspect they did on purpose to have a prod test for this. :P ) | 17:47 | |
*classic | |||
m: say "︘".uniprop('nName_Alias'); | 17:48 | ||
camelia | 0 | ||
[Coke] | m: say "︘".uniprop('name_Alias'); | ||
camelia | 0 | ||
[Coke] | OMG, the wide character is screwing up my display here somehow. | ||
m: say "︘".uniprop('Name_Alias'); | 17:49 | ||
camelia | 0 | ||
[Coke] | (ok, I think that's the canonical name for the property) | ||
tonyo | rf: abusing circumfix makes this pretty trick | 17:53 | |
div[ a[ "google" ]:href<google.com> ]:hidden -> <div hidden><a href="google.com">google</a></div> | 17:54 | ||
falsifian | Would be nice if the attributes could go before the content. div:hidden[ ... ] | 17:56 | |
tonyo | i think they can | ||
ah, maybe not | 17:57 | ||
17:57
thundergnat joined
|
|||
thundergnat | bisectable: say cross((0, 1), (1, 1), :with(&infix:<&&>)); | 17:57 | |
bisectable6 | thundergnat, Will bisect the whole range automagically because no endpoints were provided, hang tight | ||
thundergnat, Output on all releases: gist.github.com/6b13cad3ae0b591a32...957613f8a8 | 17:58 | ||
thundergnat, Bisecting by output (old=2016.12 new=2017.01) because on both starting points the exit code is 0 | |||
thundergnat, bisect log: gist.github.com/06f489d8a74bb9b24a...112269237a | |||
thundergnat, (2017-01-16) github.com/rakudo/rakudo/commit/8a...3534a07026 | |||
thundergnat, ⚠ New output detected, please review the results manually | |||
thundergnat, Output on all releases and bisected commits: gist.github.com/337ed12fb5fe27e99b...0810527551 | |||
thundergnat | Wow. Old regression | 17:59 | |
18:00
reportable6 left
18:01
reportable6 joined
|
|||
thundergnat | ^ lizmat one of your commits | 18:02 | |
18:02
thundergnat left
18:03
abraxxa left
|
|||
lucs | @tonyo: Um, 'zef checkbuild' complains of not finding one of my *.rakumod in META6,json's "provides', which is on purpose, my understanding being that if it was, it may appear in for example raku.land listings. Should I just ignore the complaint and go ahead and upload? | 18:04 | |
tonyo | yea force it | 18:05 | |
lucs | OK | ||
Oh, also, my module directory contains irrelevant-to-the-release files. | |||
Will they just be ignored or should I clean them out of there? | 18:06 | ||
@tonyo: Another way perhaps to phrase that: can I peek inside the tarball that would be uploaded before it actually does get uploaded? | 18:07 | ||
tonyo | yea for sure you can look in sdist/ | 18:08 | |
18:08
jpn left
|
|||
lucs | Ah, I see. Looking... | 18:08 | |
Hmm... A lot of precomp files in there. | 18:09 | ||
Normal? | |||
18:09
jpn joined
|
|||
@tonyo: (As well as files that don't belong to the release, I'll move them out.) | 18:10 | ||
18:17
Sussysham left
|
|||
tonyo | it's normal as of now, if you're using the .gitignore i'd recommend using git archive and then using `fez upload --file=<x>` - the .gitignore doesn't work like a strict globber so i need to rework it a bit | 18:25 | |
lucs | Which file is this "x"? | 18:26 | |
tonyo | wherever git archive output the tgz | 18:27 | |
lucs | Oh, I see. | ||
By the way, | |||
I cleaned out the precomp`s and stuff, but | |||
I get error: | |||
=<< Null regex not allowed | 18:28 | ||
=<< ERROR: All bundlers exhausted, unable to make .tar.gz | |||
(after plain "fez upload" -- am I missing that "file" argument?) | 18:29 | ||
Oh, let me guess: fez upload --file=sdist/wUtEvEr.tar.gz ? | 18:31 | ||
tonyo | yea | 18:33 | |
lucs | You know, this is not quite obvious from trying to understand the docs :( | 18:34 | |
tonyo | it's getting a facelift in the next version | ||
Nemokosch | which docs, good sir? | ||
tonyo | the fez docs are lacking | ||
lucs | Well, it appears to have correctly uploaded. | 18:36 | |
Nemokosch | are you managing with fez all alone? I mean, there's kind of pressure on that, now that it is the preferred ecosystem | ||
lucs | Thanks for helping me out @tonyo. | ||
It appears in raku.land. | 18:52 | ||
Yay! | |||
18:55
tea3po joined
18:58
teatwo left
|
|||
rf | tonyo that is nice | 19:06 | |
19:06
a3r0 left
19:07
a3r0 joined
|
|||
rf | Is there a nice way to see if a string contains only ASCII characters? | 19:10 | |
I'd prefer not to use Regex for this unfortunately | 19:11 | ||
tonyo | rf: github.com/tony-o/ryml | ||
rf | I'm gonna try to rewrite a part of my personal site with it tonight toyno | 19:12 | |
tonyo**^ | |||
tonyo | there's still some tweaking left to do | ||
[Coke] | m: my $str="something"; dd !so $str.NFC.grep(* > 128).elems | 19:16 | |
camelia | Bool::True | ||
[Coke] | something like that, maybe. | ||
m: my $str="something"; dd !so $str.ords.grep(* > 128).elems ; # ords instead. | 19:17 | ||
camelia | Bool::True | ||
[Coke] | m: my $str="something"; dd !so $str.ords.grep(* > 128).elems ; # ords instead. | ||
camelia | Bool::True | ||
[Coke] | m: my $str="something"; dd !so $str.NFC.grep(* > 128).elems | ||
camelia | Bool::True | ||
[Coke] | m: my $str="something"; dd $str.ords.grep(* > 128).elems eq 0 | 19:18 | |
camelia | Bool::True | ||
[Coke] | m: my $str="something"; dd $str.ords.grep(* > 128).elems eq 0 | ||
camelia | Bool::True | ||
[Coke] | Dammit. | ||
ok, giving up now. | |||
rf | Lol [Coke] that was my first thought but it didn't work | 19:25 | |
nvm NFC is working idk why my .ord was borked | 19:27 | ||
19:46
vrurg left
20:11
vrurg joined
|
|||
lucs | In raku.land, can the search box be used to find modules matching a given tag? | 20:14 | |
tonyo | rf: gist.github.com/tony-o/a614749299b...d69f571f75 | 20:25 | |
20:29
vrurg left
20:32
vrurg joined
|
|||
tonyo | that's what it looks like so far | 20:41 | |
20:42
lucs left
20:47
vrurg left
20:48
vrurg joined
20:49
euandreh left
|
|||
rf | tonyo: That's awesome haha can't wait to try this out tonight | 21:12 | |
tonyo | trailing commas no longer necessary | 21:13 | |
also bear in mind that the renderer doesn't escape values for attributes yet (or text data) | |||
but it's an easy fix in the `lib/Ryml.rakumod` | |||
rf | It would be nice to have an optional escape | 21:14 | |
tonyo | it'll get it eventually | 21:15 | |
still fiddling around with the xbin/gen | |||
the way this is written would make it easy to make a server side rendering mechanism | 21:18 | ||
21:28
Guest35 joined
|
|||
rf | Yeah that's how TyXML is used typically | 21:33 | |
tonyo | added escaping | 21:34 | |
rf | Am I able to do: my $partial = div[ 'foo' ]; my $html = html[ head[], body[ $partial ] ]; | 21:35 | |
21:39
code0zero joined
|
|||
tonyo | yea | 21:42 | |
Guest35 | Hi, everyone. Is Perl 5.10 still sufficient to build Rakudo Star as indicated by rakudo.org/star/source ? | ||
I am having trouble building it by way of brew | 21:43 | ||
Experimental "my" subs not enabled at /private/var/folders/6f/lpcqx0qs7fxgm_8f5c010x4r0000gn/T/tmp.mDFjlkgH/3rdparty/nqp-configure/lib/NQP/Config.pm line 1519. | 21:44 | ||
[Coke] | I imagine no one has tested a perl that old in some time. | 21:45 | |
Someone did just submit a patch to claw back a slightly more recent perl than that, I think. | 21:46 | ||
21:47
code0zero left
|
|||
Guest35 | I see that now | 21:48 | |
github.com/Raku/nqp-configure/comm...26f7c318b7 | |||
I think that will help my error | |||
[Coke] | yup, that one. | 21:49 | |
22:03
ab5tract left
22:09
gcd left
22:14
squashable6 left
22:15
squashable6 joined
|
|||
tonyo | rf: there's no mechanism in there verifying the softer side of complete vs partial docs | 22:35 | |
the renderer is also kind of dumb, you could put a tr element under a `p` and it wouldn't really care | |||
rf | That's good. I think partials are good | 22:36 | |
lucs | Okay, so my Test::Selector has successfully been installed by zef. | 22:41 | |
But when I run its supplied bin/tsel, I get a "Could not find Test::Selector::Main" error, which is part of the tarball that was uploaded. | 22:42 | ||
Should that module, contrary to what I believed, have been listed in the META6's "provides" section? | 22:43 | ||
Also, how does one debug these problems? | 22:44 | ||
rf | Yes it needs to be listed in the META6 | ||
lucs | I'm pretty sure I read that what was listed in "provides" was for indexing purposes, in CPAN or raku.land for example. | 22:45 | |
Is that wrong? | |||
I want Test::Selector to be listed, but don't try to install Test::Selector::Main, that kind of makes no sense. | 22:46 | ||
rf | if you run zef install . --force-install on your project locally | 22:47 | |
Do you get access to that module? | |||
Nemokosch | it seems that there might be two or even three parallel topics here | 23:03 | |
lucs | @rf: Sorry, had to answer the door and discuss a few things with the neighbors. | 23:05 | |
I'll try a force-install now. | |||
@rf No luck (same result as earlier): gist.github.com/lucs/9c89b6846313a...31c4d26b53 | 23:08 | ||
The code is here: github.com/lucs/Test-Selector | 23:09 | ||
Nemokosch | don't forget that use is not some linker stuff; it's resolved when you invoke the program | 23:10 | |
lucs | @Nemokosch Er, not sure what that comment implies I should be doing or trying. | 23:12 | |
Nemokosch | if Test::Selector::Main is not registered anywhere in the module registry, that's too bad | ||
lucs | Oh, okay, but I'd expect zef to have taken care of that, no? | ||
Nemokosch | that the script doesn't know more about available modules than any raku script | ||
at which point this is not zef level stuff anymore | 23:13 | ||
lucs | Hmm... What should I do, or have done, differently? | ||
23:15
evalable6 left,
linkable6 left
|
|||
Nemokosch | the simplest thing would be really to just expose that module so that it gets registered as a use-able module | 23:15 | |
23:16
evalable6 joined
|
|||
use lib <location> also might help but I'm not sure how dynamic use is exactly | 23:16 | ||
23:16
linkable6 joined
|
|||
if it's too dynamic, that's not good because the location of the actually invoked script is unknown, I don't think use lib is a good idea in that case | 23:16 | ||
lucs | 'use lib' would require me to give a path, I don't think that's the right approach. | 23:17 | |
Nemokosch | well yes | ||
lucs | But maybe that META6 "provides" holds part of the answer. | 23:18 | |
Nemokosch | however, you do need to supply the module somehow | ||
lucs | "use Test::Selector" works fine | 23:19 | |
Nemokosch | I think ultimately the question is: to what extent is a script you put under bin, just a random Raku script that you happen to install to a location | ||
lucs | (from the REPL) for example. | ||
But "use Test::Selector::Main" is not found. | 23:20 | ||
Nemokosch | if there is no magic about that, then you need to let it know about the module you are trying to use, like you would be for any other script | ||
lucs | Look, my understanding, which may be wrong, is that that is what zef is supposed to do. | ||
Paging @ugexe 🙂 | 23:21 | ||
23:23
euandreh joined
|
|||
rf | lucs: It can't find it because you dont specify its location in META6 | 23:23 | |
tellable6 | rf, I'll pass your message to lucs | ||
lucs | @rf: That makes sense. | 23:24 | |
So the "provides" would be more than just to allow indexing. | |||
I'll add it to the META6, reupload, and hope it works. | 23:25 | ||
Nemokosch | it's definitely more than "just" indexing but you are also kind of right that it's a public interface | ||
rf | if you do "provides": { "Test::Selector:Foo": "lib/Test/Selector/Foo.rakumod" } you will be able to find "Test::Selector::Foo" | ||
lucs | Yeah, sounds good. | 23:26 | |
Will try that. | |||
Back in some minutes... | |||
23:31
NemokoschKiwi joined
23:39
deoac joined
23:40
NemokoschKiwi left
|
|||
That fixed it. | 23:51 | ||
Thanks all. | 23:52 | ||
If I find that place where I read that misleading info about "provides"'s role, I'll report it. | |||
[Coke] | ... hopefully it wasn't the docs site. | 23:55 | |
Nemokosch | the truth is, "provides" is kinda both - an interface towards what you want to install, and a map from module names to compunit locations |