<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