 
			
				02.08.2019, 12:19
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 21.01.2018 
					
					
					
						Сообщений: 78
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Вывод кода функции и результата работы.
			 
			
		
		
		
		Здравствуйте, пишу функцию, которая должна выводить в одно поле код функции, а во второе, результат работы этой же функции. 
Возник вопрос, выводимый код получается в одну строку, то-есть плохо читаем, как можно сделать переносы строк в нужных местах?, к примеру что бы код выводился точно так же как построен в файле js?
 
И еще вопрос, есть ли возможность раскрасить разные участки выводимого кода, по аналогии как это делают, к примеру текстовые редакторы?
 
<div class="code"></div>
<div class="result"></div>
 
'use strict'
let result = document.querySelector('.result');
let code = document.querySelector('.code');
let sum;
function calc(){
  sum = 20 + 15 * 2 / 2;
  test(sum);
}
function test(sum){
  result.innerHTML = sum;
}
calc();
var codeOut = new calc();
code.innerHTML = codeOut.constructor;
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				02.08.2019, 13:05
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от TheSanches
			
		
	 | 
 
	| 
		как можно сделать переносы строк в нужных местах?,
	 | 
 
	
 
 Как вариант...
 
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
document.addEventListener("DOMContentLoaded",function(){
	var result = document.querySelector('.result');
	var code = document.querySelector('.code');
	var sum;
	function calc(){
	  sum = 20 + 15 * 2 / 2;
	  test(sum);
	}
	function test(sum){
	  result.innerHTML = sum;
	}
	calc();
	var codeOut = new calc();
	var html=codeOut.constructor.toString();
	html=html.replace(/\n/g,'<br />');
	code.innerHTML = html;
});
</script>
</head>
<body>
<div class="code"></div>
<div class="result"></div>
</body>
</html>
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				02.08.2019, 13:07
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от TheSanches
			
		
	 | 
 
	| 
		есть ли возможность раскрасить разные участки выводимого кода, по аналогии как это делают, к примеру текстовые редакторы?
	 | 
 
	
 
 Если сможешь повторить алгоритмы анализа текста, как это делают те редакторы - получишь такую возможность.    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				02.08.2019, 13:21
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от ksa
			
		
	 | 
 
	| 
		Если сможешь повторить алгоритмы анализа текста, как это делают те редакторы
	 | 
 
	
 
 Как вариант...
 
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
.number {
	color: blue;
}
.operation {
	color: red;
}
.words {
	font-style: italic;
	font-weight: bold;
}
.hooks {
	color: green;
}
</style>
<script type='text/javascript'>
document.addEventListener("DOMContentLoaded",function(){
	var result = document.querySelector('.result');
	var code = document.querySelector('.code');
	var sum;
	function calc(){
		sum = 20 + 15 * 2 / 2;
		return test(sum);
	}
	function test(sum){
		result.innerHTML = sum;
	}
	calc();
	var codeOut = new calc();
	var html=codeOut.constructor.toString();
	html=html.replace(/\t+\}$/,'}');
	html=html.replace(/([-+\/*=])/g,'<span class="operation">$1</span>');
	html=html.replace(/(function|return)/g,'<span class="words">$1</span>');
	html=html.replace(/([\(\)\{\}\[\]])/g,'<span class="hooks">$1</span>');
	html=html.replace(/(\d+)/g,'<span class="number">$1</span>');
	html=html.replace(/\n/g,'<br />');
	html=html.replace(/\t/g,'   ');
	code.innerHTML = html;
});
</script>
</head>
<body>
<div class="code"></div>
<div class="result"></div>
</body>
</html>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось ksa, 02.08.2019 в 13:39.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				02.08.2019, 15:51
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 20.12.2009 
					
					
					
						Сообщений: 1,714
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от TheSanches
			
		
	 | 
 
	| 
		Возник вопрос, выводимый код получается в одну строку, то-есть плохо читаем, как можно сделать переносы строк в нужных местах?, к примеру что бы код выводился точно так же как построен в файле js?
	 | 
 
	
 
 Для этого есть CSS-свойство white-space со значением pre.
 
	
 
	| 
		
			Сообщение от TheSanches
			
		
	 | 
 
	| 
		И еще вопрос, есть ли возможность раскрасить разные участки выводимого кода, по аналогии как это делают, к примеру текстовые редакторы?
	 | 
 
	
 
  Вам нужна библиотека, предлагающая подсветку синтаксиса, например,  prism.js
Код без элемента <code> семантически недопустим. Согласно  спецификации HTML5, рекомендуемый способ определения языка кода является класс language-xxxx.
 
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<title>Document</title>
		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.16.0/themes/prism-tomorrow.css">
		<style>
			:not(pre) > code[class*="language-"] {
				display: block;
				padding: 1em;
				white-space: pre;
			}
		</style>
	</head>
	<body>
		<code class="language-javascript">
function calc() {
	let sum = 20 + 15 * 2 / 2;
	return sum;
}
 
calc();
		</code>
		<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.16.0/prism.js"></script>
		<script>
			for(const code of document.querySelectorAll("code[class*='language-javascript']")) {
				const p = document.createElement("p");
				code.after(p);
				p.textContent = eval(code.textContent);
			}
		</script>
	</body>
</html>
Хотя весь код можно выполнить в песочнице <iframe sandbox>
 
	
 
	| 
		
			Сообщение от ksa
			
		
	 | 
 
	| 
		Если сможешь повторить алгоритмы анализа текста, как это делают те редакторы - получишь такую возможность.
	 | 
 
	
 
  Отвержение опыта? Есть масса готовых решении!  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				02.08.2019, 15:54
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от ksa
			 
		
	 | 
 
	
		Malleys, отстань от меня...  
	 | 
 
	
 
 Что не ясно? 
Мне твое занудство не интересно...    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				02.08.2019, 18:53
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 20.12.2009 
					
					
					
						Сообщений: 1,714
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от ksa
			
		
	 | 
 
	| 
		Что не ясно?
	 | 
 
	
 
  Вы вообще о чём?
 
Я посоветовал человеку адекватное решение проблемы, которое можно использовать в production... 
 
	
 
	| 
		
			Сообщение от ksa
			
		
	 | 
 
	| 
		Мне твое занудство не интересно...
	 | 
 
	
 
  Что не так с постом №5?
 ksa, у меня к вам просьба, чтобы вы удаляли из шаблона код, который не имеет отношения к делу, перед отправкой ваших ответов. Заранее благодарю!  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Malleys, 02.08.2019 в 18:57.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				03.08.2019, 00:38
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 21.01.2018 
					
					
					
						Сообщений: 78
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Спасибо 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |