feat(openclaw): add shopping, supermarket deals, geizhals, and ebay MCP tools
This commit is contained in:
+84
@@ -0,0 +1,84 @@
|
||||
// Module for array conversion
|
||||
SVG.Array = function(array, fallback) {
|
||||
array = (array || []).valueOf()
|
||||
|
||||
// if array is empty and fallback is provided, use fallback
|
||||
if (array.length == 0 && fallback)
|
||||
array = fallback.valueOf()
|
||||
|
||||
// parse array
|
||||
this.value = this.parse(array)
|
||||
}
|
||||
|
||||
SVG.extend(SVG.Array, {
|
||||
// Make array morphable
|
||||
morph: function(array) {
|
||||
this.destination = this.parse(array)
|
||||
|
||||
// normalize length of arrays
|
||||
if (this.value.length != this.destination.length) {
|
||||
var lastValue = this.value[this.value.length - 1]
|
||||
, lastDestination = this.destination[this.destination.length - 1]
|
||||
|
||||
while(this.value.length > this.destination.length)
|
||||
this.destination.push(lastDestination)
|
||||
while(this.value.length < this.destination.length)
|
||||
this.value.push(lastValue)
|
||||
}
|
||||
|
||||
return this
|
||||
}
|
||||
// Clean up any duplicate points
|
||||
, settle: function() {
|
||||
// find all unique values
|
||||
for (var i = 0, il = this.value.length, seen = []; i < il; i++)
|
||||
if (seen.indexOf(this.value[i]) == -1)
|
||||
seen.push(this.value[i])
|
||||
|
||||
// set new value
|
||||
return this.value = seen
|
||||
}
|
||||
// Get morphed array at given position
|
||||
, at: function(pos) {
|
||||
// make sure a destination is defined
|
||||
if (!this.destination) return this
|
||||
|
||||
// generate morphed array
|
||||
for (var i = 0, il = this.value.length, array = []; i < il; i++)
|
||||
array.push(this.value[i] + (this.destination[i] - this.value[i]) * pos)
|
||||
|
||||
return new SVG.Array(array)
|
||||
}
|
||||
// Convert array to string
|
||||
, toString: function() {
|
||||
return this.value.join(' ')
|
||||
}
|
||||
// Real value
|
||||
, valueOf: function() {
|
||||
return this.value
|
||||
}
|
||||
// Parse whitespace separated string
|
||||
, parse: function(array) {
|
||||
array = array.valueOf()
|
||||
|
||||
// if already is an array, no need to parse it
|
||||
if (Array.isArray(array)) return array
|
||||
|
||||
return this.split(array)
|
||||
}
|
||||
// Strip unnecessary whitespace
|
||||
, split: function(string) {
|
||||
return string.trim().split(SVG.regex.delimiter).map(parseFloat)
|
||||
}
|
||||
// Reverse array
|
||||
, reverse: function() {
|
||||
this.value.reverse()
|
||||
|
||||
return this
|
||||
}
|
||||
, clone: function() {
|
||||
var clone = new this.constructor()
|
||||
clone.value = array_clone(this.value)
|
||||
return clone
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user