Socket
Socket
Sign inDemoInstall

markdown-tables-to-json

Package Overview
Dependencies
2
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.1.5 to 0.1.6

49

dist/index.js

@@ -8,3 +8,3 @@ "use strict";

return extendStatics(d, b);
}
};
return function (d, b) {

@@ -17,7 +17,9 @@ extendStatics(d, b);

Object.defineProperty(exports, "__esModule", { value: true });
exports.Extractor = void 0;
var marked_ts_1 = require("marked-ts");
var Extractor = (function (_super) {
__extends(Extractor, _super);
function Extractor(mode) {
function Extractor(mode, lowercaseKeys) {
var _this = _super.call(this) || this;
_this.lowercaseKeys = lowercaseKeys !== null && lowercaseKeys !== void 0 ? lowercaseKeys : false;
_this.reset(mode);

@@ -28,3 +30,3 @@ return _this;

get: function () { return this.extractedTables; },
enumerable: true,
enumerable: false,
configurable: true

@@ -34,4 +36,7 @@ });

Object.defineProperty(Extractor.prototype, "objects", {
get: function () { return this.extractedTables.map(function (table) { return Extractor.tableToObject(table); }); },
enumerable: true,
get: function () {
var _this = this;
return this.extractedTables.map(function (table) { return Extractor.tableToObject(table, _this.lowercaseKeys); });
},
enumerable: false,
configurable: true

@@ -75,3 +80,3 @@ });

};
Extractor.tableToObject = function (table) {
Extractor.tableToObject = function (table, lowercaseKeys) {
var keys = table.shift().slice(1);

@@ -83,10 +88,10 @@ var obj = {};

cells.forEach(function (cell, index) {
rowObj[keys[index]] = cell;
rowObj[lowercaseKeys ? keys[index].toLowerCase() : keys[index]] = cell;
});
obj[rowName] = rowObj;
obj[lowercaseKeys ? rowName.toLowerCase() : rowName] = rowObj;
});
return obj;
};
Extractor.createExtractor = function (markdown, mode) {
var extractor = new Extractor(mode);
Extractor.createExtractor = function (markdown, mode, lowercaseKeys) {
var extractor = new Extractor(mode, lowercaseKeys);
marked_ts_1.Marked.setOptions({ renderer: extractor });

@@ -96,24 +101,24 @@ marked_ts_1.Marked.parse(markdown);

};
Extractor.extractObject = function (markdown, mode) {
var objects = Extractor.extractAllObjects(markdown, mode);
Extractor.extractObject = function (markdown, mode, lowercaseKeys) {
var objects = Extractor.extractAllObjects(markdown, mode, lowercaseKeys);
return objects.length > 0 ? objects[0] : null;
};
Extractor.extractAllObjects = function (markdown, mode) {
var extractor = Extractor.createExtractor(markdown, mode);
Extractor.extractAllObjects = function (markdown, mode, lowercaseKeys) {
var extractor = Extractor.createExtractor(markdown, mode, lowercaseKeys);
return extractor.objects;
};
Extractor.extractTable = function (markdown, mode) {
var tables = Extractor.extractAllTables(markdown, mode);
Extractor.extractTable = function (markdown, mode, lowercaseKeys) {
var tables = Extractor.extractAllTables(markdown, mode, lowercaseKeys);
return tables.length > 0 ? tables[0] : null;
};
Extractor.extractAllTables = function (markdown, mode) {
var extractor = Extractor.createExtractor(markdown, mode);
Extractor.extractAllTables = function (markdown, mode, lowercaseKeys) {
var extractor = Extractor.createExtractor(markdown, mode, lowercaseKeys);
return extractor.tables;
};
Extractor.extract = function (markdown, mode) {
var extractor = Extractor.createExtractor(markdown, mode);
Extractor.extract = function (markdown, mode, lowercaseKeys) {
var extractor = Extractor.createExtractor(markdown, mode, lowercaseKeys);
return extractor.objects.length > 0 ? JSON.stringify(extractor.objects[0]) : null;
};
Extractor.extractAll = function (markdown, mode) {
var extractor = Extractor.createExtractor(markdown, mode);
Extractor.extractAll = function (markdown, mode, lowercaseKeys) {
var extractor = Extractor.createExtractor(markdown, mode, lowercaseKeys);
return extractor.objects.map(function (obj) { return JSON.stringify(obj); });

@@ -120,0 +125,0 @@ };

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var _1 = require(".");
var md_rows = "\n| name | head | body | tail | paws |\n|----------|-------|-------|-------|-------|\n| mittens | black | black | black | white |\n| dipstick | white | white | black | white |\n| snow | white | white | white | white |\n";
var md_cols = "\n| name | mittens | dipstick | snow |\n|------|---------|----------|-------|\n| head | black | white | white |\n| body | black | white | white |\n| tail | black | black | white |\n| paws | white | white | white |\n";
var md_rows = "\n| Name | Head | Body | Tail | Paws |\n|----------|-------|-------|-------|-------|\n| Mittens | BLACK | black | black | white |\n| Dipstick | white | white | black | white |\n| Snow | white | white | white | white |\n";
var md_cols = "\n| Name | Mittens | Dipstick | Snow |\n|------|---------|----------|-------|\n| Head | BLACK | white | white |\n| Body | black | white | white |\n| Tail | black | black | white |\n| Paws | white | white | white |\n";
var json_rows = _1.Extractor.extract(md_rows, 'rows');

@@ -7,0 +7,0 @@ var table_rows = _1.Extractor.extractTable(md_rows, 'rows');

{
"name": "markdown-tables-to-json",
"version": "0.1.5",
"version": "0.1.6",
"description": "Extracts tables from Markdown documents and converts to JSON objects.",

@@ -27,4 +27,4 @@ "main": "./dist/index.js",

"tslint": "^5.11.0",
"typescript": "^3.0.3"
"typescript": "^3.9.7"
}
}

@@ -16,22 +16,25 @@ # markdown-tables-to-json

// markdown string with a row-oriented table
var md_rows = `
| name | head | body | tail | paws |
let md_rows = `
| Name | Head | Body | Tail | Paws |
|----------|-------|-------|-------|-------|
| mittens | black | black | black | white |
| dipstick | white | white | black | white |
| snow | white | white | white | white |
| Mittens | BLACK | black | black | white |
| Dipstick | white | white | black | white |
| Snow | white | white | white | white |
`
// markdown string with a column-oriented table
var md_cols = `
| name | mittens | dipstick | snow |
let md_cols = `
| Name | Mittens | Dipstick | Snow |
|------|---------|----------|-------|
| head | black | white | white |
| body | black | white | white |
| tail | black | black | white |
| paws | white | white | white |
| Head | BLACK | white | white |
| Body | black | white | white |
| Tail | black | black | white |
| Paws | white | white | white |
`
console.log(Extractor.extractObject(md_rows));
console.log(Extractor.extractObject(md_cols, 'columns'));
// leave the case of the keys alone
console.log(Extractor.extractObject(md_rows, 'rows', false));
// make all the keys lowercase
console.log(Extractor.extractObject(md_cols, 'columns', true));
```

@@ -42,9 +45,12 @@

```javascript
// unmodified case
{
mittens: { head: 'black', body: 'black', tail: 'black', paws: 'white' },
dipstick: { head: 'white', body: 'white', tail: 'black', paws: 'white' },
snow: { head: 'white', body: 'white', tail: 'white', paws: 'white' }
Mittens: { Head: 'BLACK', Body: 'black', Tail: 'black', Paws: 'white' },
Dipstick: { Head: 'white', Body: 'white', Tail: 'black', Paws: 'white' },
Snow: { Head: 'white', Body: 'white', Tail: 'white', Paws: 'white' }
}
// all keys lowercase
{
mittens: { head: 'black', body: 'black', tail: 'black', paws: 'white' },
mittens: { head: 'BLACK', body: 'black', tail: 'black', paws: 'white' },
dipstick: { head: 'white', body: 'white', tail: 'black', paws: 'white' },

@@ -51,0 +57,0 @@ snow: { head: 'white', body: 'white', tail: 'white', paws: 'white' }

@@ -34,2 +34,3 @@ /*

mode: TableMode;
lowercaseKeys: boolean;
protected currentRow: string[];

@@ -40,3 +41,3 @@ protected currentTable: string[][];

get tables(): string[][][] { return this.extractedTables; };
get objects(): {}[] { return this.extractedTables.map(table => Extractor.tableToObject(table)); };
get objects(): {}[] { return this.extractedTables.map(table => Extractor.tableToObject(table, this.lowercaseKeys)); };

@@ -47,4 +48,5 @@ /**

*/
constructor(mode?: TableMode) {
constructor(mode?: TableMode, lowercaseKeys?: boolean) {
super();
this.lowercaseKeys = lowercaseKeys ?? false;
this.reset(mode);

@@ -127,3 +129,3 @@ }

*/
static tableToObject(table: string[][]): {} {
static tableToObject(table: string[][], lowercaseKeys: boolean): {} {

@@ -137,5 +139,5 @@ let keys: string[] = table.shift().slice(1);

cells.forEach((cell, index) => {
rowObj[keys[index]] = cell;
rowObj[lowercaseKeys ? keys[index].toLowerCase() : keys[index]] = cell;
});
obj[rowName] = rowObj;
obj[lowercaseKeys ? rowName.toLowerCase() : rowName] = rowObj;
});

@@ -153,4 +155,4 @@

*/
protected static createExtractor(markdown: string, mode?: TableMode): Extractor {
let extractor = new Extractor(mode);
protected static createExtractor(markdown: string, mode?: TableMode, lowercaseKeys?: boolean): Extractor {
let extractor = new Extractor(mode, lowercaseKeys);
Marked.setOptions({ renderer: extractor });

@@ -167,4 +169,4 @@ Marked.parse(markdown);

*/
static extractObject(markdown: string, mode?: TableMode): {} {
let objects = Extractor.extractAllObjects(markdown, mode);
static extractObject(markdown: string, mode?: TableMode, lowercaseKeys?: boolean): {} {
let objects = Extractor.extractAllObjects(markdown, mode, lowercaseKeys);
return objects.length > 0 ? objects[0] : null;

@@ -179,4 +181,4 @@ }

*/
static extractAllObjects(markdown: string, mode?: TableMode): {}[] {
let extractor = Extractor.createExtractor(markdown, mode);
static extractAllObjects(markdown: string, mode?: TableMode, lowercaseKeys?: boolean): {}[] {
let extractor = Extractor.createExtractor(markdown, mode, lowercaseKeys);
return extractor.objects;

@@ -191,4 +193,4 @@ }

*/
static extractTable(markdown: string, mode?: TableMode): string[][] {
let tables = Extractor.extractAllTables(markdown, mode);
static extractTable(markdown: string, mode?: TableMode, lowercaseKeys?: boolean): string[][] {
let tables = Extractor.extractAllTables(markdown, mode, lowercaseKeys);
return tables.length > 0 ? tables[0] : null;

@@ -203,4 +205,4 @@ }

*/
static extractAllTables(markdown: string, mode?: TableMode): string[][][] {
let extractor = Extractor.createExtractor(markdown, mode);
static extractAllTables(markdown: string, mode?: TableMode, lowercaseKeys?: boolean): string[][][] {
let extractor = Extractor.createExtractor(markdown, mode, lowercaseKeys);
return extractor.tables;

@@ -215,4 +217,4 @@ }

*/
static extract(markdown: string, mode?: TableMode): string {
let extractor = Extractor.createExtractor(markdown, mode);
static extract(markdown: string, mode?: TableMode, lowercaseKeys?: boolean): string {
let extractor = Extractor.createExtractor(markdown, mode, lowercaseKeys);
return extractor.objects.length > 0 ? JSON.stringify(extractor.objects[0]) : null;

@@ -227,6 +229,6 @@ }

*/
static extractAll(markdown: string, mode?: TableMode): string[] {
let extractor = Extractor.createExtractor(markdown, mode);
static extractAll(markdown: string, mode?: TableMode, lowercaseKeys?: boolean): string[] {
let extractor = Extractor.createExtractor(markdown, mode, lowercaseKeys);
return extractor.objects.map(obj => JSON.stringify(obj));
}
}

@@ -7,3 +7,3 @@ /*

* Ian Cooper
* 12 September 2018
* 31 December 2020
*

@@ -17,7 +17,7 @@ */

let md_rows = `
| name | head | body | tail | paws |
| Name | Head | Body | Tail | Paws |
|----------|-------|-------|-------|-------|
| mittens | black | black | black | white |
| dipstick | white | white | black | white |
| snow | white | white | white | white |
| Mittens | BLACK | black | black | white |
| Dipstick | white | white | black | white |
| Snow | white | white | white | white |
`

@@ -27,8 +27,8 @@

let md_cols = `
| name | mittens | dipstick | snow |
| Name | Mittens | Dipstick | Snow |
|------|---------|----------|-------|
| head | black | white | white |
| body | black | white | white |
| tail | black | black | white |
| paws | white | white | white |
| Head | BLACK | white | white |
| Body | black | white | white |
| Tail | black | black | white |
| Paws | white | white | white |
`

@@ -35,0 +35,0 @@

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc