| ... | @@ -118,6 +118,20 @@ | ... | @@ -118,6 +118,20 @@ |
| 118 | function declContainsType(x){ | 118 | function declContainsType(x){ |
| 119 | console.assert("value" in x); | 119 | console.assert("value" in x); |
| 120 | | 120 | |
| | 121 | |
| | 122 | } |
| | 123 | |
| | 124 | function typeShorthandName(type) { |
| | 125 | var name = type.name; |
| | 126 | if (type.kind === typeKinds.Struct) { |
| | 127 | name = "struct"; |
| | 128 | } else if (type.kind === typeKinds.Enum) { |
| | 129 | name = "enum"; |
| | 130 | } else if (type.kind === typeKinds.Union) { |
| | 131 | name= "union"; |
| | 132 | } |
| | 133 | |
| | 134 | return name |
| 121 | } | 135 | } |
| 122 | | 136 | |
| 123 | function typeKindIsContainer(typeKind) { | 137 | function typeKindIsContainer(typeKind) { |
| ... | @@ -169,7 +183,7 @@ | ... | @@ -169,7 +183,7 @@ |
| 169 | } | 183 | } |
| 170 | | 184 | |
| 171 | if ("struct" in decl.value) { | 185 | if ("struct" in decl.value) { |
| 172 | return resolveTypeRefToTypeId(decl.value.struct.typeRef); | 186 | return resolveTypeRefToTypeId(decl.value.struct.typeRef); |
| 173 | } | 187 | } |
| 174 | | 188 | |
| 175 | console.log("TODO: handle in `resolveDeclValueTypeId` more cases: ", decl); | 189 | console.log("TODO: handle in `resolveDeclValueTypeId` more cases: ", decl); |
| ... | @@ -251,7 +265,7 @@ | ... | @@ -251,7 +265,7 @@ |
| 251 | | 265 | |
| 252 | var childDeclValue = resolveValue(childDecl.value); | 266 | var childDeclValue = resolveValue(childDecl.value); |
| 253 | if ("type" in childDeclValue && | 267 | if ("type" in childDeclValue && |
| 254 | zigAnalysis.types[childDeclValue.type].kind !== typeKinds.Fn){ | 268 | zigAnalysis.types[childDeclValue.type].kind !== typeKinds.Fn){ |
| 255 | if (i + 1 === curNav.declNames.length) { | 269 | if (i + 1 === curNav.declNames.length) { |
| 256 | curNav.declObjs.push(zigAnalysis.types[childDeclValue.type]); | 270 | curNav.declObjs.push(zigAnalysis.types[childDeclValue.type]); |
| 257 | break; | 271 | break; |
| ... | @@ -416,12 +430,29 @@ | ... | @@ -416,12 +430,29 @@ |
| 416 | } | 430 | } |
| 417 | var divDom = domListParams.children[domIndex]; | 431 | var divDom = domListParams.children[domIndex]; |
| 418 | domIndex += 1; | 432 | domIndex += 1; |
| 419 | var value = resolveValue(typeObj.params[i]); | 433 | |
| 420 | console.assert("type" in value); | 434 | |
| 421 | var argTypeIndex = value.type; | 435 | var value = typeObj.params[i]; |
| | 436 | var valueType = resolveValue(value); |
| | 437 | console.assert("type" in valueType); |
| | 438 | var argTypeIndex = valueType.type; |
| 422 | var html = '<pre>' + escapeHtml(fieldNode.name) + ": "; | 439 | var html = '<pre>' + escapeHtml(fieldNode.name) + ": "; |
| 423 | if (isVarArgs && i === typeObj.params.length - 1) { | 440 | if (isVarArgs && i === typeObj.params.length - 1) { |
| 424 | html += '...'; | 441 | html += '...'; |
| | 442 | } else if ("declRef" in value) { |
| | 443 | var decl = zigAnalysis.decls[value.declRef]; |
| | 444 | var val = resolveValue(decl.value); |
| | 445 | var valType = zigAnalysis.types[argTypeIndex]; |
| | 446 | |
| | 447 | var valTypeName = typeShorthandName(valType); |
| | 448 | |
| | 449 | html += '<a href="'+navLinkDecl(decl.name)+'">'; |
| | 450 | html += '<span class="tok-kw" style="color:lightblue;">' + decl.name + '</span>'; |
| | 451 | html += '</a>'; |
| | 452 | html += ' ('+ valTypeName +')'; |
| | 453 | } else if ("type" in value) { |
| | 454 | var name = zigAnalysis.types[value.type].name; |
| | 455 | html += '<span class="tok-kw">' + name + '</span>'; |
| 425 | } else if (argTypeIndex != null) { | 456 | } else if (argTypeIndex != null) { |
| 426 | html += typeIndexName(argTypeIndex, true, true); | 457 | html += typeIndexName(argTypeIndex, true, true); |
| 427 | } else { | 458 | } else { |
| ... | @@ -558,12 +589,12 @@ | ... | @@ -558,12 +589,12 @@ |
| 558 | var callName = declNamesCopy.pop(); | 589 | var callName = declNamesCopy.pop(); |
| 559 | | 590 | |
| 560 | callName += '('; | 591 | callName += '('; |
| 561 | for (var arg_i = 0; arg_i < callObj.args.length; arg_i += 1) { | 592 | for (var arg_i = 0; arg_i < callObj.args.length; arg_i += 1) { |
| 562 | if (arg_i !== 0) callName += ','; | 593 | if (arg_i !== 0) callName += ','; |
| 563 | var argObj = callObj.args[arg_i]; | 594 | var argObj = callObj.args[arg_i]; |
| 564 | callName += getValueText(argObj.type, argObj.value, false, false); | 595 | callName += getValueText(argObj.type, argObj.value, false, false); |
| 565 | } | 596 | } |
| 566 | callName += ')'; | 597 | callName += ')'; |
| 567 | | 598 | |
| 568 | declNamesCopy.push(callName); | 599 | declNamesCopy.push(callName); |
| 569 | return navLink(curNav.pkgNames, declNamesCopy); | 600 | return navLink(curNav.pkgNames, declNamesCopy); |
| ... | @@ -633,15 +664,15 @@ | ... | @@ -633,15 +664,15 @@ |
| 633 | | 664 | |
| 634 | // TODO make these links work | 665 | // TODO make these links work |
| 635 | //var html = '<a href="' + navLinkCall(callObj) + '">' + escapeHtml(fnDecl.name) + '</a>('; | 666 | //var html = '<a href="' + navLinkCall(callObj) + '">' + escapeHtml(fnDecl.name) + '</a>('; |
| 636 | var html = escapeHtml(fnDecl.name) + '('; | 667 | var html = escapeHtml(fnDecl.name) + '('; |
| 637 | for (var arg_i = 0; arg_i < callObj.args.length; arg_i += 1) { | 668 | for (var arg_i = 0; arg_i < callObj.args.length; arg_i += 1) { |
| 638 | if (arg_i !== 0) html += ', '; | 669 | if (arg_i !== 0) html += ', '; |
| 639 | var argObj = callObj.args[arg_i]; | 670 | var argObj = callObj.args[arg_i]; |
| 640 | html += getValueText(argObj.type, argObj.value, true, true); | 671 | html += getValueText(argObj.type, argObj.value, true, true); |
| | 672 | } |
| | 673 | html += ')'; |
| | 674 | return html; |
| 641 | } | 675 | } |
| 642 | html += ')'; | | |
| 643 | return html; | | |
| 644 | } | | |
| 645 | | 676 | |
| 646 | function getValueText(typeIndex, value, wantHtml, wantLink) { | 677 | function getValueText(typeIndex, value, wantHtml, wantLink) { |
| 647 | var typeObj = zigAnalysis.types[typeIndex]; | 678 | var typeObj = zigAnalysis.types[typeIndex]; |
| ... | @@ -677,7 +708,7 @@ | ... | @@ -677,7 +708,7 @@ |
| 677 | case typeKinds.Optional: | 708 | case typeKinds.Optional: |
| 678 | return "?" + typeIndexName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl); | 709 | return "?" + typeIndexName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl); |
| 679 | case typeKinds.Pointer: | 710 | case typeKinds.Pointer: |
| 680 | var name = ""; | 711 | var name = ""; |
| 681 | switch (typeObj.len) { | 712 | switch (typeObj.len) { |
| 682 | case pointerSizeEnum.One: | 713 | case pointerSizeEnum.One: |
| 683 | default: | 714 | default: |
| ... | @@ -832,72 +863,86 @@ | ... | @@ -832,72 +863,86 @@ |
| 832 | payloadHtml += 'fn' | 863 | payloadHtml += 'fn' |
| 833 | } | 864 | } |
| 834 | payloadHtml += '('; | 865 | payloadHtml += '('; |
| 835 | if (typeObj.params) { | 866 | if (typeObj.params) { |
| 836 | var fields = null; | 867 | var fields = null; |
| 837 | var isVarArgs = false; | 868 | var isVarArgs = false; |
| 838 | var fnNode = zigAnalysis.astNodes[fnDecl.src]; | 869 | var fnNode = zigAnalysis.astNodes[fnDecl.src]; |
| 839 | fields = fnNode.fields; | 870 | fields = fnNode.fields; |
| 840 | isVarArgs = fnNode.varArgs; | 871 | isVarArgs = fnNode.varArgs; |
| 841 | | 872 | |
| 842 | for (var i = 0; i < typeObj.params.length; i += 1) { | 873 | for (var i = 0; i < typeObj.params.length; i += 1) { |
| 843 | if (i != 0) { | 874 | if (i != 0) { |
| 844 | payloadHtml += ', '; | 875 | payloadHtml += ', '; |
| 845 | } | 876 | } |
| | 877 | var value = typeObj.params[i]; |
| | 878 | var paramValue = resolveValue(value); |
| | 879 | console.assert("type" in paramValue); |
| | 880 | var argTypeIndex = paramValue.type; |
| 846 | | 881 | |
| 847 | var paramValue = resolveValue(typeObj.params[i]); | | |
| 848 | console.assert("type" in paramValue); | | |
| 849 | var argTypeIndex = paramValue.type; | | |
| 850 | | 882 | |
| 851 | if (fields != null) { | 883 | if (fields != null) { |
| 852 | var paramNode = zigAnalysis.astNodes[fields[i]]; | 884 | var paramNode = zigAnalysis.astNodes[fields[i]]; |
| 853 | | 885 | |
| 854 | if (paramNode.varArgs) { | 886 | if (paramNode.varArgs) { |
| 855 | payloadHtml += '...'; | 887 | payloadHtml += '...'; |
| 856 | continue; | 888 | continue; |
| 857 | } | 889 | } |
| 858 | | 890 | |
| 859 | if (paramNode.noalias) { | 891 | if (paramNode.noalias) { |
| 860 | if (wantHtml) { | 892 | if (wantHtml) { |
| 861 | payloadHtml += '<span class="tok-kw">noalias</span> '; | 893 | payloadHtml += '<span class="tok-kw">noalias</span> '; |
| 862 | } else { | 894 | } else { |
| 863 | payloadHtml += 'noalias '; | 895 | payloadHtml += 'noalias '; |
| | 896 | } |
| 864 | } | 897 | } |
| 865 | } | | |
| 866 | | 898 | |
| 867 | if (paramNode.comptime) { | 899 | if (paramNode.comptime) { |
| 868 | if (wantHtml) { | 900 | if (wantHtml) { |
| 869 | payloadHtml += '<span class="tok-kw">comptime</span> '; | 901 | payloadHtml += '<span class="tok-kw">comptime</span> '; |
| 870 | } else { | 902 | } else { |
| 871 | payloadHtml += 'comptime '; | 903 | payloadHtml += 'comptime '; |
| | 904 | } |
| 872 | } | 905 | } |
| 873 | } | | |
| 874 | | 906 | |
| 875 | var paramName = paramNode.name; | 907 | var paramName = paramNode.name; |
| 876 | if (paramName != null) { | 908 | if (paramName != null) { |
| 877 | // skip if it matches the type name | 909 | // skip if it matches the type name |
| 878 | if (argTypeIndex == null || !shouldSkipParamName(argTypeIndex, paramName)) { | 910 | if (argTypeIndex == null || !shouldSkipParamName(argTypeIndex, paramName)) { |
| 879 | payloadHtml += paramName + ': '; | 911 | payloadHtml += paramName + ': '; |
| | 912 | } |
| 880 | } | 913 | } |
| 881 | } | 914 | } |
| 882 | } | | |
| 883 | | 915 | |
| 884 | if (isVarArgs && i === typeObj.args.length - 1) { | 916 | if (isVarArgs && i === typeObj.args.length - 1) { |
| 885 | payloadHtml += '...'; | 917 | payloadHtml += '...'; |
| 886 | } else if (argTypeIndex != null) { | 918 | } else if ("declRef" in value) { |
| 887 | payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink); | 919 | var decl = zigAnalysis.decls[value.declRef]; |
| 888 | } else if (wantHtml) { | 920 | var val = resolveValue(decl.value); |
| 889 | payloadHtml += '<span class="tok-kw">var</span>'; | 921 | var valType = zigAnalysis.types[argTypeIndex]; |
| 890 | } else { | 922 | |
| 891 | payloadHtml += 'var'; | 923 | var valTypeName = typeShorthandName(valType); |
| | 924 | |
| | 925 | payloadHtml += '<a href="'+navLinkDecl(decl.name)+'">'; |
| | 926 | payloadHtml += '<span class="tok-kw" style="color:lightblue;">' + decl.name + '</span>'; |
| | 927 | payloadHtml += '</a>'; |
| | 928 | } else if ("type" in value) { |
| | 929 | var name = zigAnalysis.types[value.type].name; |
| | 930 | payloadHtml += '<span class="tok-kw">' + name + '</span>'; |
| | 931 | } else if (argTypeIndex != null) { |
| | 932 | payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink); |
| | 933 | } else if (wantHtml) { |
| | 934 | payloadHtml += '<span class="tok-kw">var</span>'; |
| | 935 | } else { |
| | 936 | payloadHtml += 'var'; |
| | 937 | } |
| 892 | } | 938 | } |
| 893 | } | 939 | } |
| 894 | } | | |
| 895 | | 940 | |
| 896 | var retValue = resolveValue(typeObj.ret); | 941 | var retValue = resolveValue(typeObj.ret); |
| 897 | console.assert("type" in retValue); | 942 | console.assert("type" in retValue); |
| 898 | var retTypeIndex = retValue.type; | 943 | var retTypeIndex = retValue.type; |
| 899 | | 944 | |
| 900 | payloadHtml += ') '; | 945 | payloadHtml += ') '; |
| 901 | if (retTypeIndex != null) { | 946 | if (retTypeIndex != null) { |
| 902 | payloadHtml += typeIndexName(retTypeIndex, wantHtml, wantSubLink, fnDecl); | 947 | payloadHtml += typeIndexName(retTypeIndex, wantHtml, wantSubLink, fnDecl); |
| 903 | } else if (wantHtml) { | 948 | } else if (wantHtml) { |
| ... | @@ -1015,14 +1060,14 @@ | ... | @@ -1015,14 +1060,14 @@ |
| 1015 | var next = typeObj.pubDecls[declI]; | 1060 | var next = typeObj.pubDecls[declI]; |
| 1016 | if (prev === next) continue; | 1061 | if (prev === next) continue; |
| 1017 | // TODO instead of showing "examples" as the public declarations, | 1062 | // TODO instead of showing "examples" as the public declarations, |
| 1018 | // do logic like this: | 1063 | // do logic like this: |
| 1019 | //if (typeof(prev) !== 'object') { | 1064 | //if (typeof(prev) !== 'object') { |
| 1020 | // var newDeclId = zigAnalysis.decls.length; | 1065 | // var newDeclId = zigAnalysis.decls.length; |
| 1021 | // prev = clone(zigAnalysis.decls[prev]); | 1066 | // prev = clone(zigAnalysis.decls[prev]); |
| 1022 | // prev.id = newDeclId; | 1067 | // prev.id = newDeclId; |
| 1023 | // zigAnalysis.decls.push(prev); | 1068 | // zigAnalysis.decls.push(prev); |
| 1024 | // containerObj.pubDecls[declI] = prev; | 1069 | // containerObj.pubDecls[declI] = prev; |
| 1025 | //} | 1070 | //} |
| 1026 | //mergeDecls(prev, next, firstTypeObj, typeObj); | 1071 | //mergeDecls(prev, next, firstTypeObj, typeObj); |
| 1027 | } | 1072 | } |
| 1028 | } | 1073 | } |
| ... | @@ -1067,10 +1112,10 @@ | ... | @@ -1067,10 +1112,10 @@ |
| 1067 | switch(Object.keys(decl.value)[0]) { | 1112 | switch(Object.keys(decl.value)[0]) { |
| 1068 | case "int": | 1113 | case "int": |
| 1069 | declValueText += decl.value.int.value; | 1114 | declValueText += decl.value.int.value; |
| 1070 | break; | 1115 | break; |
| 1071 | case "float": | 1116 | case "float": |
| 1072 | declValueText += decl.value.float.value; | 1117 | declValueText += decl.value.float.value; |
| 1073 | break; | 1118 | break; |
| 1074 | default: | 1119 | default: |
| 1075 | console.log("TODO: renderValue for ", Object.keys(decl.value)[0]); | 1120 | console.log("TODO: renderValue for ", Object.keys(decl.value)[0]); |
| 1076 | declValueText += "#TODO#"; | 1121 | declValueText += "#TODO#"; |
| ... | @@ -1114,32 +1159,33 @@ | ... | @@ -1114,32 +1159,33 @@ |
| 1114 | var declLen = container.pubDecls ? container.pubDecls.length : 0; | 1159 | var declLen = container.pubDecls ? container.pubDecls.length : 0; |
| 1115 | for (var i = 0; i < declLen; i += 1) { | 1160 | for (var i = 0; i < declLen; i += 1) { |
| 1116 | var decl = zigAnalysis.decls[container.pubDecls[i]]; | 1161 | var decl = zigAnalysis.decls[container.pubDecls[i]]; |
| 1117 | var declTypeId = resolveDeclValueTypeId(decl); | 1162 | var declValue = resolveValue(decl.value); |
| 1118 | | 1163 | |
| 1119 | if (decl.kind === 'var') { | 1164 | if (decl.kind === 'var') { |
| 1120 | varsList.push(decl); | 1165 | varsList.push(decl); |
| 1121 | continue; | 1166 | continue; |
| 1122 | } else if (decl.kind === 'const') { | 1167 | } |
| 1123 | if (declTypeId === typeTypeId) { | 1168 | |
| 1124 | if (typeIsErrSet(declTypeId)) { | 1169 | if (decl.kind === 'const') { |
| | 1170 | if (!("type" in declValue)){ |
| | 1171 | valsList.push(decl); |
| | 1172 | } else { |
| | 1173 | var value = zigAnalysis.types[declValue.type]; |
| | 1174 | var kind = value.kind; |
| | 1175 | if (kind === typeKinds.Fn) { |
| | 1176 | //if (allCompTimeFnCallsHaveTypeResult(decl.type, declTypeId)) { |
| | 1177 | // typesList.push(decl); |
| | 1178 | //} else { |
| | 1179 | fnsList.push(decl); |
| | 1180 | // } |
| | 1181 | |
| | 1182 | } else if (typeIsErrSet(declValue.type)) { |
| 1125 | errSetsList.push(decl); | 1183 | errSetsList.push(decl); |
| 1126 | } else if (typeIsStructWithNoFields(declTypeId)) { | 1184 | } else if (typeIsStructWithNoFields(declValue.type)) { |
| 1127 | namespacesList.push(decl); | 1185 | namespacesList.push(decl); |
| 1128 | } else { | 1186 | } else { |
| 1129 | typesList.push(decl); | 1187 | typesList.push(decl); |
| 1130 | } | 1188 | } |
| 1131 | } else { | | |
| 1132 | var typeKind = zigAnalysis.types[declTypeId].kind; | | |
| 1133 | if (typeKind === typeKinds.Fn) { | | |
| 1134 | // TODO: this is broken but I don't understand functions yet | | |
| 1135 | if (allCompTimeFnCallsHaveTypeResult(decl.type, declTypeId)) { | | |
| 1136 | typesList.push(decl); | | |
| 1137 | } else { | | |
| 1138 | fnsList.push(decl); | | |
| 1139 | } | | |
| 1140 | } else { | | |
| 1141 | valsList.push(decl); | | |
| 1142 | } | | |
| 1143 | } | 1189 | } |
| 1144 | } | 1190 | } |
| 1145 | } | 1191 | } |
| ... | @@ -1202,7 +1248,10 @@ | ... | @@ -1202,7 +1248,10 @@ |
| 1202 | var tdFnCode = trDom.children[0]; | 1248 | var tdFnCode = trDom.children[0]; |
| 1203 | var tdDesc = trDom.children[1]; | 1249 | var tdDesc = trDom.children[1]; |
| 1204 | | 1250 | |
| 1205 | tdFnCode.innerHTML = typeIndexName(decl.type, true, true, decl, navLinkDecl(decl.name)); | 1251 | var declType = resolveValue(decl.value); |
| | 1252 | console.assert("type" in declType); |
| | 1253 | |
| | 1254 | tdFnCode.innerHTML = typeIndexName(declType.type, true, true, decl, navLinkDecl(decl.name)); |
| 1206 | | 1255 | |
| 1207 | var docs = zigAnalysis.astNodes[decl.src].docs; | 1256 | var docs = zigAnalysis.astNodes[decl.src].docs; |
| 1208 | if (docs != null) { | 1257 | if (docs != null) { |
| ... | @@ -1238,11 +1287,7 @@ | ... | @@ -1238,11 +1287,7 @@ |
| 1238 | console.assert("type" in val); | 1287 | console.assert("type" in val); |
| 1239 | var valType = zigAnalysis.types[val.type]; | 1288 | var valType = zigAnalysis.types[val.type]; |
| 1240 | | 1289 | |
| 1241 | var valTypeName = valType.name; | 1290 | var valTypeName = typeShorthandName(valType); |
| 1242 | if (valType.kind === typeKinds.Struct) { | | |
| 1243 | valTypeName = "struct"; | | |
| 1244 | } | | |
| 1245 | | | |
| 1246 | html += '<a href="'+navLinkDecl(decl.name)+'">'; | 1291 | html += '<a href="'+navLinkDecl(decl.name)+'">'; |
| 1247 | html += '<span class="tok-kw" style="color:lightblue;">' + decl.name + '</span>'; | 1292 | html += '<span class="tok-kw" style="color:lightblue;">' + decl.name + '</span>'; |
| 1248 | html += '</a>'; | 1293 | html += '</a>'; |
| ... | @@ -1430,12 +1475,12 @@ | ... | @@ -1430,12 +1475,12 @@ |
| 1430 | function computeCanonicalPackagePaths() { | 1475 | function computeCanonicalPackagePaths() { |
| 1431 | var list = new Array(zigAnalysis.packages.length); | 1476 | var list = new Array(zigAnalysis.packages.length); |
| 1432 | // Now we try to find all the packages from root. | 1477 | // Now we try to find all the packages from root. |
| 1433 | var rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg]; | 1478 | var rootPkg = zigAnalysis.packages[zigAnalysis.rootPkg]; |
| 1434 | // Breadth-first to keep the path shortest possible. | 1479 | // Breadth-first to keep the path shortest possible. |
| 1435 | var stack = [{ | 1480 | var stack = [{ |
| 1436 | path: [], | 1481 | path: [], |
| 1437 | pkg: rootPkg, | 1482 | pkg: rootPkg, |
| 1438 | }]; | 1483 | }]; |
| 1439 | while (stack.length !== 0) { | 1484 | while (stack.length !== 0) { |
| 1440 | var item = stack.shift(); | 1485 | var item = stack.shift(); |
| 1441 | for (var key in item.pkg.table) { | 1486 | for (var key in item.pkg.table) { |
| ... | @@ -1534,7 +1579,7 @@ | ... | @@ -1534,7 +1579,7 @@ |
| 1534 | | 1579 | |
| 1535 | // PHASE 1: | 1580 | // PHASE 1: |
| 1536 | // Dissect lines and determine the type for each line. | 1581 | // Dissect lines and determine the type for each line. |
| 1537 | // Also computes indentation level and removes unnecessary whitespace | 1582 | // Also computes indentation level and removes unnecessary whitespace |
| 1538 | | 1583 | |
| 1539 | var is_reading_code = false; | 1584 | var is_reading_code = false; |
| 1540 | var code_indent = 0; | 1585 | var code_indent = 0; |
| ... | @@ -1613,20 +1658,20 @@ | ... | @@ -1613,20 +1658,20 @@ |
| 1613 | | 1658 | |
| 1614 | // PHASE 2: | 1659 | // PHASE 2: |
| 1615 | // Render HTML from markdown lines. | 1660 | // Render HTML from markdown lines. |
| 1616 | // Look at each line and emit fitting HTML code | 1661 | // Look at each line and emit fitting HTML code |
| 1617 | | 1662 | |
| 1618 | function markdownInlines(innerText, stopChar) { | 1663 | function markdownInlines(innerText, stopChar) { |
| 1619 | | 1664 | |
| 1620 | // inline types: | 1665 | // inline types: |
| 1621 | // **{INLINE}** : <strong> | 1666 | // **{INLINE}** : <strong> |
| 1622 | // __{INLINE}__ : <u> | 1667 | // __{INLINE}__ : <u> |
| 1623 | // ~~{INLINE}~~ : <s> | 1668 | // ~~{INLINE}~~ : <s> |
| 1624 | // *{INLINE}* : <emph> | 1669 | // *{INLINE}* : <emph> |
| 1625 | // _{INLINE}_ : <emph> | 1670 | // _{INLINE}_ : <emph> |
| 1626 | // `{TEXT}` : <code> | 1671 | // `{TEXT}` : <code> |
| 1627 | // [{INLINE}]({URL}) : <a> | 1672 | // [{INLINE}]({URL}) : <a> |
| 1628 | //  : <img> | 1673 | //  : <img> |
| 1629 | // [[std;format.fmt]] : <a> (inner link) | 1674 | // [[std;format.fmt]] : <a> (inner link) |
| 1630 | | 1675 | |
| 1631 | const formats = [ | 1676 | const formats = [ |
| 1632 | { | 1677 | { |
| ... | @@ -1668,9 +1713,9 @@ | ... | @@ -1668,9 +1713,9 @@ |
| 1668 | if (parsing_code && in_code) { | 1713 | if (parsing_code && in_code) { |
| 1669 | if (innerText.substr(i, codetag.length) == codetag) { | 1714 | if (innerText.substr(i, codetag.length) == codetag) { |
| 1670 | // remove leading and trailing whitespace if string both starts and ends with one. | 1715 | // remove leading and trailing whitespace if string both starts and ends with one. |
| 1671 | if (currentRun[0] == " " && currentRun[currentRun.length - 1] == " ") { | 1716 | if (currentRun[0] == " " && currentRun[currentRun.length - 1] == " ") { |
| 1672 | currentRun = currentRun.substr(1, currentRun.length - 2); | 1717 | currentRun = currentRun.substr(1, currentRun.length - 2); |
| 1673 | } | 1718 | } |
| 1674 | flushRun(); | 1719 | flushRun(); |
| 1675 | i += codetag.length - 1; | 1720 | i += codetag.length - 1; |
| 1676 | in_code = false; | 1721 | in_code = false; |
| ... | @@ -1935,7 +1980,7 @@ | ... | @@ -1935,7 +1980,7 @@ |
| 1935 | startAsyncSearch(); | 1980 | startAsyncSearch(); |
| 1936 | break; | 1981 | break; |
| 1937 | case "?": | 1982 | case "?": |
| 1938 | ev.preventDefault(); | 1983 | ev.preventDefault(); |
| 1939 | ev.stopPropagation(); | 1984 | ev.stopPropagation(); |
| 1940 | showHelpModal(); | 1985 | showHelpModal(); |
| 1941 | break; | 1986 | break; |
| ... | @@ -2054,60 +2099,60 @@ | ... | @@ -2054,60 +2099,60 @@ |
| 2054 | } | 2099 | } |
| 2055 | } | 2100 | } |
| 2056 | | 2101 | |
| 2057 | function renderSearchCursor() { | 2102 | function renderSearchCursor() { |
| 2058 | for (var i = 0; i < domListSearchResults.children.length; i += 1) { | 2103 | for (var i = 0; i < domListSearchResults.children.length; i += 1) { |
| 2059 | var liDom = domListSearchResults.children[i]; | 2104 | var liDom = domListSearchResults.children[i]; |
| 2060 | if (curSearchIndex === i) { | 2105 | if (curSearchIndex === i) { |
| 2061 | liDom.classList.add("selected"); | 2106 | liDom.classList.add("selected"); |
| 2062 | } else { | 2107 | } else { |
| 2063 | liDom.classList.remove("selected"); | 2108 | liDom.classList.remove("selected"); |
| 2064 | } | | |
| 2065 | } | 2109 | } |
| 2066 | } | 2110 | } |
| | 2111 | } |
| 2067 | | 2112 | |
| 2068 | function indexNodesToFns() { | 2113 | function indexNodesToFns() { |
| 2069 | var map = {}; | 2114 | var map = {}; |
| 2070 | for (var i = 0; i < zigAnalysis.fns.length; i += 1) { | 2115 | for (var i = 0; i < zigAnalysis.fns.length; i += 1) { |
| 2071 | var fn = zigAnalysis.fns[i]; | 2116 | var fn = zigAnalysis.fns[i]; |
| 2072 | if (typeIsGenericFn(fn.type)) continue; | 2117 | if (typeIsGenericFn(fn.type)) continue; |
| 2073 | if (map[fn.src] == null) { | 2118 | if (map[fn.src] == null) { |
| 2074 | map[fn.src] = [i]; | 2119 | map[fn.src] = [i]; |
| 2075 | } else { | 2120 | } else { |
| 2076 | map[fn.src].push(i); | 2121 | map[fn.src].push(i); |
| 2077 | } | | |
| 2078 | } | 2122 | } |
| 2079 | return map; | | |
| 2080 | } | 2123 | } |
| | 2124 | return map; |
| | 2125 | } |
| 2081 | | 2126 | |
| 2082 | function indexNodesToCalls() { | 2127 | function indexNodesToCalls() { |
| 2083 | var map = {}; | 2128 | var map = {}; |
| 2084 | for (var i = 0; i < zigAnalysis.calls.length; i += 1) { | 2129 | for (var i = 0; i < zigAnalysis.calls.length; i += 1) { |
| 2085 | var call = zigAnalysis.calls[i]; | 2130 | var call = zigAnalysis.calls[i]; |
| 2086 | var fn = zigAnalysis.fns[call.fn]; | 2131 | var fn = zigAnalysis.fns[call.fn]; |
| 2087 | if (map[fn.src] == null) { | 2132 | if (map[fn.src] == null) { |
| 2088 | map[fn.src] = [i]; | 2133 | map[fn.src] = [i]; |
| 2089 | } else { | 2134 | } else { |
| 2090 | map[fn.src].push(i); | 2135 | map[fn.src].push(i); |
| 2091 | } | | |
| 2092 | } | 2136 | } |
| 2093 | return map; | | |
| 2094 | } | 2137 | } |
| | 2138 | return map; |
| | 2139 | } |
| 2095 | | 2140 | |
| 2096 | function byNameProperty(a, b) { | 2141 | function byNameProperty(a, b) { |
| 2097 | return operatorCompare(a.name, b.name); | 2142 | return operatorCompare(a.name, b.name); |
| 2098 | } | 2143 | } |
| 2099 | | 2144 | |
| 2100 | function clone(obj) { | 2145 | function clone(obj) { |
| 2101 | var res = {}; | 2146 | var res = {}; |
| 2102 | for (var key in obj) { | 2147 | for (var key in obj) { |
| 2103 | res[key] = obj[key]; | 2148 | res[key] = obj[key]; |
| 2104 | } | | |
| 2105 | return res; | | |
| 2106 | } | 2149 | } |
| | 2150 | return res; |
| | 2151 | } |
| 2107 | | 2152 | |
| 2108 | function firstObjectKey(obj) { | 2153 | function firstObjectKey(obj) { |
| 2109 | for (var key in obj) { | 2154 | for (var key in obj) { |
| 2110 | return key; | 2155 | return key; |
| 2111 | } | | |
| 2112 | } | 2156 | } |
| | 2157 | } |
| 2113 | })(); | 2158 | })(); |