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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.version +1 -1
  3. data/lib/typero.rb +2 -1
  4. data/lib/typero/exporter.rb +93 -0
  5. data/lib/typero/params.rb +24 -9
  6. data/lib/typero/schema.rb +132 -0
  7. data/lib/typero/type/type.rb +37 -9
  8. data/lib/typero/type/types/boolean_type.rb +26 -0
  9. data/lib/typero/type/types/currency_type.rb +21 -0
  10. data/lib/typero/type/types/date_type.rb +32 -0
  11. data/lib/typero/type/types/datetime_type.rb +14 -0
  12. data/lib/typero/type/types/email_type.rb +20 -0
  13. data/lib/typero/type/types/float_type.rb +24 -0
  14. data/lib/typero/type/types/hash_type.rb +25 -0
  15. data/lib/typero/type/types/{image.rb → image_type.rb} +4 -10
  16. data/lib/typero/type/types/integer_type.rb +16 -0
  17. data/lib/typero/type/types/label_type.rb +20 -0
  18. data/lib/typero/type/types/model_type.rb +21 -0
  19. data/lib/typero/type/types/{oib.rb → oib_type.rb} +7 -10
  20. data/lib/typero/type/types/point_type.rb +25 -0
  21. data/lib/typero/type/types/string_type.rb +20 -0
  22. data/lib/typero/type/types/{text.rb → text_type.rb} +3 -5
  23. data/lib/typero/type/types/url_type.rb +13 -0
  24. data/lib/typero/typero.rb +50 -137
  25. metadata +20 -18
  26. data/lib/typero/func.rb +0 -14
  27. data/lib/typero/type/types/boolean.rb +0 -16
  28. data/lib/typero/type/types/currency.rb +0 -19
  29. data/lib/typero/type/types/date.rb +0 -10
  30. data/lib/typero/type/types/datetime.rb +0 -10
  31. data/lib/typero/type/types/email.rb +0 -21
  32. data/lib/typero/type/types/float.rb +0 -21
  33. data/lib/typero/type/types/hash.rb +0 -22
  34. data/lib/typero/type/types/integer.rb +0 -21
  35. data/lib/typero/type/types/label.rb +0 -15
  36. data/lib/typero/type/types/point.rb +0 -29
  37. data/lib/typero/type/types/string.rb +0 -23
  38. 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.8.1
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-05-25 00:00:00.000000000 Z
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/func.rb"
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/boolean.rb"
41
- - "./lib/typero/type/types/currency.rb"
42
- - "./lib/typero/type/types/date.rb"
43
- - "./lib/typero/type/types/datetime.rb"
44
- - "./lib/typero/type/types/email.rb"
45
- - "./lib/typero/type/types/float.rb"
46
- - "./lib/typero/type/types/hash.rb"
47
- - "./lib/typero/type/types/image.rb"
48
- - "./lib/typero/type/types/integer.rb"
49
- - "./lib/typero/type/types/label.rb"
50
- - "./lib/typero/type/types/oib.rb"
51
- - "./lib/typero/type/types/point.rb"
52
- - "./lib/typero/type/types/string.rb"
53
- - "./lib/typero/type/types/text.rb"
54
- - "./lib/typero/type/types/url.rb"
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:
@@ -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,10 +0,0 @@
1
- class Typero::DateType < Typero::Type
2
- def set
3
- @value = @value.to_s.downcase.gsub(/[^\d\-\.\s]/, '')
4
- end
5
-
6
- def db_field
7
- [:date, {}]
8
- end
9
- end
10
-
@@ -1,10 +0,0 @@
1
- class Typero::DatetimeType < Typero::Type
2
- def set
3
- @value = @value.to_s.downcase.gsub(/[^\d\-\.\s\:]/, '')
4
- end
5
-
6
- def db_field
7
- [:datetime, {}]
8
- end
9
- end
10
-
@@ -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
-