llmstxt.zig/README.md

1.9 KiB

📕 llmstxt.zig

AI-first approach to documentation, based on llms.txt. Continouously rebuilds your llms.txt file to keep in sync with your codebase.

⚠️ This is a work in progress, expect many things to be broken.

Build from source

  • needs zig@0.14.0
git clone https://github.com/bruvduroiu/llmstxt.zig
cd llmstxt.zig/
zig build

Usage

./zig-out/bin/llmstxt_zig file.ext

Examples

from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

Result:

File: test.py
Language: python

var app = FastAPI();
func read_root() -> void;
func read_item() -> void;
const std = @import("std");

const root = @import("root.zig");
const E = root.E;
const P3 = root.P3;
const Vec3 = root.Vec3;
const Sphere = root.Sphere;
const Ray = root.Ray;
const Interval = root.Interval;

pub const Hittable = union(enum) {
    const Self = @This();
    sphere: Sphere,

    pub fn initSphere(center: [3]E, radius: E) Self {
        return .{ .sphere = Sphere.init(center, radius) };
    }

    pub fn deinit(self: Self) void {
        switch (self) {
            inline else => |hittable| hittable.deinit(),
        }
    }

    pub const Collision = struct {
        const Inner = @This();
        pub const Face = enum { front, back };
        t: E,
        p: P3,
        normal: Vec3,
        face: Face,
    };

    pub fn collisionAt(self: Self, interval: Interval, ray: *const Ray) ?Collision {
        switch (self) {
            inline else => |hittable| return hittable.collisionAt(interval, ray),
        }
    }
};

Result:

File: /Users/bogdanbuduroiu/development/bruvduroiu/raytracing.zig/src/hittable.zig
Language: zig

var t;
var p;
var normal;
var face;