The web in a box - a next generation web framework for the Perl programming language

IRC log for #mojo, 2015-01-20

| Channels | #mojo index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 sri jberger: of course your call, you can propose a change and vote
00:00 jberger not my call **solely**
00:01 jberger tianon: I actually like Foundation
00:01 * jberger gives tianon a fire extinguisher premptively
00:01 sri what does Foundation in that context even mean?
00:02 Grinnz the foundation for learning how to use mojo
00:02 Grinnz i think Tutorial is more straightforward though
00:05 neyasov____ joined #mojo
00:05 cpan_mojo Mojolicious-Plugin-JQuery 2.13000 by FERRO - http://metacpan.org/release/FERRO/Mojolicious-Plugin-JQuery-2.13000
00:08 tianon "If you haven't read Mojolicious::Guides::Foundation, you won't have the proper foundation for understanding the rest of the Mojolicious documentation."
00:08 tianon just to be doubly corny
00:08 tianon but direct
00:22 hernan604 joined #mojo
00:26 good_news_everyon joined #mojo
00:26 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/BvWv0g
00:26 good_news_everyon mojo/master 7eb472b Sebastian Riedel: move tutorial from Mojolicious::Lite to Mojolicious::Guides::Tutorial
00:26 good_news_everyon left #mojo
00:26 sri jberger, Grinnz, tianon: i'm not convinced it's better, but lets see
00:27 sri i suppose you want to rephrase the introduction though
00:27 sri http://mojolicio.us/perldoc#TUTORIAL
00:28 tianon I'm just coming from the same perspective as buu - I saw "Lite" originally and thought, "I don't want Lite, I want the FULL POWER" (because I didn't understand that they're really the same thing)
00:29 jberger I kinda like how that makes the Route doc look
00:30 good_news_everyon joined #mojo
00:30 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/T3D-9w
00:30 good_news_everyon mojo/master 1b5998f Sebastian Riedel: the link did not look right anymore
00:30 good_news_everyon left #mojo
00:37 good_news_everyon joined #mojo
00:37 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/AT_Otg
00:37 good_news_everyon mojo/master 19a25f7 Sebastian Riedel: more links
00:37 good_news_everyon left #mojo
00:38 Grinnz A fast and fun way to get started developing web applications with Mojolicious is Mojolicious::Guides::Tutorial. This covers the Mojolicious::Lite micro web framework, which is only a thin wrapper around the normal web framework, so almost everything you learn here also applies to full Mojolicious applications.
00:38 Grinnz one way to reword it
00:39 sri i remember jberger insisting on the last sentence specifically
00:39 Grinnz he said tht was because it was under Mojolicious::Lite :P
00:39 sri "The simplified notation introduced in the tutorial is commonly used throughout the guides..."
00:40 Grinnz can leave that too, doesn't need to change
00:43 sri i don't like that you make Mojolicious::Lite the option that is not normal
00:45 Grinnz thats already what it said :P
00:45 Grinnz "around the full web framework" ?
00:50 good_news_everyon joined #mojo
00:50 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/R-NrPw
00:50 good_news_everyon mojo/master 0e68479 Sebastian Riedel: much simpler tutorial description
00:50 good_news_everyon left #mojo
00:50 sri http://mojolicio.us/perldoc/Mojolicious/Guides#TUTORIAL
00:55 good_news_everyon joined #mojo
00:55 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/XeMW-g
00:55 good_news_everyon mojo/master 73e5cf0 Sebastian Riedel: be more specific in tutorial description
00:55 good_news_everyon left #mojo
00:57 * sri shakes jberger and Grinnz
01:03 * jberger reads
01:04 jberger I think that's fine
01:04 jberger tbh I think that skipped the tutorial did it because it said Lite, they didn't even read the description
01:05 hshong joined #mojo
01:05 jberger if I could I would put a note that says "ZOMG every word of these Guides has been carefully chosen, read it all!!!!" but I don't think that would fly
01:05 sri ¯\_(ツ)_/¯
01:05 neyasov____ joined #mojo
01:07 jberger so its interesting, with the upcoming Test::Simple I can get the correct(ish) line numbers for ::Phantom, without it, I cannot
01:07 jberger TB::Level does me know good once I enter the loop
01:07 jberger no
01:08 jberger though I can't even get close while trying to wrap it all in subtest, either way
01:09 fwef joined #mojo
01:12 fwef Hi, I'm totally new to mojolicious and perl in general. I wanted to try the awesomeness everyone talks about but I can't get it to work after installing using 'cpan Mojolicious'. I get following errors: http://pastebin.com/iwhqTpHq Can anyone please help?
01:13 preaction fwef: where did cpan install it to? open up "cpan" and do "o conf" and pastebin the results
01:14 preaction we might need the result of "env | grep ^PERL" as well
01:15 fwef preaction: http://pastebin.com/0gbZFKFX
01:15 fwef and the second one: http://pastebin.com/mWyw0ZQP
01:16 fwef I'm running on Mac OS X 10.10 (Yosemite) if that's relevant
01:17 preaction okay. to fix this you need to add some directories to your PERL5LIB. do "export PERL5LIB=$HOME/perl5/lib/perl5:$HOME/perl5/lib/perl5/darwin-thread-multi-2level"
01:18 Grinnz sri, looks good to me
01:20 fwef preaction: all done and everything seems like it's working. thanks!
01:20 preaction fwef: make sure that export line goes in your .bash_profile
01:20 preaction wherever you put those PERL_MB_OPT and PERL_MM_OPT lines
01:20 fwef preaction: yep, already there
01:20 preaction i don't know when that little documentation issue was fixed...
01:21 Grinnz if you're using local::lib just add the eval line from local::lib to your .bashrc
01:21 preaction "Set these two variables to install modules, but don't set a variable to use the modules you installed"
01:21 Grinnz https://metacpan.org/pod/local::lib#SYNOPSIS
01:21 preaction Grinnz: this is the CPAN.pm auto-bootstrap via local::lib, which means there's a chicken and egg problem
01:21 Grinnz old versiosn of CPAN.pm would set it up wrong, you should do that instead
01:22 preaction so local::lib is in $HOME/perl5/lib/perl5, but that's where the local::lib would need to be done
01:22 fwef preaction: actually CPAN set the two variables for me, while installing mojolicious
01:22 Grinnz hence: eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"
01:22 preaction ahh
01:22 preaction fwef: then yes, replace those lines with what Grinnz said. it's better forwards-compatibility
01:22 Grinnz [ $SHLVL -eq 1 ] && eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"
01:22 Grinnz in .bashrc, to be precise
01:27 fwef thanks, that works nicely
01:32 kaare joined #mojo
01:35 marmez joined #mojo
01:46 sri perl on os x is nicer with perlbrew
01:48 genio indeed
01:53 good_news_everyon joined #mojo
01:53 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/RfOd7w
01:53 good_news_everyon mojo/master d2fa38b Sebastian Riedel: use daemon in example
01:53 good_news_everyon left #mojo
01:57 jberger hmmm, I'm not sure I want to call it phantom_ok unless I can make it appear to behave as a subtest (ie only generate one pass)
02:02 good_news_everyon joined #mojo
02:02 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/wut6Qg
02:02 good_news_everyon mojo/master 0bf4f21 Sebastian Riedel: not too many links
02:02 good_news_everyon left #mojo
02:23 hshong joined #mojo
02:25 klapperl_ joined #mojo
02:41 fwef left #mojo
02:51 jberger ha! got it
02:51 jberger https://github.com/jberger/Test-Mojo-Phantom/blob/role_subtest/lib/Test/Mojo/Phantom.pm
02:59 good_news_everyon joined #mojo
02:59 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/lp_TFg
02:59 good_news_everyon mojo/master b3a9307 Sebastian Riedel: fixed typo in Mojolicious::Lite
02:59 good_news_everyon left #mojo
03:01 neyasov____ joined #mojo
03:55 noganex joined #mojo
04:09 inokenty-w joined #mojo
04:30 jberger sri: ahahahaha I got a new one for you
04:30 jberger ┻━┻︵ \(°□°)/ ︵ ┻━┻
04:49 neyasov____ joined #mojo
05:37 sri :D
05:38 sri jberger: trying to teach perl that... but can't get it quite right yet
05:38 sri noooo
05:38 sri purl: noooo
05:38 purl ┻━┻︵ (°□°)/ ︵ ┻━┻
05:38 sri she keeps loosing an arm
05:39 sri noooo!
05:39 * sri pokes purl
05:39 * purl pops and flies about the room... phphmmbhbpthhhphthhhh*blat*
05:39 sri :o
05:43 Grinnz backslash escaping? lol
05:50 dotandimet joined #mojo
05:53 jberger :)
05:59 basiliscos joined #mojo
06:14 dotandimet joined #mojo
06:39 neyasov____ joined #mojo
06:41 Grinnz joined #mojo
07:04 hesperaux joined #mojo
07:08 dabudabu joined #mojo
07:08 Gedge_ joined #mojo
07:13 Gedge joined #mojo
07:14 dotandimet joined #mojo
07:17 dod joined #mojo
07:21 dod joined #mojo
07:22 denis_boyun joined #mojo
07:24 Vandal joined #mojo
07:27 reneeb joined #mojo
07:43 guest-quest joined #mojo
07:57 Gedge joined #mojo
07:58 reneeb joined #mojo
08:04 batman jberger: https://github.com/jberger/Test-Mojo-Phantom/blob/role_subtest/lib/Test/Mojo/Phantom.pm # looks _very_ cool :)
08:04 batman but why is it a role? can't you subclass Test::Mojo?
08:06 sugar joined #mojo
08:06 batman also, why is it a subtest?
08:09 eseyman joined #mojo
08:34 trone joined #mojo
08:39 Lee joined #mojo
09:09 pink_mist hmmm? isn't that what you're supposed to have it as if you're only calling one test function that performs more than one test itself?
09:10 neyasov____ joined #mojo
09:20 arthas joined #mojo
09:40 amon joined #mojo
09:57 dotan joined #mojo
10:05 batman any idea how to debug this error? http://www.cpantesters.org/cpan/report/c479a3d8-a000-11e4-a948-7411e1bfc7aa
10:05 batman Malformed UTF-8 character (fatal) at /opt/perl-5.10.1/lib/site_perl/5.10.1/Mojo/DOM/HTML.pm line 123, <DATA> line 307.
10:14 moritz batman: first step would be to install the same perl as the reporter did, and set the same env variables
10:14 moritz in particular
10:14 moritz LC_ALL = de_DE.UTF-8
10:14 moritz LANG = C
10:14 moritz (and possibly generate that locale)
10:14 batman moritz: ah! i will try setting the environment variables at least... thanks
10:15 cpan_mojo Mojolicious-Plugin-Prove 0.02 by Renee Baecker - http://metacpan.org/release/RENEEB/Mojolicious-Plugin-Prove-0.02
10:15 moritz batman: iirc lots has been done in Unicode land between 5.10.1 and 5.14 or 5.16
10:15 batman yeah, that is true...
10:34 dotan joined #mojo
10:50 nathanael joined #mojo
11:04 dotan joined #mojo
11:06 punter joined #mojo
11:28 cpan_mojo Swagger2 0.25 by Jan Henning Thorsen - http://metacpan.org/release/JHTHORSEN/Swagger2-0.25 (depends on Mojolicious)
11:36 denis_boyun joined #mojo
11:51 hernan604 joined #mojo
12:30 kaare_ joined #mojo
12:39 fhelmberger joined #mojo
12:44 kaare__ joined #mojo
12:59 neilhwatson joined #mojo
13:09 jberger batman: it's a role because there is a mechanism to apply a role only to an instance
13:09 jberger and I wanted to play around with that
13:10 batman not sure if that's a good reason :(
13:10 jberger sure it could be a subclass, but I wanted to give this a try, ala plugin extension
13:10 batman it's cool, but i'm not sure if it's worth the dependency
13:11 jberger Role::Tiny comes with Moo, which most users will have installed anyway and it's rather light
13:11 jberger I haven't decided to keep it, but I would not make the decision based on dependency radius
13:12 jberger now, as to why it behaves as a subtest
13:13 jberger for the simple reason that you can run lots of tests on the js side, but on the perl side you only called one test function so it's easier to think of it as one test,
13:13 batman but... why would i do "use Test::Mojo; use Test::Mojo::Phantom -apply;" when i could just do "use Test::Mojo::Phantom;" ?
13:14 jberger plus you can use a subtest plan to ensure that all your js tests ran, which is a bigger concern in this arrangement than in standard perl testing imo
13:14 batman from what i can tell, it's at least two extra lines, instead of... no extra lines
13:15 batman ok. i really don't like subtests in general. instead of making sub tests, i just make another test file.
13:15 jberger I see only one extra line (vs a subclass)
13:15 jberger oh, I find that subtests are really handy in mojolicious
13:16 jberger https://github.com/jberger/Galileo/blob/master/t/basic.t
13:16 batman why especially in mojolicious?
13:17 jberger because I often have related tests
13:17 batman that test file is way too long for me. i would much rather have... no idea how many, since i didn't bother to read it all :(
13:17 jberger to each his own
13:17 batman indeed
13:19 batman i would be super happy if subtest could be a behavior i can turn off in your phantom test module
13:19 jberger but even if you don't subscribe to that, I still think phantom_ok should create one
13:19 jberger hmmmm, that might be possible
13:19 batman of course you think that, hehe... it's the basis of the discussion :-)
13:20 jberger especially with the new Test::Simple
13:21 jberger batman: ok question, what is the success status of phantom_ok if it runs more than one outer tests?
13:21 batman i don't like enforcing a plan either. i've never found that useful
13:21 batman you mean $t->success; ? i would supposed all had to be successful for that to be true
13:22 jberger batman: in this it's more useful, because you might lose the pipe, or the js might malform our something. that shouldn't look like a pass
13:22 asarch joined #mojo
13:22 jberger batman: sure, I agree, it makes sense that all should be true, how do I know that?
13:23 batman i would add a test for checking if phantom closed successfully
13:23 jberger subtest does exactly that for me
13:23 batman can't phantom tell you if it was successful?
13:23 marty joined #mojo
13:23 batman it = phantom tests
13:24 jberger the phantom interpreter has no idea about tests
13:25 jberger I suppose I could insert a last test
13:27 jberger currently, all the test function does is bundle its arguments and send then add json back to perl
13:27 jberger s/add/send/ # swipe fail
13:27 jberger if there is a js tap emitter I might prefer that
13:33 batman yeah, you have a lot of good reasons for the design.
13:33 batman i like that.
13:33 batman i just wish you hadn't, hehe
13:33 batman jberger++
13:33 jberger :)
13:33 neyasov____ joined #mojo
13:34 batman jberger: http://phantomjs.org/api/phantom/method/exit.html # how about this?
13:35 jberger that's a start
13:35 batman :)
13:35 jberger I would need to be sure that it exit(1) on error
13:36 batman can't you just make sure that "all tests run" = exit(0); ?
13:36 jberger how would it know?
13:36 jberger without a plan
13:37 batman that's the whole idea about _not_ having a plan. you don't know how many tests are run.
13:37 jberger I get that
13:38 batman (the exit value is the number of failing tests)
13:38 jberger I would think that getting exit (0) and getting some known final message and ensuring exit (1) on error would be sufficient
13:39 jberger batman: phantom has no idea if the tests fail
13:40 batman let me see if i understand this... you load some kind of testing framework into phantom that print "harness test results" to "screen"...?
13:40 jberger https://github.com/jberger/Test-Mojo-Phantom/blob/role_subtest/lib/Test/Mojo/Phantom.pm#L56
13:41 batman harness test results = i mean tap
13:41 jberger I would love to do what you said, but I haven't found a tap emitter for js
13:41 jberger so I use the perl side emitter
13:42 sugar_ joined #mojo
13:42 batman what about tape, mocha, testling...?
13:43 batman qunit-tap? BusterJS?
13:43 * batman will be testing out tape soon-ish
13:43 batman mostly because browserify mentioned it :-)
13:43 jberger guess I should have asked you rather than Google
13:44 batman https://github.com/substack/tape
13:45 ignacio_ joined #mojo
13:46 batman jberger: also, if you use my soon-to-be-browserify preprocessor in assetpack, you can simply do 'var test = require("tape");' in your javascript code and it will download tape and do the magic for you
13:46 batman https://github.com/jhthorsen/mojolicious-plugin-assetpack/blob/browserify/lib/Mojolicious/Plugin/AssetPack/Preprocessor/Browserify.pm
13:47 batman it works pretty well already... just need some minor changes before i *dare* to release it
13:47 batman i don't want you to read the whole code, just have a look at the DESCRIPTION
13:49 jberger is phantom already using that? The syntax looks similar
13:50 batman probably.
13:50 batman i think phantom allow you to do what nodejs does... iirc
13:51 batman uhm... nevermind browserify... i don't think it will help you accomplish what you want.
13:51 batman it might be a distraction.
13:52 batman jberger: is there an alien module for npm and node modules..?
13:53 jberger not sure
13:53 jberger I'd have to look
13:53 batman ok. not sure how it would work...
13:53 jberger yeah, I'm not sure either
13:53 jberger Allen is really intended for libraries that perl needs
13:55 batman ok
13:57 jberger the fetching bits might help you, but you would have to defeat all the build and dynaload logic
13:57 jberger probably not worth it at that point
13:58 batman hehe. thanks for the heads up :)
14:01 hernan604 joined #mojo
14:02 hernan604 joined #mojo
14:02 neyasov____ joined #mojo
14:06 hernan605 joined #mojo
14:09 hernan605 joined #mojo
14:09 sugar__ joined #mojo
14:10 jberger I just asked Exodist on #toolchain about receiving TAP from a sub-process, I wonder if using that in some sane way is even possible
14:12 hernan604 joined #mojo
14:13 zivester joined #mojo
14:13 hernan604 joined #mojo
14:19 jberger hahahahaha: http://bgr.com/2015/01/19/lizard-squad-customer-database-hacked/
14:20 jberger batman: you might have to change your password! http://www.engadget.com/2015/01/20/splashdata-worst-passwords/?ncid=rss_truncated
14:21 batman jberger: haha!
14:22 kwa joined #mojo
14:23 gryphon joined #mojo
14:24 neyasov____ joined #mojo
14:27 basiliscos joined #mojo
14:39 reneeb Hi, I created a matrix for (nearly) all Mojolicious plugins: http://mojo.perl-services.de/
14:40 reneeb A cronjob tests for new plugins and Mojolicious versions every 24 hours...
14:41 reneeb I hope this helps to keep the plugins in sync with Mojolicious (e.g. for removed methods, ...)
14:45 batman reneeb: cool. do you have a way to filter ok/not ok?
14:49 batman reneeb: it missed my Mojolicious::Plugin::Swagger2 module... probably because it's in the Swagger2 distro..?
14:53 Lee reneeb++ # mojo.perl-services.de
14:54 nicomen missed Test::Mojo::Plack
14:55 batman nicomen: that's not a plugin
14:59 nicomen ah right
14:59 nicomen I immediately though reverse dependencies
14:59 nicomen *thought
15:11 reneeb batman: not yet. I plan to extend the features during weekend
15:13 reneeb batman, Lee: Currently, I only search for Mojo.* dists, but I will add the check for dependencies within the next days. (I really want the PhantomJS thing tested ;-) )
15:18 batman reneeb: cool :)
15:19 jberger reneeb: hahaha, its not even on CPAN yet !
15:20 jberger reneeb++ # site
15:20 nicomen reneeb++
15:21 reneeb jberger: I really look forward to it. I think I will use it in my current project :-)
15:21 jberger reneeb: I would appreciate any input in the discussion batman and I were having earlier
15:22 jberger should the tests be on the Perl side or the js side (via say "tape")
15:22 jberger how do the results get coalated?
15:23 jberger Exodist mentioned that if we wanted to do js side TAP, that this might be useful: https://metacpan.org/pod/TAP::Stream
15:24 Ptolemarch joined #mojo
15:31 zackiv31 joined #mojo
15:43 human39 joined #mojo
15:46 odin22 joined #mojo
15:46 jberger reneeb: can I put in a feature request for the site?
15:46 jberger two actually
15:47 jberger can the name of the module also be a link to metacpan?
15:47 jberger and can you add the author name
15:53 sh4 joined #mojo
16:01 batman it would be cool if it was sortable.
16:01 pink_mist hmm, are there namespaces for templates? I mean, if my plugin comes with a couple of templates, and they happen to be named like "index.html.ep" .. what happens if they're plugged in to an app that already has templates like that? :/
16:01 batman i think you can even do that in javascript. (the list doesn't seem that long)
16:01 batman pink_mist: yes.
16:02 pink_mist ok, and how do they work? :P
16:02 batman some sort of md5 checksum
16:02 batman no wait... i'm actually not sure :(
16:02 pink_mist X_X
16:03 pink_mist brb, need to grab that döner I ordered ..
16:04 batman pink_mist: the template is wrapped in a sub, so it should't leak any variables to any other template
16:05 * batman need food as well
16:05 batman pink_mist: ignore me. *someone* will give you the right answer
16:06 batman pink_mist: but the answer to your question is that you should find your own namespace for the templates.
16:06 batman like "/my/module/file.html.ep"
16:06 reneeb jberger: will do it...
16:06 batman since mojo will search for tha template name and if it finds "index.html.ep" in the "host project", it will use that instead
16:07 batman pink_mist: so the answer is "no". you need to find your own unique template names so they don't collide
16:07 reneeb batman: yes, it should be easy...
16:07 batman reneeb:)
16:08 batman pink_mist: just do "mojo-plugin-name/template.html.ep" and you will probably be safe
16:09 pink_mist alright, that's a good suggestion =)
16:09 pink_mist thanks =)
16:09 batman you're welcome.
16:09 batman sorry for the initial confusion :(
16:13 pink_mist how arbitrary names can the templates have? :P do they need to match any specific pattern?
16:13 batman what do you mean?
16:14 pink_mist like, can they have a \0 in them? a :? a \?
16:14 sri http://mojolicio.us/perldoc/Mojolicious/Guides/Rendering#Bundling-assets-with-plugins
16:14 batman i would stick to [a-z]
16:14 pink_mist oh, good call sri =)
16:14 pink_mist batman: but you just suggested one with both - and / in :P
16:14 arthas joined #mojo
16:15 batman pink_mist: "/" is directory structure. and yes... let me rephrase: printable ascii character.
16:15 sri guess those could use more unique names
16:15 meredith anything safe for file paths so when your plugin says 'foo/bar.html.ep' someone has the option to put their own 'foo/bar.html.ep' in the template search path
16:16 pink_mist sri: actually, already have it like that suggests :P
16:17 pink_mist perhaps put up some template naming guidelines? for example "don't use : in a template name normally; reserve those as namespace separators for plugins with template assets"?
16:18 sri we have template naming guidelines?
16:19 pink_mist you do?
16:20 sri i've never defined any, so i have no idea what you're talking about
16:21 pink_mist that's what I'm suggesting you do..
16:21 good_news_everyon joined #mojo
16:21 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/5yNRSQ
16:21 good_news_everyon mojo/master 1b58d63 Sebastian Riedel: mention that asset names should be reasonably unique
16:21 good_news_everyon left #mojo
16:21 sri pink_mist: how?
16:22 sri you seem to be assuming that there are certain unwritten rules, when there aren't any
16:22 Grinnz_ keep in mind they should be valid windows filenames as well... : is not valid in windows :P
16:23 pink_mist d'oh
16:23 Grinnz_ http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx#naming_conventions
16:23 pink_mist sri: not really; I'm assuming it's possible to _write_ some rules
16:23 disputin joined #mojo
16:23 sri pink_mist: you're welcome to make a proposal and put it up for a vote
16:24 sri i'm not even qualified to participate in the discussion with my lack of windows knowledge
16:24 sri (so make sure to ELI5 the portability limitations)
16:27 Grinnz_ something like _mp_name_* could be doable, portability-wise
16:29 pink_mist if you use / on windows, it's treated the same way as \, so / should be fine there as well
16:29 Grinnz_ yeah the path separator shouldnt be an issue
16:29 Grinnz_ or rather, if it is an issue, it's outside the scope of this :P
16:29 pink_mist :P
16:36 * sri is waiting for a pull request
16:38 pink_mist ahah, don't hold your breath, I have tonnes of /paid/ work to do before I can get to this :P
16:39 sri :(
16:39 pink_mist in fact, can't stay and chat here anymore, need to head out in the almost-snow that's falling down and melting on the ground..
16:43 batman sri: Would you Mons supporting tag("video", controls => undef) which would result in <video controls>?
16:43 batman Mons = consider
16:43 batman Autocorrect--
16:44 batman sri: so we can have html5 attributes, without values
16:44 sri batman: the tag helper generates xhtml5 so far
16:45 sri attributes like that would seem inconsistent
16:45 * batman finds documentation
16:47 batman http://www.w3.org/html/wg/drafts/html/master/infrastructure.html#boolean-attributes
16:47 batman sri ^^
16:47 sri batman: ?
16:48 batman The link points to attributes without values
16:48 sri what is your point?
16:48 sri i've written an html5 parser, i'm well aware of how those attributes work ;p
16:48 batman I want to be able to create <video controls> with the tag() helper
16:49 sri you can't
16:49 Grinnz_ xhtml5 is a thing?
16:49 sri xhmtl5 is a messed up subset of html5
16:49 Grinnz_ heh
16:50 batman But I could if it would support (controls => undef)
16:50 sri but it happens to be compatible with xml
16:50 sri batman: you'd only get a <video controls /> monstrosity
16:51 batman What's wrong with that?
16:51 Dandre joined #mojo
16:51 sri html5 does not do self-closing
16:51 sri that's xhtml5
16:52 sri you've created an xhtml5 tag with an html5 attribute
16:54 sri to generate *clean* html5 you'd have to check if the tag can have an end tag (</video>) and then generate a bare <video> or an <video></video> block
16:55 sri if you go with <video /> then you should really be using xhmlt5 consistently, and do <video controls="controls" />
16:55 marty joined #mojo
16:55 batman So tag() isn't the tool I'm looking for?
16:55 sri (using xhtml5 = making it valid xml)
16:55 sri batman: i don't know
16:56 batman This is so weird... I believe I've had problems with controls="controls"
16:56 batman I might be wrong...
16:57 sri you've linked to the section explaining it yourself...
16:57 sri "disabled=disabled"
16:57 sri is equivalent to a boolean disabled
16:58 neyasov____ joined #mojo
16:58 sri batman: all i care about is consistency, if you want to redefine the semantics of tag() that's fine with me, just please keep it consistent
17:00 asarch joined #mojo
17:00 sri https://github.com/kraih/mojo/blob/master/lib/Mojo/DOM/HTML.pm#L234-L236
17:01 sri those would be the special Mojo::DOM rules for handling xml and html5
17:05 sri *crickets*
17:05 sri of course nobody wants to work out answers to fundamental design questions...
17:06 sri but if i dictate that from now on tag() only follows HTML5 semantics... the whining will be substantial
17:07 Grinnz_ all depends what people are using it for... personally i use templates and javascript for these things atm :P
17:07 batman sri: ok. thanks for the answer
17:08 sri batman: we don't have an answer
17:09 batman s/answer/reply|explanation/
17:09 sri i think this exact thing has come up a few times now... and as soon as people realize it's complicated they try to weasel out of the discussion
17:10 batman then i misunderstood. i though tag() was set in "xhtml stone"
17:10 batman can i eat first?
17:11 sri so far it is only "it always worked that way"
17:11 Grinnz_ not unless it's flan!
17:11 sri nobody has ever tried working out what the "correct" behavior is
17:11 * batman is feeding brain
17:11 sri brainz
17:12 Grinnz_ all we wanna do is eat your brains
17:12 sri purl: brainz
17:12 purl BRAAAAAAAAAIINNZZZZZ!
17:13 reneeb batman, jberger: have a look at http://mojo.perl-services.de . I added some stuff ;)
17:14 sri jberger, tempire, marcus, crab: poking you too, so you later can't say nobody included you in the tag() discussion
17:16 hahainternet nobody included me :(
17:16 hahainternet then again i pathologically hate html and want nothing to ever do with it, and don't contribute helfpully
17:16 * sri includes hahainternet
17:16 hahainternet so i'll get me coat
17:16 * sri notes that hahainternet will be blamed later on
17:16 hahainternet sri: i actively encourage you to work to undermine anyone who was responsible for any aspect of CSS
17:17 Grinnz_ at least it's not xpath!
17:17 hahainternet i'd prefer xpath, i can at least try and understand why they did things
17:17 hahainternet css it's just MAGIC!
17:17 sri btw.
17:17 sri https://github.com/kraih/mojo/blob/master/lib/Mojolicious/Plugin/TagHelpers.pm#L661
17:17 Grinnz_ purl: css is <reply> http://i.imgur.com/Q3cUg29.gif
17:17 purl ...but css is <req><reply> Cascading Style Sheets are documented at http://www.w3.org/Style/ or has a reference at http://www.w3.org/TR/REC-CSS1 or the good bit in HTML 4 or independent of HTML, and can be used with HTML 2.0 as well. or the DVD "Content Scrambling System" encryption algorithms or http://www.richinstyle.com/bugs/table.html or http://richinstyle.com or at http://www.csszengarden.com/ or Does Suck Shit...
17:18 sri anyone who doesn't know, that <div /> example is very broken
17:18 Grinnz_ damn
17:18 Grinnz_ css is a lot of things
17:18 sri it's actually intentionally broken, and i somehow doubt most folks would even realize it
17:19 sri <div /><p>Test<><div>123</div>
17:19 sri anyone know what happens there?
17:19 Grinnz_ explosions, i hope
17:19 sri s/<>/</p>/
17:20 sri that's right, it's actually equivalent to <div><p>Test</p><div>123</div></div>
17:20 sri because a div can't be self-closing
17:21 Grinnz_ lol
17:21 sri special rule
17:21 sri soooo tag("div") would have to generate <div></div> for the behavior most people would expect
17:22 sri which is what Mojo::DOM does in HTML mode
17:23 sri and if that <div /> tripped you up, there's *a lot* more elements that have the same special rule https://github.com/kraih/mojo/blob/master/lib/Mojo/DOM/HTML.pm#L91
17:24 sri batman: and that's what we need to think about when we defined tag() semantics
17:25 batman sri: but is it changeable? why doesn't it behave the same way as Mojo::DOM::HTML ?
17:25 sri the tag() semantics are very very old, and nobody ever put much thought into it
17:25 sri Mojo::DOM::HTML got it wrong for years
17:26 batman but would you consider a pull request that "merge" Mojo::DOM::HTML logic and the tag() helper?
17:26 sri batman: if it gets the votes
17:26 batman what about also adding support for (boolean_attr => undef) ?
17:27 sri sure, if we follow html5 rules only
17:27 sri of course tag() would be unable to generate xml afterwards
17:27 sri if that's a problem i don't know
17:27 batman so you wouldn't allow a custom (foo => undef) attribute? or what about (data => {foo=>undef}) ?
17:28 Grinnz_ well, how would we be able to ask people that are currently using this? mailing list?
17:28 batman sri: $c->tag5()
17:28 batman mohahahahaha!
17:28 sri Grinnz_: we pretty much aren't
17:29 sri Grinnz_: but the documentation is vague enough to allow breakage ;p
17:29 Grinnz_ right, and neither am I, so I don't have much to say :P
17:29 tencendur joined #mojo
17:29 sri it literally says "HTML/XML tag generator."
17:29 sri which is not possible
17:29 Grinnz_ heh
17:30 sri you either generate HTML or XML
17:30 sri (XML/XHTML even)
17:30 batman reneeb: sweet! i like the additions :) is the source code available? maybe we could contribute with pull requests...
17:30 Grinnz_ well, two methods or perhaps a boolean in the object, would be two ways you could handle it
17:30 sri Grinnz_: what object?
17:30 purl it has been said that object is pretty simple, there are no lazy defaults
17:30 Grinnz_ oh, we are talking about the taghelpers aren't we
17:31 sri yes
17:31 sri Mojo::DOM gets it all perfectly right
17:31 sri this is only tag helpers
17:31 batman sri: i don't feel like touching tag() then... i would get very upset if i used it to make xml and then it stopped working :(
17:32 sri for the record... the plugin description says "L<Mojolicious::Plugin::TagHelpers> is a collection of HTML tag helpers"
17:32 sri xml is not in scope officially
17:33 Grinnz_ true; and i think the usecase would be more HTML oriented anyway
17:33 sri a change will happen today
17:33 sri a) i add xml to the description so we really can't change it, or b) we redefine tag() semantics
17:34 sri batman, jberger, tempire, crab, marcus: which one happens is up to you
17:34 jberger ECRISISAT$WORK
17:34 sri and everyone else here that can yell loud enough ;p
17:34 jberger ENOTIMETOLOOK
17:35 batman this is messed up. i'm +1 on #b then, though i'm not going to disappointed if it's down voted.
17:36 pink_mist +1 for b too
17:36 pink_mist ... the weather changed, so my work became unnecessary
17:37 Grinnz_ you were working on a program to plow snow?
17:37 * batman starts working on b)
17:39 pink_mist Grinnz_: my work didn't involve programming :P
17:46 tempire Forget xml, focus on html
17:46 purl tempire, I didn't have anything matching xml, focus on html
17:53 hernan604 joined #mojo
17:56 mst lolpurl;
18:00 cfedde purl: you think everything is about you.
18:00 purl OK, cfedde.
18:01 Grinnz_ purl: don't you?
18:01 purl bugger all, i dunno, grinnz_
18:01 Grinnz_ https://twitter.com/ajanata/status/557597196820807680 re: something posted a while ago here :P
18:04 batman sri: https://gist.github.com/01158b85df4ec46290f1
18:04 batman sri: the tests fail of course, but i can clean it up and make a pr if you think i'm on to something
18:10 marcus hey
18:11 Grinnz_ purl: everything?
18:11 purl i heard everything was always OK though
18:11 marcus sri: I want a)
18:12 batman marcus: why?
18:12 mst purl: purl think everything
18:12 purl mst: huh?
18:12 mst ok then
18:12 marcus batman: It makes it more useful, since it can also be used for xml?
18:12 Grinnz_ marcus: but then it doesn't do correct html
18:13 marcus Grinnz_: Is there anything irl that breaks because of this style of html?
18:13 Grinnz_ thats what i want to know :)
18:13 marcus I'm fairly sure there isn't.
18:14 marcus xhtml used to be the golden path, and HTML5 is the pragmatic fallback from that path.
18:14 marcus so clearly it works with both xml style and relaxed html5 style
18:15 Grinnz_ not if you're following the spec, though
18:16 sri marcus: and what about the <div /> problem?
18:17 sri what should tag('div') do?
18:17 sri and what's the reasoning behind it?
18:21 mst doesn't <div /> work everywhere?
18:21 sri it has clearly defined semantics
18:22 marcus http://tiffanybbrown.com/2011/03/23/html5-does-not-allow-self-closing-tags/ it's this problem?
18:22 sri <div /><p>Test</p> is equivalent to <div><p>Test</p></div>
18:22 sri because <div /> is parsed as <div>
18:22 sri the self-closing flag is specifically ignored
18:23 sri <div /> is valid html5 because it has a special exception in the parser
18:24 sri so not really valid valid ;p
18:24 marcus it's interesting. I didn't know about that.
18:25 sri most people don't know that or forget it again right away... which is my point
18:25 sri there are a lot of tags with the same special rules actually https://github.com/kraih/mojo/blob/master/lib/Mojo/DOM/HTML.pm#L91
18:25 marcus It seems like a bizarre design decision in HTML5 :-/
18:26 mst sri: wat
18:26 mst uhhhhhhhhhhhhhhhh
18:26 sri so, to generate "good" html5 you want <div></div> instead of <div />
18:26 mst http://trout.me.uk/facepaw2.jpg
18:26 sri *unless*
18:26 sri your tag cannot have an end tag
18:27 sri like <input>
18:27 sri then you just want a bare <input>
18:27 sri although <input /> works in that case too
18:27 marcus application/xhtml+xml
18:27 purl application/xhtml+xml is not "text" according to C::P::Unicode, so it ignores it
18:28 sri anyway, i'm glad we're all on the same page now :)
18:28 sri there are good reasons most of Mojo::DOM::HTML is lists of tags with special rules ;p
18:29 marcus mm
18:29 marcus I'm not sure changing tag behaviour makes this situation any better tho.
18:30 sri it would make tag('div') dwim, while disallowing xml generation
18:31 sri you can do tag(div => '') and get <div></div>
18:32 sri we *can* totally do what batman asked for tag("div", controls => undef)
18:33 marcus It also means you can't generate XHTML5
18:33 sri right
18:33 marcus (as an extension of disallowing xml generation)
18:33 * batman has always loathed xhtml
18:33 sri of course xhtml5 does not really exist ;p
18:33 marcus it's listed at https://en.wikipedia.org/wiki/HTML5
18:35 sri the situation...is... messed up... http://www.w3.org/TR/html51/introduction.html#html-vs-xhtml
18:35 marcus but <div/><div/> is equivalent to <div></div><div></div> right?
18:37 * marcus has a head full of hurt now
18:37 sri nope
18:37 sri <div><div></div></div>
18:37 sri :)
18:37 sri try it yourself
18:37 sri perl -Mojo -E 'a({inline => q{<div/><div/>}})->start' daemon
18:39 marcus :'(
18:40 sri but you are correct about <div/> in a strict xhtml document
18:40 sri as far as i understand it, only xml rules apply there
18:40 sri no exceptions
18:40 purl no exceptions are thrown.
18:40 sri the funny special rules only apply for text/html
18:41 sri https://html.spec.whatwg.org/#the-xhtml-syntax
18:45 neyasov____ joined #mojo
18:45 good_news_everyon joined #mojo
18:45 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/dfQ62Q
18:45 good_news_everyon mojo/master 69b7d57 Sebastian Riedel: try not to use bad tags in examples
18:45 good_news_everyon left #mojo
18:48 good_news_everyon joined #mojo
18:48 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/hELQhQ
18:48 good_news_everyon mojo/master 49b1508 Sebastian Riedel: mention XML as well
18:48 good_news_everyon left #mojo
18:48 sri this would be option a
18:49 sri i'm going to force the issue, unless we have consensus on option b, the next release (in a few days) will default to a
18:57 pink_mist I .. thought everyone who chimed in said b)
18:57 pink_mist oh wait, not marcus
18:57 pink_mist I missed his input :/ damn him :P
18:58 batman tempire and me says #b (if i understodd "Forget xml, focus on html" correctly)
18:58 tempire B
18:58 sri oh
18:59 batman crab and jberger are busy
18:59 * jberger is catching up
18:59 tempire but <div/><div/> is a really sad thing
18:59 * genio is still staring at the facepaw image.  Thanks, mst!
18:59 genio now I'll never get work done with cuddly on the screen
19:00 jberger personal opinion is that <div /> is easy enough to write longhand rather than tag('div')
19:00 jberger since if even tag(div => '') makes <div></div>
19:00 jberger then you cannot use tag('div') any other way right?
19:01 jberger and personally, I don't use tag helpers for xml ever, so my vote would be (b)
19:01 jberger BUT
19:01 jberger I wonder how much breakage we introduce
19:02 jberger to be clear, I want (b)
19:02 reneeb batman: the matrix is generated with the scripts in https://github.com/reneeb/Task-MojoliciousPlugins-PerlAcademy/tree/master/bin
19:02 reneeb prepare_matrix.pl installs the latest Mojolicious for all installed Perl versions
19:03 reneeb create_matrix.pl installs all Mojo.* dists
19:03 reneeb and create_html.pl creates the HTML
19:04 reneeb you can find the current results in .plugins.sqlite and in blacklist you find some blacklisted modules (mostly those plugins that are deprecated or where the maintainer was unresponsive for a very long time)
19:05 reneeb I started the matrix because of https://rt.cpan.org/Public/Bug/Display.html?id=96121
19:06 asarch joined #mojo
19:07 batman reneeb: cool. nice to know. now i can make a pull request if you get tired of feature requests :)
19:08 batman sri: the patch i submitted also makes mojo six lines shorter. can you dig it? ;-D
19:08 pink_mist is there a nice taghelper plugin for generating tables? 0_o
19:09 cpan_mojo Mojolicious-Plugin-LinkEmbedder 0.20 by Jan Henning Thorsen - http://metacpan.org/release/JHTHORSEN/Mojolicious-Plugin-LinkEmbedder-0.20
19:11 sri batman: which patch?
19:11 purl which patch is this?
19:11 batman sri: https://gist.github.com/01158b85df4ec46290f1
19:12 batman s/submitted/posted/
19:12 sri oh, you use a private api
19:12 batman you mean Mojo::DOM::HTML::_render() ?
19:12 sri yes
19:12 batman i though that was okey for internal usage
19:12 sri not like that
19:12 batman or did you get rid of all those after i complained a while back?
19:13 sri private function/method use is limited to Mojo::Util and base classes
19:14 batman ok... i don't see the difference, but i don't want to discuss it.
19:14 sri no wait, there are a few more now... for the warmup hacks
19:14 batman then i'm not sure how to fix this without copy/paste 100 lines of code (or make it a lot slower)
19:16 disputin joined #mojo
19:16 sri hmm, i have to think about this for a bit
19:20 sri reusing Mojo::DOM::HTML code seems like a good idea though
19:20 batman thanks :)
19:21 sri you can always generate a valid DOM tree btw., that costs a little bit of performance though
19:21 sri just wrap the whole thing in a ['root', [...]]
19:22 batman yeah, that's why i used the private function (performance)
19:27 sri it can actually be shorter
19:34 batman i managed to get it 11 lines shorter than master now (updated the same gist)
19:34 disputin joined #mojo
19:34 batman 12 lines. i removed the comment as well ;)
19:35 sri comments don't count
19:35 sri just the result of "cloc lib"
19:37 batman ok
19:37 batman https://gist.github.com/jhthorsen/01158b85df4ec46290f1
19:37 sri oh, we've even found a bug
19:37 sri %=t div => (id => '&lt;') => 'test & 123'
19:37 sri that id value was passed though verbatim
19:38 dotandimet joined #mojo
19:39 sri ah, your patch has two bugs actually
19:40 sri no xss_escape of attribute values and no defined check of content
19:40 batman ah! got lost in optimization :(
19:41 Grinnz_ eww, each :P
19:41 batman hm... i thought xss_escape was done by _render() when it comes to attributes
19:41 batman *doublecheck*
19:42 batman sri: doesn't line 231 in lib/Mojo/DOM/HTML.pm take care of the attributes?
19:43 sri yes, but it doesn't do xss_escape
19:43 batman i don't understand why tag() use xss_escape and _render() use xml_escape though :(
19:44 sri do you know what xss_escape is?
19:44 sri xss_escape is quite a bit slower
19:44 batman from what i can undestand, it takes care of b("ytestreams")
19:45 sri why would Mojo::DOM care about those? what's the use case?
19:45 batman i don't understand when an attribute holds a bytestream :(
19:45 sri the xss protection concept is from templating
19:46 sri i don't know either
19:46 batman :)=
19:46 sri but i do remember someone was complaining about that very loudly
19:48 batman ok :/
19:48 sri aah
19:48 sri <input value="...">
19:48 sri something like that
19:48 purl rumour has it something like that is totally possible
19:49 batman i guess that could make sense...
19:50 sri i don't know
19:52 Grinnz_ i would say open an issue on github and maybe people will comment, but you mentioned a time constraint :P
19:56 sri people won't
19:56 sri or they will misunderstand everything
19:57 sri you just have to look above
19:57 sri nobody is even aware of the <div /> problem
19:57 Grinnz_ heh
20:03 dod joined #mojo
20:10 jberger sri: I would say they aren't aware of it because they don't use that
20:10 jberger all the more reason to make it DWIM
20:18 good_news_everyon joined #mojo
20:18 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/XtsvQg
20:18 good_news_everyon mojo/master 6febda3 Sebastian Riedel: fix tag helpers to generate correct HTML5
20:18 good_news_everyon left #mojo
20:18 sri that's option b
20:19 sri batman: i've golfed it down a little
20:19 sri not 100% sure about the use of Mojo::DOM::HTML::_render
20:19 sri but i like that we render HTML consistent between tag helpers and Mojo::DOM
20:20 Grinnz_ yeah that consistency is good
20:20 sri oops
20:21 sri copypasta accident
20:21 batman what was "copypasta accident" ?
20:21 good_news_everyon joined #mojo
20:21 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/3W3xcQ
20:21 good_news_everyon mojo/master a5d51e5 Sebastian Riedel: remove unused element list
20:21 good_news_everyon left #mojo
20:22 batman right. i was about to ask about that one :)
20:23 sri whole function is tiny now https://github.com/kraih/mojo/blob/master/lib/Mojolicious/Plugin/TagHelpers.pm#L196-L214
20:23 batman hm... i hope ie8 undestands boolean attributes :/
20:24 sri it actually uses them
20:24 Grinnz_ y/// ?
20:24 purl y/// is, like, for yansliterate
20:24 sri for selected/checked
20:24 Grinnz_ yansliterate? lol
20:24 * sri pats purl
20:24 * purl bites!
20:25 batman sri: just wasn't sure if it required selected="selected"
20:25 Grinnz_ oh, y/// is a synonym for tr///
20:25 batman but google says it's ok :)
20:25 batman google + sri = it must be ok ;)
20:29 rem_lex joined #mojo
20:29 sri new tag helper appears to be a tiny bit slower than the old
20:29 sri but barely measurable
20:29 sri perl -Ilib -Mojo -E 'my $c = app->build_controller; n { $c->render_to_string(inline => q{<%= tag "div" %>} x 1000) } 100'
20:29 batman makes sense, since it does more stuff
20:30 sri it's in the 0.01s range at 1s runtime
20:35 * batman afk
20:35 sri permission denied
20:35 purl rumour has it permission denied is sort of self-explanatory
20:35 batman still +1 on #b
20:36 batman what's left?
20:36 purl it has been said that left is right x 3
20:36 sri nothing ;p
20:37 batman :S
20:37 sri at least we get a lot of important changes into one big release
20:37 batman https://www.kickstarter.com/projects/elanlee/exploding-kittens
20:37 sri the removal of AUTOLOAD stuff is gonna trip up quite a few people
20:39 sri I LIKE KITTENS
20:40 Grinnz_ lol, bonus set of NSFW cards
20:41 batman :)
20:42 sri we could very easily now also have an xml tag helper
20:43 batman like xml_tag() ?
20:43 genio wow.  a simple-ish card game has $500k USD backing already?!?
20:43 Grinnz_ people like kittens
20:45 genio damn. I'm in the wrong business.
20:45 pink_mist tagx()
20:45 pink_mist because xes make everything cooler
20:46 batman sucks that i have to pay 20$ extra in shipment :(
20:46 Grinnz_ xtagx
20:46 batman $20 even
20:46 * batman got distracted by the kittens
20:46 * batman is off
20:46 sri it's as easy as https://gist.github.com/anonymous/0fa6569643dc358a4474
20:46 genio I can see that as a decent drinking game
20:47 Grinnz_ sri: now that's what i call code reuse :P
20:48 sri Mojo::DOM::HTML does all the work already
20:48 * sri pokes marcus
20:48 sri marcus: you seemed to be the one that cared about xml ;p
21:10 kaare__ joined #mojo
21:24 sugar joined #mojo
21:29 rwp joined #mojo
21:29 sri xml_tag seems a bit much to type
21:37 alnewkirk joined #mojo
21:52 disputin joined #mojo
21:54 batman +1 on ->old_school("tag"); ????
21:55 * batman will be back tomorrow
22:05 disputin joined #mojo
22:08 disputin joined #mojo
22:09 disputin1 joined #mojo
22:20 marmez joined #mojo
22:21 good_news_everyon joined #mojo
22:21 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/Tc5k2g
22:21 good_news_everyon mojo/master d94f3a0 Sebastian Riedel: added example for boolean attribute
22:21 good_news_everyon left #mojo
22:26 odin22 joined #mojo
22:42 disputin joined #mojo
22:53 berov joined #mojo
23:26 * tempire would like to take an in-depth postgres class
23:46 good_news_everyon joined #mojo
23:46 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/IZnd2A
23:46 good_news_everyon mojo/master ab71ebf Sebastian Riedel: better example tags
23:46 good_news_everyon left #mojo

| Channels | #mojo index | Today | | Search | Google Search | Plain-Text | summary