local listview = require "listview" local winhlp = require "winhlp" local keys = {[1]="a", [2]="c"} local obj = {a="b", c="d"} local frame = term.current() local function setTerm(termlike) frame = termlike listview.setTerm(frame) end local function setObject(other) obj = other keys = {} for key, _ in other do keys.insert(key) end table.sort(keys) end local function fetch(wait_for) local currentIdx = 1 for i, key in pairs(keys) do listview.updateItemAt(currentIdx, {key=key, value=obj[key]}) currentIdx = currentIdx + 1 end listview.clearFrom(currentIdx) end local function displayTab(self) listview.updatePage(self.scrollPos) end local function estimatedHeight() return #keys end local function drawLine(termlike, pair) termlike.setBackgroundColor(colors.black) termlike.setTextColor(colors.yellow) termlike.write(tostring(pair.key)) termlike.setTextColor(colors.white) local value = tostring(pair.value) local padding = winhlp.alignRightPadding(termlike, #value + 1) termlike.write(string.format("%" .. padding+1 .. "s", " ")) termlike.write(value) end listview.setDrawEntryFunc(drawLine) return { name="inspect", setTerm=setTerm, setObject=setObject, fetch=fetch, displayTab=displayTab, estimatedHeight=estimatedHeight, }