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