diff --git a/README.md b/README.md index a07ca81f..28003118 100644 --- a/README.md +++ b/README.md @@ -334,7 +334,7 @@ const data = await FileAttachment("cars.tsv").tsv(); If array is true, an array of arrays is returned; otherwise, the first row is assumed to be the header row and an array of objects is returned, and the returned array has a data.columns property that is an array of column names. (See d3.tsvParseRows.) If typed is true, [automatic type inference](https://observablehq.com/@d3/d3-autotype) is applied; only use this feature if you know your data is compatible. -# *attachment*.image() [<>](https://github.com/observablehq/stdlib/blob/main/src/fileAttachment.mjs "Source") +# *attachment*.image(options) [<>](https://github.com/observablehq/stdlib/blob/main/src/fileAttachment.mjs "Source") Returns a promise to a file loaded as an [Image](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/Image). The promise resolves when the image has finished loading, making this useful for reading the image pixels in Canvas, or for loading the image into a WebGL texture. Consider [*attachment*.url](#attachment_url) if you want to embed an image in HTML or Markdown. @@ -342,6 +342,12 @@ Returns a promise to a file loaded as an [Image](https://developer.mozilla.org/e const image = await FileAttachment("sunset.jpg").image(); ``` +If desired, additional image properties can be passed in as *options*. + +```js +const image = await FileAttachment("sunset.jpg").image({width: 400, height: 400}); +``` + # *attachment*.arrayBuffer() [<>](https://github.com/observablehq/stdlib/blob/main/src/fileAttachment.mjs "Source") Returns a promise to the file’s contents as an [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). @@ -404,12 +410,40 @@ Returns a promise to an [HTMLDocument](https://developer.mozilla.org/en-US/docs/ const document = await FileAttachment("index.html").html(); ``` +# *attachment*.zip() [<>](https://github.com/observablehq/stdlib/blob/main/src/fileAttachment.mjs "Source") + +Returns a promise to a [ZipArchive](#zip-archives) containing the contents of the file. + +```js +const archive = await FileAttachment("archive.zip").zip(); +``` + # FileAttachments(resolve) [<>](https://github.com/observablehq/stdlib/blob/main/src/fileAttachment.mjs "Source") *Note: this function is not part of the Observable standard library (in notebooks), but is provided by this module as a means for defining custom file attachment implementations when working directly with the Observable runtime.* Returns a [*FileAttachment*](#FileAttachment) function given the specified *resolve* function. The *resolve* function is a function that takes a *name* and returns either an object {url, mimeType} representing the requested file if it exists, or null if the file does not exist. The url field (though not the object itself!) may be represented as a Promise if the URL is not yet known, such as for a file that is currently being uploaded. The mimeType must be a string, or undefined if the mime type is not known. For backwards compatibility, the *resolve* function may instead return just a URL, either a string or a promise. +#### Zip archives + +# *archive*.filenames [<>](https://github.com/observablehq/stdlib/blob/main/src/fileAttachment.mjs "Source") + +Returns an array of paths representing the files contained within the archive. + +```js +const archive = await FileAttachment("archive.zip").zip(); +console.log(archive.filenames); +``` + +# *archive*.file(path) [<>](https://github.com/observablehq/stdlib/blob/main/src/fileAttachment.mjs "Source") + +Returns a [file attachment](#file-attachments) for the file with the specified *path*. One of the file attachment methods can then be called to access the contents of the file. For example, to read a text file, use [*attachment*.text](#attachment_text). + +```js +const archive = await FileAttachment("archive.zip").zip(); +const text = await archive.file("readme.txt").text(); +``` + ### Generators # Generators.disposable(value, dispose) [<>](https://github.com/observablehq/stdlib/blob/main/src/generators/disposable.mjs "Source")