121 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!doctype html>
 | 
						|
<html>
 | 
						|
	<head>
 | 
						|
		<meta charset="utf-8">
 | 
						|
		<title>A smart, organizing text editor</title>
 | 
						|
		<link href="/static/bootstrap/css/bootstrap.css" rel="stylesheet" type="text/css">
 | 
						|
		<link href="/static/bootstrap/css/bootstrap-responsive.css" rel="stylesheet" type="text/css">
 | 
						|
		<link href="/static/shoofle.css" rel="stylesheet" type="text/css">
 | 
						|
		<script src="/static/jquery.min.js" type="text/javascript"></script>
 | 
						|
		<style type="text/css">
 | 
						|
		body {
 | 
						|
			background-color: gray;
 | 
						|
			margin: 1em;
 | 
						|
		}
 | 
						|
		#editor p {
 | 
						|
			margin: 0;
 | 
						|
		}
 | 
						|
		.block {
 | 
						|
			font-family: monospace;
 | 
						|
			background-color: white;
 | 
						|
			padding: 4px;
 | 
						|
			display: block;
 | 
						|
		}
 | 
						|
		.if-elseif-else-wrapper {
 | 
						|
			white-space: normal;
 | 
						|
			background-color: rgb(200,200,255);
 | 
						|
		}
 | 
						|
		.branch {
 | 
						|
			margin-right: 4px;
 | 
						|
			background-color: rgb(200,255,200);
 | 
						|
			display: inline-block;
 | 
						|
		}
 | 
						|
		.while-wrapper {
 | 
						|
			background-color: rgb(255,200,200);
 | 
						|
		}
 | 
						|
		</style>
 | 
						|
	</head>
 | 
						|
	<body style="background-color: gray; margin: 1em;">
 | 
						|
		<div class="block" id="editor" contentEditable>
 | 
						|
			<p class="code">some kind of preparation code, I guess</p>
 | 
						|
			<p class="code">or something</p>
 | 
						|
			<div class="branch if">
 | 
						|
				<p class="condition">if (condition)</p>
 | 
						|
				<div class="block base">
 | 
						|
					<p>do something in response to a true condition</p>
 | 
						|
				</div>
 | 
						|
			</div>
 | 
						|
			<div class="branch else-if">
 | 
						|
				<p class="condition">else if (some other condition)</p>
 | 
						|
				<div class="block base">
 | 
						|
					<p>then we should do something specific else</p>
 | 
						|
				</div>
 | 
						|
			</div>
 | 
						|
			<div class="branch else">
 | 
						|
				<p class="condition">else</p>
 | 
						|
				<div class="block base">
 | 
						|
					<p>some fallback thing!</p>
 | 
						|
				</div>
 | 
						|
			</div>
 | 
						|
			<p>some code</p>
 | 
						|
			<p>do other thing</p>
 | 
						|
			<p>{} | : {} ();</p>
 | 
						|
			<div class="while-wrapper">
 | 
						|
				<p class="condition">while (something)</p>
 | 
						|
				<div class="block base">
 | 
						|
					<p>update the counters</p>
 | 
						|
					<p>hack the gibsons</p>
 | 
						|
					<p>do the stuff</p>
 | 
						|
				</div>
 | 
						|
			</div>
 | 
						|
		</div>
 | 
						|
 | 
						|
		<script type="text/javascript">
 | 
						|
 | 
						|
var finds_if_regex = /(?:\s*)((?:else\s*)?if\s*\([^)]+\)\s*)\{([^}]*)\}/;
 | 
						|
function respond_to_ifs() {
 | 
						|
	var editor = $('#editor');
 | 
						|
 | 
						|
	var lines_of_code = editor.find('p');
 | 
						|
	lines_of_code.each(individual_line_if);
 | 
						|
}
 | 
						|
function individual_line_if() {
 | 
						|
	if (!finds_if_regex.exec($(this).text())) { return true; }
 | 
						|
	var split_up = $(this).text().split(finds_if_regex);
 | 
						|
	
 | 
						|
	var branch = $('<div></div>').addClass('branch if');
 | 
						|
	$(this).before(branch);
 | 
						|
	
 | 
						|
	if (split_up[0].length > 0) {
 | 
						|
		branch.before($('<p></p>').text(split_up[0]));
 | 
						|
	}
 | 
						|
	
 | 
						|
	branch.append($('<p class="condition"></p>').text(split_up[1]));
 | 
						|
	branch.append($('<div></div>').addClass('block').append($(this)));
 | 
						|
	$(this).before('{');
 | 
						|
	$(this).text(split_up[2]);
 | 
						|
	$(this).after('}');
 | 
						|
 | 
						|
	if (split_up[3].length > 0) {
 | 
						|
		branch.after($('<p></p>').text(split_up[2]));
 | 
						|
	}
 | 
						|
}
 | 
						|
var finds_else_regex = /(?:[^\S])\s*else\s*(\{[^}]*\})/;
 | 
						|
function make_new_else(c1, c2) {
 | 
						|
	var target;
 | 
						|
	if (c1 == undefined) { target = $(this); }
 | 
						|
	if (c2 == undefined) { target = $(c1); }
 | 
						|
	else { target = $(c2); }
 | 
						|
 | 
						|
	if (!target.is('.block.base')) {
 | 
						|
		target.find('.block.base')
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
$(document).ready(function () {
 | 
						|
	$('#editor').on('input', function() { respond_to_ifs(); });
 | 
						|
});
 | 
						|
		</script>
 | 
						|
	</body>
 | 
						|
</html>
 |