Refactoring layout to fit with a different standard.
- Same directory for the source and library files. - Switched from dotted to lodash directly. - tscconfig.json moved up a level. - Updated TypeScript packages. - Updated various files that were now throwing errors.
This commit is contained in:
parent
9e42f79fc2
commit
dce80229c9
10 changed files with 87 additions and 74 deletions
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
rdlkf() { [ -L "$1" ] && (local lk="$(readlink "$1")"; local d="$(dirname "$1")"; cd "$d"; local l="$(rdlkf "$lk")"; ([[ "$l" = /* ]] && echo "$l" || echo "$d/$l")) || echo "$1"; }
|
rdlkf() { [ -L "$1" ] && (local lk="$(readlink "$1")"; local d="$(dirname "$1")"; cd "$d"; local l="$(rdlkf "$lk")"; ([[ "$l" = /* ]] && echo "$l" || echo "$d/$l")) || echo "$1"; }
|
||||||
DIR="$(dirname "$(rdlkf "$0")")"
|
DIR="$(dirname "$(rdlkf "$0")")"
|
||||||
exec /usr/bin/env node --harmony "$DIR/../lib/cli.js" "$@"
|
exec /usr/bin/env node --harmony "$DIR/../src/cli.js" "$@"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
rdlkf() { [ -L "$1" ] && (local lk="$(readlink "$1")"; local d="$(dirname "$1")"; cd "$d"; local l="$(rdlkf "$lk")"; ([[ "$l" = /* ]] && echo "$l" || echo "$d/$l")) || echo "$1"; }
|
rdlkf() { [ -L "$1" ] && (local lk="$(readlink "$1")"; local d="$(dirname "$1")"; cd "$d"; local l="$(rdlkf "$lk")"; ([[ "$l" = /* ]] && echo "$l" || echo "$d/$l")) || echo "$1"; }
|
||||||
DIR="$(dirname "$(rdlkf "$0")")"
|
DIR="$(dirname "$(rdlkf "$0")")"
|
||||||
exec /usr/bin/env node --harmony "$DIR/../lib/cli.js" count "$@"
|
exec /usr/bin/env node --harmony "$DIR/../src/cli.js" count "$@"
|
||||||
|
|
|
@ -6,9 +6,10 @@
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://git.mfgames.com/author-intrusion/markdowny.git"
|
"url": "git+https://git.mfgames.com/author-intrusion/markdowny.git"
|
||||||
},
|
},
|
||||||
"main": "index.js",
|
"main": "src/cli",
|
||||||
|
"types": "src/cli.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"build": "tsc"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"markdown"
|
"markdown"
|
||||||
|
@ -35,7 +36,7 @@
|
||||||
"gulp": "^3.9.1",
|
"gulp": "^3.9.1",
|
||||||
"lodash": "^4.16.5",
|
"lodash": "^4.16.5",
|
||||||
"markdown-table": "^1.0.0",
|
"markdown-table": "^1.0.0",
|
||||||
"typescript": "^2.0.6",
|
"typescript": "^2.5.3",
|
||||||
"yaml-front-matter": "^3.4.0",
|
"yaml-front-matter": "^3.4.0",
|
||||||
"yargs": "^6.3.0"
|
"yargs": "^6.3.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ import * as yamlFrontMatter from "yaml-front-matter";
|
||||||
*/
|
*/
|
||||||
export function scanFiles(argv, files: string[])
|
export function scanFiles(argv, files: string[])
|
||||||
{
|
{
|
||||||
var list = [];
|
var list: any[] = [];
|
||||||
|
|
||||||
for (var file of files)
|
for (var file of files)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
import * as _ from "lodash";
|
||||||
import * as comma from "add-commas";
|
import * as comma from "add-commas";
|
||||||
import * as dotted from "dotted";
|
|
||||||
import * as markdownTable from "markdown-table";
|
import * as markdownTable from "markdown-table";
|
||||||
import * as scanner from "./scanner";
|
import * as scanner from "./scanner";
|
||||||
|
|
||||||
|
@ -30,11 +30,11 @@ export function run(argv) {
|
||||||
|
|
||||||
export function render(argv, data) {
|
export function render(argv, data) {
|
||||||
for (var item of data) {
|
for (var item of data) {
|
||||||
var title = dotted.getNested(item, argv.title);
|
var title = _.get(item, argv.title);
|
||||||
var value = dotted.getNested(item, argv.field);
|
var value = _.get(item, argv.field);
|
||||||
|
|
||||||
console.log(`# ${title}`);
|
console.log(`# ${title}`);
|
||||||
console.log();
|
console.log();
|
||||||
console.log(value.replace("\n", "\n\n");
|
console.log(value.replace("\n", "\n\n"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
73
src/table.ts
73
src/table.ts
|
@ -1,11 +1,12 @@
|
||||||
|
import * as _ from "lodash";
|
||||||
import * as comma from "add-commas";
|
import * as comma from "add-commas";
|
||||||
import * as dotted from "dotted";
|
|
||||||
import * as markdownTable from "markdown-table";
|
import * as markdownTable from "markdown-table";
|
||||||
import * as scanner from "./scanner";
|
import * as scanner from "./scanner";
|
||||||
|
|
||||||
export var help = "Create a summary table of requested fields";
|
export var help = "Create a summary table of requested fields";
|
||||||
|
|
||||||
export function args(argv) {
|
export function args(argv)
|
||||||
|
{
|
||||||
return argv
|
return argv
|
||||||
.help("help")
|
.help("help")
|
||||||
|
|
||||||
|
@ -35,20 +36,23 @@ export function args(argv) {
|
||||||
.argv;
|
.argv;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function run(argv) {
|
export function run(argv)
|
||||||
|
{
|
||||||
var files = argv._.splice(1);
|
var files = argv._.splice(1);
|
||||||
var data = scanner.scanFiles(argv, files);
|
var data = scanner.scanFiles(argv, files);
|
||||||
render(argv, data);
|
render(argv, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function render(argv, data) {
|
export function render(argv, data)
|
||||||
|
{
|
||||||
// Parse out the options and fields from the sources.
|
// Parse out the options and fields from the sources.
|
||||||
var columns = parse(argv, argv.titles, argv.fields);
|
var columns = parse(argv, argv.titles, argv.fields);
|
||||||
|
|
||||||
// Create the header row.
|
// Create the header row.
|
||||||
var header = [];
|
var header: any[] = [];
|
||||||
|
|
||||||
for (var column of columns) {
|
for (var column of columns)
|
||||||
|
{
|
||||||
header.push(column.header);
|
header.push(column.header);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,32 +60,37 @@ export function render(argv, data) {
|
||||||
var table = [header];
|
var table = [header];
|
||||||
|
|
||||||
// Loop through the results and get the fields we need to display.
|
// Loop through the results and get the fields we need to display.
|
||||||
var totals = ["Totals"];
|
var totals: any = ["Totals"];
|
||||||
|
|
||||||
for (var metadata of data) {
|
for (var metadata of data)
|
||||||
|
{
|
||||||
// Add the row to the table.
|
// Add the row to the table.
|
||||||
var row = [];
|
var row: any[] = [];
|
||||||
table.push(row);
|
table.push(row);
|
||||||
|
|
||||||
// Loop through our fields and retrieve each one.
|
// Loop through our fields and retrieve each one.
|
||||||
for (var index = 0; index < columns.length; index++) {
|
for (var index = 0; index < columns.length; index++)
|
||||||
|
{
|
||||||
// Grab the value, even if nested.
|
// Grab the value, even if nested.
|
||||||
var column = columns[index];
|
var column = columns[index];
|
||||||
var value = dotted.getNested(metadata, column.ref);
|
var value = _.get(metadata, column.ref);
|
||||||
|
|
||||||
// If we have a list, format it with spaces.
|
// If we have a list, format it with spaces.
|
||||||
if (Array.isArray(value)) {
|
if (Array.isArray(value))
|
||||||
|
{
|
||||||
value = value.join(argv.listDelimiter);
|
value = value.join(argv.listDelimiter);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we have totals, then add them.
|
// If we have totals, then add them.
|
||||||
if (column.total) {
|
if (column.total)
|
||||||
|
{
|
||||||
totals[index] = totals[index] ? parseInt(totals[index]) : 0;
|
totals[index] = totals[index] ? parseInt(totals[index]) : 0;
|
||||||
totals[index] += parseInt(value);
|
totals[index] += parseInt(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we have commas requested, then add those.
|
// If we have commas requested, then add those.
|
||||||
if (column.comma) {
|
if (column.comma)
|
||||||
|
{
|
||||||
value = comma(value);
|
value = comma(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,10 +100,13 @@ export function render(argv, data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we have totals, then add it at the bottom.
|
// If we have totals, then add it at the bottom.
|
||||||
if (totals.length > 1) {
|
if (totals.length > 1)
|
||||||
for (var index = 0; index < columns.length && index < totals.length; index++) {
|
{
|
||||||
|
for (var index = 0; index < columns.length && index < totals.length; index++)
|
||||||
|
{
|
||||||
var column = columns[index];
|
var column = columns[index];
|
||||||
if (column.comma) {
|
if (column.comma)
|
||||||
|
{
|
||||||
totals[index] = comma(totals[index]);
|
totals[index] = comma(totals[index]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,35 +124,42 @@ export function render(argv, data) {
|
||||||
});
|
});
|
||||||
|
|
||||||
// If we don't want the header row, strip off the first line.
|
// If we don't want the header row, strip off the first line.
|
||||||
if (!argv.tableHeader) {
|
if (!argv.tableHeader)
|
||||||
|
{
|
||||||
formattedTable = formattedTable.substring(formattedTable.indexOf("\n") + 1);
|
formattedTable = formattedTable.substring(formattedTable.indexOf("\n") + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(formattedTable);
|
console.log(formattedTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
class Column {
|
class Column
|
||||||
|
{
|
||||||
ref: string;
|
ref: string;
|
||||||
header: string;
|
header: string;
|
||||||
align: string = "l";
|
align: string = "l";
|
||||||
comma: boolean = false;
|
comma: boolean = false;
|
||||||
total: boolean = false;
|
total: boolean = false;
|
||||||
|
|
||||||
public set(field, header) {
|
public set(field, header)
|
||||||
|
{
|
||||||
this.ref = this.parseSpecifier(field);
|
this.ref = this.parseSpecifier(field);
|
||||||
this.header = this.parseSpecifier(header ? header : field);
|
this.header = this.parseSpecifier(header ? header : field);
|
||||||
}
|
}
|
||||||
|
|
||||||
private parseSpecifier(spec): string {
|
private parseSpecifier(spec): string
|
||||||
|
{
|
||||||
// See if we have options.
|
// See if we have options.
|
||||||
var m = spec.match(/^(.*?):([lcr\.st]+)?$/);
|
var m = spec.match(/^(.*?):([lcr\.st]+)?$/);
|
||||||
|
|
||||||
if (m) {
|
if (m)
|
||||||
|
{
|
||||||
// We have a match, so put the first part as the specifier.
|
// We have a match, so put the first part as the specifier.
|
||||||
spec = m[1];
|
spec = m[1];
|
||||||
|
|
||||||
for (var s of m[2]) {
|
for (var s of m[2])
|
||||||
switch (s) {
|
{
|
||||||
|
switch (s)
|
||||||
|
{
|
||||||
case 'c':
|
case 'c':
|
||||||
case 'l':
|
case 'l':
|
||||||
case 'r':
|
case 'r':
|
||||||
|
@ -164,12 +183,14 @@ class Column {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function parse(argv, titles, fields): Column[] {
|
function parse(argv, titles, fields): Column[]
|
||||||
|
{
|
||||||
var columns: Column[] = [];
|
var columns: Column[] = [];
|
||||||
|
|
||||||
if (!titles) titles = [];
|
if (!titles) titles = [];
|
||||||
|
|
||||||
for (var index = 0; index < fields.length; index++) {
|
for (var index = 0; index < fields.length; index++)
|
||||||
|
{
|
||||||
var column = new Column();
|
var column = new Column();
|
||||||
|
|
||||||
column.set(
|
column.set(
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"target": "es5",
|
|
||||||
"module": "umd",
|
|
||||||
"moduleResolution": "node",
|
|
||||||
"isolatedModules": false,
|
|
||||||
"jsx": "react",
|
|
||||||
"experimentalDecorators": true,
|
|
||||||
"emitDecoratorMetadata": true,
|
|
||||||
"declaration": true,
|
|
||||||
"noImplicitAny": false,
|
|
||||||
"removeComments": true,
|
|
||||||
"noLib": false,
|
|
||||||
"preserveConstEnums": true,
|
|
||||||
"suppressImplicitAnyIndexErrors": true,
|
|
||||||
"inlineSourceMap": true,
|
|
||||||
"outDir": "../lib"
|
|
||||||
},
|
|
||||||
"filesGlob": [
|
|
||||||
"**/*.ts",
|
|
||||||
"**/*.tsx",
|
|
||||||
"!node_modules/**"
|
|
||||||
],
|
|
||||||
"compileOnSave": true,
|
|
||||||
"buildOnSave": false,
|
|
||||||
"files": [
|
|
||||||
"cli.ts",
|
|
||||||
"count.ts",
|
|
||||||
"scanner.ts",
|
|
||||||
"sections.ts",
|
|
||||||
"table.ts",
|
|
||||||
"version.ts"
|
|
||||||
],
|
|
||||||
"atom": {
|
|
||||||
"rewriteTsconfig": true
|
|
||||||
}
|
|
||||||
}
|
|
13
src/tslint.json
Normal file
13
src/tslint.json
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"defaultSeverity": "error",
|
||||||
|
"extends": [
|
||||||
|
"tslint:recommended"
|
||||||
|
],
|
||||||
|
"jsRules": {},
|
||||||
|
"rules": {
|
||||||
|
"indent": [true, "spaces", 4],
|
||||||
|
"interface-name": [true, "never-prefix"],
|
||||||
|
"max-line-length": [true, 80]
|
||||||
|
},
|
||||||
|
"rulesDirectory": []
|
||||||
|
}
|
15
tsconfig.json
Normal file
15
tsconfig.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"compileOnSave": true,
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es5",
|
||||||
|
"lib": ["es6", "dom"],
|
||||||
|
"module": "commonjs",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"types": ["node"],
|
||||||
|
"declaration": true,
|
||||||
|
"noImplicitAny": false,
|
||||||
|
"strictNullChecks": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"experimentalDecorators": true
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue