| ... | ... | @@ -781,106 +781,119 @@ fn tokenizeAndPrintRaw(docgen_tokenizer: *Tokenizer, out: anytype, source_token: |
| 781 | 781 | next_tok_is_fn = false; |
| 782 | 782 | |
| 783 | 783 | const token = tokenizer.next(); |
| 784 | if (mem.indexOf(u8, src[index..token.loc.start], "//")) |comment_start_off| { |
| 785 | // render one comment |
| 786 | const comment_start = index + comment_start_off; |
| 787 | const comment_end_off = mem.indexOf(u8, src[comment_start .. token.loc.start], "\n"); |
| 788 | const comment_end = if (comment_end_off) |o| comment_start + o else token.loc.start; |
| 789 | |
| 790 | try writeEscaped(out, src[index..comment_start]); |
| 791 | try out.writeAll("<span class=\"tok-comment\">"); |
| 792 | try writeEscaped(out, src[comment_start .. comment_end]); |
| 793 | try out.writeAll("</span>"); |
| 794 | index = comment_end; |
| 795 | tokenizer.index = index; |
| 796 | continue; |
| 797 | } |
| 798 | |
| 784 | 799 | try writeEscaped(out, src[index..token.loc.start]); |
| 785 | | switch (token.id) { |
| 786 | | .Eof => break, |
| 787 | | |
| 788 | | .Keyword_align, |
| 789 | | .Keyword_and, |
| 790 | | .Keyword_asm, |
| 791 | | .Keyword_async, |
| 792 | | .Keyword_await, |
| 793 | | .Keyword_break, |
| 794 | | .Keyword_catch, |
| 795 | | .Keyword_comptime, |
| 796 | | .Keyword_const, |
| 797 | | .Keyword_continue, |
| 798 | | .Keyword_defer, |
| 799 | | .Keyword_else, |
| 800 | | .Keyword_enum, |
| 801 | | .Keyword_errdefer, |
| 802 | | .Keyword_error, |
| 803 | | .Keyword_export, |
| 804 | | .Keyword_extern, |
| 805 | | .Keyword_for, |
| 806 | | .Keyword_if, |
| 807 | | .Keyword_inline, |
| 808 | | .Keyword_noalias, |
| 809 | | .Keyword_noinline, |
| 810 | | .Keyword_nosuspend, |
| 811 | | .Keyword_opaque, |
| 812 | | .Keyword_or, |
| 813 | | .Keyword_orelse, |
| 814 | | .Keyword_packed, |
| 815 | | .Keyword_anyframe, |
| 816 | | .Keyword_pub, |
| 817 | | .Keyword_resume, |
| 818 | | .Keyword_return, |
| 819 | | .Keyword_linksection, |
| 820 | | .Keyword_callconv, |
| 821 | | .Keyword_struct, |
| 822 | | .Keyword_suspend, |
| 823 | | .Keyword_switch, |
| 824 | | .Keyword_test, |
| 825 | | .Keyword_threadlocal, |
| 826 | | .Keyword_try, |
| 827 | | .Keyword_union, |
| 828 | | .Keyword_unreachable, |
| 829 | | .Keyword_usingnamespace, |
| 830 | | .Keyword_var, |
| 831 | | .Keyword_volatile, |
| 832 | | .Keyword_allowzero, |
| 833 | | .Keyword_while, |
| 834 | | .Keyword_anytype, |
| 800 | switch (token.tag) { |
| 801 | .eof => break, |
| 802 | |
| 803 | .keyword_align, |
| 804 | .keyword_and, |
| 805 | .keyword_asm, |
| 806 | .keyword_async, |
| 807 | .keyword_await, |
| 808 | .keyword_break, |
| 809 | .keyword_catch, |
| 810 | .keyword_comptime, |
| 811 | .keyword_const, |
| 812 | .keyword_continue, |
| 813 | .keyword_defer, |
| 814 | .keyword_else, |
| 815 | .keyword_enum, |
| 816 | .keyword_errdefer, |
| 817 | .keyword_error, |
| 818 | .keyword_export, |
| 819 | .keyword_extern, |
| 820 | .keyword_for, |
| 821 | .keyword_if, |
| 822 | .keyword_inline, |
| 823 | .keyword_noalias, |
| 824 | .keyword_noinline, |
| 825 | .keyword_nosuspend, |
| 826 | .keyword_opaque, |
| 827 | .keyword_or, |
| 828 | .keyword_orelse, |
| 829 | .keyword_packed, |
| 830 | .keyword_anyframe, |
| 831 | .keyword_pub, |
| 832 | .keyword_resume, |
| 833 | .keyword_return, |
| 834 | .keyword_linksection, |
| 835 | .keyword_callconv, |
| 836 | .keyword_struct, |
| 837 | .keyword_suspend, |
| 838 | .keyword_switch, |
| 839 | .keyword_test, |
| 840 | .keyword_threadlocal, |
| 841 | .keyword_try, |
| 842 | .keyword_union, |
| 843 | .keyword_unreachable, |
| 844 | .keyword_usingnamespace, |
| 845 | .keyword_var, |
| 846 | .keyword_volatile, |
| 847 | .keyword_allowzero, |
| 848 | .keyword_while, |
| 849 | .keyword_anytype, |
| 835 | 850 | => { |
| 836 | 851 | try out.writeAll("<span class=\"tok-kw\">"); |
| 837 | 852 | try writeEscaped(out, src[token.loc.start..token.loc.end]); |
| 838 | 853 | try out.writeAll("</span>"); |
| 839 | 854 | }, |
| 840 | 855 | |
| 841 | | .Keyword_fn => { |
| 856 | .keyword_fn => { |
| 842 | 857 | try out.writeAll("<span class=\"tok-kw\">"); |
| 843 | 858 | try writeEscaped(out, src[token.loc.start..token.loc.end]); |
| 844 | 859 | try out.writeAll("</span>"); |
| 845 | 860 | next_tok_is_fn = true; |
| 846 | 861 | }, |
| 847 | 862 | |
| 848 | | .Keyword_undefined, |
| 849 | | .Keyword_null, |
| 850 | | .Keyword_true, |
| 851 | | .Keyword_false, |
| 863 | .keyword_undefined, |
| 864 | .keyword_null, |
| 865 | .keyword_true, |
| 866 | .keyword_false, |
| 852 | 867 | => { |
| 853 | 868 | try out.writeAll("<span class=\"tok-null\">"); |
| 854 | 869 | try writeEscaped(out, src[token.loc.start..token.loc.end]); |
| 855 | 870 | try out.writeAll("</span>"); |
| 856 | 871 | }, |
| 857 | 872 | |
| 858 | | .StringLiteral, |
| 859 | | .MultilineStringLiteralLine, |
| 860 | | .CharLiteral, |
| 873 | .string_literal, |
| 874 | .multiline_string_literal_line, |
| 875 | .char_literal, |
| 861 | 876 | => { |
| 862 | 877 | try out.writeAll("<span class=\"tok-str\">"); |
| 863 | 878 | try writeEscaped(out, src[token.loc.start..token.loc.end]); |
| 864 | 879 | try out.writeAll("</span>"); |
| 865 | 880 | }, |
| 866 | 881 | |
| 867 | | .Builtin => { |
| 882 | .builtin => { |
| 868 | 883 | try out.writeAll("<span class=\"tok-builtin\">"); |
| 869 | 884 | try writeEscaped(out, src[token.loc.start..token.loc.end]); |
| 870 | 885 | try out.writeAll("</span>"); |
| 871 | 886 | }, |
| 872 | 887 | |
| 873 | | .LineComment, |
| 874 | | .DocComment, |
| 875 | | .ContainerDocComment, |
| 876 | | .ShebangLine, |
| 888 | .doc_comment, |
| 889 | .container_doc_comment, |
| 877 | 890 | => { |
| 878 | 891 | try out.writeAll("<span class=\"tok-comment\">"); |
| 879 | 892 | try writeEscaped(out, src[token.loc.start..token.loc.end]); |
| 880 | 893 | try out.writeAll("</span>"); |
| 881 | 894 | }, |
| 882 | 895 | |
| 883 | | .Identifier => { |
| 896 | .identifier => { |
| 884 | 897 | if (prev_tok_was_fn) { |
| 885 | 898 | try out.writeAll("<span class=\"tok-fn\">"); |
| 886 | 899 | try writeEscaped(out, src[token.loc.start..token.loc.end]); |
| ... | ... | @@ -908,71 +921,71 @@ fn tokenizeAndPrintRaw(docgen_tokenizer: *Tokenizer, out: anytype, source_token: |
| 908 | 921 | } |
| 909 | 922 | }, |
| 910 | 923 | |
| 911 | | .IntegerLiteral, |
| 912 | | .FloatLiteral, |
| 924 | .integer_literal, |
| 925 | .float_literal, |
| 913 | 926 | => { |
| 914 | 927 | try out.writeAll("<span class=\"tok-number\">"); |
| 915 | 928 | try writeEscaped(out, src[token.loc.start..token.loc.end]); |
| 916 | 929 | try out.writeAll("</span>"); |
| 917 | 930 | }, |
| 918 | 931 | |
| 919 | | .Bang, |
| 920 | | .Pipe, |
| 921 | | .PipePipe, |
| 922 | | .PipeEqual, |
| 923 | | .Equal, |
| 924 | | .EqualEqual, |
| 925 | | .EqualAngleBracketRight, |
| 926 | | .BangEqual, |
| 927 | | .LParen, |
| 928 | | .RParen, |
| 929 | | .Semicolon, |
| 930 | | .Percent, |
| 931 | | .PercentEqual, |
| 932 | | .LBrace, |
| 933 | | .RBrace, |
| 934 | | .LBracket, |
| 935 | | .RBracket, |
| 936 | | .Period, |
| 937 | | .PeriodAsterisk, |
| 938 | | .Ellipsis2, |
| 939 | | .Ellipsis3, |
| 940 | | .Caret, |
| 941 | | .CaretEqual, |
| 942 | | .Plus, |
| 943 | | .PlusPlus, |
| 944 | | .PlusEqual, |
| 945 | | .PlusPercent, |
| 946 | | .PlusPercentEqual, |
| 947 | | .Minus, |
| 948 | | .MinusEqual, |
| 949 | | .MinusPercent, |
| 950 | | .MinusPercentEqual, |
| 951 | | .Asterisk, |
| 952 | | .AsteriskEqual, |
| 953 | | .AsteriskAsterisk, |
| 954 | | .AsteriskPercent, |
| 955 | | .AsteriskPercentEqual, |
| 956 | | .Arrow, |
| 957 | | .Colon, |
| 958 | | .Slash, |
| 959 | | .SlashEqual, |
| 960 | | .Comma, |
| 961 | | .Ampersand, |
| 962 | | .AmpersandEqual, |
| 963 | | .QuestionMark, |
| 964 | | .AngleBracketLeft, |
| 965 | | .AngleBracketLeftEqual, |
| 966 | | .AngleBracketAngleBracketLeft, |
| 967 | | .AngleBracketAngleBracketLeftEqual, |
| 968 | | .AngleBracketRight, |
| 969 | | .AngleBracketRightEqual, |
| 970 | | .AngleBracketAngleBracketRight, |
| 971 | | .AngleBracketAngleBracketRightEqual, |
| 972 | | .Tilde, |
| 932 | .bang, |
| 933 | .pipe, |
| 934 | .pipe_pipe, |
| 935 | .pipe_equal, |
| 936 | .equal, |
| 937 | .equal_equal, |
| 938 | .equal_angle_bracket_right, |
| 939 | .bang_equal, |
| 940 | .l_paren, |
| 941 | .r_paren, |
| 942 | .semicolon, |
| 943 | .percent, |
| 944 | .percent_equal, |
| 945 | .l_brace, |
| 946 | .r_brace, |
| 947 | .l_bracket, |
| 948 | .r_bracket, |
| 949 | .period, |
| 950 | .period_asterisk, |
| 951 | .ellipsis2, |
| 952 | .ellipsis3, |
| 953 | .caret, |
| 954 | .caret_equal, |
| 955 | .plus, |
| 956 | .plus_plus, |
| 957 | .plus_equal, |
| 958 | .plus_percent, |
| 959 | .plus_percent_equal, |
| 960 | .minus, |
| 961 | .minus_equal, |
| 962 | .minus_percent, |
| 963 | .minus_percent_equal, |
| 964 | .asterisk, |
| 965 | .asterisk_equal, |
| 966 | .asterisk_asterisk, |
| 967 | .asterisk_percent, |
| 968 | .asterisk_percent_equal, |
| 969 | .arrow, |
| 970 | .colon, |
| 971 | .slash, |
| 972 | .slash_equal, |
| 973 | .comma, |
| 974 | .ampersand, |
| 975 | .ampersand_equal, |
| 976 | .question_mark, |
| 977 | .angle_bracket_left, |
| 978 | .angle_bracket_left_equal, |
| 979 | .angle_bracket_angle_bracket_left, |
| 980 | .angle_bracket_angle_bracket_left_equal, |
| 981 | .angle_bracket_right, |
| 982 | .angle_bracket_right_equal, |
| 983 | .angle_bracket_angle_bracket_right, |
| 984 | .angle_bracket_angle_bracket_right_equal, |
| 985 | .tilde, |
| 973 | 986 | => try writeEscaped(out, src[token.loc.start..token.loc.end]), |
| 974 | 987 | |
| 975 | | .Invalid, .Invalid_ampersands, .Invalid_periodasterisks => return parseError( |
| 988 | .invalid, .invalid_ampersands, .invalid_periodasterisks => return parseError( |
| 976 | 989 | docgen_tokenizer, |
| 977 | 990 | source_token, |
| 978 | 991 | "syntax error", |