Options:
- # Session Start: Sat Oct 25 00:00:00 2014
- # Session Ident: #css
- # [00:01] <TabAtkins> plinss: Per WebIDL grammar, Promise<sequence<FontFace>> is a valid return type, but widlparser rejects it.
- # [00:01] <plinss> TabAtkins: hmm, let me look at the code
- # [00:02] <TabAtkins> Also, setlike<Foo> and maplike<Foo> aren't supported yet. ^_^
- # [00:04] <plinss> it should be accepting any valid return type inside the <>s
- # [00:04] <TabAtkins> Should be, yes. ^_^
- # [00:04] <plinss> and I did add support for setlike and maplike, did you update to the latest?
- # [00:07] <plinss> hmm, Promise<sequence<Fontface>> works fine on my machine…
- # [00:08] <plinss> as do maplike<type, type> and setlike<type>
- # [00:10] <plinss> TabAtkins: got a sample of something that’s failing?
- # [00:20] * Quits: Ms2ger (~Ms2ger@public.cloak) ("nn")
- # [00:54] <TabAtkins> Yeah, current Font Loading spec fails.
- # [00:54] <TabAtkins> (Current contains the Promise<> one, but not the setlike<> yet.)
- # [00:54] <TabAtkins> And yeah, I updated widlparser last weekend.
- # [00:55] * Quits: tantek (~tantek@public.cloak) (tantek)
- # [01:27] * Quits: shepazu (schepers@public.cloak) ("is sleepy")
- # [01:29] <TabAtkins> plinss: Ignore me re:setlike<FontFace>. I wasn't escaping the <, so it was opening up an element.
- # [01:29] <TabAtkins> Oh jeez, and I also know what's happening the Promise<sequence<FontFace>>.
- # [01:29] <TabAtkins> My fault too.
- # [01:31] <TabAtkins> (I switched all my shorthand handling to occur after HTML parsing, which meant I had to change << and >> into something else before HTML parsing. I did this by just looking for << or >> and replacing them with fake start and end tags that I later look for for processing. this means that the >> there gets turned into an end tag, accidentally.
- # [01:31] <plinss> TabAtkins: I’ll bring a wet trout to slap you with at TPAC
- # [01:31] <TabAtkins> I didn't notice the lack of >> at the end of the type on the line in the error message.)
- # [01:32] <TabAtkins> How long is it going to take you to travel down here, btw?
- # [01:33] <plinss> I just finished loading the bike, so my plan is to get to somewhere between LA and San Loius Opispo tonight, then take a “leisurely” ride up the PCH tomorrow
- # [01:34] <plinss> I’m leaving here in a few minutes, expect to arrive in Santa Clara mid afternoon tomorrow
- # [01:34] <TabAtkins> Cool.
- # [01:34] <plinss> This will be the first long trip since I rebuilt the motor, so we’ll see how it goes :-)
- # [01:35] * Quits: estellevw (~estellewyel@public.cloak) (estellevw)
- # [01:35] <TabAtkins> I'll be sad if you die, so don't.
- # [01:36] <TabAtkins> (I'll have to take over maintenance of your projects.)
- # [01:40] <plinss> I’ll do my best… see you tomorrow
- # [01:41] * Quits: liam (liam@public.cloak) (Ping timeout: 180 seconds)
- # [01:49] * Joins: jet (~junglecode@public.cloak)
- # [01:57] <TabAtkins> SimonSapin: What needs updating in url-token? I already removed the <string> cases.
- # [01:58] <SimonSapin> so you did… never mind :)
- # [01:58] <TabAtkins> SimonSapin: And you can certainly parse valid CSS with a PEG (I did it once, to do a mass-conversion of syntax for all the @counter-style rules, before we moved most of them to the i18n document), but I don't think you can reasonably do error-handling in one.
- # [01:59] <TabAtkins> Basically, I'm gonna warn you that you *really* don't want to do error-handled CSS with a grammar. It'll give you no end of trouble.
- # [01:59] <TabAtkins> Because our actual grammar is .*
- # [02:01] * Quits: lajava (~javi@public.cloak) (Ping timeout: 180 seconds)
- # [02:03] * Joins: jcraig (~jcraig@public.cloak)
- # [02:04] <SimonSapin> which is why I find PEGs interesting, since you can have bits of arbitrary code in the middle of it
- # [02:06] <SimonSapin> I might have to do something hybrid, with some functions compiled from PEG rules and some hand-written
- # [02:07] <TabAtkins> Eh, I suspect you wont' find it worth it. The parser is pretty simple to hand-write in the first place.
- # [02:07] <SimonSapin> what’s in Syntax is pretty simple, but them we have tons of micro-syntaxes like gradients
- # [02:08] <SimonSapin> and I’d really prefer to write these in something declarative
- # [02:11] <SimonSapin> and it’s not just for me: contributors add CSS features to Servo, and I end up 386’ing their parsing code in review
- # [02:19] * Quits: jet (~junglecode@public.cloak) (jet)
- # [02:21] * Joins: florian (~Florian@public.cloak)
- # [02:22] <florian> I have a vague memory of someone (Adobe?) buidling a polyfill for "overflow: paged". Did I make it up, or does this actually exist?
- # [02:27] <TabAtkins> Pretty sure I remember it.
- # [02:28] <TabAtkins> SimonSapin: Yeah, once you're past the tokenizing stage and the basic parsing stage, grammars are definitely the most appropriate way to handle things.
- # [02:30] <gsnedders> I'd argue you want a grammar for the basic parsing stage if it's reasonably doable
- # [02:31] <gsnedders> which is probably not at all worth it in the CSS case, admittedly
- # [02:37] * Quits: adenilson (~anonymous@public.cloak) (adenilson)
- # [02:45] * Joins: liam (liam@public.cloak)
- # [02:50] <SimonSapin> TabAtkins: the change that made url("a") be a function changed the error handling of bad-url, right?
- # [02:51] <TabAtkins> Slightly, though I'd have to look closely at the before and after to recount exactly how.
- # [02:51] <SimonSapin> let’s say… background: url("a" { ); color: blue; }) is now a single declaration, used to be two
- # [02:52] <TabAtkins> gsnedders: No, basic parsing (into the generic rule and property structure) is heavily error-correcting, and so not great for grammars.
- # [02:52] <SimonSapin> and Syntax before this change doesn’t match CSS2 either
- # [02:53] <TabAtkins> Yes, though browser's didn't generally match CSS2 either
- # [02:53] <SimonSapin> do they match each other?
- # [02:54] <SimonSapin> if not, I’ll take that as an opportunity to make further changes :)
- # [02:54] <SimonSapin> I’d like <bad-url-token> to be like a function: balance {} [] () pairs
- # [02:55] <SimonSapin> context: I want to scan input to find the end of a declaration, but at the text level since PEGs don’t have tokenizer
- # [02:56] <SimonSapin> wait, that doesn’t work for <url-token>
- # [02:56] <SimonSapin> url( { )
- # [02:58] <SimonSapin> yeah, looks like URL tokens are gonna kill this PEG idea
- # [02:59] <SimonSapin> since you have to look for them even when they’re not valid
- # [03:04] * Joins: jet (~junglecode@public.cloak)
- # [03:09] <astearns_> florian: were you thinking of this? http://adobe.github.io/web-platform/utilities/css-pagination-template/
- # [03:09] <astearns_> it uses overflow-style: paged-x;
- # [03:09] <astearns_> (only works in Safari)
- # [03:10] <florian> yes, that's what I had in mind
- # [03:11] <florian> Works in Safari only because it uses regions?
- # [03:11] <astearns_> yep :)
- # [03:11] <astearns_> pagination is pretty easy to do if you have access to the regions API
- # [03:12] * Quits: jet (~junglecode@public.cloak) (jet)
- # [03:13] <florian> I ran into a pretty neat thing and was wondering how you'd deal with that with either overflow page or regions
- # [03:14] <florian> scribd (www.scribd.com) has an ePub reader, and they simulate pages.
- # [03:15] <astearns_> ah, I've only been scared away by their PDF rendering
- # [03:15] <florian> :)
- # [03:15] <astearns_> I'll have to take a second look
- # [03:15] <florian> the neat thing is that if you're on page 3, and increase the font size (for instance), they will make sure that the first word of page 3 stays the first word of the page you look at. Even if that means creating more pages before, or underfilling the first page in the series
- # [03:17] <florian> now, regions are not pages. but since they can be used to simulate pages, it would be pretty neat to be able to do that.
- # [03:17] <astearns_> could do that in one of two ways (off the top of my head)
- # [03:18] <astearns_> 1. do some content breaking where you want the page to start, so you can add a break-before at an element boundary (ick)
- # [03:18] <astearns_> 2. resize the first region or the previous region until you get the break you want (possibly very slow)
- # [03:19] <florian> 1. looks nasty
- # [03:19] <astearns_> 1 is basically what regions polyfills have to do, and I agree it's nasty
- # [03:19] <florian> 2. would work for the current page, but not really allow you to then go look at the previous page and have things still work
- # [03:20] <astearns_> if you resize the first page, then the previous pages up until the start are OK
- # [03:20] <florian> yes
- # [03:20] <astearns_> but then you're recomposing more stuff as you measure whether the break is correct
- # [03:23] <florian> their system has simplifying constrains, as all pages are the same size. but it is pretty fast.
- # [03:23] <florian> for the current page they know where to start, so they start form their, and for previous pages, I think they work backwards.
- # [03:24] <astearns_> which is a fair optimization, since paging backwards is much less common than continuing on
- # [03:24] <florian> anyway, it is pretty neat, and it would be cool if there was something either in regions or in overflow:paged that help make that possible without messing around too much in js.
- # [03:24] <astearns_> agreed
- # [03:24] * astearns_ is now known as astearns
- # [03:25] * Quits: jcraig (~jcraig@public.cloak) (Ping timeout: 180 seconds)
- # [03:25] <florian> by the way, how was books in browsers? I wanted to attend, but learned about it at the last minute, and had a conflicting schedule
- # [03:26] <astearns> there were some very interesting talks, which were streamed and I expect will be available to watch
- # [03:26] <astearns> it was a good cross-section of web/publishing/academics
- # [03:27] <astearns> and (unexpectedly to me) a regions love-fest :)
- # [03:35] * Joins: estellevw (~estellewyel@public.cloak)
- # [03:35] * Quits: estellevw (~estellewyel@public.cloak) (estellevw)
- # [04:29] <TabAtkins> SimonSapin: URL tokens are the devil's work.
- # [04:51] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [04:59] * Joins: florian (~Florian@public.cloak)
- # [05:05] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [06:17] * Joins: florian (~Florian@public.cloak)
- # [06:18] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [06:21] * Joins: florian (~Florian@public.cloak)
- # [06:22] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [07:12] * Joins: vollick (~vollick@public.cloak)
- # [07:48] * Quits: vollick (~vollick@public.cloak) (Ping timeout: 180 seconds)
- # [07:49] * Joins: jdaggett (~jdaggett@public.cloak)
- # [08:01] * Joins: nvdbleek (~nvdbleek@public.cloak)
- # [08:07] * Quits: nvdbleek (~nvdbleek@public.cloak) (nvdbleek)
- # [10:02] * Joins: shepazu (schepers@public.cloak)
- # [10:04] * Quits: shepazu (schepers@public.cloak) ("is probably traveling...")
- # [10:13] * Joins: tantek (~tantek@public.cloak)
- # [10:14] * Joins: Ms2ger (~Ms2ger@public.cloak)
- # [10:19] * Joins: tantek_ (~tantek@public.cloak)
- # [10:22] * Quits: tantek (~tantek@public.cloak) (Ping timeout: 180 seconds)
- # [10:22] * tantek_ is now known as tantek
- # [10:31] * Quits: tommyjtl (~tommyjtl@public.cloak) (Client closed connection)
- # [10:31] * Joins: tommyjtl (~tommyjtl@public.cloak)
- # [10:45] * Joins: zcorpan (~zcorpan@public.cloak)
- # [11:06] * Quits: zcorpan (~zcorpan@public.cloak) (Client closed connection)
- # [11:06] * Joins: zcorpan (~zcorpan@public.cloak)
- # [11:13] * Quits: zcorpan (~zcorpan@public.cloak) (Ping timeout: 180 seconds)
- # [11:16] * Joins: zcorpan (~zcorpan@public.cloak)
- # [11:25] * Quits: zcorpan (~zcorpan@public.cloak) (Client closed connection)
- # [13:37] * Quits: Ms2ger (~Ms2ger@public.cloak) (Ping timeout: 180 seconds)
- # [13:56] * Quits: tommyjtl (~tommyjtl@public.cloak) (Client closed connection)
- # [13:56] * Joins: tommyjtl (~tommyjtl@public.cloak)
- # [13:56] * Quits: tommyjtl (~tommyjtl@public.cloak) (Client closed connection)
- # [13:56] * Joins: tommyjtl (~tommyjtl@public.cloak)
- # [14:22] * Joins: vollick (~vollick@public.cloak)
- # [14:32] * Joins: florian (~Florian@public.cloak)
- # [14:35] * Joins: tommyjtl_ (~tommyjtl@public.cloak)
- # [14:35] * Quits: tommyjtl (~tommyjtl@public.cloak) (Client closed connection)
- # [14:56] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [15:09] * Quits: liam (liam@public.cloak) (Ping timeout: 180 seconds)
- # [15:19] * Joins: liam (liam@public.cloak)
- # [15:21] * Quits: tommyjtl_ (~tommyjtl@public.cloak) (Client closed connection)
- # [15:21] * Joins: tommyjtl (~tommyjtl@public.cloak)
- # [15:21] * Quits: tommyjtl (~tommyjtl@public.cloak) (Client closed connection)
- # [15:21] * Joins: tommyjtl (~tommyjtl@public.cloak)
- # [15:25] * Joins: zcorpan (~zcorpan@public.cloak)
- # [15:32] * Quits: zcorpan (~zcorpan@public.cloak) (Ping timeout: 180 seconds)
- # [16:20] * Joins: tommyjtl_ (~tommyjtl@public.cloak)
- # [16:23] * Joins: tommyjt__ (~tommyjtl@public.cloak)
- # [16:23] * Quits: tommyjtl_ (~tommyjtl@public.cloak) (Client closed connection)
- # [16:25] * Joins: tommyjtl_ (~tommyjtl@public.cloak)
- # [16:26] * Quits: tommyjtl (~tommyjtl@public.cloak) (Ping timeout: 180 seconds)
- # [16:30] * Quits: tommyjt__ (~tommyjtl@public.cloak) (Client closed connection)
- # [16:52] * Quits: tommyjtl_ (~tommyjtl@public.cloak) (Ping timeout: 180 seconds)
- # [16:58] * Joins: tommyjtl (~tommyjtl@public.cloak)
- # [17:16] * Joins: tommyjtl_ (~tommyjtl@public.cloak)
- # [17:16] * Quits: tommyjtl (~tommyjtl@public.cloak) (Client closed connection)
- # [17:21] * Quits: tommyjtl_ (~tommyjtl@public.cloak) ("brb")
- # [17:24] * Quits: vollick (~vollick@public.cloak) (Ping timeout: 180 seconds)
- # [17:39] * Joins: Ms2ger (~Ms2ger@public.cloak)
- # [17:45] * Joins: vollick (~vollick@public.cloak)
- # [18:16] * Joins: lajava (~javi@public.cloak)
- # [18:26] * Joins: ArronEi (~ArronEi@public.cloak)
- # [18:39] * Quits: ArronEi (~ArronEi@public.cloak) (Ping timeout: 180 seconds)
- # [18:45] * Quits: tantek (~tantek@public.cloak) (tantek)
- # [18:52] * Quits: lajava (~javi@public.cloak) (Ping timeout: 180 seconds)
- # [19:38] * Quits: Ms2ger (~Ms2ger@public.cloak) (Ping timeout: 180 seconds)
- # [19:48] * Joins: Ms2ger (~Ms2ger@public.cloak)
- # [19:51] * Joins: adenilson (~anonymous@public.cloak)
- # [20:00] * Joins: tantek (~tantek@public.cloak)
- # [20:19] * Quits: vollick (~vollick@public.cloak) (Ping timeout: 180 seconds)
- # [20:25] * Quits: adenilson (~anonymous@public.cloak) (adenilson)
- # [20:35] * Quits: liam (liam@public.cloak) (Ping timeout: 180 seconds)
- # [21:06] * Joins: vollick (~vollick@public.cloak)
- # [21:09] * Joins: zcorpan (~zcorpan@public.cloak)
- # [21:17] * Quits: tantek (~tantek@public.cloak) (tantek)
- # [21:24] * Quits: vollick (~vollick@public.cloak) (Ping timeout: 180 seconds)
- # [21:24] * Quits: zcorpan (~zcorpan@public.cloak) (Client closed connection)
- # [21:36] * Quits: stryx`__ (~stryx@public.cloak) (Client closed connection)
- # [21:37] * Quits: stryx` (~stryx@public.cloak) (Client closed connection)
- # [21:42] * Quits: stryx`_ (~stryx@public.cloak) (Client closed connection)
- # [21:53] * Joins: stryx` (~stryx@public.cloak)
- # [21:53] * Joins: stryx`_ (~stryx@public.cloak)
- # [22:01] * Joins: liam (liam@public.cloak)
- # [22:08] * Quits: Ms2ger (~Ms2ger@public.cloak) ("nn")
- # [22:14] * Joins: glenn_ (~gadams@public.cloak)
- # [22:18] * Quits: glenn (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [22:53] * Joins: adenilson (~anonymous@public.cloak)
- # [22:53] * Quits: adenilson (~anonymous@public.cloak) (adenilson)
- # Session Close: Sun Oct 26 00:00:00 2014
The end :)