import isestr from './isestr.mjs'
import isstr from './isstr.mjs'
import isbol from './isbol.mjs'
import isWindow from './isWindow.mjs'
import downloadFileFromBlob from './downloadFileFromBlob.mjs'
/**
* 前端下載text資料成為utf-8(含BOM)檔案
*
* Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/downloadFileFromText.test.mjs Github}
* @memberOf wsemi
* @param {String} fileName 輸入檔名字串
* @param {String} ccont 輸入內容字串
* @param {Boolean} [withBOM=true] 輸入是否添加BOM,預設true
* @example
* need test in browser
*
* let ctxt = 'abc\r\nde測試'
* downloadFileFromText('data.txt',ctxt,false)
*
* let ccsv = 'a,b,c\r\nd,e,測試'
* downloadFileFromText('data.csv',ccsv,true)
*
*/
function downloadFileFromText(fileName, ccont, withBOM = true) {
//check
if (!isWindow()) {
console.log('no window')
return
}
//check
if (!isestr(fileName)) {
console.log('invalid filename')
return
}
if (!isstr(ccont)) { //可允許空字串
console.log('invalid content')
return
}
if (!isbol(withBOM)) {
console.log('withBOM is not a boolean')
return
}
//blob
let blob
if (withBOM) {
blob = new Blob(['\ufeff', ccont]) //ccont為utf8格式, 另添加BOM
}
else {
blob = new Blob([ccont])
}
//downloadFileFromBlob
downloadFileFromBlob(fileName, blob)
}
export default downloadFileFromText