feat: publish HoloLake model-native living system source
This commit is contained in:
parent
6ad10edde1
commit
c395dd3a99
2467 changed files with 615073 additions and 0 deletions
136
product-source/hololake-platform/src/utils/sheetMetadata.test.ts
Normal file
136
product-source/hololake-platform/src/utils/sheetMetadata.test.ts
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
import { describe, expect, it } from 'vitest'
|
||||
import {
|
||||
cellAddressToIndexes,
|
||||
columnIndexFromName,
|
||||
mergeSheetMetadata,
|
||||
parseSheetMetadata,
|
||||
} from './sheetMetadata'
|
||||
|
||||
describe('sheetMetadata', () => {
|
||||
it('converts spreadsheet addresses to one-based indexes', () => {
|
||||
expect(columnIndexFromName('A')).toBe(1)
|
||||
expect(columnIndexFromName('AA')).toBe(27)
|
||||
expect(cellAddressToIndexes('B12')).toEqual({ row: 12, column: 2 })
|
||||
expect(cellAddressToIndexes('bad')).toBeNull()
|
||||
})
|
||||
|
||||
it('merges plain-text sheet metadata into frontmatter before the closing delimiter', () => {
|
||||
const frontmatter = '---\ntype: Sheet\nworkspace: personal\n---\n'
|
||||
const merged = mergeSheetMetadata(frontmatter, {
|
||||
frozenColumns: 1,
|
||||
frozenRows: 2,
|
||||
showGridLines: false,
|
||||
columns: { B: { width: 180 } },
|
||||
rows: { '1': { height: 44 } },
|
||||
cells: {
|
||||
C2: {
|
||||
numFmt: '0.00%',
|
||||
bold: true,
|
||||
fontSize: 15,
|
||||
fillColor: '#ffeeaa',
|
||||
verticalAlign: 'top',
|
||||
borderTop: { color: '#ff0000', style: 'thin' },
|
||||
borderBottom: { style: 'double' },
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
expect(merged).toBe([
|
||||
'---',
|
||||
'type: Sheet',
|
||||
'workspace: personal',
|
||||
'_sheet:',
|
||||
' show_grid_lines: false',
|
||||
' frozen_rows: 2',
|
||||
' frozen_columns: 1',
|
||||
' columns:',
|
||||
' B:',
|
||||
' width: 180',
|
||||
' rows:',
|
||||
' "1":',
|
||||
' height: 44',
|
||||
' cells:',
|
||||
' C2:',
|
||||
' num_fmt: "0.00%"',
|
||||
' bold: true',
|
||||
' font_size: 15',
|
||||
' fill_color: "#ffeeaa"',
|
||||
' vertical_align: "top"',
|
||||
' border_top: "thin #ff0000"',
|
||||
' border_bottom: "double"',
|
||||
'---',
|
||||
'',
|
||||
].join('\n'))
|
||||
})
|
||||
|
||||
it('parses the metadata block back from frontmatter', () => {
|
||||
const frontmatter = [
|
||||
'---',
|
||||
'type: Sheet',
|
||||
'_sheet:',
|
||||
' show_grid_lines: false',
|
||||
' frozen_rows: 2',
|
||||
' frozen_columns: 1',
|
||||
' columns:',
|
||||
' B:',
|
||||
' width: 180',
|
||||
' rows:',
|
||||
' "1":',
|
||||
' height: 44',
|
||||
' cells:',
|
||||
' C2:',
|
||||
' num_fmt: "0.00%"',
|
||||
' bold: true',
|
||||
' font_size: 15',
|
||||
' fill_color: "#ffeeaa"',
|
||||
' vertical_align: "top"',
|
||||
' border_top: "thin #ff0000"',
|
||||
' border_bottom: "double"',
|
||||
'---',
|
||||
'',
|
||||
].join('\n')
|
||||
|
||||
expect(parseSheetMetadata(frontmatter)).toEqual({
|
||||
frozenColumns: 1,
|
||||
frozenRows: 2,
|
||||
showGridLines: false,
|
||||
columns: { B: { width: 180 } },
|
||||
rows: { '1': { height: 44 } },
|
||||
cells: {
|
||||
C2: {
|
||||
numFmt: '0.00%',
|
||||
bold: true,
|
||||
fontSize: 15,
|
||||
fillColor: '#ffeeaa',
|
||||
verticalAlign: 'top',
|
||||
borderTop: { color: '#ff0000', style: 'thin' },
|
||||
borderBottom: { style: 'double' },
|
||||
},
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
it('replaces an existing metadata block instead of duplicating it', () => {
|
||||
const frontmatter = [
|
||||
'---',
|
||||
'type: Sheet',
|
||||
'_sheet:',
|
||||
' columns:',
|
||||
' A:',
|
||||
' width: 160',
|
||||
'workspace: personal',
|
||||
'---',
|
||||
'',
|
||||
].join('\n')
|
||||
|
||||
const merged = mergeSheetMetadata(frontmatter, {
|
||||
columns: { C: { width: 220 } },
|
||||
rows: {},
|
||||
cells: {},
|
||||
})
|
||||
|
||||
expect(merged).toContain('workspace: personal')
|
||||
expect(merged).toContain(' C:')
|
||||
expect(merged).not.toContain(' A:')
|
||||
})
|
||||
})
|
||||
Loading…
Reference in a new issue