
Research
Malicious npm Packages Impersonate Flashbots SDKs, Targeting Ethereum Wallet Credentials
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
MathEngine is a lightweight mathematical expression parser and evaluator. It currently handles addition, subtraction, multiplication, division, exponent, modulus and the use of variables and pre-defined functions.
Install with
gem install math_engine
The only dependency is lexr, which is really lightweight and has no external dependencies.
require 'rubygems'
require 'math_engine'
engine = MathEngine.new
puts "#{engine.evaluate("x = 10 * (3 * 2) + (55 - 5) / (2.5 * (3 + 1))")}"
puts "#{engine.evaluate("x + 5")}"
results in an output of
65.0
70.0
extending is easy using functions, you can add single functions using MathEngine.define
engine.context.define :add_em do |x, y|
x + y
end
or you can write all your functions in a class and add the class
class SomeFunctions
def add_em(x, y)
x + y
end
end
engine.context.include_library SomeFunctions.new
and calling them with
engine.evaluate("1 + 1 + add_em(2, 2)")
All functions are pulled in from the built in Math class by default, so all the standard ruby math functions are available (cos, sin, tan etc)
if you missed a closing parenthesis, had an operator where it wasn't meant to be, you might get something like this:
Unexpected multiplication(*), expected: number, variable name or open_parenthesis
and that is pretty much every feature so far. Please let me know of any bugs or additions that you'd like to see!
Mario de la Ossa (mdelaossa): Handling of complex numbers and upgraded to work with 1.9.X
See the LICENSE file included with the distribution for licensing and copyright details.
FAQs
Unknown package
We found that math_engine demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Security News
Following last week’s supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.