1 module uim.html.h5; 2 3 import uim.html; 4 5 class DH5 { 6 this() { _objs = []; } 7 8 protected DH5Obj[] _objs; 9 auto objs(this O)() { return _objs; } 10 O clear(this O)() { _objs = []; return cast(O)this; } 11 12 DH5Obj obj(string tag) { 13 switch(tag.toLower) { 14 case "thead": return H5Thead(); 15 default: return H5Obj().tag(tag); 16 } 17 } 18 19 /* 20 T opBinary(string op)(DH5Obj[] someElements) { 21 static if (op, "~") return _objs~someElements; 22 else static assert(Assert(0, "Operator "~op~" not implemented"); 23 } 24 */ 25 mixin(H5Def!"a"); 26 unittest { 27 assert(Assert(H5.a, "<a></a>")); 28 } 29 30 mixin(H5Def!"abbr"); 31 unittest { 32 assert(Assert(H5.abbr, "<abbr></abbr>")); 33 } 34 35 mixin(H5Def!"address"); 36 unittest { 37 assert(Assert(H5.address, "<address></address>")); 38 } 39 40 mixin(H5Def!"area"); 41 unittest { 42 assert(Assert(H5.area, "<area></area>")); 43 } 44 45 mixin(H5Def!"article"); 46 unittest { 47 assert(Assert(H5.article, "<article></article>")); 48 } 49 50 mixin(H5Def!"aside"); 51 unittest { 52 assert(Assert(H5.aside, "<aside></aside>")); 53 } 54 55 mixin(H5Def!"audio"); 56 unittest { 57 assert(Assert(H5.audio, "<audio></audio>")); 58 } 59 60 mixin(H5Def!"b"); 61 unittest { 62 assert(Assert(H5.b, "<b></b>")); 63 } 64 65 mixin(H5Def!"base"); 66 unittest { 67 assert(Assert(H5.base, "<base></base>")); 68 } 69 70 mixin(H5Def!"bdi"); 71 unittest { 72 assert(Assert(H5.bdi, "<bdi></bdi>")); 73 } 74 75 mixin(H5Def!"bdo"); 76 unittest { 77 assert(Assert(H5.bdo, "<bdo></bdo>")); 78 } 79 80 mixin(H5Def!"big"); 81 unittest { 82 assert(Assert(H5.big, "<big></big>")); 83 } 84 85 mixin(H5Def!"blockquote"); 86 unittest { 87 assert(Assert(H5.blockquote, "<blockquote></blockquote>")); 88 } 89 90 // mixin(H5Def!"body"); 91 auto body_(this O)(string content) { _objs ~= H5Body(content); return cast(O)this; } 92 auto body_(this O)(DH5Obj[] content...) { _objs ~= H5Body(content); return cast(O)this; } 93 auto body_(this O)(DH5 content) { _objs ~= H5Body(content); return cast(O)this; } 94 95 auto body_(this O)(string id, string content) { _objs ~= H5Body(id, content); return cast(O)this; } 96 auto body_(this O)(string id, DH5Obj[] content...) { _objs ~= H5Body(id, content); return cast(O)this; } 97 auto body_(this O)(string id, DH5 content) { _objs ~= H5Body(id, content); return cast(O)this; } 98 99 auto body_(this O)(string id, string[] classes) { _objs ~= H5Body(id, classes); return cast(O)this; } 100 auto body_(this O)(string id, string[] classes, string content) { _objs ~= H5Body(id, classes, content); return cast(O)this; } 101 auto body_(this O)(string id, string[] classes, DH5Obj[] content...) { _objs ~= H5Body(id, classes, content); return cast(O)this; } 102 auto body_(this O)(string id, string[] classes, DH5 content) { _objs ~= H5Body(id, classes, content); return cast(O)this; } 103 104 auto body_(this O)(string[] classes) { _objs ~= H5Body(classes); return cast(O)this; } 105 auto body_(this O)(string content) { _objs ~= H5Body(classes, content); return cast(O)this; } 106 auto body_(this O)(string[] classes,string[] classes, DH5Obj[] content...) { _objs ~= H5Body(classes, content); return cast(O)this; } 107 auto body_(this O)(string[] classes, DH5 content) { _objs ~= H5Body(classes, content); return cast(O)this; } 108 109 auto body_(this O)(string[string] attributes) { _objs ~= H5Body(attributes); return cast(O)this; } 110 auto body_(this O)(string[string] attributes, string content) { _objs ~= H5Body(attributes, content); return cast(O)this; } 111 auto body_(this O)(string[string] attributes, DH5Obj[] content...) { _objs ~= H5Body(attributes, content); return cast(O)this; } 112 auto body_(this O)(string[string] attributes, DH5 content) { _objs ~= H5Body(attributes, content); return cast(O)this; } 113 114 auto body_(this O)(string id, string[string] attributes) { _objs ~= H5Body(id, attributes); return cast(O)this; } 115 auto body_(this O)(string id, string[string] attributes, string content) { _objs ~= H5Body(id, attributes, content); return cast(O)this; } 116 auto body_(this O)(string id, string[string] attributes, DH5Obj[] content...) { _objs ~= H5Body(id, attributes, content); return cast(O)this; } 117 auto body_(this O)(string id, string[string] attributes, DH5 content) { _objs ~= H5Body(id, attributes, content); return cast(O)this; } 118 119 auto body_(this O)(string id, string[] classes, string[string] attributes) { _objs ~= H5Body(id, classes, attributes); return cast(O)this; } 120 auto body_(this O)(string id, string[] classes, string[string] attributes, string content) { _objs ~= H5Body(id, classes, attributes, content); return cast(O)this; } 121 auto body_(this O)(string id, string[] classes, string[string] attributes, DH5Obj[] content...) { _objs ~= H5Body(id, classes, attributes, content); return cast(O)this; } 122 auto body_(this O)(string id, string[] classes, string[string] attributes, DH5 content) { _objs ~= H5Body(id, classes, attributes, content); return cast(O)this; } 123 unittest { 124 assert(Assert(H5.body_, "<body></body>")); 125 } 126 127 mixin(H5Def!"br"); 128 unittest { 129 assert(Assert(H5.br, "<br>")); 130 } 131 132 mixin(H5Def!"button"); 133 unittest { 134 assert(Assert(H5.button, "<button></button>")); 135 } 136 137 mixin(H5Def!"canvas"); 138 unittest { 139 /* assert(Assert(H5.canvas("test", [""]), `<canvas id="test"></canvas><script>function drawtest(){var canvas=document.getElementById('test');`~ 140 `var context=canvas.getContext('2d');}window.addEventListener("load",drawtest,true);</script>`)); 141 */ } 142 143 mixin(H5Def!"caption"); 144 unittest { 145 assert(Assert(H5.caption, "<caption></caption>")); 146 } 147 148 mixin(H5Def!"cite"); 149 unittest { 150 assert(Assert(H5.cite, "<cite></cite>")); 151 } 152 153 mixin(H5Def!"code"); 154 unittest { 155 assert(Assert(H5.code, "<code></code>")); 156 } 157 158 mixin(H5Def!"col"); 159 unittest { 160 assert(Assert(H5.col, "<col></col>")); 161 } 162 163 mixin(H5Def!"colgroup"); 164 unittest { 165 assert(Assert(H5.colgroup, "<colgroup></colgroup>")); 166 } 167 168 mixin(H5Def!"content"); 169 unittest { 170 assert(Assert(H5.content, "<content></content>")); 171 } 172 173 mixin(H5Def!"data"); 174 unittest { 175 assert(Assert(H5.data, "<data></data>")); 176 } 177 178 mixin(H5Def!"datalist"); 179 unittest { 180 assert(Assert(H5.datalist, "<datalist></datalist>")); 181 } 182 183 mixin(H5Def!"dd"); 184 unittest { 185 assert(Assert(H5.dd, "<dd></dd>")); 186 } 187 188 mixin(H5Def!"decorator"); 189 unittest { 190 assert(Assert(H5.decorator, "<decorator></decorator>")); 191 } 192 193 mixin(H5Def!"del"); 194 unittest { 195 assert(Assert(H5.del, "<del></del>")); 196 } 197 198 mixin(H5Def!"details"); 199 unittest { 200 assert(Assert(H5.details, "<details></details>")); 201 } 202 203 mixin(H5Def!"dfn"); 204 unittest { 205 assert(Assert(H5.dfn, "<dfn></dfn>")); 206 } 207 208 mixin(H5Def!"dialog"); 209 unittest { 210 assert(Assert(H5.dialog, "<dialog></dialog>")); 211 } 212 213 mixin(H5Def!"div"); 214 unittest { 215 assert(Assert(H5.div, "<div></div>")); 216 } 217 218 mixin(H5Def!"dl"); 219 unittest { 220 assert(Assert(H5.dl, "<dl></dl>")); 221 } 222 223 mixin(H5Def!"dt"); 224 unittest { 225 assert(Assert(H5.dt, "<dt></dt>")); 226 } 227 228 mixin(H5Def!"element"); 229 unittest { 230 assert(Assert(H5.element, "<element></element>")); 231 } 232 233 mixin(H5Def!"em"); 234 unittest { 235 assert(Assert(H5.em, "<em></em>")); 236 } 237 238 mixin(H5Def!"embed"); 239 unittest { 240 assert(Assert(H5.embed, "<embed></embed>")); 241 } 242 243 mixin(H5Def!"fieldset"); 244 unittest { 245 assert(Assert(H5.fieldset, "<fieldset></fieldset>")); 246 } 247 248 mixin(H5Def!"figcaption"); 249 unittest { 250 assert(Assert(H5.figcaption, "<figcaption></figcaption>")); 251 } 252 253 mixin(H5Def!"figure"); 254 unittest { 255 assert(Assert(H5.figure, "<figure></figure>")); 256 } 257 258 mixin(H5Def!"footer"); 259 unittest { 260 assert(Assert(H5.footer, "<footer></footer>")); 261 } 262 263 mixin(H5Def!"form"); 264 unittest { 265 assert(Assert(H5.form, "<form></form>")); 266 } 267 268 mixin(H5Def!"h1"); 269 unittest { 270 assert(Assert(H5.h1, "<h1></h1>")); 271 } 272 273 mixin(H5Def!"h2"); 274 unittest { 275 assert(Assert(H5.h2, "<h2></h2>")); 276 } 277 278 mixin(H5Def!"h3"); 279 unittest { 280 assert(Assert(H5.h3, "<h3></h3>")); 281 } 282 283 mixin(H5Def!"h4"); 284 unittest { 285 assert(Assert(H5.h4, "<h4></h4>")); 286 } 287 288 mixin(H5Def!"h5"); 289 unittest { 290 assert(Assert(H5.h5, "<h5></h5>")); 291 } 292 293 mixin(H5Def!"h6"); 294 unittest { 295 assert(Assert(H5.h6, "<h6></h6>")); 296 } 297 298 mixin(H5Def!"head"); 299 unittest { 300 assert(Assert(H5.head, "<head></head>")); 301 } 302 303 mixin(H5Def!"header"); 304 unittest { 305 assert(Assert(H5.header, "<header></header>")); 306 } 307 308 mixin(H5Def!"hr"); 309 unittest { 310 assert(Assert(H5.hr, "<hr></hr>")); 311 } 312 313 mixin(H5Def!"html"); 314 unittest { 315 assert(Assert(H5.html, "<!doctype html><html><head></head><body></body></html>")); 316 } 317 318 mixin(H5Def!"i"); 319 unittest { 320 assert(Assert(H5.i, "<i></i>")); 321 } 322 323 mixin(H5Def!"iframe"); 324 unittest { 325 assert(Assert(H5.iframe, "<iframe></iframe>")); 326 } 327 328 mixin(H5Def!"img"); 329 unittest { 330 assert(Assert(H5.img, "<img>")); 331 } 332 333 mixin(H5Def!"input"); 334 unittest { 335 assert(Assert(H5.input, "<input>")); 336 } 337 338 mixin(H5Def!"ins"); 339 unittest { 340 assert(Assert(H5.ins, "<ins></ins>")); 341 } 342 343 mixin(H5Def!"kbd"); 344 unittest { 345 assert(Assert(H5.kbd, "<kbd></kbd>")); 346 } 347 348 mixin(H5Def!"keygen"); 349 unittest { 350 assert(Assert(H5.keygen, "<keygen></keygen>")); 351 } 352 353 mixin(H5Def!"label"); 354 unittest { 355 assert(Assert(H5.label, "<label></label>")); 356 } 357 358 mixin(H5Def!"legend"); 359 unittest { 360 assert(Assert(H5.legend, "<legend></legend>")); 361 } 362 363 mixin(H5Def!"li"); 364 unittest { 365 assert(Assert(H5.li, "<li></li>")); 366 } 367 368 mixin(H5Def!"link"); 369 unittest { 370 assert(Assert(H5.link, "<link>")); 371 } 372 373 mixin(H5Def!"list"); 374 unittest { 375 assert(Assert(H5.list, "<list></list>")); 376 } 377 378 // mixin(H5Def!"main"); 379 auto main_(this O)(string content) { _objs ~= H5Main(content); return cast(O)this; } 380 auto main_(this O)(DH5Obj[] content...) { _objs ~= H5Main(content); return cast(O)this; } 381 auto main_(this O)(DH5 content) { _objs ~= H5Main(content); return cast(O)this; } 382 383 auto main_(this O)(string id, string content) { _objs ~= H5Main(id, content); return cast(O)this; } 384 auto main_(this O)(string id, DH5Obj[] content...) { _objs ~= H5Main(id, content); return cast(O)this; } 385 auto main_(this O)(string id, DH5 content) { _objs ~= H5Main(id, content); return cast(O)this; } 386 387 auto main_(this O)(string id, string[] classes) { _objs ~= H5Main(id, classes); return cast(O)this; } 388 auto main_(this O)(string id, string[] classes, string content) { _objs ~= H5Main(id, classes, content); return cast(O)this; } 389 auto main_(this O)(string id, string[] classes, DH5Obj[] content...) { _objs ~= H5Main(id, classes, content); return cast(O)this; } 390 auto main_(this O)(string id, string[] classes, DH5 content) { _objs ~= H5Main(id, classes, content); return cast(O)this; } 391 392 auto main_(this O)(string[] classes) { _objs ~= H5Main(classes); return cast(O)this; } 393 auto main_(this O)(string content) { _objs ~= H5Main(classes, content); return cast(O)this; } 394 auto main_(this O)(string[] classes,string[] classes, DH5Obj[] content...) { _objs ~= H5Main(classes, content); return cast(O)this; } 395 auto main_(this O)(string[] classes, DH5 content) { _objs ~= H5Main(classes, content); return cast(O)this; } 396 397 auto main_(this O)(string[string] attributes) { _objs ~= H5Main(attributes); return cast(O)this; } 398 auto main_(this O)(string[string] attributes, string content) { _objs ~= H5Main(attributes, content); return cast(O)this; } 399 auto main_(this O)(string[string] attributes, DH5Obj[] content...) { _objs ~= H5Main(attributes, content); return cast(O)this; } 400 auto main_(this O)(string[string] attributes, DH5 content) { _objs ~= H5Main(attributes, content); return cast(O)this; } 401 402 auto main_(this O)(string id, string[string] attributes) { _objs ~= H5Main(id, attributes); return cast(O)this; } 403 auto main_(this O)(string id, string[string] attributes, string content) { _objs ~= H5Main(id, attributes, content); return cast(O)this; } 404 auto main_(this O)(string id, string[string] attributes, DH5Obj[] content...) { _objs ~= H5Main(id, attributes, content); return cast(O)this; } 405 auto main_(this O)(string id, string[string] attributes, DH5 content) { _objs ~= H5Main(id, attributes, content); return cast(O)this; } 406 407 auto main_(this O)(string id, string[] classes, string[string] attributes) { _objs ~= H5Main(id, classes, attributes); return cast(O)this; } 408 auto main_(this O)(string id, string[] classes, string[string] attributes, string content) { _objs ~= H5Main(id, classes, attributes, content); return cast(O)this; } 409 auto main_(this O)(string id, string[] classes, string[string] attributes, DH5Obj[] content...) { _objs ~= H5Main(id, classes, attributes, content); return cast(O)this; } 410 auto main_(this O)(string id, string[] classes, string[string] attributes, DH5 content) { _objs ~= H5Main(id, classes, attributes, content); return cast(O)this; } 411 412 unittest { 413 assert(Assert(H5.main_, "<main></main>")); 414 } 415 416 mixin(H5Def!"map"); 417 unittest { 418 assert(Assert(H5.map, "<map></map>")); 419 } 420 421 mixin(H5Def!"mark"); 422 unittest { 423 assert(Assert(H5.mark, "<mark></mark>")); 424 } 425 426 mixin(H5Def!"math"); 427 unittest { 428 assert(Assert(H5.math, "<math></math>")); 429 } 430 431 mixin(H5Def!"menu"); 432 unittest { 433 assert(Assert(H5.menu, "<menu></menu>")); 434 } 435 436 mixin(H5Def!"menuitem"); 437 unittest { 438 assert(Assert(H5.menuitem, "<menuitem></menuitem>")); 439 } 440 441 mixin(H5Def!"meta"); 442 unittest { 443 assert(Assert(H5.meta, "<meta>")); 444 } 445 446 mixin(H5Def!"meter"); 447 unittest { 448 assert(Assert(H5.meter, "<meter></meter>")); 449 } 450 451 mixin(H5Def!"nav"); 452 unittest { 453 assert(Assert(H5.nav, "<nav></nav>")); 454 } 455 456 mixin(H5Def!"noscript"); 457 unittest { 458 assert(Assert(H5.noscript, "<noscript></noscript>")); 459 } 460 461 mixin(H5Def!"object"); 462 unittest { 463 assert(Assert(H5.object, "<object></object>")); 464 } 465 466 mixin(H5Def!"ol"); 467 unittest { 468 assert(Assert(H5.ol, "<ol></ol>")); 469 } 470 471 mixin(H5Def!"optgroup"); 472 unittest { 473 assert(Assert(H5.optgroup, "<optgroup></optgroup>")); 474 } 475 476 mixin(H5Def!"option"); 477 unittest { 478 assert(Assert(H5.option, "<option></option>")); 479 } 480 481 mixin(H5Def!"output"); 482 unittest { 483 assert(Assert(H5.output, "<output></output>")); 484 } 485 486 mixin(H5Def!"p"); 487 unittest { 488 assert(Assert(H5.p, "<p></p>")); 489 } 490 491 mixin(H5Def!"param"); 492 unittest { 493 assert(Assert(H5.param, "<param></param>")); 494 } 495 496 mixin(H5Def!"picture"); 497 unittest { 498 assert(Assert(H5.picture, "<picture></picture>")); 499 } 500 501 mixin(H5Def!"pre"); 502 unittest { 503 assert(Assert(H5.pre, "<pre></pre>")); 504 } 505 506 mixin(H5Def!"progress"); 507 unittest { 508 assert(Assert(H5.progress, "<progress></progress>")); 509 } 510 511 mixin(H5Def!"q"); 512 unittest { 513 assert(Assert(H5.q, "<q></q>")); 514 } 515 516 mixin(H5Def!"rbc"); 517 unittest { 518 assert(Assert(H5.rbc, "<rbc></rbc>")); 519 } 520 521 mixin(H5Def!"rp"); 522 unittest { 523 assert(Assert(H5.rp, "<rp></rp>")); 524 } 525 526 mixin(H5Def!"rt"); 527 unittest { 528 assert(Assert(H5.rt, "<rt></rt>")); 529 } 530 531 mixin(H5Def!"rtc"); 532 unittest { 533 assert(Assert(H5.rtc, "<rtc></rtc>")); 534 } 535 536 mixin(H5Def!"ruby"); 537 unittest { 538 assert(Assert(H5.ruby, "<ruby></ruby>")); 539 } 540 541 mixin(H5Def!"s"); 542 unittest { 543 assert(Assert(H5.s, "<s></s>")); 544 } 545 546 mixin(H5Def!"samp"); 547 unittest { 548 assert(Assert(H5.samp, "<samp></samp>")); 549 } 550 551 mixin(H5Def!"script"); 552 unittest { 553 assert(Assert(H5.script, "<script></script>")); 554 } 555 556 mixin(H5Def!"section"); 557 unittest { 558 assert(Assert(H5.section, "<section></section>")); 559 } 560 561 mixin(H5Def!"select"); 562 unittest { 563 assert(Assert(H5.script, "<script></script>")); 564 } 565 566 mixin(H5Def!"shadow"); 567 unittest { 568 assert(Assert(H5.shadow, "<shadow></shadow>")); 569 } 570 571 /* mixin(H5Def!"slot"); 572 unittest { 573 assert(Assert(H5.slot, "<slot></slot>")); 574 } 575 */ 576 mixin(H5Def!"small"); 577 unittest { 578 assert(Assert(H5.small, "<small></small>")); 579 } 580 581 mixin(H5Def!"source"); 582 unittest { 583 assert(Assert(H5.source, "<source></source>")); 584 } 585 586 mixin(H5Def!"span"); 587 unittest { 588 assert(Assert(H5.span, "<span></span>")); 589 } 590 591 mixin(H5Def!"strong"); 592 unittest { 593 assert(Assert(H5.strong, "<strong></strong>")); 594 } 595 596 mixin(H5Def!"style"); 597 unittest { 598 assert(Assert(H5.style, "<style></style>")); 599 } 600 601 mixin(H5Def!"sub"); 602 unittest { 603 assert(Assert(H5.sub, "<sub></sub>")); 604 } 605 606 mixin(H5Def!"summary"); 607 unittest { 608 assert(Assert(H5.summary, "<summary></summary>")); 609 } 610 611 mixin(H5Def!"sup"); 612 unittest { 613 assert(Assert(H5.sup, "<sup></sup>")); 614 } 615 616 mixin(H5Def!"svg"); 617 unittest { 618 assert(Assert(H5.svg, "<svg></svg>")); 619 } 620 621 mixin(H5Def!"table"); 622 unittest { 623 assert(Assert(H5.table, "<table></table>")); 624 } 625 626 mixin(H5Def!"tbody"); 627 unittest { 628 assert(Assert(H5.tbody, "<tbody></tbody>")); 629 } 630 631 mixin(H5Def!"td"); 632 unittest { 633 assert(Assert(H5.td, "<td></td>")); 634 } 635 636 // mixin(H5Def!"template"); 637 auto template_(this O)(string content) { _objs ~= H5Template(content); return cast(O)this; } 638 auto template_(this O)(DH5Obj[] content...) { _objs ~= H5Template(content); return cast(O)this; } 639 auto template_(this O)(DH5 content) { _objs ~= H5Template(content); return cast(O)this; } 640 641 auto template_(this O)(string id, string content) { _objs ~= H5Template(id, content); return cast(O)this; } 642 auto template_(this O)(string id, DH5Obj[] content...) { _objs ~= H5Template(id, content); return cast(O)this; } 643 auto template_(this O)(string id, DH5 content) { _objs ~= H5Template(id, content); return cast(O)this; } 644 645 auto template_(this O)(string id, string[] classes) { _objs ~= H5Template(id, classes); return cast(O)this; } 646 auto template_(this O)(string id, string[] classes, string content) { _objs ~= H5Template(id, classes, content); return cast(O)this; } 647 auto template_(this O)(string id, string[] classes, DH5Obj[] content...) { _objs ~= H5Template(id, classes, content); return cast(O)this; } 648 auto template_(this O)(string id, string[] classes, DH5 content) { _objs ~= H5Template(id, classes, content); return cast(O)this; } 649 650 auto template_(this O)(string[] classes) { _objs ~= H5Template(classes); return cast(O)this; } 651 auto template_(this O)(string[] classes, string content) { _objs ~= H5Template(classes, content); return cast(O)this; } 652 auto template_(this O)(string[] classes, DH5Obj[] content...) { _objs ~= H5Template(classes, content); return cast(O)this; } 653 auto template_(this O)(string[] classes, DH5 content) { _objs ~= H5Template(classes, content); return cast(O)this; } 654 655 auto template_(this O)(string[string] attributes) { _objs ~= H5Template(attributes); return cast(O)this; } 656 auto template_(this O)(string[string] attributes, string content) { _objs ~= H5Template(attributes, content); return cast(O)this; } 657 auto template_(this O)(string[string] attributes, DH5Obj[] content...) { _objs ~= H5Template(attributes, content); return cast(O)this; } 658 auto template_(this O)(string[string] attributes, DH5 content) { _objs ~= H5Template(attributes, content); return cast(O)this; } 659 660 auto template_(this O)(string id, string[string] attributes) { _objs ~= H5Template(id, attributes); return cast(O)this; } 661 auto template_(this O)(string id, string[string] attributes, string content) { _objs ~= H5Template(id, attributes, content); return cast(O)this; } 662 auto template_(this O)(string id, string[string] attributes, DH5Obj[] content...) { _objs ~= H5Template(id, attributes, content); return cast(O)this; } 663 auto template_(this O)(string id, string[string] attributes, DH5 content) { _objs ~= H5Template(id, attributes, content); return cast(O)this; } 664 665 auto template_(this O)(string id, string[] classes, string[string] attributes) { _objs ~= H5Template(id, classes, attributes); return cast(O)this; } 666 auto template_(this O)(string id, string[] classes, string[string] attributes, string content) { _objs ~= H5Template(id, classes, attributes, content); return cast(O)this; } 667 auto template_(this O)(string id, string[] classes, string[string] attributes, DH5Obj[] content...) { _objs ~= H5Template(id, classes, attributes, content); return cast(O)this; } 668 auto template_(this O)(string id, string[] classes, string[string] attributes, DH5 content) { _objs ~= H5Template(id, classes, attributes, content); return cast(O)this; } 669 670 unittest { 671 assert(Assert(H5.template_, "<template></template>")); 672 } 673 674 mixin(H5Def!"textarea"); 675 unittest { 676 assert(Assert(H5.textarea, "<textarea></textarea>")); 677 } 678 679 mixin(H5Def!"tfoot"); 680 unittest { 681 assert(Assert(H5.tfoot, "<tfoot></tfoot>")); 682 } 683 684 mixin(H5Def!"th"); 685 unittest { 686 assert(Assert(H5.th, "<th></th>")); 687 } 688 689 mixin(H5Def!"thead"); 690 unittest { 691 assert(Assert(H5.thead, "<thead></thead>")); 692 } 693 694 mixin(H5Def!"title"); 695 unittest { 696 assert(Assert(H5.title, "<title></title>")); 697 } 698 699 mixin(H5Def!"tr"); 700 unittest { 701 assert(Assert(H5.tr, "<tr></tr>")); 702 } 703 704 mixin(H5Def!"track"); 705 unittest { 706 assert(Assert(H5.track, "<track></track>")); 707 } 708 709 mixin(H5Def!"u"); 710 unittest { 711 assert(Assert(H5.u, "<u></u>")); 712 } 713 714 mixin(H5Def!"ul"); 715 unittest { 716 assert(Assert(H5.ul, "<ul></ul>")); 717 } 718 719 mixin(H5Def!"var"); 720 unittest { 721 assert(Assert(H5.var, "<var></var>")); 722 } 723 724 mixin(H5Def!"video"); 725 unittest { 726 assert(Assert(H5.video, "<video></video>")); 727 } 728 729 mixin(H5Def!"wbr"); 730 unittest { 731 assert(Assert(H5.wbr, "<wbr></wbr>")); 732 } 733 734 bool opEquals(string text) { return (text == toString); } 735 override string toString() { 736 string result; 737 foreach(h; _objs) result ~= h.toString; 738 return result; 739 } 740 } 741 auto H5() { return new DH5(); } 742 743 template H5Def(string name) { 744 const char[] H5Def = " 745 O "~name.toLower~"(this O)(string content) { _objs ~= H5"~name.toLower.capitalize~"(content); return cast(O)this; } 746 O "~name.toLower~"(this O)(DH5Obj[] content...) { _objs ~= H5"~name.toLower.capitalize~"(content); return cast(O)this; } 747 O "~name.toLower~"(this O)(DH5 content) { _objs ~= H5"~name.toLower.capitalize~"(content); return cast(O)this; } 748 749 O "~name.toLower~"(this O)(string id, string content) { _objs ~= H5"~name.toLower.capitalize~"(id, content); return cast(O)this; } 750 O "~name.toLower~"(this O)(string id, DH5Obj[] content...) { _objs ~= H5"~name.toLower.capitalize~"(id, content); return cast(O)this; } 751 O "~name.toLower~"(this O)(string id, DH5 content) { _objs ~= H5"~name.toLower.capitalize~"(id, content); return cast(O)this; } 752 753 O "~name.toLower~"(this O)(string id, string[] classes) { _objs ~= H5"~name.toLower.capitalize~"(id, classes); return cast(O)this; } 754 O "~name.toLower~"(this O)(string id, string[] classes, string content) { _objs ~= H5"~name.toLower.capitalize~"(id, classes, content); return cast(O)this; } 755 O "~name.toLower~"(this O)(string id, string[] classes, DH5Obj[] content...) { _objs ~= H5"~name.toLower.capitalize~"(id, classes, content); return cast(O)this; } 756 O "~name.toLower~"(this O)(string id, string[] classes, DH5 content) { _objs ~= H5"~name.toLower.capitalize~"(id, classes, content); return cast(O)this; } 757 758 O "~name.toLower~"(this O)(string[] classes) { _objs ~= H5"~name.toLower.capitalize~"(classes); return cast(O)this; } 759 O "~name.toLower~"(this O)(string[] classes, string content) { _objs ~= H5"~name.toLower.capitalize~"(classes, content); return cast(O)this; } 760 O "~name.toLower~"(this O)(string[] classes, DH5Obj[] content...) { _objs ~= H5"~name.toLower.capitalize~"(classes, content); return cast(O)this; } 761 O "~name.toLower~"(this O)(string[] classes, DH5 content) { _objs ~= H5"~name.toLower.capitalize~"(classes, content); return cast(O)this; } 762 763 O "~name.toLower~"(this O)(string[string] attributes) { _objs ~= H5"~name.toLower.capitalize~"(attributes); return cast(O)this; } 764 O "~name.toLower~"(this O)(string[string] attributes, string content) { _objs ~= H5"~name.toLower.capitalize~"(attributes, content); return cast(O)this; } 765 O "~name.toLower~"(this O)(string[string] attributes, DH5Obj[] content...) { _objs ~= H5"~name.toLower.capitalize~"(attributes, content); return cast(O)this; } 766 O "~name.toLower~"(this O)(string[string] attributes, DH5 content) { _objs ~= H5"~name.toLower.capitalize~"(attributes, content); return cast(O)this; } 767 768 O "~name.toLower~"(this O)(string id, string[string] attributes) { _objs ~= H5"~name.toLower.capitalize~"(id, attributes); return cast(O)this; } 769 O "~name.toLower~"(this O)(string id, string[string] attributes, string content) { _objs ~= H5"~name.toLower.capitalize~"(id, attributes, content); return cast(O)this; } 770 O "~name.toLower~"(this O)(string id, string[string] attributes, DH5Obj[] content...) { _objs ~= H5"~name.toLower.capitalize~"(id, attributes, content); return cast(O)this; } 771 O "~name.toLower~"(this O)(string id, string[string] attributes, DH5 content) { _objs ~= H5"~name.toLower.capitalize~"(id, attributes, content); return cast(O)this; } 772 773 O "~name.toLower~"(this O)(string id, string[] classes, string[string] attributes) { _objs ~= H5"~name.toLower.capitalize~"(id, classes, attributes); return cast(O)this; } 774 O "~name.toLower~"(this O)(string id, string[] classes, string[string] attributes, string content) { _objs ~= H5"~name.toLower.capitalize~"(id, classes, attributes, content); return cast(O)this; } 775 O "~name.toLower~"(this O)(string id, string[] classes, string[string] attributes, DH5Obj[] content...) { _objs ~= H5"~name.toLower.capitalize~"(id, classes, attributes, content); return cast(O)this; } 776 O "~name.toLower~"(this O)(string id, string[] classes, string[string] attributes, DH5 content) { _objs ~= H5"~name.toLower.capitalize~"(id, classes, attributes, content); return cast(O)this; } 777 778 O "~name.toLower~"(this O)(string[] classes, string[string] attributes) { _objs ~= H5"~name.toLower.capitalize~"(classes, attributes); return cast(O)this; } 779 O "~name.toLower~"(this O)(string[] classes, string[string] attributes, string content) { _objs ~= H5"~name.toLower.capitalize~"(classes, attributes, content); return cast(O)this; } 780 O "~name.toLower~"(this O)(string[] classes, string[string] attributes, DH5Obj[] content...) { _objs ~= H5"~name.toLower.capitalize~"(classes, attributes, content); return cast(O)this; } 781 O "~name.toLower~"(this O)(string[] classes, string[string] attributes, DH5 content) { _objs ~= H5"~name.toLower.capitalize~"(classes, attributes, content); return cast(O)this; } 782 "; 783 }