typero 0.8.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.version +1 -1
- data/lib/typero.rb +2 -1
- data/lib/typero/exporter.rb +93 -0
- data/lib/typero/params.rb +24 -9
- data/lib/typero/schema.rb +132 -0
- data/lib/typero/type/type.rb +37 -9
- data/lib/typero/type/types/boolean_type.rb +26 -0
- data/lib/typero/type/types/currency_type.rb +21 -0
- data/lib/typero/type/types/date_type.rb +32 -0
- data/lib/typero/type/types/datetime_type.rb +14 -0
- data/lib/typero/type/types/email_type.rb +20 -0
- data/lib/typero/type/types/float_type.rb +24 -0
- data/lib/typero/type/types/hash_type.rb +25 -0
- data/lib/typero/type/types/{image.rb → image_type.rb} +4 -10
- data/lib/typero/type/types/integer_type.rb +16 -0
- data/lib/typero/type/types/label_type.rb +20 -0
- data/lib/typero/type/types/model_type.rb +21 -0
- data/lib/typero/type/types/{oib.rb → oib_type.rb} +7 -10
- data/lib/typero/type/types/point_type.rb +25 -0
- data/lib/typero/type/types/string_type.rb +20 -0
- data/lib/typero/type/types/{text.rb → text_type.rb} +3 -5
- data/lib/typero/type/types/url_type.rb +13 -0
- data/lib/typero/typero.rb +50 -137
- metadata +20 -18
- data/lib/typero/func.rb +0 -14
- data/lib/typero/type/types/boolean.rb +0 -16
- data/lib/typero/type/types/currency.rb +0 -19
- data/lib/typero/type/types/date.rb +0 -10
- data/lib/typero/type/types/datetime.rb +0 -10
- data/lib/typero/type/types/email.rb +0 -21
- data/lib/typero/type/types/float.rb +0 -21
- data/lib/typero/type/types/hash.rb +0 -22
- data/lib/typero/type/types/integer.rb +0 -21
- data/lib/typero/type/types/label.rb +0 -15
- data/lib/typero/type/types/point.rb +0 -29
- data/lib/typero/type/types/string.rb +0 -23
- data/lib/typero/type/types/url.rb +0 -18
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: typero
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dino Reic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fast_blank
|
@@ -34,24 +34,26 @@ files:
|
|
34
34
|
- "./.version"
|
35
35
|
- "./lib/adapters/sequel.rb"
|
36
36
|
- "./lib/typero.rb"
|
37
|
-
- "./lib/typero/
|
37
|
+
- "./lib/typero/exporter.rb"
|
38
38
|
- "./lib/typero/params.rb"
|
39
|
+
- "./lib/typero/schema.rb"
|
39
40
|
- "./lib/typero/type/type.rb"
|
40
|
-
- "./lib/typero/type/types/
|
41
|
-
- "./lib/typero/type/types/
|
42
|
-
- "./lib/typero/type/types/
|
43
|
-
- "./lib/typero/type/types/
|
44
|
-
- "./lib/typero/type/types/
|
45
|
-
- "./lib/typero/type/types/
|
46
|
-
- "./lib/typero/type/types/
|
47
|
-
- "./lib/typero/type/types/
|
48
|
-
- "./lib/typero/type/types/
|
49
|
-
- "./lib/typero/type/types/
|
50
|
-
- "./lib/typero/type/types/
|
51
|
-
- "./lib/typero/type/types/
|
52
|
-
- "./lib/typero/type/types/
|
53
|
-
- "./lib/typero/type/types/
|
54
|
-
- "./lib/typero/type/types/
|
41
|
+
- "./lib/typero/type/types/boolean_type.rb"
|
42
|
+
- "./lib/typero/type/types/currency_type.rb"
|
43
|
+
- "./lib/typero/type/types/date_type.rb"
|
44
|
+
- "./lib/typero/type/types/datetime_type.rb"
|
45
|
+
- "./lib/typero/type/types/email_type.rb"
|
46
|
+
- "./lib/typero/type/types/float_type.rb"
|
47
|
+
- "./lib/typero/type/types/hash_type.rb"
|
48
|
+
- "./lib/typero/type/types/image_type.rb"
|
49
|
+
- "./lib/typero/type/types/integer_type.rb"
|
50
|
+
- "./lib/typero/type/types/label_type.rb"
|
51
|
+
- "./lib/typero/type/types/model_type.rb"
|
52
|
+
- "./lib/typero/type/types/oib_type.rb"
|
53
|
+
- "./lib/typero/type/types/point_type.rb"
|
54
|
+
- "./lib/typero/type/types/string_type.rb"
|
55
|
+
- "./lib/typero/type/types/text_type.rb"
|
56
|
+
- "./lib/typero/type/types/url_type.rb"
|
55
57
|
- "./lib/typero/typero.rb"
|
56
58
|
homepage: https://github.com/dux/typero
|
57
59
|
licenses:
|
data/lib/typero/func.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
class Typero
|
2
|
-
SCHEMAS = {}
|
3
|
-
end
|
4
|
-
|
5
|
-
def Typero name=nil, &block
|
6
|
-
if block_given?
|
7
|
-
Typero.new(&block).tap do |schema|
|
8
|
-
Typero::SCHEMAS[name] = schema if name
|
9
|
-
end
|
10
|
-
else
|
11
|
-
raise ArgumentErorr.new('Schema nema not given') unless name
|
12
|
-
Typero::SCHEMAS[name] || raise(ArgumentErorr.new('Typero schema "%s" not defined' % name))
|
13
|
-
end
|
14
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
class Typero::BooleanType < Typero::Type
|
2
|
-
def default
|
3
|
-
false
|
4
|
-
end
|
5
|
-
|
6
|
-
def set
|
7
|
-
@value = [true, 1, '1', 'true', 'on'].include?(@value) ? true : false
|
8
|
-
end
|
9
|
-
|
10
|
-
def db_field
|
11
|
-
opts = {}
|
12
|
-
opts[:default] = @opts[:default] || false
|
13
|
-
[:boolean, opts]
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# you should not use this filed for currency calculations
|
2
|
-
|
3
|
-
require_relative './float'
|
4
|
-
|
5
|
-
class Typero::CurrencyType < Typero::FloatType
|
6
|
-
|
7
|
-
def set
|
8
|
-
@value = @value.to_f.round(2)
|
9
|
-
end
|
10
|
-
|
11
|
-
def db_field
|
12
|
-
opts = {}
|
13
|
-
opts[:precision] = 8
|
14
|
-
opts[:scale] = 2
|
15
|
-
[:decimal, opts]
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
|
@@ -1,21 +0,0 @@
|
|
1
|
-
class Typero::EmailType < Typero::Type
|
2
|
-
error :en, :not_8_chars_error, 'is not having at least 8 characters'
|
3
|
-
error :en, :missing_monkey_error, 'is missing @'
|
4
|
-
|
5
|
-
def set
|
6
|
-
@value = @value.downcase.gsub(/\s+/,'+')
|
7
|
-
end
|
8
|
-
|
9
|
-
def validate
|
10
|
-
error_for(:not_8_chars_error) unless @value.to_s.length > 7
|
11
|
-
error_for(:missing_monkey_error) unless @value.include?('@')
|
12
|
-
end
|
13
|
-
|
14
|
-
def db_field
|
15
|
-
opts = {}
|
16
|
-
opts[:limit] = @opts[:max] || 120
|
17
|
-
opts[:null] = false if @opts[:required]
|
18
|
-
[:string, opts]
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
@@ -1,21 +0,0 @@
|
|
1
|
-
class Typero::FloatType < Typero::Type
|
2
|
-
opts :min, 'Minimum value'
|
3
|
-
opts :max, 'Maximun value'
|
4
|
-
|
5
|
-
def set
|
6
|
-
@value = @value.to_f
|
7
|
-
end
|
8
|
-
|
9
|
-
def validate
|
10
|
-
error_for(:min_length_error, @opts[:min], @value) if @opts[:min] && value < @opts[:min]
|
11
|
-
error_for(:max_length_error, @opts[:max], @value) if @opts[:max] && value > @opts[:max]
|
12
|
-
end
|
13
|
-
|
14
|
-
def db_field
|
15
|
-
opts = {}
|
16
|
-
opts[:null] = false if @opts[:required]
|
17
|
-
[:float, opts]
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
|
@@ -1,22 +0,0 @@
|
|
1
|
-
class Typero::HashType < Typero::Type
|
2
|
-
error :en, :not_hash_type_error, 'value is not hash type'
|
3
|
-
|
4
|
-
def default
|
5
|
-
{}
|
6
|
-
end
|
7
|
-
|
8
|
-
def set
|
9
|
-
@value = @value.to_h
|
10
|
-
end
|
11
|
-
|
12
|
-
def validate
|
13
|
-
error_for(:not_hash_type_error) unless @value.is_a?(Hash)
|
14
|
-
end
|
15
|
-
|
16
|
-
def db_field
|
17
|
-
[:jsonb, {
|
18
|
-
null: false
|
19
|
-
}]
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
@@ -1,21 +0,0 @@
|
|
1
|
-
class Typero::IntegerType < Typero::Type
|
2
|
-
opts :min, 'Minimum value'
|
3
|
-
opts :max, 'Maximun value'
|
4
|
-
|
5
|
-
def set
|
6
|
-
@value = @value.to_i
|
7
|
-
end
|
8
|
-
|
9
|
-
def validate
|
10
|
-
error_for(:min_value_error, @opts[:min], @value) if @opts[:min] && @value < @opts[:min]
|
11
|
-
error_for(:max_value_error, @opts[:max], @value) if @opts[:max] && @value > @opts[:max]
|
12
|
-
end
|
13
|
-
|
14
|
-
def db_field
|
15
|
-
opts = {}
|
16
|
-
opts[:null] = false if @opts[:required]
|
17
|
-
opts[:default] = @opts[:default]
|
18
|
-
[:integer, opts]
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
@@ -1,15 +0,0 @@
|
|
1
|
-
class Typero::LabelType < Typero::Type
|
2
|
-
def set
|
3
|
-
@value = @value.to_s.gsub(/\s+/,'-').gsub(/[^\w\-]/,'').gsub(/\-+/, '-')[0,30].downcase
|
4
|
-
end
|
5
|
-
|
6
|
-
def validate
|
7
|
-
error_for(:unallowed_characters_error) unless @value =~ /^[\w\-]+$/
|
8
|
-
end
|
9
|
-
|
10
|
-
def db_field
|
11
|
-
opts = {}
|
12
|
-
opts[:limit] = 30
|
13
|
-
[:string, opts]
|
14
|
-
end
|
15
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# for postgres - select st_asewkt(lon_lat) || st_astext(lon_lat)
|
2
|
-
# point = @object.class.xselect("ST_AsText(#{field}) as #{field}").where(id: @object.id).first[field.to_sym]
|
3
|
-
|
4
|
-
class Typero::PointType < Typero::Type
|
5
|
-
def set
|
6
|
-
if @value.present?
|
7
|
-
if @value.include?('/@')
|
8
|
-
point = @value.split('/@', 2).last.split(',')
|
9
|
-
@value = [point[0], point[1]].join(',')
|
10
|
-
end
|
11
|
-
|
12
|
-
if !@value.include?('POINT') && @value.include?(',')
|
13
|
-
point = @value.sub(/,\s*/, ' ')
|
14
|
-
@value = 'SRID=4326;POINT(%s)' % point
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def validate
|
20
|
-
if @value && @value.include?(',') && !@value =~ /^SRID=4326;POINT\(/
|
21
|
-
error_for(:unallowed_characters_error)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def db_field
|
26
|
-
[:geography, {}]
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
@@ -1,23 +0,0 @@
|
|
1
|
-
class Typero::StringType < Typero::Type
|
2
|
-
opts :min, 'Minimun string length'
|
3
|
-
opts :max, 'Maximun string length'
|
4
|
-
|
5
|
-
def set
|
6
|
-
@value = @value.to_s unless @value.is_a?(String)
|
7
|
-
@value = @value.downcase if @opts[:downcase]
|
8
|
-
end
|
9
|
-
|
10
|
-
def validate
|
11
|
-
error_for(:min_length_error, @opts[:min], @value.length) if @opts[:min] && @value.length < @opts[:min]
|
12
|
-
error_for(:max_length_error, @opts[:max], @value.length) if @opts[:max] && @value.length > @opts[:max]
|
13
|
-
end
|
14
|
-
|
15
|
-
def db_field
|
16
|
-
opts = {}
|
17
|
-
opts[:limit] = @opts[:max] || 255
|
18
|
-
opts[:null] = false if @opts[:required]
|
19
|
-
opts[:default] = @opts[:default]
|
20
|
-
[:string, opts]
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
@@ -1,18 +0,0 @@
|
|
1
|
-
class Typero::UrlType < Typero::Type
|
2
|
-
error :en, :url_not_starting_error, 'URL is not starting with http'
|
3
|
-
|
4
|
-
def set
|
5
|
-
@value = 'http://%s' % @value unless @value.include?('://')
|
6
|
-
end
|
7
|
-
|
8
|
-
def validate
|
9
|
-
error_for(:url_not_starting_error) unless @value =~ /^https?:\/\/./
|
10
|
-
end
|
11
|
-
|
12
|
-
def db_field
|
13
|
-
opts = {}
|
14
|
-
opts[:null] = false if @opts[:required]
|
15
|
-
[:string, opts]
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|