bmg 0.17.4 → 0.17.5
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 +4 -4
- data/lib/bmg.rb +1 -0
- data/lib/bmg/relation.rb +13 -0
- data/lib/bmg/version.rb +1 -1
- data/lib/bmg/writer.rb +1 -0
- data/lib/bmg/writer/csv.rb +31 -0
- metadata +18 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: faea9567e3ec11347ccd8d1e063d027a720095bc8623221597a40e26aade3d99
|
4
|
+
data.tar.gz: 01b649d2810c6460822c06c83ce06911d438f68cc9b8d297afb766c389619544
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e75f1778fc7fd0578b37fda44c6b2ccf5f5aa4441c16efeb42b495c38bc9361495b6597d70ce0ea8829caceaceb708c247c24b8531464d6c16f8f3faef1ee01f
|
7
|
+
data.tar.gz: 3762248213c27bf9e11276fe3a2b9deb75a124e80cc2f7cdf8fbe9a70856649f85fe55eb71474ae6f4a2836fd3d2d144ff6ae44b7b3810ff08bde51d813136a1
|
data/lib/bmg.rb
CHANGED
data/lib/bmg/relation.rb
CHANGED
@@ -105,6 +105,19 @@ module Bmg
|
|
105
105
|
to_a.to_json(*args, &bl)
|
106
106
|
end
|
107
107
|
|
108
|
+
# Writes the relation data to CSV.
|
109
|
+
#
|
110
|
+
# `string_or_io` and `options` are what CSV::new itself
|
111
|
+
# recognizes, default options are CSV's.
|
112
|
+
#
|
113
|
+
# When no string_or_io is used, the method uses a string.
|
114
|
+
#
|
115
|
+
# The method always returns the string_or_io.
|
116
|
+
def to_csv(options = {}, string_or_io = nil)
|
117
|
+
options, string_or_io = {}, options unless options.is_a?(Hash)
|
118
|
+
Writer::Csv.new(options).call(self, string_or_io)
|
119
|
+
end
|
120
|
+
|
108
121
|
# Converts to an sexpr expression.
|
109
122
|
def to_ast
|
110
123
|
raise "Bmg is missing a feature!"
|
data/lib/bmg/version.rb
CHANGED
data/lib/bmg/writer.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'writer/csv'
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Bmg
|
2
|
+
module Writer
|
3
|
+
class Csv
|
4
|
+
include Writer
|
5
|
+
|
6
|
+
DEFAULT_OPTIONS = {
|
7
|
+
}
|
8
|
+
|
9
|
+
def initialize(options)
|
10
|
+
@options = DEFAULT_OPTIONS.merge(options)
|
11
|
+
end
|
12
|
+
attr_reader :options
|
13
|
+
|
14
|
+
def call(relation, string_or_io = nil)
|
15
|
+
require 'csv'
|
16
|
+
string_or_io, to_s = string_or_io.nil? ? [StringIO.new, true] : [string_or_io, false]
|
17
|
+
headers = relation.type.to_attrlist if relation.type.knows_attrlist?
|
18
|
+
csv = nil
|
19
|
+
relation.each do |tuple|
|
20
|
+
if csv.nil?
|
21
|
+
headers = tuple.keys if headers.nil?
|
22
|
+
csv = CSV.new(string_or_io, options.merge(headers: headers))
|
23
|
+
end
|
24
|
+
csv << headers.map{|h| tuple[h] }
|
25
|
+
end
|
26
|
+
to_s ? string_or_io.string : string_or_io
|
27
|
+
end
|
28
|
+
|
29
|
+
end # class Csv
|
30
|
+
end # module Writer
|
31
|
+
end # module Bmg
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bmg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.17.
|
4
|
+
version: 0.17.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bernard Lambeau
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: predicate
|
@@ -31,47 +31,47 @@ dependencies:
|
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 2.4.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: path
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
40
|
-
type: :
|
39
|
+
version: '1.3'
|
40
|
+
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- - "
|
44
|
+
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
46
|
+
version: '1.3'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
48
|
+
name: rake
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '13'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
60
|
+
version: '13'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
62
|
+
name: rspec
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- - "
|
65
|
+
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
67
|
+
version: '3.6'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
|
-
- - "
|
72
|
+
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
74
|
+
version: '3.6'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: roo
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -261,6 +261,8 @@ files:
|
|
261
261
|
- lib/bmg/support/tuple_algebra.rb
|
262
262
|
- lib/bmg/type.rb
|
263
263
|
- lib/bmg/version.rb
|
264
|
+
- lib/bmg/writer.rb
|
265
|
+
- lib/bmg/writer/csv.rb
|
264
266
|
- tasks/gem.rake
|
265
267
|
- tasks/test.rake
|
266
268
|
homepage: http://github.com/enspirit/bmg
|