Class: Changit::ConfigMerger
- Inherits:
-
Object
- Object
- Changit::ConfigMerger
- Defined in:
- lib/changit/config_merger.rb
Instance Method Summary collapse
-
#hash_difference(src_token_hash, target_token_hash) ⇒ Object
return the difference between two hashes.
-
#initialize(src_config, target_config) ⇒ ConfigMerger
constructor
A new instance of ConfigMerger.
-
#merge ⇒ Object
comapre and merge src_config into target_config into a lexer.
Constructor Details
#initialize(src_config, target_config) ⇒ ConfigMerger
Returns a new instance of ConfigMerger.
3 4 5 6 |
# File 'lib/changit/config_merger.rb', line 3 def initialize(src_config, target_config) @src = src_config @target = target_config end |
Instance Method Details
#hash_difference(src_token_hash, target_token_hash) ⇒ Object
return the difference between two hashes
34 35 36 |
# File 'lib/changit/config_merger.rb', line 34 def hash_difference(src_token_hash, target_token_hash) src_token_hash.dup.delete_if { |k, _| target_token_hash.key?(k) } end |
#merge ⇒ Object
comapre and merge src_config into target_config into a lexer
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/changit/config_merger.rb', line 9 def merge src_lexer = Lexer.new(@src) src_token_hash = src_lexer.token_hash target_lexer = Lexer.new(@target) target_token_hash = target_lexer.token_hash if target_token_hash.empty? target_lexer = src_lexer else target_token_hash.each do |k, v| if src_token_hash[k] target_token_hash[k].merge!(src_token_hash[k]) end end config_difference = hash_difference(src_token_hash, target_token_hash) target_token_hash.merge!(config_difference) target_lexer.reconstruct_tokens_from_hash! end target_lexer end |