// pastebin.run
// Copyright (C) 2022 Konrad Borowski
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
import { For, Show } from "solid-js";
import Wrapper from "../models/Wrapper";
import { createLocalStorageState } from "../options";
function parseOutput(wrapper: Wrapper, output: string) {
return (
x.length > 1 && (!wrapper.isFormatter || !x.startsWith("O"))
)}
fallback={(no output)}
>
{(item) => {
const firstChar = item[0];
if (firstChar === "O") {
return item.substring(1);
}
if (firstChar === "E") {
return {item.substring(1)};
}
return item;
}}
);
}
function runAsmFilter(output: string) {
return output.replace(
/(?:\t\.(?:text|file|section|globl|p2align|type|cfi_.*|size|section)\b|.Lfunc_end).*\n?/g,
""
);
}
export default function OutputBox({
output,
wrapper,
}: {
output: { output: string; status: number | null };
wrapper: Wrapper;
}) {
const [filterAsmDirectivesOrig, setFilterAsmDirectives] =
createLocalStorageState("filterAsmDirectives", "true");
const filterAsmDirectives = () => JSON.parse(filterAsmDirectivesOrig());
return (
<>
{parseOutput(
wrapper,
wrapper.isAsm && filterAsmDirectives()
? runAsmFilter(output.output)
: output.output
)}
>
);
}