Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

dynamic-parsers

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dynamic-parsers

Dynamic Parsers - Strings Files Generator and Web Crawler

  • 2.0.3
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Installation

npm install dynamic-parsers --save

Multi-Platform Strings Files Manager

Define Translations Data Structure

// Platform is an exported enum in our StringsGenerator Class:
// export enum Platform { WEB = 0, IOS = 1, ANDROID = 2, API = 3 }

const translations = [
  { key: 'HELLO', translations: { en: 'Hello English', fr: 'Hello French' }, platforms: [0, 1, 2] },
  { key: 'ERROR', translations: { en: 'Error English', fr: 'Error French' }, platforms: [0, 1, 2] },
  { key: 'EMAIL_INUSE', translations: { en: 'Email in use English', fr: 'Email in use French' }, platforms: [1, 2] },
];

Setup Generator

const { StringsGenerator } = require('dynamic-parsers');

const generator = new StringsGenerator(translations, ['en', 'fr']);

Option 1 - Write to a Local File

// async/await
(async() => {

  const platform = 1; // = Platform.IOS
  const zipFile = await generator.generateZip(platform);
  fs.writeFileSync('file.zip', zipFile);
  
})();


// Promise
generator.generateZip(platform).then(zipFile => {

  const platform = 2; // = Platform.ANDROID
  fs.writeFileSync('file.zip', zipFile);

});

Option 2 - Serve in API using a Simple Express Server

app.get('/generator', async (req, res) => {

  const platform = 0; // = Platform.WEB
  const zipFile = await generator.generateZip(platform);

  res.writeHead(200, {
    'Content-Type': 'application/zip',
    'Content-Length': zipFile.length
  });
  
  return res.end(zipFile);
});

Class Parameters

const generator = new StringsGenerator(translations, languages)

paramdefaulttype
translations(required)Translations
languages(required)string[]

Translations Interface

export enum Platform { WEB = 0, IOS = 1, ANDROID = 2, API = 3 }

export interface Translations {
  readonly translations: { [key: string]: string }; // e.g. { en: 'Good Morning', fr: 'Bonjour' }
  readonly translatable?: boolean;
  readonly platforms: Platform[]; // e.g. [1, 2, 3]
  readonly key: string;
}

Web Crawler and Scraper

const crawlerConfig = {
  url: 'https://www.example.com/search/result?q=macbook',
  itemSelector: 'ul.products-grid .item',
  itemDetails: [
    { key: 'name', selector: '.product-name' },
    { key: 'sale', selector: '.product-sale .price' },
    { key: 'price', selector: '.product-details .price' },
    { key: 'image', selector: '.product-image img', attribute: 'data-src' },
  ]
};

(async () => {
  const data = await WebCrawl(crawlerConfig);
  console.log("LOG: data", data);
})();

Crawler Config Structure

// either "html" or "url" is required

export interface ItemDetailsConfig {
  key: string;
  selector: string;
  attribute?: string;
}

export interface CrawlerConfig {
  url?: string;
  html?: string;
  itemSelector: string;
  itemDetails: ItemDetailsConfig[];
}

Contact Author: Serge Harb

FAQs

Package last updated on 10 Jan 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc