| ... | ... | @@ -49,6 +49,16 @@ |
| 49 | 49 | var typeKinds = indexTypeKinds(); |
| 50 | 50 | var typeTypeId = findTypeTypeId(); |
| 51 | 51 | var pointerSizeEnum = { One: 0, Many: 1, Slice: 2, C: 3 }; |
| 52 | var tokenKinds = { |
| 53 | Keyword: 'tok-kw', |
| 54 | String: 'tok-str', |
| 55 | Builtin: 'tok-builtin', |
| 56 | Comment: 'tok-comment', |
| 57 | Function: 'tok-fn', |
| 58 | Null: 'tok-null', |
| 59 | Number: 'tok-number', |
| 60 | Type: 'tok-type', |
| 61 | }; |
| 52 | 62 | |
| 53 | 63 | // for each package, is an array with packages to get to this one |
| 54 | 64 | var canonPkgPaths = computeCanonicalPackagePaths(); |
| ... | ... | @@ -532,13 +542,17 @@ |
| 532 | 542 | var fnObj = zigAnalysis.fns[value]; |
| 533 | 543 | return typeIndexName(fnObj.type, wantHtml, wantLink); |
| 534 | 544 | case typeKinds.Int: |
| 535 | | if (wantHtml) { |
| 536 | | return '<span class="tok-number">' + value + '</span>'; |
| 545 | return token(value, tokenKinds.Number, wantHtml); |
| 546 | case typeKinds.Optional: |
| 547 | if(value === 'null'){ |
| 548 | return token(value, tokenKinds.Null, wantHtml); |
| 537 | 549 | } else { |
| 538 | | return value + ""; |
| 550 | console.trace("TODO non-null optional value printing"); |
| 551 | return "TODO"; |
| 539 | 552 | } |
| 540 | 553 | default: |
| 541 | 554 | console.trace("TODO implement getValueText for this type:", zigAnalysis.typeKinds[typeObj.kind]); |
| 555 | return "TODO"; |
| 542 | 556 | } |
| 543 | 557 | } |
| 544 | 558 | |
| ... | ... | @@ -546,11 +560,7 @@ |
| 546 | 560 | switch (typeObj.kind) { |
| 547 | 561 | case typeKinds.Array: |
| 548 | 562 | var name = "["; |
| 549 | | if (wantHtml) { |
| 550 | | name += '<span class="tok-number">' + typeObj.len + '</span>'; |
| 551 | | } else { |
| 552 | | name += typeObj.len; |
| 553 | | } |
| 563 | name += token(typeObj.len, tokenKinds.Number, wantHtml); |
| 554 | 564 | name += "]"; |
| 555 | 565 | name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null); |
| 556 | 566 | return name; |
| ... | ... | @@ -574,111 +584,48 @@ |
| 574 | 584 | break; |
| 575 | 585 | } |
| 576 | 586 | if (typeObj['const']) { |
| 577 | | if (wantHtml) { |
| 578 | | name += '<span class="tok-kw">const</span> '; |
| 579 | | } else { |
| 580 | | name += "const "; |
| 581 | | } |
| 587 | name += token('const', tokenKinds.Keyword, wantHtml) + ' '; |
| 582 | 588 | } |
| 583 | 589 | if (typeObj['volatile']) { |
| 584 | | if (wantHtml) { |
| 585 | | name += '<span class="tok-kw">volatile</span> '; |
| 586 | | } else { |
| 587 | | name += "volatile "; |
| 588 | | } |
| 590 | name += token('volatile', tokenKinds.Keyword, wantHtml) + ' '; |
| 589 | 591 | } |
| 590 | 592 | if (typeObj.align != null) { |
| 591 | | if (wantHtml) { |
| 592 | | name += '<span class="tok-kw">align</span>('; |
| 593 | | } else { |
| 594 | | name += "align("; |
| 595 | | } |
| 596 | | if (wantHtml) { |
| 597 | | name += '<span class="tok-number">' + typeObj.align + '</span>'; |
| 598 | | } else { |
| 599 | | name += typeObj.align; |
| 600 | | } |
| 593 | name += token('align', tokenKinds.Keyword, wantHtml) + '('; |
| 594 | name += token(typeObj.align, tokenKinds.Number, wantHtml); |
| 595 | |
| 601 | 596 | if (typeObj.hostIntBytes != null) { |
| 602 | 597 | name += ":"; |
| 603 | | if (wantHtml) { |
| 604 | | name += '<span class="tok-number">' + typeObj.bitOffsetInHost + '</span>'; |
| 605 | | } else { |
| 606 | | name += typeObj.bitOffsetInHost; |
| 607 | | } |
| 598 | name += token(typeObj.bitOffsetInHost, tokenKinds.Number, wantHtml); |
| 608 | 599 | name += ":"; |
| 609 | | if (wantHtml) { |
| 610 | | name += '<span class="tok-number">' + typeObj.hostIntBytes + '</span>'; |
| 611 | | } else { |
| 612 | | name += typeObj.hostIntBytes; |
| 613 | | } |
| 600 | name += token(typeObj.hostIntBytes, tokenKinds.Number, wantHtml); |
| 614 | 601 | } |
| 615 | 602 | name += ") "; |
| 616 | 603 | } |
| 617 | 604 | name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null); |
| 618 | 605 | return name; |
| 619 | 606 | case typeKinds.Float: |
| 620 | | if (wantHtml) { |
| 621 | | return '<span class="tok-type">f' + typeObj.bits + '</span>'; |
| 622 | | } else { |
| 623 | | return "f" + typeObj.bits; |
| 624 | | } |
| 607 | return token('f' + typeObj.bits, tokenKinds.Type, wantHtml); |
| 625 | 608 | case typeKinds.Int: |
| 626 | 609 | var signed = (typeObj.i != null) ? 'i' : 'u'; |
| 627 | 610 | var bits = typeObj[signed]; |
| 628 | | if (wantHtml) { |
| 629 | | return '<span class="tok-type">' + signed + bits + '</span>'; |
| 630 | | } else { |
| 631 | | return signed + bits; |
| 632 | | } |
| 611 | return token(signed + bits, tokenKinds.Type, wantHtml); |
| 633 | 612 | case typeKinds.ComptimeInt: |
| 634 | | if (wantHtml) { |
| 635 | | return '<span class="tok-type">comptime_int</span>'; |
| 636 | | } else { |
| 637 | | return "comptime_int"; |
| 638 | | } |
| 613 | return token('comptime_int', tokenKinds.Type, wantHtml); |
| 639 | 614 | case typeKinds.ComptimeFloat: |
| 640 | | if (wantHtml) { |
| 641 | | return '<span class="tok-type">comptime_float</span>'; |
| 642 | | } else { |
| 643 | | return "comptime_float"; |
| 644 | | } |
| 615 | return token('comptime_float', tokenKinds.Type, wantHtml); |
| 645 | 616 | case typeKinds.Type: |
| 646 | | if (wantHtml) { |
| 647 | | return '<span class="tok-type">type</span>'; |
| 648 | | } else { |
| 649 | | return "type"; |
| 650 | | } |
| 617 | return token('type', tokenKinds.Type, wantHtml); |
| 651 | 618 | case typeKinds.Bool: |
| 652 | | if (wantHtml) { |
| 653 | | return '<span class="tok-type">bool</span>'; |
| 654 | | } else { |
| 655 | | return "bool"; |
| 656 | | } |
| 619 | return token('bool', tokenKinds.Type, wantHtml); |
| 657 | 620 | case typeKinds.Void: |
| 658 | | if (wantHtml) { |
| 659 | | return '<span class="tok-type">void</span>'; |
| 660 | | } else { |
| 661 | | return "void"; |
| 662 | | } |
| 621 | return token('void', tokenKinds.Type, wantHtml); |
| 663 | 622 | case typeKinds.EnumLiteral: |
| 664 | | if (wantHtml) { |
| 665 | | return '<span class="tok-type">(enum literal)</span>'; |
| 666 | | } else { |
| 667 | | return "(enum literal)"; |
| 668 | | } |
| 623 | return token('(enum literal)', tokenKinds.Type, wantHtml); |
| 669 | 624 | case typeKinds.NoReturn: |
| 670 | | if (wantHtml) { |
| 671 | | return '<span class="tok-type">noreturn</span>'; |
| 672 | | } else { |
| 673 | | return "noreturn"; |
| 674 | | } |
| 625 | return token('noreturn', tokenKinds.Type, wantHtml); |
| 675 | 626 | case typeKinds.ErrorSet: |
| 676 | 627 | if (typeObj.errors == null) { |
| 677 | | if (wantHtml) { |
| 678 | | return '<span class="tok-type">anyerror</span>'; |
| 679 | | } else { |
| 680 | | return "anyerror"; |
| 681 | | } |
| 628 | return token('anyerror', tokenKinds.Type, wantHtml); |
| 682 | 629 | } else { |
| 683 | 630 | if (wantHtml) { |
| 684 | 631 | return escapeHtml(typeObj.name); |
| ... | ... | @@ -739,19 +686,11 @@ |
| 739 | 686 | } |
| 740 | 687 | |
| 741 | 688 | if (paramNode.noalias) { |
| 742 | | if (wantHtml) { |
| 743 | | payloadHtml += '<span class="tok-kw">noalias</span> '; |
| 744 | | } else { |
| 745 | | payloadHtml += 'noalias '; |
| 746 | | } |
| 689 | payloadHtml += token('noalias', tokenKinds.Keyword, wantHtml) + ' '; |
| 747 | 690 | } |
| 748 | 691 | |
| 749 | 692 | if (paramNode.comptime) { |
| 750 | | if (wantHtml) { |
| 751 | | payloadHtml += '<span class="tok-kw">comptime</span> '; |
| 752 | | } else { |
| 753 | | payloadHtml += 'comptime '; |
| 754 | | } |
| 693 | payloadHtml += token('comptime', tokenKinds.Keyword, wantHtml) + ' '; |
| 755 | 694 | } |
| 756 | 695 | |
| 757 | 696 | var paramName = paramNode.name; |
| ... | ... | @@ -767,10 +706,8 @@ |
| 767 | 706 | payloadHtml += '...'; |
| 768 | 707 | } else if (argTypeIndex != null) { |
| 769 | 708 | payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink); |
| 770 | | } else if (wantHtml) { |
| 771 | | payloadHtml += '<span class="tok-kw">var</span>'; |
| 772 | 709 | } else { |
| 773 | | payloadHtml += 'var'; |
| 710 | payloadHtml += token('var', tokenKinds.Keyword, wantHtml); |
| 774 | 711 | } |
| 775 | 712 | } |
| 776 | 713 | } |
| ... | ... | @@ -778,10 +715,8 @@ |
| 778 | 715 | payloadHtml += ') '; |
| 779 | 716 | if (typeObj.ret != null) { |
| 780 | 717 | payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl); |
| 781 | | } else if (wantHtml) { |
| 782 | | payloadHtml += '<span class="tok-kw">var</span>'; |
| 783 | 718 | } else { |
| 784 | | payloadHtml += 'var'; |
| 719 | payloadHtml += token('var', tokenKinds.Keyword, wantHtml); |
| 785 | 720 | } |
| 786 | 721 | return payloadHtml; |
| 787 | 722 | default: |
| ... | ... | @@ -2032,4 +1967,12 @@ |
| 2032 | 1967 | return key; |
| 2033 | 1968 | } |
| 2034 | 1969 | } |
| 1970 | |
| 1971 | function token(value, tokenClass, wantHtml){ |
| 1972 | if(wantHtml){ |
| 1973 | return '<span class="' + tokenClass + '">' + value + '</span>'; |
| 1974 | } else { |
| 1975 | return value + ''; |
| 1976 | } |
| 1977 | } |
| 2035 | 1978 | })(); |