All files / src/lib parser.js

70% Statements 7/10
0% Branches 0/2
50% Functions 2/4
70% Lines 7/10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33        1x             1x 2x 2x   8x         2x               2x        
import path from 'path';
import cheerio from 'cheerio';
 
 
const targetTags = {
  link: 'href',
  script: 'src',
  img: 'src',
  meta: 'content',
};
 
const parsePage = (page, dir) => {
  const $ = cheerio.load(page);
  const urls = Object.keys(targetTags)
  .reduce((acc, tag) =>
    [...acc,
      ...$(tag)
  .map((i, el) => $(el).attr(targetTags[tag]))
  .get()], []);
 
  const newPage = urls.reduce((url, acc) => {
    const name = (path.dirname(acc) + path.basename(acc))
    .replace(/\//gi, '-');
    return url.replace(acc, `${dir}/${name.length < 10 ?
       name :
       name.slice(name.length / 1.2)}`);
  }, page);
 
  return [newPage, urls];
};
 
export default parsePage;