UNPKG

rutile

Version:

Factory automation for Mobile Enterprise.

249 lines (222 loc) 6.35 kB
var fs = require('fs'); // ***** functions for mustache ***** var Align_dslash = function(){ return function(text,render){ var rendered_text = render(text); var lines = rendered_text.split('\n'); var index = 0; for( var i=0; i<lines.length; i++ ){ var res = lines[i].match('//'); if( !res ){ continue; } if( res['index'] > index ){ index = res['index']; } } var new_lines = []; for( var i=0; i<lines.length; i++ ){ var key_val = lines[i].split('//'); if( key_val[1] ){ var key = key_val[0]; var val = key_val[1]; var dif = index - key.length; var sep = ''; for( var j=0; j<dif; j++ ){ sep = sep + ' '; } sep += '//'; var new_line = key + sep + val; new_lines.push(new_line); }else{ new_lines.push(lines[i]); } } var new_text = new_lines.join('\n'); return new_text; }; }; var Align_colon = function(){ return function(text,render){ var rendered_text = render(text); var lines = rendered_text.split('\n'); var index = 0; for( var i=0; i<lines.length; i++ ){ var res = lines[i].match(':'); if( !res ){ continue; } if( res['index'] > index ){ index = res['index']; } } var new_lines = []; for( var i=0; i<lines.length; i++ ){ var key_val = lines[i].split(':'); if( key_val[1] ){ var key = key_val[0]; var val = key_val[1]; var dif = index - key.length; var sep = ''; for( var j=0; j<dif; j++ ){ sep = sep + ' '; } sep += ':'; var new_line = key + sep + val; new_lines.push(new_line); }else{ new_lines.push(lines[i]); } } var new_text = new_lines.join("\n"); return new_text; }; }; var Align_equals = function(){ return function(text,render){ var rendered_text = render(text); var lines = rendered_text.split('\n'); var index = 0; for( var i=0; i<lines.length; i++ ){ var res = lines[i].match('='); if( !res ){ continue; } if( res['index'] > index ){ index = res['index']; } } var new_lines = []; for( var i=0; i<lines.length; i++ ){ var key_val = lines[i].split('='); if( key_val[1] ){ var key = key_val[0]; var val = key_val[1]; var dif = index - key.length; var sep = ''; for( var j=0; j<dif; j++ ){ sep = sep + ' '; } sep += '='; var new_line = key + sep + val; new_lines.push(new_line); }else{ new_lines.push(lines[i]); } } var new_text = new_lines.join('\n'); return new_text; }; }; var Lc_all = function(){ return function(text,render){ var rendered_text = render(text); return rendered_text.toLowerCase(); }; }; var Lc_first = function(){ return function(text,render){ var rendered_text = render(text); var f = rendered_text.charAt(0).toLowerCase(); return f + rendered_text.substr(1); }; }; var Uc_first = function(){ return function(text,render){ var rendered_text = render(text); var f = rendered_text.charAt(0).toUpperCase(); return f + rendered_text.substr(1); }; }; var Cut_trail_id = function(){ return function(text,render){ var rendered_text = render(text); var id = rendered_text.substr(rendered_text.length-2,2); if( id === 'ID' || id === 'Id' ){ return rendered_text.substr(0,rendered_text.length-2); }else{ return rendered_text; } }; }; var pg_reserved_words = [ "all", "analyse", "analyze", "and", "any", "are", "array", "as", "asc", "asymmetric", "authorization", "binary", "both", "case", "cast", "check", "collate", "collation", "column", "concurrently", "constraint", "create", "cross", "current_catalog", "current_date", "current_role", "current_schema", "current_time", "current_timestamp", "current_user", "default", "deferrable", "desc", "distinct", "do", "else", "end", "except", "false", "fetch", "for", "foreign", "freeze", "from", "full", "grant", "group", "having", "ilike", "in", "initially", "inner", "intersect", "into", "is", "isnull", "join", "lateral", "leading", "left", "like", "limit", "localtime", "localtimestamp", "natural", "not", "notnull", "null", "offset", "on", "only", "or", "order", "outer", "over", "overlaps", "placing", "primary", "references", "returning", "right", "select", "session_user", "similar", "some", "symmetric", "table", "then", "to", "trailing", "true", "union", "unique", "user", "using", "variadic", "verbose", "when", "where", "window", "with" ]; var pg_reserved_map = {}; pg_reserved_words.map( function(item){ pg_reserved_map[item]=1; } ); var Escape_reserved = function(){ return function(text,render){ var rendered_text = render(text); var rendered_text_lc = rendered_text.toLowerCase(); if( pg_reserved_map[rendered_text_lc] ){ return '\\"' + rendered_text + '\\"'; }else{ return rendered_text; } }; }; var Escape_reserved_raw = function(){ return function(text,render){ var rendered_text = render(text); var rendered_text_lc = rendered_text.toLowerCase(); if( pg_reserved_map[rendered_text_lc] ){ return '\"' + rendered_text + '\"'; }else{ return rendered_text; } }; }; var applyFunctionsForMustache = function(obj){ obj.Align_dslash = Align_dslash; obj.Align_colon = Align_colon; obj.Align_equals = Align_equals; obj.Lc_all = Lc_all; obj.Lc_first = Lc_first; obj.Uc_first = Uc_first; obj.Cut_trail_id = Cut_trail_id; obj.Escape_reserved = Escape_reserved; obj.Escape_reserved_raw = Escape_reserved_raw; }; // ***** functions for generator ***** var ucfirst = function(text){ var f = text.charAt(0).toUpperCase(); return f + text.substr(1); }; var confirmPath = function(path){ var dir = ''; if( path.match(/^\//) ){ dir = '/'; } var elements = path.split('/'); for( var i=1; i<elements.length; i++ ){ if( dir ){ dir = dir + '/' + elements[i]; }else{ dir = elements[i]; } if( !fs.existsSync(dir) ){ //console.log("[tools] making dir : "+ dir); fs.mkdirSync(dir); } } }; module.exports = { apply : applyFunctionsForMustache, Align_dslash : Align_dslash, Align_colon : Align_colon, Align_equals : Align_equals, Lc_all : Lc_all, Lc_first : Lc_first, Uc_first : Uc_first, Cut_trail_id : Cut_trail_id, Escape_reserved : Escape_reserved, confirmPath : confirmPath, ucfirst : ucfirst, };