Zacząłem więc przeglądać Ramdę/Folktale. Wystąpił problem podczas próby mapowania na szereg zadań pochodzących z katalogu. Próbuję parsować zawartość pliku.Mapowanie tablicy zadań w JavaScript
var fs = require('fs');
var util = require('util');
var R = require('ramda');
var Task = require('data.task');
var compose = R.compose;
var map = R.map;
var chain = R.chain;
function parseFile(data) {
console.log("Name: " + data.match(/\$name:(.*)/)[1]);
console.log("Description: " + data.match(/\$description:(.*)/)[1]);
console.log("Example path: " + data.match(/\$example:(.*)/)[1]);
}
// String => Task [String]
function readDirectories(path) {
return new Task(function(reject, resolve) {
fs.readdir(path, function(err, files) {
err ? reject(err) : resolve(files);
})
})
}
// String => Task String
function readFile(file) {
return new Task(function(reject, resolve) {
fs.readFile('./src/less/' + file, 'utf8', function(err, data) {
err ? reject(err) : resolve(data);
})
})
}
var app = compose(chain(readFile), readDirectories);
app('./src/less').fork(
function(error) { throw error },
function(data) { util.log(data) }
);
Czytam pliki w katalogu i zwracam zadanie. Gdy to rozwiąże, powinno przejść do funkcji readFile (która zwraca nowe zadanie). Po przeczytaniu pliku chcę, aby po prostu przeanalizował niektóre kawałki.
z następującymi:
var app = compose(chain(readFile), readDirectories);
To staje się funkcją readfile ale „Plik” jest tablicą plików więc błędów.
Z:
var app = compose(chain(map(readFile)), readDirectories);
Nigdy nie dostać się fs.readfile(), ale 'plik' jest rzeczywista nazwa pliku.
Jestem dość zaskoczony, a dokumentacja jest kłopotliwa. Wszelkie sugestie mile widziane.
Dzięki
Dzięki. To naprawdę ciekawe. To taka zmiana myślenia, z którą się zmagałem. Powrót do książki Dr Boolean. – SpaceBeers
Nie mogę znaleźć dojazdu do pracy w dokumentacji ramda. czego mi brakuje? – akaphenom
także (skoro nie mogę znaleźć dokumentacji), jak przebiega droga do pracy inna niż funkcja sekwencji "control.monads"? – akaphenom