3º. 2º cuatrimestre. Itinerario de Computación. Grado en Ingeniería Informática. ULL
The INI file format is an informal standard for configuration files. INI files are simple text files with a basic structure composed of lists of sections, and each section is a list of property-value pairs. The exact rules for this format are as follows:
Blank lines and lines starting with semicolons are ignored.
Lines wrapped in [
and ]
start a new section.
Lines containing an alphanumeric identifier followed by an =
character add a setting to the current section.
Anything else is invalid.
That completely describes the language. Here is an example:
; comments are preceded by a semicolon
; global section
searchengine=https://duckduckgo.com/?q=$1
spitefulness=9.7
; each section but the global starts with [identifier]
[gandalf]
fullname=Mithrandir
type=grey wizard
website=http://tolkiengateway.net/wiki/Gandalf
[gollum]
fullname=Sméagol
type=hobbit
website=https://lotr.fandom.com/wiki/Gollum
Our task is to write a node.JS module exporting a function parseINI
to convert a INI string into a JavaScript object reflecting the
configuration file. For example:
const parseINI = require('./parse-ini.js');
console.log(parseINI(`
name=Torres Quevedo
[address]
invention=The chess player`));
// → {name: "Torres Quevedo", address: {invention: "The chess player"}}
Document the parseIni
function
Write several unit tests using mocha. Here you have an initial template using should but you can use expect if you prefer it.
var should = require("should");
var parser = require('../lib/parse-ini.js');
describe("parseINI", function() {
it("should parse a INI input", function() {
let expected = {name: "Torres Quevedo", address: {invention: "The chess player"}};
let result = parseINI(`
name=Torres Quevedo
[address]
invention=The chess player`));
expected.should.eql(result);
})
it("should have an error if not valid", function() {
(function(){parseINI('chazam')}).should.throw(/Error/);
})
})
Make a web site with your report using GitHub pages and Jekyll (deploy it in the master
branch). Remember to set the GitHub repo description and webpage fields