w-data-csv 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +9 -0
- package/.eslintignore +3 -0
- package/.eslintrc.js +54 -0
- package/.jsdoc +25 -0
- package/README.md +54 -0
- package/SECURITY.md +5 -0
- package/babel.config.js +14 -0
- package/dist/w-data-csv.umd.js +7 -0
- package/dist/w-data-csv.umd.js.map +1 -0
- package/docs/WDataCsv.mjs.html +242 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +978 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1049 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
- package/docs/global.html +787 -0
- package/docs/index.html +81 -0
- package/docs/scripts/collapse.js +20 -0
- package/docs/scripts/linenumber.js +25 -0
- package/docs/scripts/nav.js +12 -0
- package/docs/scripts/polyfill.js +4 -0
- package/docs/scripts/prettify/Apache-License-2.0.txt +202 -0
- package/docs/scripts/prettify/lang-css.js +2 -0
- package/docs/scripts/prettify/prettify.js +28 -0
- package/docs/scripts/search.js +83 -0
- package/docs/styles/jsdoc.css +765 -0
- package/docs/styles/prettify.css +79 -0
- package/g-read.mjs +15 -0
- package/g-test-in.csv +3 -0
- package/g-test-out.csv +3 -0
- package/g-write.mjs +16 -0
- package/package.json +30 -0
- package/src/WDataCsv.mjs +173 -0
- package/test/PCA.test.mjs +125 -0
- package/test/cluster.test.mjs +135 -0
- package/toolg/addVersion.mjs +4 -0
- package/toolg/cleanFolder.mjs +4 -0
- package/toolg/gDistRollup.mjs +38 -0
- package/toolg/gDocsExams.mjs +48 -0
- package/toolg/modifyReadme.mjs +4 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<title>WDataCsv.mjs - Documentation</title>
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
<script src="scripts/prettify/prettify.js"></script>
|
|
10
|
+
<script src="scripts/prettify/lang-css.js"></script>
|
|
11
|
+
<!--[if lt IE 9]>
|
|
12
|
+
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
|
13
|
+
<![endif]-->
|
|
14
|
+
<link type="text/css" rel="stylesheet" href="styles/prettify.css">
|
|
15
|
+
<link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
|
|
16
|
+
<script src="scripts/nav.js" defer></script>
|
|
17
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
18
|
+
</head>
|
|
19
|
+
<body>
|
|
20
|
+
|
|
21
|
+
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
|
|
22
|
+
<label for="nav-trigger" class="navicon-button x">
|
|
23
|
+
<div class="navicon"></div>
|
|
24
|
+
</label>
|
|
25
|
+
|
|
26
|
+
<label for="nav-trigger" class="overlay"></label>
|
|
27
|
+
|
|
28
|
+
<nav >
|
|
29
|
+
|
|
30
|
+
<h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#readCsv">readCsv</a></li><li><a href="global.html#WDataCsv">WDataCsv</a></li><li><a href="global.html#writeCsv">writeCsv</a></li></ul>
|
|
31
|
+
</nav>
|
|
32
|
+
|
|
33
|
+
<div id="main">
|
|
34
|
+
|
|
35
|
+
<h1 class="page-title">WDataCsv.mjs</h1>
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
<section>
|
|
44
|
+
<article>
|
|
45
|
+
<pre class="prettyprint source linenums"><code>import fs from 'fs'
|
|
46
|
+
import csvParse from 'csv-parser'
|
|
47
|
+
import stripBom from 'strip-bom-stream'
|
|
48
|
+
import get from 'lodash/get'
|
|
49
|
+
import genPm from 'wsemi/src/genPm.mjs'
|
|
50
|
+
import ltdtkeysheads2mat from 'wsemi/src/ltdtkeysheads2mat.mjs'
|
|
51
|
+
import getCsvStrFromData from 'wsemi/src/getCsvStrFromData.mjs'
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* 讀取CSV檔,自動清除BOM
|
|
56
|
+
*
|
|
57
|
+
* @param {String} fp 輸入檔案位置字串
|
|
58
|
+
* @return {Promise} 回傳Promise,resolve回傳ltdt(各數據列為物件陣列),reject回傳錯誤訊息
|
|
59
|
+
* @example
|
|
60
|
+
*
|
|
61
|
+
* import wdc from './src/WDataCsv.mjs'
|
|
62
|
+
*
|
|
63
|
+
* let fp = './g-test-in.csv'
|
|
64
|
+
* wdc.readCsv(fp)
|
|
65
|
+
* .then((ltdt) => {
|
|
66
|
+
* console.log(ltdt)
|
|
67
|
+
* // => [ { NAME: 'Daffy Duck', AGE: '24' }, { NAME: 'Bugs 邦妮', AGE: '22' } ]
|
|
68
|
+
* })
|
|
69
|
+
* .catch((err) => {
|
|
70
|
+
* console.log(err)
|
|
71
|
+
* })
|
|
72
|
+
*
|
|
73
|
+
*/
|
|
74
|
+
async function readCsv(fp) {
|
|
75
|
+
let res = []
|
|
76
|
+
let pm = genPm()
|
|
77
|
+
fs.createReadStream(fp)
|
|
78
|
+
.pipe(stripBom())
|
|
79
|
+
.pipe(csvParse())
|
|
80
|
+
.on('data', (data) => {
|
|
81
|
+
// console.log('data', data)
|
|
82
|
+
res.push(data)
|
|
83
|
+
})
|
|
84
|
+
.on('end', () => {
|
|
85
|
+
pm.resolve(res)
|
|
86
|
+
})
|
|
87
|
+
.on('error', (err) => {
|
|
88
|
+
pm.reject(err)
|
|
89
|
+
})
|
|
90
|
+
return pm
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* 輸出數據至CSV檔案
|
|
96
|
+
*
|
|
97
|
+
* @param {String} fp 輸入檔案位置字串
|
|
98
|
+
* @param {Array} data 輸入數據陣列,為mat或ltdt格式
|
|
99
|
+
* @param {Object} [opt={}] 輸入設定物件,預設{}
|
|
100
|
+
* @param {String} [opt.mode='ltdt'] 輸入數據格式字串,可選ltdt或mat,預設ltdt
|
|
101
|
+
* @param {Array} [opt.keys=[]] 輸入指定欲輸出鍵值陣列,預設[]
|
|
102
|
+
* @param {Object} [opt.kphead={}] 輸入指定鍵值轉換物件,預設{}
|
|
103
|
+
* @return {Promise} 回傳Promise,resolve回傳成功訊息,reject回傳錯誤訊息
|
|
104
|
+
* @example
|
|
105
|
+
*
|
|
106
|
+
* import wdc from './src/WDataCsv.mjs'
|
|
107
|
+
*
|
|
108
|
+
* let ltdt = [{ name: '大福 Duck', value: 2.4 }, { name: 'Bugs 邦妮', value: '2.2' }]
|
|
109
|
+
* let fp = './g-test-out.csv'
|
|
110
|
+
* wdc.writeCsv(fp, ltdt)
|
|
111
|
+
* .then((res) => {
|
|
112
|
+
* console.log(res)
|
|
113
|
+
* // => finish
|
|
114
|
+
* })
|
|
115
|
+
* .catch((err) => {
|
|
116
|
+
* console.log(err)
|
|
117
|
+
* })
|
|
118
|
+
*
|
|
119
|
+
*/
|
|
120
|
+
async function writeCsv(fp, data, opt = {}) {
|
|
121
|
+
let err = null
|
|
122
|
+
let mat
|
|
123
|
+
let c = ''
|
|
124
|
+
|
|
125
|
+
//mode
|
|
126
|
+
let mode = get(opt, 'mode')
|
|
127
|
+
if (mode !== 'ltdt' && mode !== 'mat') {
|
|
128
|
+
mode = 'ltdt'
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (mode === 'mat') {
|
|
132
|
+
|
|
133
|
+
//save
|
|
134
|
+
mat = data
|
|
135
|
+
|
|
136
|
+
}
|
|
137
|
+
else if (mode === 'ltdt') {
|
|
138
|
+
try {
|
|
139
|
+
|
|
140
|
+
//save
|
|
141
|
+
let ltdt = data
|
|
142
|
+
|
|
143
|
+
//keys
|
|
144
|
+
let keys = get(opt, 'keys')
|
|
145
|
+
|
|
146
|
+
//kphead
|
|
147
|
+
let kphead = get(opt, 'kphead')
|
|
148
|
+
|
|
149
|
+
//ltdtkeysheads2mat
|
|
150
|
+
mat = ltdtkeysheads2mat(ltdt, keys, kphead)
|
|
151
|
+
|
|
152
|
+
}
|
|
153
|
+
catch (e) {
|
|
154
|
+
err = e.toString()
|
|
155
|
+
return Promise.reject(err)
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
//getCsvStrFromData
|
|
160
|
+
try {
|
|
161
|
+
c = getCsvStrFromData(mat)
|
|
162
|
+
}
|
|
163
|
+
catch (e) {
|
|
164
|
+
err = e.toString()
|
|
165
|
+
return Promise.reject(err)
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
//writeFileSync
|
|
169
|
+
try {
|
|
170
|
+
fs.writeFileSync(fp, c, 'utf8')
|
|
171
|
+
}
|
|
172
|
+
catch (e) {
|
|
173
|
+
err = e.toString()
|
|
174
|
+
return Promise.reject(err)
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return 'finish'
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* 讀寫CSV檔
|
|
183
|
+
*
|
|
184
|
+
* @return {Object} 回傳物件,其內有readCsv與writeCsv函式
|
|
185
|
+
* @example
|
|
186
|
+
*
|
|
187
|
+
* import wdc from './src/WDataCsv.mjs'
|
|
188
|
+
*
|
|
189
|
+
* let fpIn = './g-test-in.csv'
|
|
190
|
+
* wdc.readCsv(fpIn)
|
|
191
|
+
* .then((ltdtIn) => {
|
|
192
|
+
* console.log(ltdtIn)
|
|
193
|
+
* // => [ { NAME: 'Daffy Duck', AGE: '24' }, { NAME: 'Bugs 邦妮', AGE: '22' } ]
|
|
194
|
+
* })
|
|
195
|
+
* .catch((err) => {
|
|
196
|
+
* console.log(err)
|
|
197
|
+
* })
|
|
198
|
+
*
|
|
199
|
+
* let ltdtOut = [{ name: '大福 Duck', value: 2.4 }, { name: 'Bugs 邦妮', value: '2.2' }]
|
|
200
|
+
* let fpOut = './g-test-out.csv'
|
|
201
|
+
* wdc.writeCsv(fpOut, ltdtOut)
|
|
202
|
+
* .then((res) => {
|
|
203
|
+
* console.log(res)
|
|
204
|
+
* // => finish
|
|
205
|
+
* })
|
|
206
|
+
* .catch((err) => {
|
|
207
|
+
* console.log(err)
|
|
208
|
+
* })
|
|
209
|
+
*
|
|
210
|
+
*/
|
|
211
|
+
let WDataCsv = {
|
|
212
|
+
readCsv,
|
|
213
|
+
writeCsv,
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
export default WDataCsv
|
|
218
|
+
</code></pre>
|
|
219
|
+
</article>
|
|
220
|
+
</section>
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
</div>
|
|
228
|
+
|
|
229
|
+
<br class="clear">
|
|
230
|
+
|
|
231
|
+
<footer>
|
|
232
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.10</a> on Tue Apr 26 2022 11:57:37 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
233
|
+
</footer>
|
|
234
|
+
|
|
235
|
+
<script>prettyPrint();</script>
|
|
236
|
+
<script src="scripts/polyfill.js"></script>
|
|
237
|
+
<script src="scripts/linenumber.js"></script>
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
</body>
|
|
242
|
+
</html>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|