') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - Limoer96/csv2json: A Tool convert CSV to JSON or JS Object with no dependencies. · GitHub
Skip to content

Repository files navigation

csv2jsonfile

Build StatusCodecovnpmnpm bundle size

A Tool convert CSV to JSON or JS Object with NO Dependencies.

Install

npm install --save csv2jsonfile

or

yarn add csv2jsonfile

see from npm package.

Usage

note: the csv file must have header(used as key), like the example below:

city,level,alias
Shanghai,3,SH
Chongqing,3,SQ
Jinan,4,JN 

CSV to JSON

constcsv2jsonfile=require('csv2jsonfile');constpath=require('path');constsourcePath=path.resolve(__dirname,'data.csv');consttargetPath=path.resolve(__dirname,'result.json');// default convert CSV with headercsv2jsonfile(sourcePath,targetPath).then((time)=>{console.log(`use: ${time} ms`);}).catch((err)=>{console.log(err.message);})// result in result.json/*[ { city: "Shangehai", level: "3", alias: "SH" }, { city: "Chongqing", level: "3", alias: "CQ" },]*/// CSV without headercsv2jsonfile(sourcePath,targetPath,{header: false}).then((time)=>{console.log(`use: ${time} ms`);}).catch((err)=>{console.log(err.message);})

CSV to JavaScript Object

varcsv2jsonfile=require('csv2jsonfile');csv2jsonfile.inline('data.csv').then((obj)=>{console.log(obj)}).catch((err)=>{console.log(err);})// CSV without headercsv2jsonfile.inline('data.csv',{header: false}).then((obj)=>{console.log(obj);}).catch((err)=>{console.log(err);})

API

/** * convert csv to json file * @param {string} sourcePath absolute path of csv file  * @param {string} targetPath absolute path of json file * @param {object} options default { header: true } * @return {Promise} ms usage through convert progress */csv2jsonfile(sourcePath,targetPath,options?)/** * convert csv to javascript object * @param {string} sourcePath absolute path of csv file * @param {object} options default { header: true } * @return {Promise} the object after convert */csv2jsonfile.inline(sourcePath,options?)

ChangeLog

v1.2.0

  1. Delete targetPath file if it exists before convert.(no need to manuallt clear)
  2. add No Header CSV support.

If the CSV without header, It will be converted into Array each line. E.g:

// data.csv => data.json// 1. without header[["Shanghai","3","SH"],["Chongqing","3","CQ"],["Jinan","4","JN"]]// with header[{"city": "Shanghai","level": "3","alias": "SH"},{"city": "Chongqing","level": "3","alias": "CQ"},{"city": "Jinan","level": "4","alias": "JN"}]
  1. fix bug: if there are no new empty line(\n) at the end of the file, may cause confusion.

About

A Tool convert CSV to JSON or JS Object with no dependencies.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages