UNPKG

hygen-create

Version:

simplifies creation of hygen templates from existing projects

158 lines 11.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const inflection = require("inflection"); class TemplateInfo { constructor(relpath, abspath, using_name, gen_parent_dir) { this.relpath = relpath; this.abspath = abspath; this.using_name = using_name; this.gen_parent_dir = gen_parent_dir; this._replacements = []; this._lines = []; this._lines_after_replacements = []; this.is_binary = abspath.isBinaryFile; } get template_filename() { return Templatizer.template_filename(this.relpath); } get target_filename() { return this.getProcessedText(this.relpath) || this.relpath; } get header() { let target_path_line; if (this.gen_parent_dir) { target_path_line = `to: <%= name %>/` + this.target_filename + "\n"; } else { target_path_line = `to: ${this.target_filename}\n`; } let header = "" + "---\n" + target_path_line + "---\n"; return header; } get numReplacementLines() { return this._replacements.length; } get replacements() { return this._replacements; } get contentsAfterReplacements() { return this._lines_after_replacements.join('\n'); } process() { if (this.is_binary) { return; } this._lines = this.abspath.contentsBuffer.toString().split('\n'); let num = 0; for (let line of this._lines) { num++; let line_replacements = this.processLine(line, num); if (line_replacements) { this._replacements.push(line_replacements); this._lines_after_replacements.push(line_replacements.new_text); } else { this._lines_after_replacements.push(line); } } } replacer(to_word) { return (match, p1_pfx, p2_words, // p2a_exact:string, p2b_uppercased, p2b_lowercased, p2b_capitalized, p2b_camelized, p2b_camelized_lf, p2b_underscored, p2b_underscored_up, p2b_dasherized, p2b_titlized, offset, whole_string) => { let result; /*if ( p2a_exact ) { result = to_word } else */ if (p2b_uppercased) { result = `${to_word}.toUpperCase()`; } else if (p2b_lowercased) { result = `${to_word}.toLowerCase()`; } else if (p2b_capitalized) { result = `h.capitalize(${to_word})`; } else if (p2b_camelized) { result = `h.inflection.camelize(${to_word}, false)`; } else if (p2b_camelized_lf) { result = `h.inflection.camelize(${to_word}, true)`; } else if (p2b_underscored) { result = `h.inflection.underscore(${to_word}, false)`; } else if (p2b_underscored_up) { result = `h.inflection.underscore(${to_word}, false).toUpperCase()`; } else if (p2b_dasherized) { result = `h.inflection.transform(${to_word}, ['underscore','dasherize'])`; } else if (p2b_titlized) { result = `h.inflection.titlize(${to_word})`; } else { result = "?"; } return `${p1_pfx}<%= ${result} %>`; }; } get regex() { let from_word = this.using_name; let uppercased = from_word.toUpperCase(); let lowercased = from_word.toLowerCase(); let capitalized = inflection.capitalize(from_word); let camelized = inflection.camelize(from_word, false); let camelized_lf = inflection.camelize(from_word, true); let underscored = inflection.underscore(from_word, false); let underscored_up = inflection.underscore(from_word, false).toUpperCase(); let dasherized = inflection.transform(from_word, ['underscore', 'dasherize']); let titlized = inflection.titleize(from_word); let combined = "" // + `(${from_word})` + `(${uppercased})` + `|(${lowercased})` + `|(${capitalized})` + `|(${camelized})` + `|(${camelized_lf})` + `|(${underscored})` + `|(${underscored_up})` + `|(${dasherized})` + `|(${titlized})`; return new RegExp(`(^|[^a-zA-Z0-9])(${combined})`, 'g'); } getProcessedText(text) { let from_word = this.using_name; let to_word = 'name'; let regex = this.regex; if (text.search(regex) == -1 && text.search('<%') == -1) return null; return text.replace(/<%/g, '<%%').replace(regex, this.replacer(to_word)); } processLine(line, num) { let new_text = this.getProcessedText(line); if (new_text == null) return null; let result = { linenum: num, old_text: line, new_text: new_text }; return result; } } exports.TemplateInfo = TemplateInfo; class Templatizer { static process(relpath, abspath, from_name, gen_parent_dir) { let result = new TemplateInfo(relpath, abspath, from_name, gen_parent_dir); result.process(); return result; } static template_filename(relpath) { return relpath.replace(/\//g, '_') + ".ejs.t"; } } exports.Templatizer = Templatizer; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGVtcGxhdGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSx5Q0FBd0M7QUFVeEMsTUFBYSxZQUFZO0lBR3JCLFlBQW1CLE9BQWUsRUFBUyxPQUFnQixFQUFTLFVBQWtCLEVBQVMsY0FBdUI7UUFBbkcsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQVM7UUF3QzlHLGtCQUFhLEdBQTJCLEVBQUUsQ0FBQTtRQUMxQyxXQUFNLEdBQWtCLEVBQUUsQ0FBQTtRQUMxQiw4QkFBeUIsR0FBa0IsRUFBRSxDQUFBO1FBekNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUE7SUFDekMsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQ3hCLE9BQU8sV0FBVyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQzlELENBQUM7SUFFRCxJQUFXLE1BQU07UUFFYixJQUFJLGdCQUF3QixDQUFBO1FBRTVCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixnQkFBZ0IsR0FBRyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQTtTQUN0RTthQUFNO1lBQ0gsZ0JBQWdCLEdBQUcsT0FBTyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUE7U0FDckQ7UUFFRCxJQUFJLE1BQU0sR0FBRyxFQUFFO2NBQ1QsT0FBTztjQUNQLGdCQUFnQjtjQUNoQixPQUFPLENBQUE7UUFFYixPQUFPLE1BQU0sQ0FB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