typero 0.8.1 → 0.9.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 +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
|
-
|