feat: custom lang highlight, images dir, width bump, first post
- Wire up Ergon and ArchASM custom highlight.js languages - Serve /content/images/ for post image embeds - Blog width 820px -> 1040px to match landing page - First real blog post: "Why make a blog?" 👾 Generated with [Letta Code](https://letta.com) Co-Authored-By: Letta Code <noreply@letta.com>
This commit is contained in:
76
src/lang/archasm.js
Normal file
76
src/lang/archasm.js
Normal file
@@ -0,0 +1,76 @@
|
||||
hljs.registerLanguage('archasm', function(hljs) {
|
||||
return {
|
||||
name: 'ArchASM',
|
||||
aliases: ['archasm'],
|
||||
|
||||
keywords: {
|
||||
keyword: `
|
||||
NOP HALT
|
||||
PRINT PRINT_TOP
|
||||
JMP JZ JNZ
|
||||
ENTER LEAVE LGET LSET
|
||||
BEGIN_TICK END_TICK
|
||||
SAVE_GRID LOAD_GRID LOAD_ONT
|
||||
PUSH_INT PUSH_FLOAT PUSH_BOOL PUSH_SYM
|
||||
PACK_VALUE
|
||||
UNPACK_VALUE_INT UNPACK_VALUE_FLOAT
|
||||
UNPACK_VALUE_BOOL UNPACK_VALUE_SYM
|
||||
IADD ISUB ADD SUB MUL DIV IMUL IDIV
|
||||
EQ LT NOT
|
||||
SWAP OVER ROT NROT DUP2 NIP TUCK
|
||||
POP DUP
|
||||
CREATE_NODE CREATE_EDGE
|
||||
DELETE_NODE DELETE_EDGE
|
||||
SET_NODE_PROPERTY GET_NODE_PROPERTY
|
||||
UNSET_NODE_PROPERTY
|
||||
SET_EDGE_PROPERTY GET_EDGE_PROPERTY
|
||||
UNSET_EDGE_PROPERTY
|
||||
ADD_INCIDENT_NODE REMOVE_INCIDENT_NODE
|
||||
SET_INCIDENCE
|
||||
FIND_INCIDENTS
|
||||
GET_NODE_TYPE GET_EDGE_TYPE
|
||||
GET_EDGE_ARITY GET_EDGE_NODE_AT
|
||||
TRY_GET_NODE_PROPERTY
|
||||
TRY_GET_EDGE_PROPERTY
|
||||
GET_TIMELINE GET_ORIGIN_TICK
|
||||
IS_MAIN GET_CURRENT_TICK
|
||||
PUSH_VIEW POP_VIEW
|
||||
EMIT_CLAIM EMIT_EDGE_CLAIM
|
||||
CALL RET
|
||||
ITER_EDGES_BY_TYPE
|
||||
ITER_NODES_BY_TYPE
|
||||
ITER_INCIDENT_EDGES
|
||||
ITER_PROP_EQ
|
||||
ITER_NEXT
|
||||
ITER_EDGE_ROLE_NODES
|
||||
`,
|
||||
type: 'int float bool string'
|
||||
},
|
||||
|
||||
contains: [
|
||||
{
|
||||
scope: 'comment',
|
||||
begin: /\bNOTE\b/,
|
||||
end: '$'
|
||||
},
|
||||
|
||||
{
|
||||
scope: 'meta',
|
||||
begin: /^(SYMBOL)\b/
|
||||
},
|
||||
|
||||
{
|
||||
scope: 'symbol',
|
||||
match: /^[A-Za-z_][A-Za-z0-9_]*:/
|
||||
},
|
||||
|
||||
hljs.QUOTE_STRING_MODE,
|
||||
hljs.NUMBER_MODE,
|
||||
|
||||
{
|
||||
scope: 'operator',
|
||||
match: /=/
|
||||
}
|
||||
]
|
||||
};
|
||||
});
|
||||
71
src/lang/ergon.js
Normal file
71
src/lang/ergon.js
Normal file
@@ -0,0 +1,71 @@
|
||||
hljs.registerLanguage('ergon', function(hljs) {
|
||||
return {
|
||||
name: 'Ergon',
|
||||
aliases: ['ergon', 'agont'],
|
||||
|
||||
keywords: {
|
||||
keyword: `
|
||||
DECLARE TYPE EDGE RULE FUNCTION PROPERTY AXIOMATIC
|
||||
PARAMS RETURNS
|
||||
BEGIN_TICK END_TICK
|
||||
LET SET CREATE PRINT
|
||||
LOOP OVER DO END
|
||||
IF THEN ELSE
|
||||
RETURN CALL
|
||||
SAVE GRID LOAD VM LOCAL
|
||||
BRANCH SWITCH MAIN EXPORT PRUNE LIST DIFF
|
||||
FIND GET ADD REMOVE
|
||||
CONDITION EXPECTS CHANGED UNLESS AS
|
||||
FOR INFER
|
||||
FIELD REQUIRED OPTIONAL ROLE
|
||||
WHERE
|
||||
IS OF IN TO FROM WITH
|
||||
INCIDENT TARGET BASELINE
|
||||
AT TICK
|
||||
PROP BY ID
|
||||
NODE NODES EDGE EDGES
|
||||
WEIGHT PRIORITY
|
||||
LOGICAL STATEFUL WEIGHTED
|
||||
|
||||
AND OR NOT
|
||||
`,
|
||||
|
||||
type: 'string int float bool void',
|
||||
|
||||
literal: 'TRUE FALSE',
|
||||
|
||||
built_in: '@timeline @is_main @origin_tick @current_tick'
|
||||
},
|
||||
|
||||
contains: [
|
||||
{
|
||||
scope: 'comment',
|
||||
begin: /\bNOTE\b/,
|
||||
end: '$'
|
||||
},
|
||||
|
||||
hljs.QUOTE_STRING_MODE,
|
||||
hljs.NUMBER_MODE,
|
||||
|
||||
{
|
||||
scope: 'variable',
|
||||
match: /\b[A-Z][A-Z0-9_]*\b/
|
||||
},
|
||||
|
||||
{
|
||||
scope: 'title',
|
||||
match: /\b[a-z][a-zA-Z0-9_]*\b/
|
||||
},
|
||||
|
||||
{
|
||||
scope: 'built_in',
|
||||
match: /@(timeline|is_main|origin_tick|current_tick)\b/
|
||||
},
|
||||
|
||||
{
|
||||
scope: 'operator',
|
||||
match: /!=|<=|>=|=|<|>|\+|-|\*|\//
|
||||
}
|
||||
]
|
||||
};
|
||||
});
|
||||
Reference in New Issue
Block a user