Skip to content

Instantly share code, notes, and snippets.

@GuyMograbi
Created January 9, 2017 01:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save GuyMograbi/498aa05dd35887595d1e95861d32802d to your computer and use it in GitHub Desktop.
Save GuyMograbi/498aa05dd35887595d1e95861d32802d to your computer and use it in GitHub Desktop.
Naive code to indent HTML for readability
var myHtml = `<div billing-total="" quote="quote" payment-frequency="frequency" on-select-frequency="onSelect(frequency)" payment-plan="plan" class="ng-scope ng-isolate-scope"><div class="billing-frequency-wrap container"><div class="billing-total col col-lg-3 col-md-3 col-sm-8 col-xs-4"><div class="frequency"><div class="freq-select"><div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label getmdl-select text-input"><label for="paymentFrequency" class="mdl-textfield-label-right"><i class="material-icons filled">done</i> <i class="mdl-icon-toggle__label material-icons">arrow_drop_down</i></label><span><i class="material-icons filled">done</i></span> <input class="mdl-textfield__input" type="text" id="paymentFrequency" placeholder="Monthly" readonly="readonly" value=""><label for="paymentFrequency" class="mdl-textfield__label"><span>Billing Frequency</span></label><div class="getmdl-select-container" ng-click="setPaymentFrequency($event);"><ul for="paymentFrequency" class="mdl-menu mdl-js-menu mdl-menu--bottom-left"><!-- ngRepeat: planObj in paymentPlans --></ul></div></div><span class="prcnt-off ng-binding"></span></div></div><div class="todays-total" ng-class="{'breakdown-showing':showPaymentBreakdown}"><ul class="billing-breakdown"><!-- ngRepeat: item in paymentPlans[checkoutData.paymentFrequency].items --></ul><div class="grand-total"><div class="todays-total-title"><span class="word-break">Today's</span> Total</div><h2 class="total-price ng-binding">$0.00</h2></div><div class="billing-breakdown-show-breakdown billing-frequency-toggle" ng-click="showPaymentBreakdown = !showPaymentBreakdown">SEE PAYMENT BREAKDOWN</div><div class="billing-breakdown-show-less billing-frequency-toggle" ng-click="showPaymentBreakdown = !showPaymentBreakdown">SEE LESS</div></div></div></div></div>`;
var args = myHtml.trim().split('<').slice(1).map((a)=> '<' + a + '\n');
var indent = 0;
args = args.map((a)=>{
console.log('a is',a, indent, a.indexOf('</'));
if ( a.indexOf('</') === 0){
console.log('found closing');
indent = indent - 4;
return new Array(indent).join(' ') + a
} else if ( a.indexOf('<!') === 0 || a.indexOf('<input') === 0){
return new Array(indent).join(' ') + a;
}else{
var result = new Array(indent).join(' ') + a;
if ( a.slice(a.length-2) !== '/>'){ indent += 4; }
return result;
}
})
console.log(args.join(''));// ==> should print formatted html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment