/irc-logs / w3c / #css / 2012-11-21 / end

Options:

  1. # Session Start: Wed Nov 21 00:00:00 2012
  2. # Session Ident: #css
  3. # [00:39] <TabAtkins> PovAddict: Okay, so Selectors can technically handle directed graphs (they can even be cyclic, though you can't do inheritance in a cyclic graph).
  4. # [00:39] <TabAtkins> So, you can transfer from a way to its list of nodes using a child combinator. "way > node" selects the nodes that are referenced by that way (even if they're referenced by multiple ways).
  5. # [00:40] * Quits: SimonSapin (~simon@public.cloak) (Ping timeout: 60 seconds)
  6. # [00:40] <TabAtkins> Since the nodes are ordered, you can even use the sibling combinator this: "way[foo] > node[bar] + node" is sensical in this model.
  7. # [00:40] <TabAtkins> Same thing with relations - they'll have elements as children.
  8. # [00:41] <TabAtkins> As long as a single element has only a single set of children, you're golden. Elements can have multiple parents (appear in the child lists of multiple elements).
  9. # [00:42] <TabAtkins> You can handle multiple sets of children if you use the reference combinator http://dev.w3.org/csswg/selectors4/#idref-combinators
  10. # [00:42] <TabAtkins> It takes an attribute, and selects children that are related to the element via that attribute.
  11. # [00:43] <TabAtkins> So, just decide which set of children is the "natural" one, and make that accessible with the child combinator, then make the rest accessible through attributes via the reference combinator.
  12. # [00:45] <TabAtkins> Mapping tags to attributes is a good idea. Normally, we assume that the mapping is such that [foo] is true if "foo" exists on the element at all, regardless of value, but the host language can do something slightly different here.
  13. # [00:45] <TabAtkins> Such as, in MapCSS's case, apparently treating "no" or "off" as meaning "the tag doesn't exist".
  14. # [00:45] <TabAtkins> That's just part of the host language's definition of how to map itself into the CSS data model.
  15. # [00:47] <TabAtkins> CSS doesn't yet have a way to do numeric comparisons of attribute values, but the way you're doing it is the natural and obvious way, and I suspect will be added to Selectors in time, so that's fine.
  16. # [00:53] * Joins: lmclister (~Adium@public.cloak)
  17. # [00:57] <TabAtkins> PovAddict: So as far as I can tell, all that needs to change in MapCSS is:
  18. # [00:58] <TabAtkins> 1. Change setting tags to use an at-rule, as the current syntax isn't valid CSS.
  19. # [00:58] <TabAtkins> 2. Change zoom to be a pseudoclass (either on root or on any element), as the current syntax clashes with namespace selectors.
  20. # [00:59] <TabAtkins> 3. Define how multiple levels of cascade are done when setting tags in a rule.
  21. # [01:00] * Quits: jet (~jet@public.cloak) (jet)
  22. # [01:02] <TabAtkins> It could also do with a better definition of how the map data is transformed into the Selectors data model.
  23. # [01:07] * Quits: lmclister (~Adium@public.cloak) ("Leaving.")
  24. # [01:10] <PovAddict> still reading backlog
  25. # [01:12] <PovAddict> TabAtkins: reference combinators may be useful...
  26. # [01:13] <PovAddict> TabAtkins: relations have an ordered list of 'members', which may be nodes, ways or other relations
  27. # [01:13] <PovAddict> members may have a 'role'
  28. # [01:13] <TabAtkins> If 'members' is the only set associated with the relation, you don't need to do anything fancy - just make it the children of the relation.
  29. # [01:14] <PovAddict> a role isn't a property of the element, but a property of that particular appearance of the element in the relation
  30. # [01:15] <PovAddict> for example, members of turn restriction relations must include a way with role=from and a way with role=to
  31. # [01:16] <TabAtkins> Ah, interesting. If that's not present on the actual nodes (and in fact can be different based on which relation the node is in), that's a good case for a pseudoclass on the node.
  32. # [01:17] <PovAddict> MapCSS currently handles that with relation[type=foo] > way[role=bar], which is very wrong :)
  33. # [01:17] <TabAtkins> Yeah, that's pretty inconsistent if [foo] is supposed to be about tags.
  34. # [01:20] <PovAddict> in fact, an element may be part of a relation multiple times with different roles (though I can't think of an example)
  35. # [01:20] <TabAtkins> Well, for example, two streets can have different turn restrictions in the two directions.
  36. # [01:20] <TabAtkins> Which means their roles switch in the two relations.
  37. # [01:21] <PovAddict> yes but that would be two different relations
  38. # [01:22] <TabAtkins> Oh, sorry, I misread you.
  39. # [01:22] <TabAtkins> Are u-turns expressed via a relation? That might be the same street. ^_^
  40. # [01:23] <PovAddict> ah yes
  41. # [01:24] <PovAddict> a restriction=no_u_turn relation, with 'from' and 'to' members pointing at the same way
  42. # [01:24] <TabAtkins> Yeah. In the Selectors data model, the restriction still has two children, they're just both the same node.
  43. # [01:25] <PovAddict> anyway, how would you match the role?
  44. # [01:25] <TabAtkins> restriction[type=no_u_turn] > way:role(from)
  45. # [01:25] <PovAddict> hm
  46. # [01:26] <PovAddict> that looked weird at first
  47. # [01:26] <PovAddict> but it makes sense by analogy to nth-child
  48. # [01:26] <TabAtkins> Identical to restriction[type=no_u_turn] > way:role(from)
  49. # [01:26] <TabAtkins> Dammit, one sec.
  50. # [01:26] <PovAddict> identical indeed :P
  51. # [01:26] <TabAtkins> Identical to restriction[type=no_u_turn] > way[role=from], except doesn't overload the attribute selector syntax, which currently means "tags".
  52. # [01:28] <PovAddict> there is no documented tag called 'role'
  53. # [01:28] <TabAtkins> Exactly.
  54. # [01:28] <PovAddict> but there are in fact five thousand elements with such a tag
  55. # [01:28] <TabAtkins> Thus why you shouldn't use [] to mean the node's role in the relation.
  56. # [01:28] <PovAddict> they appear to be mistakes
  57. # [01:28] <TabAtkins> Could be, but still, someone following the spec as written would produce something where you could select an element based on that tag.
  58. # [01:29] <TabAtkins> Or if you ever wanted to add a "role" tag in the future.
  59. # [01:29] <PovAddict> stylesheets highlighting mistakes are very useful ;)
  60. # [02:11] * Quits: PovAddict (~nicolas@public.cloak) ("")
  61. # [02:15] * heycam is now known as heycam|away
  62. # [02:21] * Quits: krit (~krit@public.cloak) ("Leaving.")
  63. # [02:41] * Joins: krit (~krit@public.cloak)
  64. # [02:50] * heycam|away is now known as heycam
  65. # [02:51] * Quits: krit (~krit@public.cloak) (Ping timeout: 60 seconds)
  66. # [03:03] * Joins: krit (~krit@public.cloak)
  67. # [03:18] * Quits: krit (~krit@public.cloak) ("Leaving.")
  68. # [03:20] * Quits: dbaron (~dbaron@public.cloak) (Ping timeout: 60 seconds)
  69. # [03:39] * Joins: jet (~jet@public.cloak)
  70. # [04:20] * Joins: krit (~krit@public.cloak)
  71. # [04:45] * leaverou is now known as leaverou_away
  72. # [05:11] * Quits: jet (~jet@public.cloak) (Ping timeout: 60 seconds)
  73. # [05:24] <krit> TabAtkins: ping
  74. # [05:25] <krit> TabAtkins: unping. nevermind
  75. # [05:26] <krit> TabAtkins: or maybe ping :)
  76. # [05:26] * Joins: jet (~jet@public.cloak)
  77. # [05:29] * Joins: dbaron (~dbaron@public.cloak)
  78. # [06:53] * heycam is now known as heycam|away
  79. # [06:56] * Quits: krit (~krit@public.cloak) ("Leaving.")
  80. # [07:16] * Quits: glenn (~gadams@public.cloak) (Client closed connection)
  81. # [07:20] * Quits: dbaron (~dbaron@public.cloak) (Ping timeout: 60 seconds)
  82. # [07:27] * Joins: dbaron (~dbaron@public.cloak)
  83. # [07:43] * Joins: antonp (~Thunderbird@public.cloak)
  84. # [08:03] * heycam|away is now known as heycam
  85. # [08:12] * Joins: SimonSapin (~simon@public.cloak)
  86. # [08:12] * Quits: dbaron (~dbaron@public.cloak) (Ping timeout: 60 seconds)
  87. # [08:41] * Joins: dbaron (~dbaron@public.cloak)
  88. # [08:52] * Quits: SimonSapin (~simon@public.cloak) (Ping timeout: 60 seconds)
  89. # [09:02] * heycam is now known as heycam|away
  90. # [09:08] * Joins: SimonSapin (~simon@public.cloak)
  91. # [09:32] * Quits: dbaron (~dbaron@public.cloak) (Ping timeout: 60 seconds)
  92. # [09:35] * Joins: Ms2ger (~Ms2ger@public.cloak)
  93. # [09:57] * Joins: dbaron (~dbaron@public.cloak)
  94. # [10:11] * Quits: SimonSapin (~simon@public.cloak) ("Leaving.")
  95. # [10:31] * Quits: Ms2ger (~Ms2ger@public.cloak) (Ping timeout: 60 seconds)
  96. # [10:33] * Quits: dbaron (~dbaron@public.cloak) (Ping timeout: 60 seconds)
  97. # [10:39] * Joins: SimonSapin (~simon@public.cloak)
  98. # [10:58] * Joins: drublic (~drublic@public.cloak)
  99. # [12:15] * Quits: antonp (~Thunderbird@public.cloak) (antonp)
  100. # [12:23] * Joins: tantek (~tantek@public.cloak)
  101. # [12:26] * Joins: teoli (~teoli@public.cloak)
  102. # [12:31] * Joins: darktears (~darktears@public.cloak)
  103. # [13:49] * Joins: tmpsantos (~tmpsantos@public.cloak)
  104. # [13:56] * Joins: antonp (~Thunderbird@public.cloak)
  105. # [14:23] * Quits: tantek (~tantek@public.cloak) (tantek)
  106. # [15:13] * Quits: SamB_MacG5 (~SamB_MacG5@public.cloak) (Ping timeout: 60 seconds)
  107. # [15:17] * leaverou_away is now known as leaverou
  108. # [15:41] * Quits: jet (~jet@public.cloak) (jet)
  109. # [16:44] * Quits: teoli (~teoli@public.cloak) (Client closed connection)
  110. # [16:48] * Joins: teoli (~teoli@public.cloak)
  111. # [16:48] * Quits: teoli (~teoli@public.cloak) (Client closed connection)
  112. # [16:54] * Joins: glenn (~gadams@public.cloak)
  113. # [17:12] * Joins: krit (~krit@public.cloak)
  114. # [17:55] * sylvaing_away is now known as sylvaing
  115. # [17:59] <leaverou> we don't have a telcon today? Can't find the agenda anywhere
  116. # [18:00] <leaverou> oh, we don't, just saw glazou's email
  117. # [18:01] <SimonSapin> leaverou: you mean plinss’ ?
  118. # [18:01] <leaverou> yes, of course
  119. # [18:02] <SimonSapin> some of are working today, but meh
  120. # [18:06] <sylvaing> yeah I don't know why we scheduled a call the day before thanksgiving
  121. # [18:10] * Joins: dbaron (~dbaron@public.cloak)
  122. # [18:22] * Quits: SimonSapin (~simon@public.cloak) (Ping timeout: 60 seconds)
  123. # [18:33] * sylvaing is now known as sylvaing_away
  124. # [18:50] * Joins: SimonSapin (~simon@public.cloak)
  125. # [19:11] * Quits: drublic (~drublic@public.cloak) (Client closed connection)
  126. # [19:17] * Quits: glenn (~gadams@public.cloak) (Ping timeout: 60 seconds)
  127. # [19:20] * Joins: glenn (~gadams@public.cloak)
  128. # [19:33] * Quits: tmpsantos (~tmpsantos@public.cloak) ("Leaving")
  129. # [20:09] * Quits: dbaron (~dbaron@public.cloak) (Ping timeout: 60 seconds)
  130. # [20:22] * Joins: victor (~Adium@public.cloak)
  131. # [20:24] * Joins: drublic (~drublic@public.cloak)
  132. # [20:26] * Parts: victor (~Adium@public.cloak) (victor)
  133. # [21:02] * Joins: dbaron (~dbaron@public.cloak)
  134. # [21:11] * Joins: SamB_MacG5 (~SamB_MacG5@public.cloak)
  135. # [21:18] * Joins: Ms2ger (~Ms2ger@public.cloak)
  136. # [21:47] * Quits: drublic (~drublic@public.cloak) (Client closed connection)
  137. # [22:00] * Quits: darktears (~darktears@public.cloak) (Ping timeout: 60 seconds)
  138. # [22:20] * Quits: antonp (~Thunderbird@public.cloak) (antonp)
  139. # [22:36] * Quits: krit (~krit@public.cloak) ("Leaving.")
  140. # [22:37] * Joins: krit (~krit@public.cloak)
  141. # [22:45] * heycam|away is now known as heycam
  142. # [23:09] * Quits: Ms2ger (~Ms2ger@public.cloak) ("nn")
  143. # Session Close: Thu Nov 22 00:00:00 2012

The end :)