Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

property_string

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

property_string

  • 0.0.2
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

PropertyString

PropertyString CI Status

Use Java-style property notation to execute method call chains on an object.

Installation

Install the gem and add to the application's Gemfile by executing:

bundle add property_string

If bundler is not being used to manage dependencies, install the gem by executing:

gem install property_string

Usage

# Object call chain
product.company.name            # bar

ps = PropertyString.new(product)
ps["company.name"]              # bar

# Object call chain with Array-like object
user.posts[0].replied_to.name   # sshaw

ps = PropertyString.new(user)
ps["posts.0.replied_to.name"]       # sshaw

# Method does not exist
ps = PropertyString.new(product)
ps["company.does_not_exist!"] # NoMethodError

# Can work with a Hash
h.dig(:some, "nested", :hash)   # foo

ps = PropertyString(h)
ps["some.nested.hash"]

# Or an Array
a[0][0][0]

ps = PropertyString(a)
ps["0.0.0"]

# Fetching
ps.fetch("posts.9999", "your default")
ps.fetch("posts.9999") { |key| "some_default_for_#{key}" }

Ignore NoMethodError for Unknown Properties

ps = PropertyString.new(product, :raise_if_method_missing => false)
ps["company.does_not_exist!"] # nil

Restrict Methods That Can Be Called

ps = PropertyString.new(product, :whitelist => { Product => %w[company], Company => %w[name] })
ps["id"] # PropertyString::MethodNotAllowed
ps["company.id"] # PropertyString::MethodNotAllowed

Currently does not work when a superclass is whitelisted but trivial to add.

See Also

  • PropertyHash - Access a nested Ruby Hash using Java-style properties as keys.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/sshaw/property_string.

License

The gem is available as open source under the terms of the MIT License.

FAQs

Package last updated on 18 May 2024

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc