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

plain-text-data-to-json

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

plain-text-data-to-json

Transform a simple plain-text database to JSON

  • 2.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
131
increased by24.76%
Maintainers
1
Weekly downloads
 
Created
Source

plain-text-data-to-json

Build Coverage Downloads Size

Transform a “database” / basic (word, phrase) list from plain text to JSON.

Install

This package is ESM only: Node 12+ is needed to use it and it must be imported instead of required.

npm:

npm install plain-text-data-to-json

Use

var fs = require('fs')
var toJSON = require('plain-text-data-to-json')

var doc = fs.readFileSync('input.txt', 'utf8')

var data = toJSON(doc)

fs.writeFileSync('output.json', JSON.stringify(data, null, 2) + '\n')

API

This package exports the following identifiers: toJson. There is no default export.

toJson(value[, options])

Transforms the given value (string) to JSON. Don’t like the default comment and property-value pair delimiters? Specify your own:

options
options.comment

Character(s) to use for line-comments, false turns off comments (string, Array.<string>, or boolean, default: '%')

options.delimiter

Character to use as delimiter between property-value pairs (string, default: ':')

options.forgiving

How relaxed to be ('fix' or boolean, default: false). When true, doesn’t throw for duplicate keys. When 'fix', doesn’t throw for property-value pairs and overwrites (see errors).

options.log

Whether to log when forgiving ignores an error (boolean, default: true).

Why

I found myself rewriting a simple transformation over and over. This (verbosely named) project fixes that. It might not be useful, or too simple for others, but suites my use cases.

“Plain text”

The term plain text might be confusing. It’s actually more of some (sparingly specified) standard.

Comments

Use a percentage sign (by default) to specify a comment. The comment will last until the end of line.

% This is a completely commented line.
unicorn % This is a partially commented line.

Yields:

['unicorn']

Whitespace

Initial or final white space (\s) is trimmed from values.

       unicorn     % some value

Yields:

['unicorn']

Empty lines

Empty lines are striped. This includes blank (whitespace only) lines.

    %%% this file contains a value. %%%

unicorn

Yields:

['unicorn']

Property-value pairs

If a line includes a colon (by default), the library returns an object.

unicorn : magic creature

Yields:

{unicorn: 'magic creature'}

Values

All other lines are treated as array values.

unicorn

Yields:

["unicorn"]

Errors

Some errors are thrown when malformed “plain-text” is found, such as:

  • When lines both with and without colons exist
  • In arrays, when duplicate values exist (unless forgiving: true)
  • In objects, when duplicate properties exist (unless forgiving: true)
  • In objects, when duplicate properties with different values exist (unless forgiving: "fix")

License

MIT © Titus Wormer

Keywords

FAQs

Package last updated on 29 Mar 2021

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