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