Commit 6b53ababecdba0c13a79601e0876fdd51df29c25

Authored by Julien Verneuil
1 parent a34deddd

make format_attrs function for CoreAttrs assemble classes and styles into a sing…

…le attribute for each one
Showing 1 changed file with 63 additions and 8 deletions   Show diff stats
web/CXM_making_a_web_site.anubis
... ... @@ -2954,7 +2954,6 @@ public define String
2954 2954 (
2955 2955 List(CoreAttrs) attributs
2956 2956 ).
2957   -
2958 2957  
2959 2958 public define String
2960 2959 format_extra_operands
... ... @@ -3238,7 +3237,7 @@ define Printable_tree
3238 3237 . format(t)]
3239 3238 }.
3240 3239  
3241   -public define String
  3240 + public define String
3242 3241 format_attrs
3243 3242 (
3244 3243 List(CoreAttrs) attributs
... ... @@ -3297,15 +3296,15 @@ define String
3297 3296 if length(classes) = 0 then "" else " class=\""+join(" ",classes)+"\""+
3298 3297 if length(styles) = 0 then "" else " style=\""+join(";",styles)+"\"",
3299 3298 [h . t] then
3300   - with current = if h is
  3299 + with new_classes = if h is class(class_name) then [class_name. classes] else classes,
  3300 + new_styles = if h is style(style_string) then [style_string . styles] else styles,
  3301 + current = if h is
3301 3302 {
3302 3303 id(id_name) then
3303 3304 " id=\"" + id_name + "\"",
3304   - class(class_name) then
3305   - format_attrs(t, [class_name. classes], styles),
3306   - style(style_string) then
3307   - format_attrs(t, classes, [style_string . styles]),
3308   - title(title_string) then
  3305 + class(class_name) then "",
  3306 + style(style_string) then "",
  3307 + title(title_string) then
3309 3308 " title=\"" + title_string + "\"",
3310 3309  
3311 3310 lang(lang) then
... ... @@ -3336,10 +3335,66 @@ define String
3336 3335 define String
3337 3336 format_attrs
3338 3337 (
  3338 + List(CoreAttrs) attributs,
  3339 + List(String) classes,
  3340 + List(String) styles
  3341 + )=
  3342 + if attributs is
  3343 + {
  3344 + [] then
  3345 + (if length(classes) = 0 then "" else " class=\""+join(" ",classes)+"\"")+
  3346 + if length(styles) = 0 then "" else " style=\""+join(";",styles)+"\"",
  3347 + [h . t] then
  3348 + with new_classes = if h is class(class_name) then [class_name. classes] else classes,
  3349 + new_styles = if h is style(style_string) then [style_string . styles] else styles,
  3350 + current = if h is
  3351 + {
  3352 + id(id_name) then
  3353 + " id=\"" + id_name + "\"",
  3354 + class(class_name) then "",
  3355 + style(style_string) then "",
  3356 + title(title_string) then
  3357 + " title=\"" + title_string + "\"",
  3358 +
  3359 + lang(lang) then
  3360 + " xml:lang=" + lang,
  3361 + dir(reading_Way) then
  3362 + if reading_Way is
  3363 + {
  3364 + ltr then " dir=ltr",
  3365 + rtl then " dir=rtl"
  3366 + },
  3367 +
  3368 + accesskey(key) then
  3369 + " accesskey=\"" + key + "\"",
  3370 + tabindex(index) then
  3371 + " tabindex=\"" + index + "\"",
  3372 +
  3373 + attr(name, value) then
  3374 + " " + name + "=\"" + value + "\"",
  3375 +
  3376 + event(e, value) then
  3377 + " " + event_name(e) + "=\"" + value + "\"",
  3378 + data(name, value) then
  3379 + " data-" + to_lower(name) + "=\"" + value + "\"",
  3380 + },
  3381 + current + format_attrs(t, new_classes, new_styles)
  3382 + }.
  3383 +
  3384 +define String
  3385 + format_attrs
  3386 + (
3339 3387 List(InputAttrs) attributs
3340 3388 )=
3341 3389 format_attrs(attributs, [], []).
3342 3390  
  3391 +public define String
  3392 + format_attrs
  3393 + (
  3394 + List(CoreAttrs) attributs
  3395 + )=
  3396 + format_attrs(attributs, [], []).
  3397 +
3343 3398 define String
3344 3399 format_text_options
3345 3400 (
... ...