User:Lbattich/Library of Babel Generator: Difference between revisions

From XPUB & Lens-Based wiki
(Created page with "== What is this == The aim is create a webpage where the USER can generate a custom-made brand new VOLUME of the Borges' Library of Babel (complete with its 410 pages of char...")
 
No edit summary
Line 17: Line 17:
<!DOCTYPE html>
<!DOCTYPE html>


<!--
_                               
| |_  _  ___ __ _ ___           
| | | | |/ __/ _` / __|         
| | |_| | (_| (_| \__ \         
|_|\__,_|\___\__,_|___/         
         
_          _  _  _      _   
| |__  __ _| |_| |_(_) ___| |__ 
| '_ \ / _` | __| __| |/ __| '_ \
| |_) | (_| | |_| |_| | (__| | | |
|_.__/ \__,_|\__|\__|_|\___|_| |_|
Library of Babel
Volume generator
Lucas Battich
-->


<html>
<html>
Line 116: Line 97:
<source lang="JavaScript">
<source lang="JavaScript">
window.onload=generate();
window.onload=generate();
var myip = '<!--#echo var="REMOTE_ADDR"-->';
var myip = '<!--#echo var="REMOTE_ADDR"-->';


function generate() {
function generate() {
var x=document.getElementById("output")
var x=document.getElementById("output")
var page = "";
var page = "";
for( var i=0; i < 40; i++ )
for( var i=0; i < 40; i++ )
page += makeline() + "\n" + "\n";
page += makeline() + "\n" + "\n";
x.innerHTML = page;
x.innerHTML = page;
return page;
return page;
}
}
 
function makeline() {
var line = "";
var string = "ABCDEFGHIJKLMNOPQRSTVZ .,";
for( var i=0; i < 80; i++ ) {
line += string.charAt(Math.floor(Math.random() * string.length));
}
return line;
}


function makeline() {
function savepdf() {
var line = "";
var vol = Math.floor(Math.pow(10,16)*Math.random());
var string = "ABCDEFGHIJKLMNOPQRSTVZ .,";
var doc = new jsPDF("p", "mm", "a4");
for( var i=0; i < 80; i++ ) {
line += string.charAt(Math.floor(Math.random() * string.length));
}
return line;
}
function savepdf() {
var vol = Math.floor(Math.pow(10,16)*Math.random());
var doc = new jsPDF("p", "mm", "a4");


doc.setProperties({
doc.setProperties({
title: 'Library of Babel Volume #' + vol,
title: 'Library of Babel Volume #' + vol,
subject: 'Library of Babel Volume',
subject: 'Library of Babel Volume',
author: 'Lucas Battich & User with IP ' + myip,
author: 'Lucas Battich & User with IP ' + myip,
keywords: 'generated, library, babel',
keywords: 'generated, library, babel',
creator: 'Unknown'
creator: 'Unknown'
});
});
doc.setDrawColor(0);
doc.setDrawColor(0);
doc.setFillColor(200);
doc.setFillColor(200);
doc.rect(0, 0, 210, 297, 'F');
doc.rect(0, 0, 210, 297, 'F');
doc.setLineWidth(0.8);
doc.setLineWidth(0.8);
doc.rect(25, 25, 160, 247); //x1, y1, w, h
doc.rect(25, 25, 160, 247); //x1, y1, w, h
doc.setLineWidth(0.3);
doc.setLineWidth(0.3);
doc.rect(26.5, 26.5, 157, 244);
doc.rect(26.5, 26.5, 157, 244);
doc.rect(28, 28, 154, 241);
doc.rect(28, 28, 154, 241);
doc.setFont('times');
doc.setFont('times');
doc.setFontSize(19);
doc.setFontSize(19);
doc.text(37, 50, "Library of Babel Volume No. " + vol);
doc.text(37, 50, "Library of Babel Volume No. " + vol);
doc.setFontSize(15);
doc.setFontSize(15);
doc.text(37, 70, "Retrieved on " + day()+ "\n" + "From IP " + myip);
doc.text(37, 70, "Retrieved on " + day()+ "\n" + "From IP " + myip);
doc.setFontSize(8);
doc.setFontSize(8);
for( var i=0; i < 410; i++ ) {
for( var i=0; i < 410; i++ ) {
doc.addPage();
doc.addPage();
doc.text(32, 25, generate());
doc.text(32, 25, generate());
}
}
doc.save('Library of Babel Volume #' + vol + '.pdf')
doc.save('Library of Babel Volume #' + vol + '.pdf')
}
}


