commit b44472039bc9b6926fd858237449c69bfd8776a4 Author: lee2sman Date: Tue Feb 21 02:14:35 2023 -0500 let's call this 100 LOC mess not even quite an mvp yet diff --git a/main.lua b/main.lua new file mode 100644 index 0000000..ab3bd65 --- /dev/null +++ b/main.lua @@ -0,0 +1,107 @@ +local utf8 = require("utf8") +local https=require('https') +local htmlparser = require("htmlparser") + +local url='https://neocities.org' +local textInput = '' + +function love.load() + -- Set up a Love2D font for displaying the text + font = love.graphics.newFont(24) + love.graphics.setFont(font) + love.graphics.setColor(1, 1, 1) + + -- enable key repeat so backspace can be held down to trigger love.keypressed multiple times. + love.keyboard.setKeyRepeat(true) + + grabText() + end + +function love.draw() + -- Draw the website's text on the Love2D window + love.graphics.setColor(1, 1, 1) + love.graphics.printf(screenText, 0, 40, love.graphics.getWidth(), "left") + + drawInputBox() +end + +function grabText() + rawHTML = makeRequest(url) + screenText = parseWebsite(rawHTML) +end + +function parseWebsite(html) + + local root = htmlparser.parse(html,1000) --1000 is the default + local head = root:select("h1") + local out + + if head[1] then + local headText = stripText(head[1]:getcontent()) or ""--first h1 on page + out = headText .. "\n" +else + out = "" +end + + local elements = root:select("p") + + --local out = headText +for _,e in ipairs(elements) do + out = out .. stripText(e:getcontent()) .. "\n" +end + + return out +end + +function stripText(parsed) + + stripped = parsed:gsub('%—','') --remove an html entity bothering me + stripped = stripped:gsub('%b<>', '') --remove tags + stripped = stripped:match'^%s*(.*)' --remove leading spaces + + return stripped +end + +function makeRequest(url) + local code, body, headers = https.request(url) + print('statusCode ', code) + --for index,value in pairs(headers) do + -- print("\t",index, value) + --end + + return body +end + +function love.textinput (text) + --if textbox.active then + -- textbox.text = textbox.text .. text + --end + textInput = textInput .. text +end + +function love.keypressed(key) + if key == "backspace" then + -- get the byte offset to the last UTF-8 character in the string. + local byteoffset = utf8.offset(textInput, -1) + + if byteoffset then + -- remove the last UTF-8 character. + -- string.sub operates on bytes rather than UTF-8 characters, so we couldn't do string.sub(text, 1, -2). + textInput = string.sub(textInput, 1, byteoffset - 1) + end + end + + if key == 'return' then + url=textInput --obviously need to add in validation later + grabText() + end +end + +function drawInputBox() + --empty input box + love.graphics.rectangle('fill', 5,0, love.graphics.getWidth(),40) + + --text input starter + love.graphics.setColor(0, 0, 0) + love.graphics.print("$ "..textInput, 10, 10) +end