unprint 0.9.1 → 0.9.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unprint",
3
- "version": "0.9.1",
3
+ "version": "0.9.3",
4
4
  "description": "Simplify common web scraping tasks while staying in control of the data.",
5
5
  "main": "src/app.js",
6
6
  "scripts": {
package/src/app.js CHANGED
@@ -362,14 +362,12 @@ function queryImages(context, selector = 'img', customOptions) {
362
362
  return imageUrls.map((imageUrl) => prefixUrl(imageUrl, options.origin, options));
363
363
  }
364
364
 
365
- function querySourceSet(context, selector, attr = 'srcset', customOptions = {}) {
366
- const srcset = queryAttribute(context, selector, attr, customOptions);
367
-
368
- if (!srcset) {
365
+ function extractSourceSet(sourceSet, customOptions) {
366
+ if (!sourceSet) {
369
367
  return null;
370
368
  }
371
369
 
372
- const sources = srcset
370
+ const sources = sourceSet
373
371
  .split(/\s*,\s*/)
374
372
  .map((source) => {
375
373
  const [link, descriptor] = source.split(' ');
@@ -406,6 +404,18 @@ function querySourceSet(context, selector, attr = 'srcset', customOptions = {})
406
404
  return sources.map((source) => prefixUrl(source.url));
407
405
  }
408
406
 
407
+ function querySourceSet(context, selector, attr = 'srcset', customOptions = {}) {
408
+ const sourceSet = queryAttribute(context, selector, attr, customOptions);
409
+
410
+ return extractSourceSet(sourceSet, customOptions);
411
+ }
412
+
413
+ function querySourceSets(context, selector, attr = 'srcset', customOptions = {}) {
414
+ const sourceSets = queryAttributes(context, selector, attr, customOptions);
415
+
416
+ return sourceSets.map((sourceSet) => extractSourceSet(sourceSet, customOptions));
417
+ }
418
+
409
419
  function queryVideo(context, selector = 'source', customOptions) {
410
420
  const options = {
411
421
  ...context.options,
@@ -452,28 +462,28 @@ function queryPosters(context, selector = 'video', customOptions) {
452
462
  return posterUrls.map((posterUrl) => prefixUrl(posterUrl, options.origin, options));
453
463
  }
454
464
 
455
- function extractJson(element) {
456
- if (!element) {
465
+ function extractJson(dataString) {
466
+ if (!dataString) {
457
467
  return null;
458
468
  }
459
469
 
460
470
  try {
461
- return JSON.parse(element.innerHTML);
471
+ return JSON.parse(dataString);
462
472
  } catch (error) {
463
473
  return null;
464
474
  }
465
475
  }
466
476
 
467
477
  function queryJson(context, selector, customOptions) {
468
- const target = queryElement(context, selector, customOptions);
478
+ const dataString = queryContent(context, selector, customOptions);
469
479
 
470
- return extractJson(target);
480
+ return extractJson(dataString);
471
481
  }
472
482
 
473
483
  function queryJsons(context, selector, customOptions) {
474
- const targets = queryElements(context, selector, customOptions);
484
+ const dataStrings = queryContents(context, selector, customOptions);
475
485
 
476
- return targets.map((target) => extractJson(target)).filter(Boolean);
486
+ return dataStrings.map((dataString) => extractJson(dataString)).filter(Boolean);
477
487
  }
478
488
 
479
489
  function extractDate(dateString, format, customOptions) {
@@ -605,7 +615,9 @@ const queryFns = {
605
615
  duration: queryDuration,
606
616
  dur: queryDuration,
607
617
  sourceSet: querySourceSet,
618
+ sourceSets: querySourceSets,
608
619
  srcSet: querySourceSet,
620
+ srcSets: querySourceSets,
609
621
  url: queryUrl,
610
622
  urls: queryUrls,
611
623
  video: queryVideo,
package/tests/index.html CHANGED
@@ -37,6 +37,7 @@
37
37
  <img class="image" src="https://i.redd.it/1s22dsrqy0181.jpg">
38
38
  <img class="image" src="https://i.redd.it/e91oo4ueyeb71.jpg">
39
39
 
40
+ <img class="srcset" srcset="https://i.redd.it/e91oo4ueyeb71.jpg 240w, https://i.redd.it/vn9h981hlx281.png 480w, https://i.redd.it/e91oo4ueyeb71.jpg 640w">
40
41
  <img class="srcset" srcset="https://i.redd.it/e91oo4ueyeb71.jpg 240w, https://i.redd.it/vn9h981hlx281.png 480w, https://i.redd.it/e91oo4ueyeb71.jpg 640w">
41
42
 
42
43
  <video id="video" poster="https://i.imgur.com/eDQmLys.jpg"><source src="https://i.imgur.com/eDQmLys.mp4"></video>
package/tests/init.js CHANGED
@@ -23,6 +23,7 @@ async function initTest() {
23
23
  console.log('timestamp', res.context.query.duration('#timestamp'));
24
24
  console.log('number', res.context.query.number('.number'));
25
25
  console.log('numbers', res.context.query.numbers('.number'));
26
+ console.log('number indexed', res.context.query.number('.number', { match: /(\d+)/, matchIndex: 1 }));
26
27
  console.log('data', res.context.query.json('#json'));
27
28
  console.log('items', res.context.query.contents('.item'));
28
29
  console.log('link', res.context.query.url('#link'));
@@ -30,6 +31,7 @@ async function initTest() {
30
31
  console.log('image', res.context.query.img('.image'));
31
32
  console.log('images', res.context.query.imgs('.image'));
32
33
  console.log('srcset', res.context.query.sourceSet('.srcset'));
34
+ console.log('srcsets', res.context.query.sourceSets('.srcset'));
33
35
  console.log('path', res.context.query.url('#path'));
34
36
  console.log('relative path', res.context.query.url('#relativePath'));
35
37
  console.log('exists', res.context.query.exists('#title'));