rom-yaml 0.0.1 → 0.1.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
  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: