Contents
installing nsm
nsm commands
content files
template files
displaying mathematics
displaying code blocks
hosting your site

Guide to displaying code blocks

Syntax Highlighting

Options for including code blocks with syntax highlighting on your website include:

The Nift documentation covers syntax highlighting code blocks on your site using Google Code Prettify. Using Google Code Prettify on your site is as simple as adding the following code to the head of each page:

							<!-- uses google-code-prettify for syntax highlighting 
								 see https://github.com/google/code-prettify for more info -->
							<script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js">
							</script>
						

Note the examples on this site are using the included pre.css file and process_pre_tags.js script along with the script above.

To use process_pre_tags.js add it to the end of your <body>. For example a page.template file might be:

							<!DOCTYPE html>
							<html>
								<head>
									<title>site title - @pagetitle</title>
								</head>
											
								<body>
									@inputcontent
				
									<script src='@pathtofile(site/js/process_pre_tags.js)'></script>
								</body>
							</html>
						

See the Google code prettifier README for supported languages and other relevant information.

Also see the nsm tutorial for a better idea of how to nicely display code blocks. More to be added here at some point (probably no time soon). Alternatively, there are some examples below.

Example code blocks

						int n;
						vector<int> v;
				
						<pre>
							int n;
							vector<int> v;
				
							for(int i=0; i < n; i++)
								cout << v[i] << endl;
						</pre>
				
						for(int i=0; i < n; i++)
							cout << v[i] << endl;
					

						int n;
						vector<int> v;
				
						<pre>
							int n;
							vector<int> v;
				
							for(int i=0; i < n; i++)
								cout << v[i] << endl;
						</pre>
				
						for(int i=0; i < n; i++)
							cout << v[i] << endl;
					

						#include "Quoted.h"
						
						//reading a string which may be surrounded by quotes with spaces, and strips surrounding quotes
						//note mutates white space into single spaces
						bool read_quoted(std::istream &ifs, std::string &s)
						{
						    //reads first string
						    if(!(ifs >> s))
						        return 0;
						
						    std::string s2;
						    if(s[0] == '"')
						    {
						        while(s[s.length()-1] != '"')
						        {
						            ifs >> s2;
						            s += " " + s2;
						        }
						
						        s.replace(0, 1, "");
						        s.replace(s.length()-1, 1, "");
						    }
						    else if(s[0] == '\'')
						    {
						        while(s[s.length()-1] != '\'')
						        {
						            ifs >> s2;
						            s+=" " + s2;
						        }
						
						        s.replace(0, 1, "");
						        s.replace(s.length()-1, 1, "");
						    }
						
						    return 1;
						};
						
						//outputting a string with quotes surrounded if it contains space(s)
						std::string quote(const std::string &unquoted)
						{
						    if(unquoted.find(' ') == std::string::npos)
						        return unquoted;
						    else if(unquoted.find('"') == std::string::npos)
						        return "\"" + unquoted + "\"";
						    else
						        return "'" + unquoted + "'";
						};
						
					

						#include "Quoted.h"
						
						//reading a string which may be surrounded by quotes with spaces, and strips surrounding quotes
						//note mutates white space into single spaces
						bool read_quoted(std::istream &ifs, std::string &s)
						{
						    //reads first string
						    if(!(ifs >> s))
						        return 0;
						
						    std::string s2;
						    if(s[0] == '"')
						    {
						        while(s[s.length()-1] != '"')
						        {
						            ifs >> s2;
						            s += " " + s2;
						        }
						
						        s.replace(0, 1, "");
						        s.replace(s.length()-1, 1, "");
						    }
						    else if(s[0] == '\'')
						    {
						        while(s[s.length()-1] != '\'')
						        {
						            ifs >> s2;
						            s+=" " + s2;
						        }
						
						        s.replace(0, 1, "");
						        s.replace(s.length()-1, 1, "");
						    }
						
						    return 1;
						};
						
						//outputting a string with quotes surrounded if it contains space(s)
						std::string quote(const std::string &unquoted)
						{
						    if(unquoted.find(' ') == std::string::npos)
						        return unquoted;
						    else if(unquoted.find('"') == std::string::npos)
						        return "\"" + unquoted + "\"";
						    else
						        return "'" + unquoted + "'";
						};
						
					

						//adds insert file
						if(read_and_process(insertLocation, antiDepsOfReadLocation, contentLocation, pageTitle, dateTimeInfo, indentAmount, codeBlockDepth, htmlCommentDepth, contentInserted, processedPage, pageDeps) > 0)
							return 1;
						//indent amount updated inside read_and_process
						linePos += posOffset;