key_tree 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 69bc0aa979e024edf0ce7e8bf7fd091aa6976a99b436031be3d4d1e7eae94108
4
- data.tar.gz: 14da39af72e5680703b911ddf7fa9b27bc8a614bbb95847ed79d01771d827307
3
+ metadata.gz: b3dad4f9d7ee51efbc9cdf1b4c8e2f90dea321927ef73fb6081e8f437de43603
4
+ data.tar.gz: 7b52ebdbbdf1b4b5c172583aadb4d1f8006a56d1c970f530b28426d34af38ee9
5
5
  SHA512:
6
- metadata.gz: 606f5b5907e53c97570439a2eaa2d5b1c4085300bb1b4855a31ee72fe3ffdc39a69d88f74a439dcd285e51e101bd159f1baacd641536b3c1ceed3ed3f0557232
7
- data.tar.gz: 9e9a5f2b2ce987786be86670e003f0cc9d7fa44d33e90acf6db8d835d38aa2bf635027f909245bae092d22502ce67e150d03907c5ad9281689532dcfdf5fcaca
6
+ metadata.gz: fa010f0942b8afddd4915cad9929b0aa166734c11cd5cd63e71e95b3f066266ac990ba1cfb8ad97f9133e14a94cba5bef7c39c84b30b3b1baebad0667b3aa5d7
7
+ data.tar.gz: f91c486c8f0c39dfadf767b3c44795974f521f324079de2a48478c9d3fb9611a4221f6481fe0a69e3354ac94d0f2114c84895966232674094d4e6498068cedba
data/.gitignore CHANGED
@@ -11,3 +11,4 @@
11
11
  .rspec_status
12
12
  /vendor
13
13
  Gemfile.lock
14
+ coverage
@@ -8,8 +8,3 @@ Metrics/BlockLength:
8
8
  Style/BlockDelimiters:
9
9
  Exclude:
10
10
  - 'spec/*_spec.rb'
11
-
12
- # Rubocop 0.56 causes false positives
13
- # https://github.com/bbatsov/rubocop/issues/5887
14
- Lint/SplatKeywordArguments:
15
- Enabled: false
@@ -1,3 +1,29 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ Older releases uses an ad-hoc release notes format, and follow at the end.
8
+
9
+
10
+ ## [Unreleased]
11
+
12
+
13
+ ## [0.7.0] - 2019-07-16
14
+
15
+ ### Changed
16
+
17
+ - Removed leftover private methods from `KeyTree::Forest`, `#tree_with_key`
18
+ and `#trees_with_key`
19
+ - Removed `KeyTree::Tree#fetch_default` method and simplified `#[]`
20
+
21
+
22
+ [Unreleased]: https://github.com/notCalle/PROJECT/compare/v0.7.0..HEAD
23
+ [0.7.0]: https://github.com/notCalle/PROJECT/compare/v0.6.1..v0.7.0
24
+ [0.6.1]: https://github.com/notCalle/PROJECT/releases/tag/v0.6.1
25
+
26
+
1
27
  # Release Notes
2
28
 
3
29
  ## v0.6.1 – 2018-05-31
data/Gemfile CHANGED
@@ -4,11 +4,5 @@ source 'https://rubygems.org'
4
4
 
