npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

yandex-market-language

v0.4.1

Published

Your own Yandex Market Language (YML) generator, with blackjack and validation

Downloads

329

Readme

Yandex Market Language (YML)

Your own Yandex Market Language (YML) generator from JSON, with blackjack and validation

Твой собственный генератор Yandex Market Language (YML) из JSON, с блэкджэком и валидацией

How to use

Install with NPM

npm install yandex-market-language

Validate input

const yml = require('yandex-market-language')

const YML = yml({
  name: 'BestSeller',
  ...  
})

Create XML

YML.create()

Print to string

YML.end({ pretty: true })

Finally, write to file

const { writeFile } = require('fs')

writeFile('yandex-market.yml', YML, (err) => {
  if (err) throw err
  console.log('YML has been saved!')
})

API

yml(input: object, options?: object)

Accepts input and validates it

  • input: object — JSON which will be validated and used to generate YML.

    Object has to be fully formed before passing to yml and confront schema format, otherwise it will throw validation error.

    Examples of possible valid inputs can be seen here.

    If for some strange reason you need to generate wrong YML bypassing the validation, use options.validate: false.

  • options?: object — Lib options

    • options.validate?: boolean — validate or not input. By default true. You do not want to set it to false.
    • options.date?: string — fixed date for YML date attribute, which should represent time of YML update. If not defined, will fallback to current date. Should be in RFC2822 or ISO format.

Returns library methods create and end

const yml = require('yandex-market-language')
const YML = yml({...VALID_INPUT...})

yml(...).create()

Creates from JSON XML object with all necessary nodes formed and in place.

Returns xmlbuilder XMLElement. Since it is xmlbuilder entity, all builder's methods can be used on it. But nobody will ever use them...

const yml = require('yandex-market-language')
const YML = yml({...VALID_INPUT...}).create()
// => XMLElement { ... }

yml(...).end(options?: object)

Creates XML object and immediately prints it as a final YML in form of the string.

  • options?: object — Any options you'd normally pass to xmlbuilder end() method.
const yml = require('yandex-market-language')
const YML = yml({...VALID_INPUT...}).end({ pretty: true })
// => <yml_catalog date="2017-09-07 00:00">...</yml_catalog>

FAQ

Is it production ready?

Yeap

Why so little methods? So stupid!

That lib is small thing doing big work. It doesn't need to be more complicated than that. Also, it has feeling too, ya know...

Is validation full?

Built-in validation closely replicates Yandex specs and should be in sync.

As for now, it has some unfinished parts. Just search code for @todo to see them all.

It supports only two types of offers: Simplified and Free. Other types are rarely used, but still planned for some distant and dark future.

Finally, some things can be validated only by Yandex or too specific to write a programmable validation. Nothing can be done about it, sorry world.

I've found discrepancy with Yandex specs!

We are very sorry (no, we are not). Let us know in issues.

Oh my, it doesn't write to file! Can I have a method for it?

Nope. Just use Node's fs.writeFile method (see example above). If you can not use that method, most likely you are in environment, where writing files is a futile attempt.

License

Copyright 2014 LotusTM. Licensed under the Apache 2.0 license.