parse.mjs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { internalGetIconData } from './get-icon.mjs';
  2. import { getIconsTree } from './tree.mjs';
  3. import '../icon/merge.mjs';
  4. import '../icon/defaults.mjs';
  5. import '../icon/transformations.mjs';
  6. function parseIconSet(data, callback) {
  7. const names = [];
  8. if (typeof data !== "object" || typeof data.icons !== "object") {
  9. return names;
  10. }
  11. if (data.not_found instanceof Array) {
  12. data.not_found.forEach((name) => {
  13. callback(name, null);
  14. names.push(name);
  15. });
  16. }
  17. const tree = getIconsTree(data);
  18. for (const name in tree) {
  19. const item = tree[name];
  20. if (item) {
  21. callback(name, internalGetIconData(data, name, item));
  22. names.push(name);
  23. }
  24. }
  25. return names;
  26. }
  27. async function parseIconSetAsync(data, callback) {
  28. const names = [];
  29. if (typeof data !== "object" || typeof data.icons !== "object") {
  30. return names;
  31. }
  32. if (data.not_found instanceof Array) {
  33. for (let i = 0; i < data.not_found.length; i++) {
  34. const name = data.not_found[i];
  35. await callback(name, null);
  36. names.push(name);
  37. }
  38. }
  39. const tree = getIconsTree(data);
  40. for (const name in tree) {
  41. const item = tree[name];
  42. if (item) {
  43. await callback(name, internalGetIconData(data, name, item));
  44. names.push(name);
  45. }
  46. }
  47. return names;
  48. }
  49. export { parseIconSet, parseIconSetAsync };