<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>INI files</title>
<link href="global.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../../underscore/underscore.js"></script>
<script type="text/javascript" src="../../jquery/starterkit/jquery.js"></script>
<script type="text/javascript" src="______"></script>
</head>
<body>
<h1>INI files</h1>
<input type="file" id="_________" />
<div id="out" class="hidden">
<table>
<tr><th>Original</th><th>Tokens</th></tr>
<tr>
<td>
<pre class="input" id="____________"></pre>
</td>
<td>
<pre class="output" id="___________"></pre>
</td>
</tr>
</table>
</div>
</body>
</html>
[~/Dropbox/src/javascript/PLgrado/ini(master)]$ cat global.css
html *
{
font-size: large;
/* The !important ensures that nothing can override what you've set in this style (unless it is also important). */
font-family: Arial;
}
.thumb {
height: 75px;
border: 1px solid #000;
margin: 10px 5px 0 0;
}
h1 { text-align: center; font-size: x-large; }
th, td { vertical-align: top; text-align: left; }
/* #finaltable * { color: white; background-color: black; } */
/* #finaltable table { border-collapse:collapse; } */
/* #finaltable table, td { border:1px solid white; } */
#finaltable:hover td { background-color: blue; }
tr:nth-child(odd) { background-color:#eee; }
tr:nth-child(even) { background-color:#00FF66; }
input { text-align: right; border: none; } /* Align input to the right */
textarea { border: outset; border-color: white; }
table { border: inset; border-color: white; }
.hidden { display: ____; }
.unhidden { display: _____; }
table.center { margin-left:auto; margin-right:auto; }
#result { border-color: red; }
tr.error { background-color: red; }
pre.output { background-color: white; }
span.repeated { background-color: red }
span.header { ________________: ____ }
span.comments { ________________: ______ }
span.blanks { ________________: _____ }
span.nameEqualValue { ________________: ____ }
span.error { ________________: ___ }
body
{
background-color:#b0c4de; /* blue */
}
~/Dropbox/src/javascript/PLgrado/ini(master)]$ cat input.ini ; last modified 1 April 2001 by John Doe [owner] name=John Doe organization=Acme Widgets Inc. [database] ; use IP address in case network name resolution is not working server=192.0.2.62 port=143 file = "payroll.dat"
$ cat input2.ini [special_fields] required = "EmailAddr,FirstName,LastName,Mesg" csvfile = "contacts.csv" csvcolumns = "EmailAddr,FirstName,LastName,Mesg,Date,Time" [email_addresses] sales = "jack@yahoo.com,mary@my-sales-force.com,president@my-company.com"
$ cat inputerror.ini [owner] name=John Doe organization$Acme Widgets Inc. [database ; use IP address in case network name resolution is not working server=192.0.2.62 port=143 file = "payroll.dat"
[~/Dropbox/src/javascript/PLgrado/ini(master)]$ cat ini.js
"use ______"; // Use ECMAScript 5 strict mode in browsers that support it
$(document)._____(function() {
$("#fileinput").______(calculate);
});
function calculate(evt) {
var f = evt.target.files[0];
if (f) {
var r = new __________();
r.onload = function(e) {
var contents = e.target.______;
var tokens = lexer(contents);
var pretty = tokensToString(tokens);
out.className = 'unhidden';
initialinput._________ = contents;
finaloutput._________ = pretty;
}
r.__________(f); // Leer como texto
} else {
alert("Failed to load file");
}
}
var temp = '<li> <span class = "<%= ______ %>"> <%= _ %> </span>\n';
function tokensToString(tokens) {
var r = '';
for(var i in tokens) {
var t = tokens[i];
var s = JSON.stringify(t, undefined, 2);
s = _.template(temp, {t: t, s: s});
r += s;
}
return '<ol>\n'+r+'</ol>';
}
function lexer(input) {
var blanks = /^___/;
var iniheader = /^________________/;
var comments = /^________/;
var nameEqualValue = /^________________________/;
var any = /^_______/;
var out = [];
var m = null;
while (input != '') {
if (m = blanks.____(input)) {
input = input.substr(m.index+___________);
out.push({ type : ________, match: _ });
}
else if (m = iniheader.exec(input)) {
input = input.substr(___________________);
_______________________________________ // avanzemos en input
}
else if (m = comments.exec(input)) {
input = input.substr(___________________);
_________________________________________
}
else if (m = nameEqualValue.exec(input)) {
input = input.substr(___________________);
_______________________________________________
}
else if (m = any.exec(input)) {
_______________________________________
input = '';
}
else {
alert("Fatal Error!"+substr(input,0,20));
input = '';
}
}
return out;
}
Casiano Rodríguez León