authorgravatar for 14938807+xackus@users.noreply.github.comxackus <14938807+xackus@users.noreply.github.com> 2020-04-07 22:56:00+02:00
committergravatar for 14938807+xackus@users.noreply.github.comxackus <14938807+xackus@users.noreply.github.com> 2020-04-07 23:37:33+02:00
log721c76b53c706020ceb50466e5a6245739efce05
treec6215d28f17db7e230872b0c2a4774b23418f169
parentbf46117f1314653df3a70ede05aabcd599ce6b08

refactor common pattern into a function


1 files changed, 42 insertions(+), 111 deletions(-)

lib/std/special/docs/main.js+42-111
...@@ -47,6 +47,16 @@...@@ -47,6 +47,16 @@
47 var typeKinds = indexTypeKinds();47 var typeKinds = indexTypeKinds();
48 var typeTypeId = findTypeTypeId();48 var typeTypeId = findTypeTypeId();
49 var pointerSizeEnum = { One: 0, Many: 1, Slice: 2, C: 3 };49 var pointerSizeEnum = { One: 0, Many: 1, Slice: 2, C: 3 };
50 var tokenKinds = {
51 Keyword: 'tok-kw',
52 String: 'tok-str',
53 Builtin: 'tok-builtin',
54 Comment: 'tok-comment',
55 Function: 'tok-fn',
56 Null: 'tok-null',
57 Number: 'tok-number',
58 Type: 'tok-type',
59 };
5060
51 // for each package, is an array with packages to get to this one61 // for each package, is an array with packages to get to this one
52 var canonPkgPaths = computeCanonicalPackagePaths();62 var canonPkgPaths = computeCanonicalPackagePaths();
...@@ -537,18 +547,10 @@...@@ -537,18 +547,10 @@
537 var fnObj = zigAnalysis.fns[value];547 var fnObj = zigAnalysis.fns[value];
538 return typeIndexName(fnObj.type, wantHtml, wantLink);548 return typeIndexName(fnObj.type, wantHtml, wantLink);
539 case typeKinds.Int:549 case typeKinds.Int:
540 if (wantHtml) {550 return token(value, tokenKinds.Number, wantHtml);
541 return '<span class="tok-number">' + value + '</span>';
542 } else {
543 return value + "";
544 }
545 case typeKinds.Optional:551 case typeKinds.Optional:
546 if(value === 'null'){552 if(value === 'null'){
547 if (wantHtml) {553 return token(value, tokenKinds.Null, wantHtml);
548 return '<span class="tok-null">' + value + '</span>';
549 } else {
550 return value + "";
551 }
552 } else {554 } else {
553 console.trace("TODO non-null optional value printing");555 console.trace("TODO non-null optional value printing");
554 return "TODO";556 return "TODO";
...@@ -563,11 +565,7 @@...@@ -563,11 +565,7 @@
563 switch (typeObj.kind) {565 switch (typeObj.kind) {
564 case typeKinds.Array:566 case typeKinds.Array:
565 var name = "[";567 var name = "[";
566 if (wantHtml) {568 name += token(typeObj.len, tokenKinds.Number, wantHtml);
567 name += '<span class="tok-number">' + typeObj.len + '</span>';
568 } else {
569 name += typeObj.len;
570 }
571 name += "]";569 name += "]";
572 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);570 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
573 return name;571 return name;
...@@ -591,111 +589,48 @@...@@ -591,111 +589,48 @@
591 break;589 break;
592 }590 }
593 if (typeObj['const']) {591 if (typeObj['const']) {
594 if (wantHtml) {592 name += token('const', tokenKinds.Keyword, wantHtml) + ' ';
595 name += '<span class="tok-kw">const</span> ';
596 } else {
597 name += "const ";
598 }
599 }593 }
600 if (typeObj['volatile']) {594 if (typeObj['volatile']) {
601 if (wantHtml) {595 name += token('volatile', tokenKinds.Keyword, wantHtml) + ' ';
602 name += '<span class="tok-kw">volatile</span> ';
603 } else {
604 name += "volatile ";
605 }
606 }596 }
607 if (typeObj.align != null) {597 if (typeObj.align != null) {
608 if (wantHtml) {598 name += token('align', tokenKinds.Keyword, wantHtml) + '(';
609 name += '<span class="tok-kw">align</span>(';599 name += token(typeObj.align, tokenKinds.Number, wantHtml);
610 } else {600
611 name += "align(";
612 }
613 if (wantHtml) {
614 name += '<span class="tok-number">' + typeObj.align + '</span>';
615 } else {
616 name += typeObj.align;
617 }
618 if (typeObj.hostIntBytes != null) {601 if (typeObj.hostIntBytes != null) {
619 name += ":";602 name += ":";
620 if (wantHtml) {603 name += token(typeObj.bitOffsetInHost, tokenKinds.Number, wantHtml);
621 name += '<span class="tok-number">' + typeObj.bitOffsetInHost + '</span>';
622 } else {
623 name += typeObj.bitOffsetInHost;
624 }
625 name += ":";604 name += ":";
626 if (wantHtml) {605 name += token(typeObj.hostIntBytes, tokenKinds.Number, wantHtml);
627 name += '<span class="tok-number">' + typeObj.hostIntBytes + '</span>';
628 } else {
629 name += typeObj.hostIntBytes;
630 }
631 }606 }
632 name += ") ";607 name += ") ";
633 }608 }
634 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);609 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
635 return name;610 return name;
636 case typeKinds.Float:611 case typeKinds.Float:
637 if (wantHtml) {612 return token('f' + typeObj.bits, tokenKinds.Type, wantHtml);
638 return '<span class="tok-type">f' + typeObj.bits + '</span>';
639 } else {
640 return "f" + typeObj.bits;
641 }
642 case typeKinds.Int:613 case typeKinds.Int:
643 var signed = (typeObj.i != null) ? 'i' : 'u';614 var signed = (typeObj.i != null) ? 'i' : 'u';
644 var bits = typeObj[signed];615 var bits = typeObj[signed];
645 if (wantHtml) {616 return token(signed + bits, tokenKinds.Type, wantHtml);
646 return '<span class="tok-type">' + signed + bits + '</span>';
647 } else {
648 return signed + bits;
649 }
650 case typeKinds.ComptimeInt:617 case typeKinds.ComptimeInt:
651 if (wantHtml) {618 return token('comptime_int', tokenKinds.Type, wantHtml);
652 return '<span class="tok-type">comptime_int</span>';
653 } else {
654 return "comptime_int";
655 }
656 case typeKinds.ComptimeFloat:619 case typeKinds.ComptimeFloat:
657 if (wantHtml) {620 return token('comptime_float', tokenKinds.Type, wantHtml);
658 return '<span class="tok-type">comptime_float</span>';
659 } else {
660 return "comptime_float";
661 }
662 case typeKinds.Type:621 case typeKinds.Type:
663 if (wantHtml) {622 return token('type', tokenKinds.Type, wantHtml);
664 return '<span class="tok-type">type</span>';
665 } else {
666 return "type";
667 }
668 case typeKinds.Bool:623 case typeKinds.Bool:
669 if (wantHtml) {624 return token('bool', tokenKinds.Type, wantHtml);
670 return '<span class="tok-type">bool</span>';
671 } else {
672 return "bool";
673 }
674 case typeKinds.Void:625 case typeKinds.Void:
675 if (wantHtml) {626 return token('void', tokenKinds.Type, wantHtml);
676 return '<span class="tok-type">void</span>';
677 } else {
678 return "void";
679 }
680 case typeKinds.EnumLiteral:627 case typeKinds.EnumLiteral:
681 if (wantHtml) {628 return token('(enum literal)', tokenKinds.Type, wantHtml);
682 return '<span class="tok-type">(enum literal)</span>';
683 } else {
684 return "(enum literal)";
685 }
686 case typeKinds.NoReturn:629 case typeKinds.NoReturn:
687 if (wantHtml) {630 return token('noreturn', tokenKinds.Type, wantHtml);
688 return '<span class="tok-type">noreturn</span>';
689 } else {
690 return "noreturn";
691 }
692 case typeKinds.ErrorSet:631 case typeKinds.ErrorSet:
693 if (typeObj.errors == null) {632 if (typeObj.errors == null) {
694 if (wantHtml) {633 return token('anyerror', tokenKinds.Type, wantHtml);
695 return '<span class="tok-type">anyerror</span>';
696 } else {
697 return "anyerror";
698 }
699 } else {634 } else {
700 if (wantHtml) {635 if (wantHtml) {
701 return escapeHtml(typeObj.name);636 return escapeHtml(typeObj.name);
...@@ -756,19 +691,11 @@...@@ -756,19 +691,11 @@
756 }691 }
757692
758 if (paramNode.noalias) {693 if (paramNode.noalias) {
759 if (wantHtml) {694 payloadHtml += token('noalias', tokenKinds.Keyword, wantHtml) + ' ';
760 payloadHtml += '<span class="tok-kw">noalias</span> ';
761 } else {
762 payloadHtml += 'noalias ';
763 }
764 }695 }
765696
766 if (paramNode.comptime) {697 if (paramNode.comptime) {
767 if (wantHtml) {698 payloadHtml += token('comptime', tokenKinds.Keyword, wantHtml) + ' ';
768 payloadHtml += '<span class="tok-kw">comptime</span> ';
769 } else {
770 payloadHtml += 'comptime ';
771 }
772 }699 }
773700
774 var paramName = paramNode.name;701 var paramName = paramNode.name;
...@@ -784,10 +711,8 @@...@@ -784,10 +711,8 @@
784 payloadHtml += '...';711 payloadHtml += '...';
785 } else if (argTypeIndex != null) {712 } else if (argTypeIndex != null) {
786 payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);713 payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);
787 } else if (wantHtml) {
788 payloadHtml += '<span class="tok-kw">var</span>';
789 } else {714 } else {
790 payloadHtml += 'var';715 payloadHtml += token('var', tokenKinds.Keyword, wantHtml);
791 }716 }
792 }717 }
793 }718 }
...@@ -795,10 +720,8 @@...@@ -795,10 +720,8 @@
795 payloadHtml += ') ';720 payloadHtml += ') ';
796 if (typeObj.ret != null) {721 if (typeObj.ret != null) {
797 payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl);722 payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl);
798 } else if (wantHtml) {
799 payloadHtml += '<span class="tok-kw">var</span>';
800 } else {723 } else {
801 payloadHtml += 'var';724 payloadHtml += token('var', tokenKinds.Keyword, wantHtml);
802 }725 }
803 return payloadHtml;726 return payloadHtml;
804 default:727 default:
...@@ -1973,4 +1896,12 @@...@@ -1973,4 +1896,12 @@
1973 return key;1896 return key;
1974 }1897 }
1975 }1898 }
1899
1900 function token(value, tokenClass, wantHtml){
1901 if(wantHtml){
1902 return '<span class="' + tokenClass + '">' + value + '</span>';
1903 } else {
1904 return value + '';
1905 }
1906 }
1976})();1907})();