nadesiko3
Version:
Japanese Programming Language
98 lines (95 loc) • 3.08 kB
text/typescript
import { CSVOptions, options, parse, stringify } from './nako_csv.mjs'
const PluginCSV = {
'meta': {
type: 'const',
value: {
pluginName: 'plugin_csv', // プラグインの名前
description: 'CSV関連の命令を提供するプラグイン', // プラグインの説明
pluginVersion: '3.6.0', // プラグインのバージョン
nakoRuntime: ['wnako', 'cnako', 'phpnako'], // 対象ランタイム
nakoVersion: '3.6.0' // 要求なでしこバージョン
}
},
'初期化': {
type: 'func',
josi: [],
pure: true,
fn: function(): void {
// 基本的に初期化不要
}
},
// @CSV操作
'CSV取得': { // @CSV形式のデータstrを強制的に二次元配列に変換して返す // @CSVしゅとく
type: 'func',
josi: [['を', 'の', 'で']],
pure: true,
fn: function(str: string): (string | number)[][] {
options.delimiter = ','
return parse(str)
}
},
'TSV取得': { // @TSV形式のデータstrを強制的に二次元配列に変換して返す // @TSVしゅとく
type: 'func',
josi: [['を', 'の', 'で']],
pure: true,
fn: function(str: string): (string|number)[][] {
options.delimiter = '\t'
return parse(str)
}
},
'表CSV変換': { // @二次元配列AをCSV形式に変換して返す // @ひょうCSVへんかん
type: 'func',
josi: [['を']],
pure: true,
fn: function(a: string[][]): string {
options.delimiter = ','
return stringify(a)
}
},
'CSV変換': { // @二次元配列AをCSV形式に変換して返す // @CSVへんかん
type: 'func',
josi: [['を']],
pure: true,
fn: function(a: string[][]): string {
options.delimiter = ','
return stringify(a)
}
},
'表TSV変換': { // @二次元配列AをTSV形式に変換して返す // @ひょうTSVへんかん
type: 'func',
josi: [['を']],
pure: true,
fn: function(a: string[][]): string {
options.delimiter = '\t'
return stringify(a)
}
},
'TSV変換': { // @二次元配列AをTSV形式に変換して返す // @TSVへんかん
type: 'func',
josi: [['を']],
pure: true,
fn: function(a: string[][]): string {
options.delimiter = '\t'
return stringify(a)
}
},
'CSVオプション設定': { // @「CSV取得」「表CSV変換」命令のオプションOBJ{delimiter,eol,auto_convert_number}をオブジェクトで指定 // @CSVおぷしょんせってい
type: 'func',
josi: [['を', 'で']],
pure: true,
fn: function(obj: { [key: string]: unknown }): void {
for (const key in obj) {
const value: unknown = obj[key]
if (key === 'delimiter' || key === '区切文字') {
options.delimiter = value as string
} else if (key === 'eol') {
options.eol = value as string
} else if (key === 'auto_convert_number') {
options.auto_convert_number = value as boolean
}
}
},
return_none: true
}
}
export default PluginCSV