My first test blog post with typography & code blocks

Headings

H1 — heading

H2 — heading

H3 — heading

H4 — heading

Paragraph

Quisque egestas convallis ipsum, ut sollicitudin risus tincidunt a. Maecenas interdum malesuada egestas. Duis consectetur porta risus, sit amet vulputate urna facilisis ac. Phasellus semper dui non purus ultrices sodales. Aliquam ante lorem, ornare a feugiat ac, finibus nec mauris. Vivamus ut tristique nisi. Sed vel leo vulputate, efficitur risus non, posuere mi. Nullam tincidunt bibendum rutrum. Proin commodo ornare sapien. Vivamus interdum diam sed sapien blandit, sit amet aliquam risus mattis. Nullam arcu turpis, mollis quis laoreet at, placerat id nibh. Suspendisse venenatis eros eros.

Lists

Ordered list

  1. Firstly
  2. Secondly
  3. Thirdly

Unordered list

ToDo list

Description list

Sun
the star around which the earth orbits
Moon
the natural satellite of the earth, visible by reflected light from the sun

Block Quote

This line shows the block quote.

Prompts

An example showing the tip type prompt.

An example showing the info type prompt.

An example showing the warning type prompt.

An example showing the danger type prompt.

Tables

Company Contact Country
Alfreds Futterkiste Maria Anders Germany
Island Trading Helen Bennett UK
Magazzini Alimentari Riuniti Giovanni Rovelli Italy

http://127.0.0.1:4000

Footnote

Click the hook will locate the footnote1, and here is another footnote2.

Inline code

This is an example of Inline Code.

Filepath

Here is the /path/to/the/file.extend.

Code blocks

Common

This is a common code snippet, without syntax highlight and line number.

Rust

use redis::{AsyncCommands, Value};
use serde::Deserialize;

#[derive(Debug, Deserialize)]
pub struct Job {
    pub job_id: String,
    pub source: String,
    pub language: String,
    pub input: String,
}

Zig

pub const Cursor = struct {
    table: *executor.Table,
    page_num: u32,
    cell_num: u32,
    end_of_table: bool,

    pub fn tableFind(table: *executor.Table, key: u32, alloc: std.mem.Allocator) !*Cursor {
        const root_page_num = table.root_page_num;
        const node = try table.pager.getPage(root_page_num);

        const ty = executor.getNodeType(node);
        return switch (ty) {
            .leaf => executor.leafNodeFind(table, root_page_num, key, alloc),
            .internal => executor.internalNodeFind(table, root_page_num, key, alloc),
        };
    }

    pub fn advance(self: *Cursor) void {
        const node = self.table.pager.getPage(self.page_num) catch @panic("Bad");
        self.cell_num += 1;
        if (self.cell_num >= executor.leafNumCells(node).*) {
            // Advance to next leaf node
            const next_page_num = executor.leafNextLeaf(node).*;
            if (next_page_num == 0) {
                // This was rightmost leaf
                self.end_of_table = true;
            } else {
                self.page_num = next_page_num;
                self.cell_num = 0;
            }
        }
    }
};

Specific filename

@import
  "colors/light-typography",
  "colors/dark-typography";

Reverse Footnote

  1. The footnote source 

  2. The 2nd footnote source