🚪 BlackHoleStruct is a data structure similar to an OpenStruct allowing autovivification
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
test
.gitignore
Gemfile
Gemfile.lock
README.md
Rakefile
black_hole_struct.gemspec

README.md

CircleCI

BlackHoleStruct

BlackHoleStruct is a data structure similar to an OpenStruct that allows:

  • infinite chaining of attributes or autovivification
  • deep merging of BlackHoleStruct/Hash

Installation

Add it to your Gemfile:

gem "black_hole_struct"

Or install the gem manually:

$ gem install black_hole_struct

Basic Usage

require "black_hole_struct"

config = BlackHoleStruct.new
config.dashboard.theme = "white"
config.dashboard.time.from = "now-1h"
config.dashboard.time.to = "now"

puts config.dashboard.theme      # "white"
puts config.dashboard.time       # #<BlackHoleStruct :from="now-1h" :to="now">
puts config.dashboard.time.from  # "now-1h"

config[:connection][:host] = "localhost"
config[:connection][:port] = 3000

puts config.to_h
# {
#   connection: {
#     host: "localhost",
#     port: 3000
#   }
#   dashboard: {
#     theme: "white",
#     time: {
#       from: "now-1h",
#       to: "now"
#     }
#   }
# }

config = BlackHoleStruct.new(theme: "white", connection: {port: 3000})
config.deep_merge!(connection: {host: 'localhost'})
puts config.to_h
# {
#   connection: {
#     host: "localhost",
#     port: 3000
#   }
#   theme: "white"
# }

Is it any good

Yes

Advanced usage

Check the documentation.