altair 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/altair/document.rb +32 -0
- data/lib/altair/field.rb +14 -0
- data/lib/altair.rb +47 -0
- data/lib/boolean.rb +9 -0
- metadata +60 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 65b7c35da511837c4258f69bb240843582ad39e4f7fb769c8e73acdb5becea7e
|
4
|
+
data.tar.gz: 138c89449ed2e6a2abcd5beee0b85d76142c60d0de0c7b9b8d337852a283cc1b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 93b3ac5f2d0da4b7bcd7212b5a0ae73fa8ee6502241e55cf23bb354d1db74b8ad49f83e58ce7ed68bb1350602712417640de7ec2bdd6a0181552a2078e119726
|
7
|
+
data.tar.gz: 2ec97f4ad2626306e7c03e6e0d77a3c73d505ae4524f6093fb933bd773fdf9dd181f59c68a39122b18eea369fe0cc2b4e1c1e98697c90ed03f96e3245749bf7a
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'indifferent-hash'
|
2
|
+
|
3
|
+
module Altair
|
4
|
+
class Document < IndifferentHash
|
5
|
+
attr_accessor :fields
|
6
|
+
|
7
|
+
def initialize(fields, data = {})
|
8
|
+
@fields = fields
|
9
|
+
|
10
|
+
fields.each do |key, field|
|
11
|
+
case field
|
12
|
+
when Hash
|
13
|
+
define_singleton_method(:"#{key}") { get(key) }
|
14
|
+
self[key] = Document.new(field, data[key] || {})
|
15
|
+
when Field
|
16
|
+
define_singleton_method(:"#{key}") { get(key) }
|
17
|
+
define_singleton_method(:"#{key}=") { |value| set(key, value) }
|
18
|
+
|
19
|
+
set(key, data[key])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def get(key)
|
25
|
+
self[key]
|
26
|
+
end
|
27
|
+
|
28
|
+
def set(key, value)
|
29
|
+
self[key] = fields[key].parse! value
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/altair/field.rb
ADDED
data/lib/altair.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'boolean'
|
2
|
+
require 'altair/field'
|
3
|
+
require 'altair/document'
|
4
|
+
|
5
|
+
module Altair
|
6
|
+
attr_accessor :converter
|
7
|
+
|
8
|
+
def config(options = {})
|
9
|
+
@converter = options[:converter] || default_converter
|
10
|
+
end
|
11
|
+
|
12
|
+
def default_converter
|
13
|
+
{
|
14
|
+
String => {
|
15
|
+
String => Proc.new { |value| value.to_s },
|
16
|
+
Symbol => Proc.new { |value| value.to_sym },
|
17
|
+
Integer => Proc.new { |value| value.to_i },
|
18
|
+
Float => Proc.new { |value| value.to_f },
|
19
|
+
Date => Proc.new { |value| Date.parse(value) },
|
20
|
+
DateTime => Proc.new { |value| DateTime.parse(value) }
|
21
|
+
},
|
22
|
+
Integer => {
|
23
|
+
Integer => Proc.new { |value| value.to_i },
|
24
|
+
Float => Proc.new { |value| value.to_f },
|
25
|
+
String => Proc.new { |value| value.to_s }
|
26
|
+
},
|
27
|
+
Float => {
|
28
|
+
Float => Proc.new { |value| value.to_f },
|
29
|
+
Integer => Proc.new { |value| value.to_i },
|
30
|
+
String => Proc.new { |value| value.to_s }
|
31
|
+
},
|
32
|
+
TrueClass => {
|
33
|
+
Boolean => Proc.new { |value| value }
|
34
|
+
},
|
35
|
+
FalseClass => {
|
36
|
+
Boolean => Proc.new { |value| value }
|
37
|
+
},
|
38
|
+
Hash => {
|
39
|
+
Array => Proc.new { |hash| hash.values }
|
40
|
+
}
|
41
|
+
}
|
42
|
+
end
|
43
|
+
|
44
|
+
extend self
|
45
|
+
end
|
46
|
+
|
47
|
+
Altair.config
|
data/lib/boolean.rb
ADDED
metadata
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: altair
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Felipe Cabrera
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-03-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: indifferent-hash
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description:
|
28
|
+
email: fecabrera0@outlook.com
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- lib/altair.rb
|
34
|
+
- lib/altair/document.rb
|
35
|
+
- lib/altair/field.rb
|
36
|
+
- lib/boolean.rb
|
37
|
+
homepage: https://gitlab.com/armizh/altair
|
38
|
+
licenses:
|
39
|
+
- BSD-2-Clause
|
40
|
+
metadata: {}
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
require_paths:
|
44
|
+
- lib
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
requirements: []
|
56
|
+
rubygems_version: 3.0.1
|
57
|
+
signing_key:
|
58
|
+
specification_version: 4
|
59
|
+
summary: Basic document validation
|
60
|
+
test_files: []
|