function day() {
function day() {
var today = new Date();
var today = new Date();
var localdate = today.toString();
var localdate = today.toString();
return localdate
}
</source>
</source>

Revision as of 16:05, 9 June 2015

What is this

The aim is create a webpage where the USER can generate a custom-made brand new VOLUME of the Borges' Library of Babel (complete with its 410 pages of charater permutations...)

some images

Background

code

HTML & CSS

<!DOCTYPE html>


<html>
	<head>
		<meta name="author" content="Lucas Battich">
		<meta name="description" content="Library of Babel Volume Generator by Lucas Battich">
		<meta content="text/html; charset=utf-8" http-equiv="content-type">
		<script src="http://code.jquery.com/jquery-1.11.2.js"></script>
		<script type="text/javascript" src="js/jspdf.js"></script>
		<script type="text/javascript" src="js/FileSaver.js"></script>
		<script type="text/javascript" src="js/standard_fonts_metrics.js"></script>        
		<title>The Library of Babel Book Page - Lucas Battich</title>

		<style type="text/css">
			body{
				margin:20px;
				font-size: 11px;
				font-family:"arial";
				background-color: Gray;
			}
			h1{font-size: 2em;}
			#heading{
				color:white;
				width:400px;
				margin-right: auto;
				margin-left: auto;
				text-align: center;
			}
			#menu{
				position:absolute;
				top:100px;
				width:150px;
				height:150px;
			}
			table {
				position:absolute;
				width:60%;
				height:80%;
				top:10%;
				left:20%;
				transition: all 0.4s;
				-webkit-transition: all 0.4s;
			}
			td {
				height: 100%;
				width: 100%;
				padding: 5%;
				text-align: center;
				vertical-align: middle;
			}
			textarea{
				font-size: 0.9em;
				font-family:Baskerville, "Palatino Linotype", Palatino, "Century Schoolbook L", "Times New Roman", serif;
				text-align:justify;
			}

		</style>
	</head>
	<body>
		
		<div id="heading">
			<h1>Library of Babel Volume Generator</h1>
			<p>by Lucas Battich</p>
			<p>online pdf encription via <a href="http://parall.ax/products/jspdf" target="_blank">jsPDF</a></p>
		</div>

		<div id="menu">
			<button onclick="generate()">Generate Page</button>
			<button onclick="savepdf()">Generate PDF Volume</button>
		</div>
		<table><td>
			<p id="ip"></p>
			<textarea id="output" rows="80" cols="100"></textarea>
		</table>
	</body>
</html>

JavaScript

window.onload=generate();
var myip = '<!--#echo var="REMOTE_ADDR"-->';

function generate() {
	var x=document.getElementById("output")
	var page = "";
	for( var i=0; i < 40; i++ )
	page += makeline() + "\n" + "\n";
	x.innerHTML = page;
	return page;
}

function makeline() {
	var line = "";
	var string = "ABCDEFGHIJKLMNOPQRSTVZ .,";
	for( var i=0; i < 80; i++ ) {
		line += string.charAt(Math.floor(Math.random() * string.length));
	}
	return line;
}

function savepdf() {
	var vol = Math.floor(Math.pow(10,16)*Math.random());
	var doc = new jsPDF("p", "mm", "a4");

	doc.setProperties({
		title: 'Library of Babel Volume #' + vol,
		subject: 'Library of Babel Volume',		
		author: 'Lucas Battich & User with IP ' + myip,
		keywords: 'generated, library, babel',
		creator: 'Unknown'
	});
	doc.setDrawColor(0);
	doc.setFillColor(200);
	doc.rect(0, 0, 210, 297, 'F');
	doc.setLineWidth(0.8);
	doc.rect(25, 25, 160, 247); //x1, y1, w, h
	doc.setLineWidth(0.3);
	doc.rect(26.5, 26.5, 157, 244);
	doc.rect(28, 28, 154, 241);
	doc.setFont('times');
	doc.setFontSize(19);
	doc.text(37, 50, "Library of Babel Volume No. " + vol);
	doc.setFontSize(15);
	doc.text(37, 70, "Retrieved on " + day()+ "\n" + "From IP " + myip);
	doc.setFontSize(8);
	for( var i=0; i < 410; i++ ) {
		doc.addPage();
		doc.text(32, 25, generate());
	}
	doc.save('Library of Babel Volume #' + vol + '.pdf')
}

function day() {
	var today = new Date();
	var localdate = today.toString();
	return localdate
}