laraveltranslations
Version:
Package for load Laravel translations into JS
47 lines (37 loc) • 1.37 kB
text/typescript
import { LangObject, ParseDir } from "../../types";
const _ = require("lodash");
const path = require("path");
const fs = require("fs");
import { FileParser } from "./FileParser";
export class JSONParser extends FileParser {
/**
* Parse json files
*/
public execute(): LangObject {
this.dirs.forEach((parseDirObject: ParseDir) => {
const basePath = parseDirObject.path;
const files = fs.readdirSync(basePath).filter((file: string) => {
return path.extname(file) === ".json";
});
if (files.length) {
files.forEach((file: string) => {
const lang: string = path.basename(file, ".json"),
langObject: LangObject = JSON.parse(fs.readFileSync(path.join(basePath, file)));
if (this.langContent[lang] === undefined) {
this.langContent[lang] = <LangObject>{};
}
if (langObject && Object.keys(langObject).length) {
if (parseDirObject.namespace) {
this.initNamespace(lang, parseDirObject.namespace);
// @ts-ignore
_.assign(this.langContent[lang][parseDirObject.namespace], langObject);
} else {
_.assign(this.langContent[lang], langObject);
}
}
});
}
});
return this.langContent;
}
}