Created
January 9, 2017 01:34
-
-
Save GuyMograbi/498aa05dd35887595d1e95861d32802d to your computer and use it in GitHub Desktop.
Naive code to indent HTML for readability
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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