From 7d784ba37f651c344026ae38d62875087c267dc1 Mon Sep 17 00:00:00 2001 From: Sijawusz Pur Rahnama Date: Fri, 7 Sep 2018 15:33:54 +0200 Subject: [PATCH] Use Hash composition over inheritance --- src/dependency.cr | 15 ++++++++------- src/target.cr | 8 +++++--- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/dependency.cr b/src/dependency.cr index 13eb8d5a..c3dc561c 100644 --- a/src/dependency.cr +++ b/src/dependency.cr @@ -1,9 +1,12 @@ require "./ext/yaml" module Shards - class Dependency < Hash(String, String) + class Dependency property name : String + @store = {} of String => String + forward_missing_to @store + def self.new(pull : YAML::PullParser) : self Dependency.new(pull.read_scalar).tap do |dependency| pull.each_in_mapping do @@ -13,26 +16,24 @@ module Shards end def initialize(@name) - super() end # DEPRECATED: with no replacement def initialize(@name, config) - super() - config.each { |k, v| self[k.to_s] = v.to_s } + config.each { |k, v| @store[k.to_s] = v.to_s } end def version - fetch("version", "*") + @store.fetch("version", "*") end def refs - self["branch"]? || self["tag"]? || self["commit"]? + @store["branch"]? || @store["tag"]? || @store["commit"]? end def inspect(io) io << "#<" << self.class.name << " {" << name << " => " - super + @store.inspect(io) io << "}>" end end diff --git a/src/target.cr b/src/target.cr index 655bb4bd..51c949f7 100644 --- a/src/target.cr +++ b/src/target.cr @@ -1,7 +1,10 @@ module Shards - class Target < Hash(String, String) + class Target property name : String + @store = {} of String => String + forward_missing_to @store + def self.new(pull : YAML::PullParser) : self Target.new(pull.read_scalar).tap do |target| pull.each_in_mapping do @@ -11,11 +14,10 @@ module Shards end def initialize(@name) - super() end def main - self["main"] + @store["main"] end end end