rom-yaml 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a7fb0f21b9cb89e51692a67a4590f3adc3a11ef0
4
- data.tar.gz: 3b916caf45d21fbbe37f72834c56a35f4ecc2000
3
+ metadata.gz: 794b2d24bea0ff0867b5dcdbe980597c032c6971
4
+ data.tar.gz: edc4737b87e16147cf0cfa028549b4e2a53a888d
5
5
  SHA512:
6
- metadata.gz: d087d68eebecfb3823c8bfecc98b34a5f4a27cee4d405de1fbd485e22eb193561f6093b1800a8fdf961a600cedd468dee4f7ec5a494dc19b366825c314275627
7
- data.tar.gz: c27b34ce93067a04fe6d7f93ad48949fcc32a67e4268f3f809b5d7e89e7fb954c955c602f403ef44b32a0a43aec4cf01a057a8a75103e2fb5bb39c41d2d2fc1f
6
+ metadata.gz: 77a6e50f68d1f1a0141c0acd1cfa5b9597d32a1c0b0cfc7d484f63cab2136303e84d9b35218e7a41a0176865939970228ce141ef863ba0c1d01e9c4846bae7ab
7
+ data.tar.gz: 97f6d0a5b77b1a6fa8158fa3ebce5d12257f518d92386127a86ed1e6f22fab0a315c2dc3b087d0184aac6e5668ccd09a4738eeea86f327df72b1e12efd0e7628
data/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ ## v0.1.0 2015-05-19
2
+
3
+ ### Added
4
+
5
+ * Support for loading relations from multiple files (solnic)
6
+
7
+ ### Changed
8
+
9
+ * Symbolize keys recursively in tuples (cflipse)
10
+ * Make it work with ROM 0.7.0 (cflipse)
11
+
12
+ [Compare v0.0.1...v0.1.0](https://github.com/rom-rb/rom-yaml/compare/v0.0.1...v0.1.0)
13
+
1
14
  ## v0.0.1 2015-03-22
2
15
 
3
16
  First public release
@@ -10,8 +10,7 @@ module ROM
10
10
  #
11
11
  # @api private
12
12
  def self.row_proc
13
- # TODO: this is not recursive
14
- Transproc(:symbolize_keys)
13
+ Transproc(:hash_recursion, Transproc(:symbolize_keys))
15
14
  end
16
15
  end
17
16
  end
@@ -21,28 +21,66 @@ module ROM
21
21
  #
22
22
  # @api public
23
23
  class Repository < ROM::Repository
24
- # Registered datasets
24
+ # @attr_reader [Hash] sources Data loaded from files
25
25
  #
26
26
  # @api private
27
- attr_reader :datasets
27
+ attr_reader :sources
28
28
 
29
- # @param [String] path The absolute path to yaml file
29
+ # @attr_reader [Hash] datasets YAML datasets from sources
30
30
  #
31
31
  # @api private
32
- def initialize(path)
33
- @datasets = {}
32
+ attr_reader :datasets
33
+
34
+ # Create a new yaml repository from a path to file(s)
35
+ #
36
+ # @example
37
+ # repository = ROM::YAML::Repository.new('/path/to/files')
38
+ #
39
+ # @param [String, Pathname] path The path to your YAML file(s)
40
+ #
41
+ # @return [Repository]
42
+ #
43
+ # @api public
44
+ def self.new(path)
45
+ super(load_from(path))
46
+ end
34
47
 
48
+ # Load data from yaml file(s)
49
+ #
50
+ # @api private
51
+ def self.load_from(path)
35
52
  if File.directory?(path)
36
- @connection = Dir["#{path}/*.yml"].each_with_object({}) do |file, h|
37
- name = File.basename(file, '.*')
38
- data = ::YAML.load_file(file)[name]
39
- h[name] = data
40
- end
53
+ load_files(path)
41
54
  else
42
- @connection = ::YAML.load_file(path)
55
+ load_file(path)
56
+ end
57
+ end
58
+
59
+ # Load yaml files from a given directory and return a name => data map
60
+ #
61
+ # @api private
62
+ def self.load_files(path)
63
+ Dir["#{path}/*.yml"].each_with_object({}) do |file, h|
64
+ name = File.basename(file, '.*')
65
+ h[name] = load_file(file).fetch(name)
43
66
  end
44
67
  end
45
68
 
69
+ # Load yaml file
70
+ #
71
+ # @api private
72
+ def self.load_file(path)
73
+ ::YAML.load_file(path)
74
+ end
75
+
76
+ # @param [String] path The absolute path to yaml file
77
+ #
78
+ # @api private
79
+ def initialize(sources)
80
+ @sources = sources
81
+ @datasets = {}
82
+ end
83
+
46
84
  # Return dataset by its name
47
85
  #
48
86
  # @param [Symbol]
@@ -62,7 +100,7 @@ module ROM
62
100
  #
63
101
  # @api public
64
102
  def dataset(name)
65
- datasets[name] = Dataset.new(connection.fetch(name.to_s))
103
+ datasets[name] = Dataset.new(sources.fetch(name.to_s))
66
104
  end
67
105
 
68
106
  # Return if a dataset with provided name exists
@@ -1,5 +1,5 @@
1
1
  module ROM
2
2
  module YAML
3
- VERSION = '0.0.1'.freeze
3
+ VERSION = '0.1.0'.freeze
4
4
  end
5
5
  end
data/rom-yaml.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_runtime_dependency 'rom', '~> 0.6.0'
21
+ spec.add_runtime_dependency 'rom', '~> 0.7', '>= 0.7.0'
22
22
 
23
23
  spec.add_development_dependency 'bundler'
24
24
  spec.add_development_dependency 'rake'
@@ -13,8 +13,8 @@ describe ROM::YAML::Dataset do
13
13
  expect(dataset.to_a).to eq([{ foo: 23 }])
14
14
  end
15
15
 
16
- it "does not symbolizes keys recursively" do
16
+ it "symbolizes keys recursively" do
17
17
  dataset = ROM::YAML::Dataset.new(["foo" => { "bar" => :baz }])
18
- expect(dataset.to_a).to eq([foo: { "bar" => :baz }])
18
+ expect(dataset.to_a).to eq([foo: { bar: :baz }])
19
19
  end
20
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rom-yaml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-22 00:00:00.000000000 Z
11
+ date: 2015-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rom
@@ -16,14 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.6.0
19
+ version: '0.7'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.7.0
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: 0.6.0
29
+ version: '0.7'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.7.0
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: bundler
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -118,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
124
  version: '0'
119
125
  requirements: []
120
126
  rubyforge_project:
121
- rubygems_version: 2.2.2
127
+ rubygems_version: 2.4.5
122
128
  signing_key:
123
129
  specification_version: 4
124
130
  summary: YAML support for Ruby Object Mapper
@@ -130,4 +136,3 @@ test_files:
130
136
  - spec/spec_helper.rb
131
137
  - spec/unit/dataset_spec.rb
132
138
  - spec/unit/repository_spec.rb
133
- has_rdoc: