forked from sheetjs/docs.sheetjs.com
		
	lume
This commit is contained in:
		
							parent
							
								
									01d7333f44
								
							
						
					
					
						commit
						a86dfdf759
					
				@ -587,7 +587,9 @@ That approach is not explored in this demo.
 | 
			
		||||
 | 
			
		||||
:::note
 | 
			
		||||
 | 
			
		||||
This demo was verified on 2022 December 14
 | 
			
		||||
This demo was last tested on 2023 March 14.
 | 
			
		||||
 | 
			
		||||
Versions: NodeJS 18.15.0 + ExpressJS 4.18.2 + Formidable 2.1.1
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -14,11 +14,96 @@ load data from spreadsheets.  New users should consult the official docs.
 | 
			
		||||
Lume supports refreshing data during development. The generated static sites
 | 
			
		||||
include the raw data without referencing the underlying spreadsheet files.
 | 
			
		||||
 | 
			
		||||
## Lume Demo
 | 
			
		||||
## Integration Details
 | 
			
		||||
 | 
			
		||||
### Installation
 | 
			
		||||
 | 
			
		||||
The `sheets` plugin can be imported and invoked in `_config.ts`:
 | 
			
		||||
 | 
			
		||||
```ts title="_config.ts"
 | 
			
		||||
import lume from "lume/mod.ts";
 | 
			
		||||
// highlight-next-line
 | 
			
		||||
import sheets from "lume/plugins/sheets.ts";
 | 
			
		||||
 | 
			
		||||
const site = lume();
 | 
			
		||||
 | 
			
		||||
// highlight-next-line
 | 
			
		||||
site.use(sheets());
 | 
			
		||||
 | 
			
		||||
export default site;
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Usage
 | 
			
		||||
 | 
			
		||||
:::note
 | 
			
		||||
 | 
			
		||||
This was tested against `lume v1.14.2` on 2023 January 20.
 | 
			
		||||
The official documentation includes notes for more advanced use cases.
 | 
			
		||||
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Spreadsheet files added in the `_data` subdirectory are accessible from template
 | 
			
		||||
files using the name stem.
 | 
			
		||||
 | 
			
		||||
For example, [`pres.numbers`](https://sheetjs.com/pres.numbers) can be accessed
 | 
			
		||||
using the variable `pres` in a template.
 | 
			
		||||
 | 
			
		||||
#### Single-Sheet Workbooks
 | 
			
		||||
 | 
			
		||||
When a workbook has one worksheet, the data is an array of row objects:
 | 
			
		||||
 | 
			
		||||
```liquid title="single.njk"
 | 
			
		||||
<table><thead><th>Name</th><th>Index</th></thead>
 | 
			
		||||
  <tbody>
 | 
			
		||||
  {% for row in pres %}
 | 
			
		||||
    <tr>
 | 
			
		||||
      <td>{{ row.Name }}</td>
 | 
			
		||||
      <td>{{ row.Index }}</td>
 | 
			
		||||
    </tr>
 | 
			
		||||
  {% endfor %}
 | 
			
		||||
  </tbody>
 | 
			
		||||
</table>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
#### Multi-Sheet Workbooks
 | 
			
		||||
 | 
			
		||||
_Reading the First Worksheet_
 | 
			
		||||
 | 
			
		||||
The `sheets` plugin accepts an options argument.  If the `sheets` property is
 | 
			
		||||
set to `"first"`, then the plugin will expose row objects for the first sheet:
 | 
			
		||||
 | 
			
		||||
```ts title="_config.ts"
 | 
			
		||||
// the first sheet of each file will be parsed and converted to row objects
 | 
			
		||||
site.use(sheets({ sheets: "first" }));
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
_Reading all Worksheets_
 | 
			
		||||
 | 
			
		||||
The default behavior, when workbooks have multiple sheets, is to present objects
 | 
			
		||||
whose keys are worksheet names and whose values are arrays of row objects.
 | 
			
		||||
 | 
			
		||||
For example, if `pres.numbers` had a sheet named `"Presidents"` and another
 | 
			
		||||
sheet named `"VicePresidents"`, then the following snippet would print data
 | 
			
		||||
from the `"Presidents"` sheet:
 | 
			
		||||
 | 
			
		||||
```liquid title="multi.njk"
 | 
			
		||||
<table><thead><th>Name</th><th>Index</th></thead>
 | 
			
		||||
  <tbody>
 | 
			
		||||
  {% for row in pres["Presidents"] %}
 | 
			
		||||
    <tr>
 | 
			
		||||
      <td>{{ row.Name }}</td>
 | 
			
		||||
      <td>{{ row.Index }}</td>
 | 
			
		||||
    </tr>
 | 
			
		||||
  {% endfor %}
 | 
			
		||||
  </tbody>
 | 
			
		||||
</table>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Complete Example
 | 
			
		||||
 | 
			
		||||
:::note
 | 
			
		||||
 | 
			
		||||
This was tested against `lume v1.15.3` on 2023 March 14.
 | 
			
		||||
 | 
			
		||||
This example uses the Nunjucks template format. Lume plugins support additional
 | 
			
		||||
template formats, including Markdown and JSX.
 | 
			
		||||
@ -35,8 +120,9 @@ deno run -Ar https://deno.land/x/lume/init.ts
 | 
			
		||||
 | 
			
		||||
When prompted, enter the following options:
 | 
			
		||||
 | 
			
		||||
- `Use TypeScript for the configuration file`: press Enter (use default `N`)
 | 
			
		||||
- `Do you want to use plugins`: type `sheets` and press Enter
 | 
			
		||||
- `Choose the configuration file format`: select `_config.ts`
 | 
			
		||||
- `Do you want to install some plugins now?`: select `Yes`
 | 
			
		||||
- `Select the plugins to install`: scroll down, select `sheets`, and submit
 | 
			
		||||
 | 
			
		||||
The project will be configured and modules will be installed.
 | 
			
		||||
 | 
			
		||||
@ -54,12 +140,12 @@ curl -L -o _data/pres.numbers https://sheetjs.com/pres.numbers
 | 
			
		||||
<h2>Presidents</h2>
 | 
			
		||||
<table><thead><th>Name</th><th>Index</th></thead>
 | 
			
		||||
  <tbody>
 | 
			
		||||
  {% for row in pres %}{% if (loop.index >= 1) %}
 | 
			
		||||
  {% for row in pres %}
 | 
			
		||||
    <tr>
 | 
			
		||||
      <td>{{ row.Name }}</td>
 | 
			
		||||
      <td>{{ row.Index }}</td>
 | 
			
		||||
    </tr>
 | 
			
		||||
  {% endif %}{% endfor %}
 | 
			
		||||
  {% endfor %}
 | 
			
		||||
  </tbody>
 | 
			
		||||
</table>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
@ -8,6 +8,9 @@ QuickJS is an embeddable JS engine written in C.  It provides a separate set of
 | 
			
		||||
functions for interacting with the filesystem and the global object.  It can run
 | 
			
		||||
the standalone browser scripts.
 | 
			
		||||
 | 
			
		||||
The [Standalone scripts](/docs/getting-started/installation/standalone) can be
 | 
			
		||||
parsed and evaluated in a QuickJS context.
 | 
			
		||||
 | 
			
		||||
## Integration Details
 | 
			
		||||
 | 
			
		||||
_Initialize QuickJS_
 | 
			
		||||
 | 
			
		||||
@ -15,12 +15,12 @@
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@cmfcmf/docusaurus-search-local": "0.11.0",
 | 
			
		||||
    "@docusaurus/core": "2.2.0",
 | 
			
		||||
    "@docusaurus/plugin-client-redirects": "2.2.0",
 | 
			
		||||
    "@docusaurus/preset-classic": "2.2.0",
 | 
			
		||||
    "@docusaurus/theme-common": "2.2.0",
 | 
			
		||||
    "@docusaurus/theme-live-codeblock": "2.2.0",
 | 
			
		||||
    "@docusaurus/theme-mermaid": "2.2.0",
 | 
			
		||||
    "@docusaurus/core": "2.3.1",
 | 
			
		||||
    "@docusaurus/plugin-client-redirects": "2.3.1",
 | 
			
		||||
    "@docusaurus/preset-classic": "2.3.1",
 | 
			
		||||
    "@docusaurus/theme-common": "2.3.1",
 | 
			
		||||
    "@docusaurus/theme-live-codeblock": "2.3.1",
 | 
			
		||||
    "@docusaurus/theme-mermaid": "2.3.1",
 | 
			
		||||
    "@mdx-js/react": "1.6.22",
 | 
			
		||||
    "clsx": "1.2.1",
 | 
			
		||||
    "prism-react-renderer": "1.3.5",
 | 
			
		||||
@ -29,7 +29,7 @@
 | 
			
		||||
    "xlsx": "https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@docusaurus/module-type-aliases": "2.2.0"
 | 
			
		||||
    "@docusaurus/module-type-aliases": "2.3.1"
 | 
			
		||||
  },
 | 
			
		||||
  "browserslist": {
 | 
			
		||||
    "production": [
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user