Format uncrustify config file
HTML
<textarea id="text" style="width:100%" rows="20">
#
# uncrustify config file for the linux kernel
#
indent_with_tabs= 2# 1=indent to level only, 2=indent with tabs
input_tab_size= 8# original tab size
output_tab_size= 8# new tab size
indent_columns= output_tab_size
indent_label= 1# pos: absolute col, neg: relative column
#
# inter-symbol newlines
#
nl_enum_brace= remove# "enum {" vs "enum \n {"
nl_union_brace= remove# "union {" vs "union \n {"
nl_struct_brace= remove# "struct {" vs "struct \n {"
nl_do_brace = remove# "do {" vs "do \n {"
nl_if_brace = remove# "if () {" vs "if () \n {"
nl_for_brace = remove# "for () {" vs "for () \n {"
nl_else_brace = remove# "else {" vs "else \n {"
nl_while_brace = remove# "while () {" vs "while () \n {"
nl_switch_brace = remove# "switch () {" vs "switch () \n {"
nl_brace_while= remove# "} while" vs "} \n while" - cuddle while
nl_brace_else= remove# "} else" vs "} \n else" - cuddle else
sp_brace_else= force
sp_else_brace= force
nl_func_var_def_blk= 1
nl_fcall_brace= remove# "list_for_each() {" vs "list_for_each()\n{"
nl_fdef_brace= remove# "int foo() {" vs "int foo()\n{"
nl_after_label_colon= true# "fail:\nfree(foo);" vs "fail: free(foo);"
# nl_after_return= TRUE;
# nl_before_case= 1
#
# Source code modifications
#
mod_paren_on_return= add# "return 1;" vs "return (1);"
mod_full_brace_if= add# "if (a) a--;" vs "if (a) { a--; }"
mod_full_brace_if_chain= false
mod_full_brace_for= add# "for () a--;" vs "for () { a--; }"
mod_full_brace_do= add# "do a--; while ();" vs "do { a--; } while ();"
mod_full_brace_while= add# "while (a) a--;" vs "while (a) { a--; }"
mod_full_brace_nl= 3# don't remove if more than 3 newlines
#
# inter-character spacing options
#
sp_return_paren= force# "return (1);" vs "return(1);"
sp_sizeof_paren= remove# "sizeof (int)" vs "sizeof(int)"
sp_before_sparen= force# "if (" vs "if("
sp_after_sparen= force# "if () {" vs "if (){"
sp_after_cast= remove# "(int) a" vs "(int)a"
sp_inside_braces= force# "{ 1 }"...
JavaScript
function trim(s) {
return s ? s.trim() : s; // comment
}
function uppercase(s) {
return s ? s.toUpperCase() : s;
}
function not(fn, ctx) {
return () => {
!fn.apply(ctx, arguments);
};
}
function isComment(s) {
return s ? (s.charAt(0) === '#') : false;
}
function ifThenElse(predicate, fnThen, fnElse, ctx) {
return function(item) {
var result = predicate.apply(ctx, arguments);
if (result) {
return fnThen ? fnThen.apply(ctx, arguments) : item;
} else {
return fnElse ? fnElse.apply(ctx, arguments) : item;
}
};
}
function splitOnFirst(re) {
return function(item) {
var idx = item.search(re);
return (idx > -1) ? [item.substring(0, idx), item.substring(idx+1)] : [item];
};
}
function format(s, nameMaxLen) {
if ("string" === typeof s) {
return s;
}
if (s.length < 2) {
return s[0];
}
var name = s[0].trim();
return name + Array(nameMaxLen - name.length + 1).join(" ") + "=" + s[1];
}
function reduceMaxLen(max, line) {
if ("string" === typeof line) {
return max;
}
return Math.max(max, line[0].trim().length);
}
function print(s) {
console.log(s);
}
var text = document.getElementById("text").value;
var lines = text.split(/[\n\r]/);
var equalsSplitter = splitOnFirst(/=/);
lines = lines.map(trim).map(ifThenElse(isComment, null, equalsSplitter));
lines.forEach(print);
var nameMaxLen = lines.reduce(reduceMaxLen, 0);
lines = lines.map(line => format(line, nameMaxLen));
lines.forEach(print);
document.getElementById("formatted").value = lines.join("\n");