STUDIO HAZE · jeniapp
Topaz source
Open by house policy. Topaz is our own language.
Topaz 5.20.2 · 63 files
apps/circuit/ui/inspector.tpz
Topaz · 2119 B · Original file
1
// 검사 패널. core.truthtable 이 계산한 진리표를 표로 그리고, 고장을 넣었으면 그 사실을 알립니다.2
// 입력은 진리표나 오류 문구와 고장 여부이고 출력은 HTML 조각입니다. 켜진 칸은 신호 색으로 칠합니다.3
// 같은 표면 늘 같은 조각이 나옵니다. 아이디는 파서가 영숫자와 밑줄만 받으므로 그대로 넣습니다.4
// 표를 계산하지 않습니다.5
// Inspector panel: the engine-computed truth table, with a note when faults are injected.7
import core.truthtable8
import ui.signalviz10
let 표스타일 = "<style>.truth\{border-collapse:collapse;font-family:monospace;font-size:12px;margin-top:6px\}.truth th,.truth td\{padding:2px 9px;text-align:center\}.truth .sep\{color:#9AA1A8\}</style>"12
function 비트칸(비트: int) -> string {13
let 색 = if 비트 == 1 { signalviz.시그널 } else { signalviz.흑연 }14
"<td style=\"color:{색}\">{비트}</td>"15
}17
function 표그리기(표: truthtable.진리표, 고장있음: bool) -> string {18
let 머리행 = "<tr>" + 표.입력들.map(이름 => "<th>{이름}</th>").join("") + "<th class=\"sep\">→</th>" + 표.출력들.map(이름 => "<th>{이름}</th>").join("") + "</tr>"19
let 본문행들 = 표.행들.map(행 => "<tr>" + 행.입력값들.map(비트칸).join("") + "<td class=\"sep\"></td>" + 행.출력값들.map(비트칸).join("") + "</tr>")20
let 고장표시 = if 고장있음 { "<div class=\"meta\" style=\"color:{signalviz.고장색}\">고장 주입됨: 회로 출력이 진리표와 다를 수 있습니다.</div>" } else { "" }21
"<div class=\"inspector\" data-inspector=\"truth\">" + 표스타일 + "<div class=\"meta\">진리표(엔진이 계산)</div>" + 고장표시 + "<table class=\"truth\">" + 머리행 + 본문행들.join("") + "</table></div>"22
}24
export function 그리기검사(진리: Result<truthtable.진리표, string>, 고장있음: bool) -> string {25
match 진리 {26
case Ok(표) => 표그리기(표, 고장있음)27
case Err(오류) => "<div class=\"inspector\" data-inspector=\"truth\"><div class=\"meta\">{오류}</div></div>"28
}29
}SHA256 e161f42fa859e4d2831af80748df9803cff6826f7df9f154d24b44c3257eba6e