visualize_dataset / src /utils /stringFormatting.ts
mishig's picture
mishig HF Staff
style: run prettier formatting
59b5c7b
raw
history blame
2.88 kB
/**
* String formatting utilities for path construction
* Consolidates repeated padding and path building logic
*/
import { PADDING } from "./constants";
/**
* Pad number to specified length with leading zeros
*
* @param num - Number to pad
* @param length - Desired string length
* @returns Zero-padded string
*/
export function padNumber(num: number, length: number): string {
return num.toString().padStart(length, "0");
}
/**
* Format episode chunk index with standard padding
*
* @param chunkIndex - Chunk index number
* @returns Padded chunk index string (e.g., "001")
*/
export function formatEpisodeChunk(chunkIndex: number): string {
return padNumber(chunkIndex, PADDING.EPISODE_CHUNK);
}
/**
* Format episode index with standard padding
*
* @param episodeIndex - Episode index number
* @returns Padded episode index string (e.g., "000042")
*/
export function formatEpisodeIndex(episodeIndex: number): string {
return padNumber(episodeIndex, PADDING.EPISODE_INDEX);
}
/**
* Format file index with standard padding
*
* @param fileIndex - File index number
* @returns Padded file index string (e.g., "001")
*/
export function formatFileIndex(fileIndex: number): string {
return padNumber(fileIndex, PADDING.FILE_INDEX);
}
/**
* Format chunk index with standard padding
*
* @param chunkIndex - Chunk index number
* @returns Padded chunk index string (e.g., "001")
*/
export function formatChunkIndex(chunkIndex: number): string {
return padNumber(chunkIndex, PADDING.CHUNK_INDEX);
}
/**
* Build video path for v3 datasets
*
* @param videoKey - Video key/name (e.g., "observation.image")
* @param chunkIndex - Data chunk index
* @param fileIndex - File index within chunk
* @returns Formatted video path (e.g., "videos/observation.image/chunk-001/file-000.mp4")
*/
export function buildV3VideoPath(
videoKey: string,
chunkIndex: number,
fileIndex: number,
): string {
return `videos/${videoKey}/chunk-${formatChunkIndex(chunkIndex)}/file-${formatFileIndex(fileIndex)}.mp4`;
}
/**
* Build data path for v3 datasets
*
* @param chunkIndex - Data chunk index
* @param fileIndex - File index within chunk
* @returns Formatted data path (e.g., "data/chunk-001/file-000.parquet")
*/
export function buildV3DataPath(chunkIndex: number, fileIndex: number): string {
return `data/chunk-${formatChunkIndex(chunkIndex)}/file-${formatFileIndex(fileIndex)}.parquet`;
}
/**
* Build episodes metadata path for v3 datasets
*
* @param chunkIndex - Episode chunk index
* @param fileIndex - File index within chunk
* @returns Formatted episodes metadata path (e.g., "meta/episodes/chunk-001/file-000.parquet")
*/
export function buildV3EpisodesMetadataPath(
chunkIndex: number,
fileIndex: number,
): string {
return `meta/episodes/chunk-${formatChunkIndex(chunkIndex)}/file-${formatFileIndex(fileIndex)}.parquet`;
}