const string = @import("string_types.zig").string;
const Allocator = @import("std").mem.Allocator;
const assert = @import("std").debug.assert;
const copy = @import("std").mem.copy;
const Env = @import("./env.zig");
const StringBuilder = @This();
len: usize = 0,
cap: usize = 0,
ptr: ?[*]u8 = null,
pub fn count(this: *StringBuilder, slice: string) void {
this.cap += slice.len;
}
pub fn allocate(this: *StringBuilder, allocator: Allocator) !void {
var slice = try allocator.alloc(u8, this.cap);
this.ptr = slice.ptr;
this.len = 0;
}
pub fn deinit(this: *StringBuilder, allocator: Allocator) void {
if (this.ptr == null or this.cap == 0) return;
allocator.free(this.ptr.?[0..this.cap]);
}
pub fn append(this: *StringBuilder, slice: string) string {
if (Env.allow_assert) {
assert(this.len <= this.cap); // didn't count everything
assert(this.ptr != null); // must call allocate first
}
copy(u8, this.ptr.?[this.len..this.cap], slice);
const result = this.ptr.?[this.len..this.cap][0..slice.len];
this.len += slice.len;
if (Env.allow_assert) {
assert(this.len <= this.cap);
}
return result;
}
const std = @import("std");
pub fn fmt(this: *StringBuilder, comptime str: string, args: anytype) string {
if (Env.allow_assert) {
assert(this.len <= this.cap); // didn't count everything
assert(this.ptr != null); // must call allocate first
}
var buf = this.ptr.?[this.len..this.cap];
const out = std.fmt.bufPrint(buf, str, args) catch unreachable;
this.len += out.len;
if (Env.allow_assert) {
assert(this.len <= this.cap);
}
return out;
}
pub fn fmtCount(this: *StringBuilder, comptime str: string, args: anytype) void {
this.cap += std.fmt.count(str, args);
}
re/astro-check'>chore/astro-check
Unnamed repository; edit this file 'description' to name the repository. | |
Age | Commit message (Collapse) | Author | Files | Lines |
|
* improve CI times
* improve CI times
|
|
|
|
|
|
* feat: first pass at MDX support
* fix: move built-in JSX renderer to come first
* chore: remove jsx example
* chore: update lockfile
* chore: cleanup example
* fix: missing deps
* refactor: move component render logic to `renderPage`
* chore: update HMR script
* chore: update MDX example
* refactor: prefer unshit
* refactor: remove TODO comment
* fix: remove duplicate identifier
* refactor: cleanup mdx entrypoint
* fix: better html handling
* fix: add tsconfig to mdx package
* chore: update lockfile
* fix: do not sort plugins unless mdx is enabled
* chore: update compiler
* fix(hmr): maybe render head for non-Astro pages
* fix: set initial pageExtensions
* refactor: cleanup addPageExtension
* refactor: remove addPageExtensions from types
* refactor: expose HookParameters type
* fix: only default to astro for MDX
* test: pick up jsx support in test fixtures
* refactor: simplify mdx entrypoint
* test: add basic MDX tests
* test(e2e): add mdx + framework tests
* chore: update lockfile
* test(e2e): fix preact mdx e2e test
* fix(mdx): disable .md support
* test(e2e): fix vue-component test missing mdx
* test(e2e): fix solid component needing import
* fix: allow `client:only="solid"` as an alias to `solid-js`
* chore: move to with-mdx example
* chore: update MDX readme
* chore: update example readme
* chore: bump astro version
* chore: update lockfile
* Update mod.d.ts
* feat: support `export const components` in MDX pages
* chore: update mdx example
* fix: update jsx-runtime with better slot support
* refactor: remove object style support
* chore: cleanup package exports
* chore: add todo comment
* refactor: improve isPage function, move to utils
* refactor: dry up manual HMR updates
* chore: add dev tests for MDX
* chore: prefer set to array
* chore: add changesets
* fix(hmr): flip public/private route
Co-authored-by: Nate Moore <nate@astro.build>
|
|
|
|
Co-authored-by: FredKSchott <FredKSchott@users.noreply.github.com>
|
|
* sitemap readme skeleton + first sections
* Revert "sitemap readme skeleton + first sections"
This reverts commit cc55b312b6dc95522645002806d63f32c33d1956.
* sitemap readme skeleton + first sections
* remove canonicalURL option from sitemap
* add customPages option to readme
* sitemap examples
* partytown
* deno run command
* reference deno example
* node readme
* netlify & vercel readmes
* note that telemetry is installed
* telemetry is *enabled*, not installed
* Update packages/integrations/vercel/README.md
Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
* Update packages/integrations/vercel/README.md
Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
* readme -> README
* Update packages/integrations/deno/readme.md
Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
* Update packages/integrations/deno/readme.md
Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
* qualify they
* Update packages/integrations/sitemap/README.md
Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
* Uppercase README names
* Update packages/integrations/partytown/README.md
Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
* imports -> import typo
* update changeset
Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
|
|
|
|
|
|
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
|
|
|
|
|
|
* Fix "Invalid hook call" warning
* Fix eslint warnings
* Apply code review suggestions
|
|
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
|
|
|
|
* lockfile update
* update lockfile gen script
* Update index.ts
|
|
|