
Security News
Researcher Exposes Zero-Day Clickjacking Vulnerabilities in Major Password Managers
Hacker Demonstrates How Easy It Is To Steal Data From Popular Password Managers
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
Hacker Demonstrates How Easy It Is To Steal Data From Popular Password Managers
Security News
Oxlint’s new preview brings type-aware linting powered by typescript-go, combining advanced TypeScript rules with native-speed performance.
Security News
A new site reviews software projects to reveal if they’re truly FOSS, making complex licensing and distribution models easy to understand.