
Security News
Nx npm Packages Compromised in Supply Chain Attack Weaponizing AI CLI Tools
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.
Convert any hash to a an object with deep read/write dot-notation access.
$ gem install dot_options
# Usage
require 'dot_options'
# Initialize a DotOptions object with a hash:
opts = {
debug: true,
output: { color: true },
skin: { background: { color: :black, texture: 'Stripes' } },
}
options = DotOptions.new opts
# Read any option with dot-notation:
p options.skin.background.color
#=> :black
# Update any option leaf with dot-notation:
options.skin.background.color = :black
# Print a flat view of all options
puts options
#=> debug = true
#=> output.color = true
#=> skin.background.color = :black
#=> skin.background.texture = "Stripes"
# ... or a compact inspection string for any branch
p options.skin
#=> <background: <color: :black, texture: "Stripes">>
# Access is also possible using []
p options.skin[:background].color
p options.skin[:background][:color]
#=> :black
#=> :black
Subclassing DotOptions
is a useful way to have an object with default options.
# Subclassing
require 'dot_options'
class Skin < DotOptions
def initialize(options = nil)
super defaults.merge(options || {})
end
def defaults
{
color: :black,
border: { color: :red, width: 3 },
background: { color: :lime, texture: 'Stripes' },
}
end
end
# Get an object with the default options
skin = Skin.new
p skin.background.color
#=> :lime
# Get an object and override some root options using a hash
skin = Skin.new color: :blue
p skin.color
#=> :blue
# Get an object and update some deep options using a block
skin = Skin.new { border.color = :yellow }
puts skin.border
#=> color = :yellow
#=> width = 3
# The initialization block receives the object itself which can be useful
# in some cases
skin = Skin.new do |skin|
skin.color = :cyan
skin.border.width = 10
end
p skin.color
p skin.border
#=> :cyan
#=> <color: :red, width: 10>
If you experience any issue, have a question or a suggestion, or if you wish to contribute, feel free to open an issue.
FAQs
Unknown package
We found that dot_options 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.
Security News
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.
Security News
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.
Security News
A clarification on our recent research investigating 60 malicious Ruby gems.