Sun calculation js library which is fully based on formula from http://aa.quae.nl/en/reken/zonpositie.html
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
952 B
57 lines
952 B
7 years ago
|
module.exports = Pool
|
||
|
|
||
|
function Pool () {
|
||
|
this.length = 0
|
||
|
this.head = null
|
||
|
this.tail = null
|
||
|
}
|
||
|
|
||
|
Pool.prototype.add = function (data) {
|
||
|
this.tail = new Item(data, this.tail, null)
|
||
|
if (!this.head)
|
||
|
this.head = this.tail
|
||
|
this.length ++
|
||
|
}
|
||
|
|
||
|
Pool.prototype.remove = function (data) {
|
||
|
if (this.length === 0)
|
||
|
return
|
||
|
|
||
|
var i = this.head.find(data)
|
||
|
|
||
|
if (!i)
|
||
|
return
|
||
|
|
||
|
if (i === this.head)
|
||
|
this.head = this.head.next
|
||
|
|
||
|
if (i === this.tail)
|
||
|
this.tail = this.tail.prev
|
||
|
|
||
|
i.remove()
|
||
|
this.length --
|
||
|
}
|
||
|
|
||
|
function Item (data, prev) {
|
||
|
this.prev = prev
|
||
|
if (prev)
|
||
|
prev.next = this
|
||
|
|
||
|
this.next = null
|
||
|
this.data = data
|
||
|
}
|
||
|
|
||
|
Item.prototype.remove = function () {
|
||
|
if (this.next)
|
||
|
this.next.prev = this.prev
|
||
|
if (this.prev)
|
||
|
this.prev.next = this.next
|
||
|
this.prev = this.next = this.data = null
|
||
|
}
|
||
|
|
||
|
Item.prototype.find = function (data) {
|
||
|
return data === this.data ? this
|
||
|
: this.next ? this.next.find(data)
|
||
|
: null
|
||
|
}
|