UNPKG

sustain

Version:

distributed payment system for open source development

56 lines (48 loc) 1.43 kB
var sustainFS = require('./sustain-fs') module.exports = function (json) { this.json = json this.totalWeight = 0 this.payees = [] this.incompleteDependencies = [] buildPayees.call(this) calculateTotalWeights.call(this) calculateProportions.call(this) } function calculateTotalWeights () { for (var i in this.payees) { this.totalWeight += this.payees[i].weight } } function calculateProportions () { for (var i in this.payees) { var payee = this.payees[i] payee.proportion = parseFloat((payee.weight / this.totalWeight).toFixed(2)) } } function buildPayees () { this.payees.concat(buildContributorPayees.call(this, this.json.contributors)) this.payees.concat(buildDependencyPayees.call(this, this.json.dependencies)) } function addPayee (name, address, weight) { this.payees.push({ name: name, address: address, weight: weight }) } function buildContributorPayees (contributors) { for (var name in contributors) { var contributor = contributors[name] addPayee.call(this, name, contributor.address, contributor.weight) } } function buildDependencyPayees (dependencies) { for (var name in dependencies) { var address = sustainFS.findDependencyAddress(name) if (address) { addPayee.call(this, name, address, dependencies[name].weight) } else { this.incompleteDependencies.push({name: name, weight: dependencies[name].weight}) } } }