No commit activity in last 3 years
No release in over 3 years
BlackHoleStruct is a data structure similar to an OpenStruct allowing autovivification.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
 Project Readme

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.