easy_talk 0.1.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 +7 -0
  2. data/.rubocop.yml +14 -0
  3. data/CHANGELOG.md +0 -0
  4. data/CONSTRAINTS.md +70 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +186 -0
  7. data/Rakefile +12 -0
  8. data/easy_talk.gemspec +38 -0
  9. data/lib/easy_talk/builder.rb +51 -0
  10. data/lib/easy_talk/builders/all_of_builder.rb +11 -0
  11. data/lib/easy_talk/builders/any_of_builder.rb +11 -0
  12. data/lib/easy_talk/builders/base_builder.rb +58 -0
  13. data/lib/easy_talk/builders/boolean_builder.rb +24 -0
  14. data/lib/easy_talk/builders/composition_builder.rb +64 -0
  15. data/lib/easy_talk/builders/date_builder.rb +18 -0
  16. data/lib/easy_talk/builders/datetime_builder.rb +18 -0
  17. data/lib/easy_talk/builders/integer_builder.rb +28 -0
  18. data/lib/easy_talk/builders/null_builder.rb +16 -0
  19. data/lib/easy_talk/builders/number_builder.rb +27 -0
  20. data/lib/easy_talk/builders/object_builder.rb +72 -0
  21. data/lib/easy_talk/builders/one_of_builder.rb +11 -0
  22. data/lib/easy_talk/builders/ref_array_builder.rb +25 -0
  23. data/lib/easy_talk/builders/string_builder.rb +27 -0
  24. data/lib/easy_talk/builders/time_builder.rb +16 -0
  25. data/lib/easy_talk/builders/typed_array_builder.rb +51 -0
  26. data/lib/easy_talk/builders/union_builder.rb +35 -0
  27. data/lib/easy_talk/keywords.rb +37 -0
  28. data/lib/easy_talk/model.rb +105 -0
  29. data/lib/easy_talk/property.rb +80 -0
  30. data/lib/easy_talk/schema_definition.rb +42 -0
  31. data/lib/easy_talk/sorbet_extension.rb +15 -0
  32. data/lib/easy_talk/types/all_of.rb +32 -0
  33. data/lib/easy_talk/types/any_of.rb +39 -0
  34. data/lib/easy_talk/types/base_composer.rb +23 -0
  35. data/lib/easy_talk/types/one_of.rb +31 -0
  36. data/lib/easy_talk/version.rb +5 -0
  37. data/lib/easy_talk.rb +28 -0
  38. metadata +139 -0
data/lib/easy_talk.rb ADDED
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The EasyTalk module is the main namespace for the gem.
4
+ module EasyTalk
5
+ class Error < StandardError; end
6
+ require 'pry-byebug'
7
+ require 'sorbet-runtime'
8
+ require 'easy_talk/sorbet_extension'
9
+ require 'easy_talk/types/any_of'
10
+ require 'easy_talk/types/all_of'
11
+ require 'easy_talk/types/one_of'
12
+ require 'easy_talk/model'
13
+ require 'easy_talk/builder'
14
+ require 'easy_talk/property'
15
+ require 'easy_talk/schema_definition'
16
+ require 'easy_talk/version'
17
+
18
+ class UnsupportedTypeError < ArgumentError; end
19
+ class UnsupportedConstraintError < ArgumentError; end
20
+
21
+ def self.schemas
22
+ @schemas ||= {}
23
+ end
24
+
25
+ def self.add_schema(ref, schema)
26
+ schemas[ref] = schema
27
+ end
28
+ end
metadata ADDED
@@ -0,0 +1,139 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: easy_talk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Sergio Bayona
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-04-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sorbet-runtime
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry-byebug
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 3.10.1
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 3.10.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '13.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '13.1'
69
+ description: Generate json-schema from plain Ruby classes.
70
+ email:
71
+ - bayona.sergio@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".rubocop.yml"
77
+ - CHANGELOG.md
78
+ - CONSTRAINTS.md
79
+ - LICENSE.txt
80
+ - README.md
81
+ - Rakefile
82
+ - easy_talk.gemspec
83
+ - lib/easy_talk.rb
84
+ - lib/easy_talk/builder.rb
85
+ - lib/easy_talk/builders/all_of_builder.rb
86
+ - lib/easy_talk/builders/any_of_builder.rb
87
+ - lib/easy_talk/builders/base_builder.rb
88
+ - lib/easy_talk/builders/boolean_builder.rb
89
+ - lib/easy_talk/builders/composition_builder.rb
90
+ - lib/easy_talk/builders/date_builder.rb
91
+ - lib/easy_talk/builders/datetime_builder.rb
92
+ - lib/easy_talk/builders/integer_builder.rb
93
+ - lib/easy_talk/builders/null_builder.rb
94
+ - lib/easy_talk/builders/number_builder.rb
95
+ - lib/easy_talk/builders/object_builder.rb
96
+ - lib/easy_talk/builders/one_of_builder.rb
97
+ - lib/easy_talk/builders/ref_array_builder.rb
98
+ - lib/easy_talk/builders/string_builder.rb
99
+ - lib/easy_talk/builders/time_builder.rb
100
+ - lib/easy_talk/builders/typed_array_builder.rb
101
+ - lib/easy_talk/builders/union_builder.rb
102
+ - lib/easy_talk/keywords.rb
103
+ - lib/easy_talk/model.rb
104
+ - lib/easy_talk/property.rb
105
+ - lib/easy_talk/schema_definition.rb
106
+ - lib/easy_talk/sorbet_extension.rb
107
+ - lib/easy_talk/types/all_of.rb
108
+ - lib/easy_talk/types/any_of.rb
109
+ - lib/easy_talk/types/base_composer.rb
110
+ - lib/easy_talk/types/one_of.rb
111
+ - lib/easy_talk/version.rb
112
+ homepage: https://github.com/sergiobayona/easy_talk
113
+ licenses:
114
+ - MIT
115
+ metadata:
116
+ allowed_push_host: https://rubygems.org
117
+ homepage_uri: https://github.com/sergiobayona/easy_talk
118
+ source_code_uri: https://github.com/sergiobayona/easy_talk
119
+ changelog_uri: https://github.com/sergiobayona/easy_talk/blob/main/CHANGELOG.md
120
+ post_install_message:
121
+ rdoc_options: []
122
+ require_paths:
123
+ - lib
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: '3.2'
129
+ required_rubygems_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ requirements: []
135
+ rubygems_version: 3.5.3
136
+ signing_key:
137
+ specification_version: 4
138
+ summary: Generate json-schema from Ruby classes.
139
+ test_files: []