TypeScript + Node クリップボードにコピーした内容をCSV形式に変換する簡単なプログラムをつくってみた

仕様
以下のような文字列をクリップボードにコピーします。
hoge
1
true
foo
2
false
bar
3
true
プログラムを実行します。
npm run start 3
3 はCSVのカラム数です。
以下が出力されます。
hoge,1,true
foo,2,false
bar,3,true
実装紹介
コードのみ紹介です。clipboardy というnpmモジュールを使いました。
import * as clipboard from 'clipboardy'
import getColumnNumFromArg from './helper/getColumnNumFromArg.js'
import makeOutput from './helper/makeOutput.js'
const main = (): void => {
const columnNum = getColumnNumFromArg()
const c = clipboard.readSync()
const arr = c.split(/\r\n/)
const output = makeOutput(arr, columnNum)
console.log(output)
}
main()
const makeOutput = (arr: string[], columnNum: number): string =>
arr.reduce((prev, current, index) => {
if ((index + 1) % columnNum === 0) {
return `${prev}${current}\r\n`
} else {
return `${prev}${current},`
}
}, '')
export default makeOutput
const getColumnNumFromArg = () => {
const columnNum = parseInt(process.argv[2])
if (isNaN(columnNum)) throw Error('カラム数を数値で指定してください')
return columnNum
}
export default getColumnNumFromArg
最近のコメント