typero 0.8.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
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
-