Test Article !!

sam

5/6/2024, 3:50:00 PM


WOW

What a fun article this is !

boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop boop

mrrp :3 mrrp :3 mrrp :3 mrrp :3 mrrp :3 mrrp :3 mrrp :3 mrrp :3 mrrp :3 mrrp :3 mrrp :3 mrrp :3 mrrp :3 mrrp :3

code inline


const marked = new Marked(
    markedHighlight({
      emptyLangClass: 'hljs',
      langPrefix: 'hljs language-',
      highlight(code, lang, info) {
        const language = hljs.getLanguage(lang) ? lang : 'plaintext';
        return hljs.highlight(code, { language }).value;
      }
    })
  );

var blogFileToData = (fileContent, id) => {
    var parsedIsh = META_GETTER.exec(fileContent)
    var metaData = parsedIsh[1]
    var artcileContentMD = nunjucks.renderString(parsedIsh[2])
    var articleContent = marked.parse(artcileContentMD);
    
    var title = TITLE_GETTER.exec(metaData)[1];
    
    var dateRes = DATE_GETTER.exec(metaData).groups;

    // we're not posting in the 90s and i doubt i'll be posting in 100 years
    var year = Number.parseInt(dateRes.year) % 2000 + 2000;
    var month = Number.parseInt(dateRes.month) - 1;
    var day = Number.parseInt(dateRes.day);
    var hour = Number.parseInt(dateRes.hour)
    var date = new Date(year, month, day);
    if(hour){
        var minute = Number.parseInt(dateRes.minute);
        if(dateRes.meridiem == "pm"){
            hour += 12
        }
        date = new Date(year, month, day, hour, minute);
    }

    // TODO: grab rest of metadata


    return {
        "id": id,
        "title": title,
        "date": date,
        "content": articleContent
    }
}
import CoreLang.Runad
import Control.Monad.Trans.Maybe (MaybeT (..), mapMaybeT)
import qualified Data.Bifunctor

type Subst = Map Ident Expr -- subst maps for laziness

fullEval :: Expr -> IO (Either EError Expr)
fullEval exp = fst <$> runRunAd (eval exp) (RunadSTIn empty empty 0)

-- eval lazily ?
eval :: Expr -> Runad Expr
-- eval e1@(EVar id) = subst e1
-- eval e1@(EVar id) = ((\m -> maybe (return e1) eval m) <$> lookupVar id) -- immediately substitute it
eval e1@(EVar id) = do -- immediately substitute it
    me2 <- lookupVar id
    case me2 of
        (Just (EVar id')) | id == id' -> return e1
        (Just e2) -> eval e2
        Nothing -> return e1
    -- if me2 == e1 then return me2 else eval me2
eval e1@(ELit _) = return e1

katex time : i=0nk(k1)2\sum_{i=0}^n \frac{k(k-1)}{2}

katex time display mode: i=0nk(k1)2\sum_{i=0}^n \frac{k(k-1)}{2}

boop
{
    "hexgloop": {
        "name": "Hex Gloop",
        "id": "hexgloop",
        "tags": ["mc-modding", "software"],
        "banner": "hexgloop/titlecard.png",
        "icon": "hexgloop/icon.png",
        "summary": "An addon mod for Hex Casting known for its QoL improvements and new mechanics."
    },
    "inline": {
        "name": "Inline",
        "id": "inline",
        "tags": ["mc-modding", "software"],
        "icon": "mcmodmisc/inlineicon.png",
        "summary": "A minecraft library for rendering in-line with text"
    },
    "ducky-periphs": {
        "name": "Ducky Peripherals",
        "id": "ducky-periphs",
        "tags": ["mc-modding", "software"],
        "icon": "mcmodmisc/duckyperiphsicon.webp",
        "summary": "An addon mod for computercraft adding ducks, keyboards, and hex casting compat"
    },
}