5
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
7
- begin
8
- require 'git-version-bump'
9
- rescue LoadError
10
- gem 'git-version-bump', '~> 0.15'
11
- else
12
- # Specify your gem's dependencies in key_tree.gemspec
13
- gemspec
14
- end
7
+ # Specify your gem's dependencies in key_tree.gemspec
8
+ gemspec
data/README.md CHANGED
@@ -1,10 +1,15 @@
1
- [![Gem Version](https://badge.fury.io/rb/key_tree.svg)](https://badge.fury.io/rb/key_tree) [![Maintainability](https://api.codeclimate.com/v1/badges/ac48756e80007e0cd6f9/maintainability)](https://codeclimate.com/github/notCalle/ruby-keytree/maintainability)
1
+ [![Gem Version](https://badge.fury.io/rb/key_tree.svg)](https://badge.fury.io/rb/key_tree)
2
+ [![Maintainability](https://api.codeclimate.com/v1/badges/ac48756e80007e0cd6f9/maintainability)](https://codeclimate.com/github/notCalle/ruby-keytree/maintainability)
3
+ [![codecov](https://codecov.io/gh/notCalle/ruby-keytree/branch/master/graph/badge.svg)](https://codecov.io/gh/notCalle/ruby-keytree)
4
+ [![Build Status](https://dev.azure.com/notCalle/GitHub%20CI/_apis/build/status/notCalle.ruby-keytree?branchName=master)](https://dev.azure.com/notCalle/GitHub%20CI/_build/latest?definitionId=3&branchName=master)
2
5
 
3
6
  # KeyTree
4
7
 
5
8
  KeyTree manages trees of hashes, and (possibly nested) forests of such trees,
6
9
  allowing access to values by key path.
7
10
 
11
+ See the [changelog](CHANGELOG.md) for recent changes.
12
+
8
13
  ## Installation
9
14
 
10
15
  Add this line to your application's Gemfile:
@@ -0,0 +1,22 @@
1
+ # Ruby
2
+ # Package your Ruby project.
3
+ # Add steps that install rails, analyze code, save build artifacts, deploy, and more:
4
+ # https://docs.microsoft.com/azure/devops/pipelines/languages/ruby
5
+
6
+ pool:
7
+ vmImage: 'Ubuntu 16.04'
8
+
9
+ steps:
10
+ - task: UseRubyVersion@0
11
+ inputs:
12
+ versionSpec: '>= 2.5'
13
+
14
+ - script: |
15
+ gem install bundler
16
+ bin/setup
17
+ displayName: 'bundle install'
18
+
19
+ - script: bundle exec rake
20
+ displayName: 'bundle exec rake'
21
+ env:
22
+ CODECOV_TOKEN: $(codecov.token)
@@ -8,8 +8,8 @@ require 'key_tree'
8
8
  # with your gem easier. You can also use a different console, if you like.
9
9
 
10
10
  # (If you use this, don't forget to add pry to your Gemfile!)
11
- # require "pry"
12
- # Pry.start
11
+ require 'pry'
12
+ Pry.start
13
13
 
14
- require 'irb'
15
- IRB.start(__FILE__)
14
+ # require 'irb'
15
+ # IRB.start(__FILE__)
data/bin/setup CHANGED
@@ -4,6 +4,5 @@ IFS=$'\n\t'
4
4
  set -vx
5
5
 
6
6
  bundle install
7
- bundle update
8
7
 
9
8
  # Do any other automated setup that you need to do here
@@ -5,6 +5,18 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
6
  require 'key_tree/version'
7
7
 
8
+ dev_deps = {
9
+ 'bundler' => '~> 2.0',
10
+ 'codecov' => '~> 0.1',
11
+ 'git-version-bump' => '~> 0.15',
12
+ 'pry' => '~> 0.11',
13
+ 'rake' => '~> 10.0',
14
+ 'rspec' => '~> 3.0',
15
+ 'rubocop' => '~> 0.57',
16
+ 'ruby-prof' => '~> 0.17',
17
+ 'simplecov' => '~> 0.16'
18
+ }
19
+
8
20
  Gem::Specification.new do |spec|
9
21
  spec.name = 'key_tree'
10
22
  spec.version = KeyTree::VERSION
@@ -25,10 +37,5 @@ Gem::Specification.new do |spec|
25
37
  spec.platform = Gem::Platform::RUBY
26
38
  spec.required_ruby_version = '~> 2.3'
27
39
 
28
- spec.add_development_dependency 'bundler', '~> 1.16'
29
- spec.add_development_dependency 'git-version-bump', '~> 0.15'
30
- spec.add_development_dependency 'rake', '~> 10.0'
31
- spec.add_development_dependency 'rspec', '~> 3.0'
32
- spec.add_development_dependency 'rubocop', '~> 0.52'
33
- spec.add_development_dependency 'ruby-prof', '~> 0.17'
40
+ dev_deps.each { |d| spec.add_development_dependency(*d) }
34
41
  end
@@ -17,77 +17,82 @@ require 'key_tree/tree'
17
17
  module KeyTree
18
18
  using Refinements
19
19
 
20
- def self.[](contents = {})
21
- contents.to_key_wood
22
- end
20
+ class << self
21
+ def [](contents = {})
22
+ contents.to_key_wood
23
+ end
23
24
 
24
- # Load a KeyTree from some external serialization
25
- #
26
- # load +type+: +serialization+
27
- # load +key_prefix+, +type+: +serialization+
28
- #
29
- # +type+ is upcased to form a class name that should provide a
30
- # +.load+ class method (like YAML or JSON does).
31
- #
32
- # If a +key_prefix+ is given, it will be prepended to the loaded data.
33
- #
34
- # Examples:
35
- # load(:yaml, "---\na: 1\n")
36
- # => {"a" => 1}
37
- #
38
- # load(:yaml, "---\nb: 2\n", prefix: 'a')
39
- # => {"a.b" => 2}
40
- #
41
- def self.load(type, serialization, prefix: nil)
42
- type = type.to_sym unless type.nil?
43
- loader = Loader[type]
44
- contents = loader.load(serialization)
45
- contents = { prefix => contents } unless prefix.nil?
25
+ # Load a KeyTree from some external serialization
26
+ #
27
+ # load +type+: +serialization+
28
+ # load +key_prefix+, +type+: +serialization+
29
+ #
30
+ # +type+ is upcased to form a class name that should provide a
31
+ # +.load+ class method (like YAML or JSON does).
32
+ #
33
+ # If a +key_prefix+ is given, it will be prepended to the loaded data.
34
+ #
35
+ # Examples:
36
+ # load(:yaml, "---\na: 1\n")
37
+ # => {"a" => 1}
38
+ #
39
+ # load(:yaml, "---\nb: 2\n", prefix: 'a')
40
+ # => {"a.b" => 2}
41
+ #
42
+ def load(type, serialization, prefix: nil)
43
+ type = type.to_sym unless type.nil?
44
+ loader = Loader[type]
45
+ contents = loader.load(serialization)
46
+ contents = { prefix => contents } unless prefix.nil?
46
47
 
47
- contents.to_key_wood.with_meta_data do |meta_data|
48
- meta_data << { load: { type: type, loader: loader } }
49
- meta_data << { load: { prefix: prefix } } unless prefix.nil?
48
+ contents.to_key_wood.with_meta_data do |meta_data|
49
+ meta_data << { load: { type: type, loader: loader } }
50
+ meta_data << { load: { prefix: prefix } } unless prefix.nil?
51
+ end
50
52
  end
51
- end
52
53
 
53
- # Open an external file and load contents into a KeyTree
54
- # When the file basename begins with 'prefix@', the prefix
55
- # is prepended to all keys in the filee.
56
- def self.open(file_name)
57
- type = File.extname(file_name)[/[^.]+/]
58
- prefix = File.basename(file_name)[/(.+)@/, 1]
54
+ # Open an external file and load contents into a KeyTree
55
+ # When the file basename begins with 'prefix@', the prefix
56
+ # is prepended to all keys in the filee.
57
+ def open(file_name)
58
+ type = File.extname(file_name)[/[^.]+/]
59
+ prefix = File.basename(file_name)[/(.+)@/, 1]
60
+
61
+ keytree = File.open(file_name, mode: 'rb:utf-8') do |file|
62
+ load_from_file(file, type, prefix)
63
+ end
59
64
 
60
- keytree = File.open(file_name, mode: 'rb:utf-8') do |file|
61
- load_from_file(file, type, prefix)
65
+ return keytree unless block_given?
66
+
67
+ yield keytree
62
68
  end
63
69
 
64
- return keytree unless block_given?
65
- yield(keytree)
66
- end
70
+ # Open all files in a directory and load their contents into
71
+ # a Forest of Trees, optionally following symlinks, and recursing.
72
+ def open_all(dir_name, follow_links: false, recurse: false)
73
+ Dir.children(dir_name).reduce(KeyTree::Forest.new) do |result, file|
74
+ path = File.join(dir_name, file)
75
+ next result if File.symlink?(path) && !follow_links
67
76
 
68
- # Open all files in a directory and load their contents into
69
- # a Forest of Trees, optionally following symlinks, and recursing.
70
- def self.open_all(dir_name, follow_links: false, recurse: false)
71
- Dir.children(dir_name).reduce(KeyTree::Forest.new) do |result, file|
72
- path = File.join(dir_name, file)
73
- next result if File.symlink?(path) && !follow_links
74
- stat = File.stat(path)
75
- # rubocop:disable Security/Open
76
- next result << open(path) if stat.file?
77
- # rubocop:enable Security/Open
78
- next result unless recurse && stat.directory?
79
- result << open_all(path, follow_links: follow_links, recurse: true)
77
+ stat = File.stat(path)
78
+ # rubocop:disable Security/Open
79
+ next result << open(path) if stat.file?
80
+ # rubocop:enable Security/Open
81
+ next result unless recurse && stat.directory?
82
+
83
+ result << open_all(path, follow_links: follow_links, recurse: true)
84
+ end
80
85
  end
81
- end
82
86
 
83
- private_class_method
87
+ private
84
88
 
85
- def self.load_from_file(file, type, prefix)
86
- load(type, file.read, prefix: prefix).with_meta_data do |meta_data|
87
- file_path = file.path
88
- meta_data << { file: { path: file_path,
89
- name: File.basename(file_path),
90
- dir: File.dirname(file_path) } }
89
+ def load_from_file(file, type, prefix)
90
+ load(type, file.read, prefix: prefix).with_meta_data do |meta_data|
91
+ file_path = file.path
92
+ meta_data << { file: { path: file_path,
93
+ name: File.basename(file_path),
94
+ dir: File.dirname(file_path) } }
95
+ end
91
96
  end
92
97
  end
93
98
  end
@@ -57,6 +57,7 @@ module KeyTree # rubocop:disable Style/Documentation
57
57
  end
58
58
  return yield(key) if block_given?
59
59
  return default.first unless default.empty?
60
+
60
61
  raise KeyError, %(key not found: "#{key}")
61
62
  end
62
63
 
@@ -99,6 +100,7 @@ module KeyTree # rubocop:disable Style/Documentation
99
100
  remaining = [self]
100
101
  remaining.each do |woods|
101
102
  next yielder << woods if woods.is_a?(Tree)
103
+
102
104
  woods.each { |wood| remaining << wood }
103
105
  end
104
106
  end
@@ -108,22 +110,5 @@ module KeyTree # rubocop:disable Style/Documentation
108
110
  def key_paths
109
111
  trees.reduce(Set.new) { |result, tree| result.merge(tree.key_paths) }
110
112
  end
111
-
112
- private
113
-
114
- def tree_with_key(key)
115
- result = trees.lazy.detect do |tree|
116
- tree.prefix?(key)
117
- end
118
- result || raise(KeyError, %(key not found: "#{key}"))
119
- end
120
-
121
- def trees_with_key(key)
122
- result = trees.select do |tree|
123
- tree.prefix?(key)
124
- end
125
- raise(KeyError, %(key not found: "#{key}")) if result.empty?
126
- result
127
- end
128
113
  end
129
114
  end
@@ -10,26 +10,27 @@ module KeyTree
10
10
  yaml: 'YAML', yml: 'YAML'
11
11
  }.freeze
12
12
 
13
- def self.[](type)
14
- type = type.to_sym if type.respond_to?(:to_sym)
15
- loaders[type] || @fallback
16
- end
13
+ class << self
14
+ def [](type)
15
+ type = type.to_sym if type.respond_to?(:to_sym)
16
+ loaders[type] || @fallback
17
+ end
17
18
 
18
- def self.[]=(type, loader_class)
19
- type = type.to_sym if type.respond_to?(:to_sym)
20
- loaders[type] = loader_class
21
- end
19
+ def []=(type, loader_class)
20
+ type = type.to_sym if type.respond_to?(:to_sym)
21
+ loaders[type] = loader_class
22
+ end
22
23
 
23
- def self.fallback(loader)
24
- @fallback = loader
25
- end
24
+ attr_writer :fallback, :loaders
25
+ alias fallback fallback=
26
26
 
27
- private_class_method
27
+ private
28
28
 
29
- def self.loaders
30
- @loaders ||= BUILTIN_LOADERS.each_with_object({}) do |pair, result|
31
- type, name = pair
32
- result[type] = const_get(name) if const_defined?(name)
29
+ def loaders
30
+ @loaders ||= BUILTIN_LOADERS.each_with_object({}) do |pair, result|
31
+ type, name = pair
32
+ result[type] = const_get(name) if const_defined?(name)
33
+ end
33
34
  end
34
35
  end
35
36
  end
@@ -16,7 +16,7 @@ module KeyTree # rubocop:disable Style/Documentation
16
16
  #
17
17
  def self.[](*key_paths)
18
18
  key_paths.reduce(Path.new) do |result, key_path|
19
- result << key_path.to_key_path
19
+ result << Path.new(key_path)
20
20
  end
21
21
  end
22
22
 
@@ -41,9 +41,7 @@ module KeyTree # rubocop:disable Style/Documentation
41
41
  end
42
42
  end
43
43
 
44
- def to_key_path
45
- self
46
- end
44
+ alias to_key_path itself
47
45
 
48
46
  def to_s
49
47
  join('.')
@@ -64,10 +62,11 @@ module KeyTree # rubocop:disable Style/Documentation
64
62
  # Returns a key path without the leading +prefix+
65
63
  #
66
64
  # :call-seq:
67
- # Path - other => Path
68
- def -(other)
65
+ # drop(other) => Path
66
+ def drop(other)
69
67
  other = other.to_key_path
70
68
  raise KeyError unless prefix?(other)
69
+
71
70
  super(other.length)
72
71
  end
73
72
 
@@ -78,6 +77,7 @@ module KeyTree # rubocop:disable Style/Documentation
78
77
  def prefix?(other)
79
78
  other = other.to_key_path
80
79
  return false if other.length > length
80
+
81
81
  key_enum = each
82
82
  other.all? { |other_key| key_enum.next == other_key }
83
83
  end
@@ -1,12 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../path'
4
-
5
3
  module KeyTree
6
4
  module Refine
7
5
  # Refinements to Hash for deep_ methods, for traversing nested structures
8
6
  module DeepHash
9
- refine Hash do # rubocop:disable Metrics/BlockLength
7
+ refine Hash do
10
8
  # Return a deep enumerator for all (+key_path+, +value+) pairs in a
11
9
  # nested hash structure.
12
10
  #
@@ -34,6 +32,7 @@ module KeyTree
34
32
  end
35
33
  return yield(key_path) if block_given?
36
34
  return default.first unless default.empty?
35
+
37
36
  raise KeyError, %(key path invalid: "#{key_path}")
38
37
  end
39
38
 
@@ -49,6 +48,7 @@ module KeyTree
49
48
  result = prefix_path.reduce(self) do |hash, key|
50
49
  result = hash.fetch(key) { hash[key] = {} }
51
50
  next result if result.is_a?(Hash)
51
+
52
52
  raise KeyError, %(prefix has value: "#{key_path}")
53
53
  end
54
54
  result[last_key] = new_value
@@ -65,6 +65,7 @@ module KeyTree
65
65
  result = prefix_path.reduce(self) do |hash, key|
66
66
  result = hash.fetch(key, nil)
67
67
  next result if result.is_a?(Hash)
68
+
68
69
  raise KeyError, %(prefix has value: "#{key_path}")
69
70
  end
70
71
  result.delete(last_key)
@@ -74,11 +75,14 @@ module KeyTree
74
75
  #
75
76
  # :call-seq:
76
77
  # deep_merge!(other) => self
77
- # deep_merge!(other) { |key, lhs, rhs| } => self
78
- def deep_merge!(other)
78
+ # deep_merge!(other) { |key_path, lhs, rhs| } => self
79
+ def deep_merge!(other, prefix = [], &block)
79
80
  merge!(other) do |key, lhs, rhs|
80
- next lhs.merge!(rhs) if lhs.is_a?(Hash) && rhs.is_a?(Hash)
81
- next yield(key, lhs, rhs) if block_given?
81
+ key_path = prefix + [key]
82
+ both_are_hashes = lhs.is_a?(Hash) && rhs.is_a?(Hash)
83
+ next lhs.deep_merge!(rhs, key_path, &block) if both_are_hashes
84
+ next yield(key_path, lhs, rhs) unless block.nil?
85
+
82
86
  rhs
83
87
  end
84
88
  end
@@ -87,11 +91,14 @@ module KeyTree
87
91
  #
88
92
  # :call-seq:
89
93
  # deep_merge(other) => self
90
- # deep_merge(other) { |key, lhs, rhs| } => self
91
- def deep_merge(other)
94
+ # deep_merge(other) { |key_path, lhs, rhs| } => self
95
+ def deep_merge(other, prefix = [], &block)
92
96
  merge(other) do |key, lhs, rhs|
93
- next lhs.merge(rhs) if lhs.is_a?(Hash) && rhs.is_a?(Hash)
94
- next yield(key, lhs, rhs) if block_given?
97
+ key_path = prefix + [key]
98
+ both_are_hashes = lhs.is_a?(Hash) && rhs.is_a?(Hash)
99
+ next lhs.deep_merge(rhs, key_path, &block) if both_are_hashes
100
+ next yield(key_path, lhs, rhs) unless block.nil?
101
+
95
102
  rhs
96
103
  end
97
104
  end
@@ -104,6 +111,7 @@ module KeyTree
104
111
  result = transform_keys(&block)
105
112
  result.transform_values! do |value|
106
113
  next value unless value.is_a?(Hash)
114
+
107
115
  value.deep_transform_keys(&block)
108
116
  end
109
117
  end
@@ -116,6 +124,7 @@ module KeyTree
116
124
  result = transform_keys!(&block)
117
125
  result.transform_values! do |value|
118
126
  next value unless value.is_a?(Hash)
127
+
119
128
  value.deep_transform_keys!(&block)
120
129
  end
121
130
  end
@@ -144,3 +153,5 @@ module KeyTree
144
153
  end
145
154
  end
146
155
  end
156
+
157
+ require_relative '../path'
@@ -1,9 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'forest'
4
- require_relative 'path'
5
- require_relative 'tree'
6
-
7
3
  module KeyTree
8
4
  # KeyTree refinements to core classes
9
5
  module Refinements
@@ -38,3 +34,7 @@ module KeyTree
38
34
  end
39
35
  end
40
36
  end
37
+
38
+ require_relative 'forest'
39
+ require_relative 'path'
40
+ require_relative 'tree'
@@ -45,17 +45,11 @@ module KeyTree # rubocop:disable Style/Documentation
45
45
  end
46
46
 
47
47
  def [](key_path)
48
- fetch_default(key_path, default)
49
- end
48
+ fetch(key_path) do
49
+ next default if default_proc.nil?
50
50
 
51
- def fetch_default(key_path, *default)
52
- catch do |ball|
53
- return fetch(key_path) { throw ball }
51
+ default_proc.call(self, key_path)
54
52
  end
55
- return default_proc.call(self, key_path) unless default_proc.nil?
56
- return yield(key_path) if block_given?
57
- return default.first unless default.empty?
58
- raise KeyError, %(key not found: "#{key_path}")
59
53
  end
60
54
 
61
55
  def fetch(key_path, *args, &key_missing)
@@ -115,6 +109,7 @@ module KeyTree # rubocop:disable Style/Documentation
115
109
  key_path.to_key_path.reduce(@hash) do |subtree, key|
116
110
  return false unless subtree.is_a?(Hash)
117
111
  return false unless subtree.key?(key)
112
+
118
113
  subtree[key]
119
114
  end
120
115
  true
@@ -0,0 +1,8 @@
1
+ {
2
+ "folders":
3
+ [
4
+ {
5
+ "path": "."
6
+ }
7
+ ]
8
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: key_tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Calle Englund
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-31 00:00:00.000000000 Z
11
+ date: 2019-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
19
+ version: '2.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.16'
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: codecov
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.1'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.1'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: git-version-bump
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +52,20 @@ dependencies:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0.15'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.11'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.11'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: rake
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +100,14 @@ dependencies:
72
100
  requirements:
73
101
  - - "~>"
74
102
  - !ruby/object:Gem::Version
75
- version: '0.52'
103
+ version: '0.57'
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
108
  - - "~>"
81
109
  - !ruby/object:Gem::Version
82
- version: '0.52'
110
+ version: '0.57'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: ruby-prof
85
113
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +122,20 @@ dependencies:
94
122
  - - "~>"
95
123
  - !ruby/object:Gem::Version
96
124
  version: '0.17'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.16'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.16'
97
139
  description:
98
140
  email:
99
141
  - calle@discord.bofh.se
@@ -105,12 +147,13 @@ files:
105
147
  - ".rspec"
106
148
  - ".rubocop.yml"
107
149
  - ".travis.yml"
150
+ - CHANGELOG.md
108
151
  - CODE_OF_CONDUCT.md
109
152
  - Gemfile
110
153
  - LICENSE.txt
111
154
  - README.md
112
- - RELEASE_NOTES.md
113
155
  - Rakefile
156
+ - azure-pipelines.yml
114
157
  - bin/console
115
158
  - bin/setup
116
159
  - key_tree.gemspec
@@ -124,6 +167,7 @@ files:
124
167
  - lib/key_tree/refinements.rb
125
168
  - lib/key_tree/tree.rb
126
169
  - lib/key_tree/version.rb
170
+ - ruby-keytree.sublime-project
127
171
  homepage: https://github.com/notcalle/ruby-keytree
128
172
  licenses:
129
173
  - MIT
@@ -143,8 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
187
  - !ruby/object:Gem::Version
144
188
  version: '0'
145
189
  requirements: []
146
- rubyforge_project:
147
- rubygems_version: 2.7.6
190
+ rubygems_version: 3.0.3
148
191
  signing_key:
149
192
  specification_version: 4
150
193
  summary: Manage trees of keys