esse 0.0.2

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 (56) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rubocop.yml +128 -0
  4. data/CHANGELOG.md +0 -0
  5. data/Gemfile +7 -0
  6. data/Gemfile.lock +60 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +50 -0
  9. data/Rakefile +4 -0
  10. data/bin/console +22 -0
  11. data/bin/setup +8 -0
  12. data/esse.gemspec +39 -0
  13. data/exec/esse +9 -0
  14. data/lib/esse.rb +7 -0
  15. data/lib/esse/backend/index.rb +38 -0
  16. data/lib/esse/backend/index/aliases.rb +69 -0
  17. data/lib/esse/backend/index/create.rb +56 -0
  18. data/lib/esse/backend/index/delete.rb +38 -0
  19. data/lib/esse/backend/index/documents.rb +23 -0
  20. data/lib/esse/backend/index/existance.rb +23 -0
  21. data/lib/esse/backend/index/update.rb +19 -0
  22. data/lib/esse/backend/index_type.rb +32 -0
  23. data/lib/esse/backend/index_type/documents.rb +203 -0
  24. data/lib/esse/cli.rb +29 -0
  25. data/lib/esse/cli/base.rb +11 -0
  26. data/lib/esse/cli/generate.rb +51 -0
  27. data/lib/esse/cli/index.rb +14 -0
  28. data/lib/esse/cli/templates/index.rb.erb +59 -0
  29. data/lib/esse/cli/templates/mappings.json +6 -0
  30. data/lib/esse/cli/templates/serializer.rb.erb +14 -0
  31. data/lib/esse/cluster.rb +58 -0
  32. data/lib/esse/config.rb +73 -0
  33. data/lib/esse/core.rb +89 -0
  34. data/lib/esse/index.rb +21 -0
  35. data/lib/esse/index/actions.rb +10 -0
  36. data/lib/esse/index/backend.rb +13 -0
  37. data/lib/esse/index/base.rb +118 -0
  38. data/lib/esse/index/descendants.rb +17 -0
  39. data/lib/esse/index/inheritance.rb +18 -0
  40. data/lib/esse/index/mappings.rb +47 -0
  41. data/lib/esse/index/naming.rb +64 -0
  42. data/lib/esse/index/settings.rb +48 -0
  43. data/lib/esse/index/type.rb +31 -0
  44. data/lib/esse/index_mapping.rb +38 -0
  45. data/lib/esse/index_setting.rb +41 -0
  46. data/lib/esse/index_type.rb +10 -0
  47. data/lib/esse/index_type/actions.rb +11 -0
  48. data/lib/esse/index_type/backend.rb +13 -0
  49. data/lib/esse/index_type/mappings.rb +42 -0
  50. data/lib/esse/index_type/serializer.rb +87 -0
  51. data/lib/esse/primitives.rb +3 -0
  52. data/lib/esse/primitives/hstring.rb +85 -0
  53. data/lib/esse/template_loader.rb +46 -0
  54. data/lib/esse/types/mapping.rb +0 -0
  55. data/lib/esse/version.rb +5 -0
  56. metadata +215 -0
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'primitives/hstring'
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+
5
+ module Esse
6
+ # The idea here is to add useful methods to the ruby core objects without
7
+ # monkey patching.
8
+ # And on this state and not thinking about to add ActiveSupport dependency
9
+ class Hstring
10
+ extend Forwardable
11
+
12
+ def_delegators :@value, :==, :eq, :to_s, :inspect, :sub, :capitalize
13
+ attr_reader :value
14
+
15
+ def self.def_conventional(bang_method, conv_method = nil)
16
+ conv_method ||= bang_method.to_s.sub(/[!?]*$/, '')
17
+ if public_instance_methods.include?(conv_method)
18
+ msg = format(
19
+ 'Equivalent %<conv>p already defined for the bang method %<bang>p',
20
+ conv: conv_method.to_s,
21
+ bang: bang_method.to_s,
22
+ )
23
+ raise(SyntaxError, msg)
24
+ end
25
+
26
+ unless public_instance_methods.include?(bang_method)
27
+ msg = format(
28
+ 'Undefined method %<bang>p for %<klass>p',
29
+ bang: bang_method.to_s,
30
+ klass: self,
31
+ )
32
+ raise(SyntaxError, msg)
33
+ end
34
+
35
+ define_method(conv_method) do |*args|
36
+ self.class.new(self).public_send(bang_method, *args)
37
+ end
38
+ end
39
+
40
+ def initialize(value)
41
+ @value = value.to_s
42
+ end
43
+
44
+ def camelize!
45
+ @value = @value.split(/(?=[_A-Z])/).map { |str| str.tr('_', '').capitalize }.join
46
+ self
47
+ end
48
+ def_conventional :camelize!, :camelize
49
+
50
+ def demodulize!
51
+ @value = @value.split('::').last
52
+ self
53
+ end
54
+ def_conventional :demodulize!
55
+
56
+ def modulize!
57
+ @value = @value.split(%r{\:\:|\\|/}).map { |part| self.class.new(part).camelize.to_s }.join('::')
58
+ self
59
+ end
60
+ def_conventional :modulize!
61
+
62
+ def underscore!
63
+ @value = @value
64
+ .sub(/^\:\:/, '')
65
+ .gsub('::', '/')
66
+ .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
67
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
68
+ .tr('-', '_')
69
+ .gsub(/\s/, '_')
70
+ .gsub(/__+/, '_')
71
+ .downcase
72
+
73
+ self
74
+ end
75
+ def_conventional :underscore!
76
+
77
+ def presence!
78
+ return @value = nil if @value == ''
79
+ return @value = nil unless @value
80
+
81
+ @value
82
+ end
83
+ def_conventional :presence!
84
+ end
85
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pathname'
4
+ require 'yaml'
5
+ require 'json'
6
+
7
+ module Esse
8
+ class TemplateLoader
9
+ EXT_PARSER = {
10
+ 'json' => ->(file) { MultiJson.load(File.read(file)) },
11
+ 'yaml' => ->(file) { YAML.load_file(file) },
12
+ 'yml' => ->(file) { YAML.load_file(file) },
13
+ }.freeze
14
+
15
+ def initialize(directories, extensions: EXT_PARSER.keys)
16
+ @directories = Array(directories).map do |dir|
17
+ dir.is_a?(Pathname) ? dir : Pathname.new(dir)
18
+ end
19
+ @extensions = extensions
20
+ end
21
+
22
+ # Look for files into the @directories using some file pattern.
23
+ def read(*patterns)
24
+ path = nil
25
+ @directories.each do |dir|
26
+ patterns.find do |pattern|
27
+ path = Dir[dir.join("#{pattern}.{#{@extensions.join(',')}}")].first
28
+ break if path
29
+ end
30
+ break if path
31
+ end
32
+ load(path) if path
33
+ end
34
+
35
+ protected
36
+
37
+ def load(file)
38
+ parser = EXT_PARSER[File.extname(file).sub(/^\./, '')]
39
+ return unless parser
40
+
41
+ parser.call(file)
42
+ rescue MultiJson::ParseError
43
+ nil
44
+ end
45
+ end
46
+ end
File without changes
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Esse
4
+ VERSION = '0.0.2'
5
+ end
metadata ADDED
@@ -0,0 +1,215 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: esse
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Marcos G. Zimmermann
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-05-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: elasticsearch
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: multi_json
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: thor
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0.19'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0.19'
55
+ - !ruby/object:Gem::Dependency
56
+ name: dotenv
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: awesome_print
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '10.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '10.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.0'
125
+ description: All the elegance of ruby with the elasticsearch flexibility. This gem
126
+ is a pretty simple but excential helpers to deal with mapping, indexing, serialization
127
+ and search.
128
+ email:
129
+ - mgzmaster@gmail.com
130
+ executables: []
131
+ extensions: []
132
+ extra_rdoc_files: []
133
+ files:
134
+ - ".gitignore"
135
+ - ".rubocop.yml"
136
+ - CHANGELOG.md
137
+ - Gemfile
138
+ - Gemfile.lock
139
+ - LICENSE.txt
140
+ - README.md
141
+ - Rakefile
142
+ - bin/console
143
+ - bin/setup
144
+ - esse.gemspec
145
+ - exec/esse
146
+ - lib/esse.rb
147
+ - lib/esse/backend/index.rb
148
+ - lib/esse/backend/index/aliases.rb
149
+ - lib/esse/backend/index/create.rb
150
+ - lib/esse/backend/index/delete.rb
151
+ - lib/esse/backend/index/documents.rb
152
+ - lib/esse/backend/index/existance.rb
153
+ - lib/esse/backend/index/update.rb
154
+ - lib/esse/backend/index_type.rb
155
+ - lib/esse/backend/index_type/documents.rb
156
+ - lib/esse/cli.rb
157
+ - lib/esse/cli/base.rb
158
+ - lib/esse/cli/generate.rb
159
+ - lib/esse/cli/index.rb
160
+ - lib/esse/cli/templates/index.rb.erb
161
+ - lib/esse/cli/templates/mappings.json
162
+ - lib/esse/cli/templates/serializer.rb.erb
163
+ - lib/esse/cluster.rb
164
+ - lib/esse/config.rb
165
+ - lib/esse/core.rb
166
+ - lib/esse/index.rb
167
+ - lib/esse/index/actions.rb
168
+ - lib/esse/index/backend.rb
169
+ - lib/esse/index/base.rb
170
+ - lib/esse/index/descendants.rb
171
+ - lib/esse/index/inheritance.rb
172
+ - lib/esse/index/mappings.rb
173
+ - lib/esse/index/naming.rb
174
+ - lib/esse/index/settings.rb
175
+ - lib/esse/index/type.rb
176
+ - lib/esse/index_mapping.rb
177
+ - lib/esse/index_setting.rb
178
+ - lib/esse/index_type.rb
179
+ - lib/esse/index_type/actions.rb
180
+ - lib/esse/index_type/backend.rb
181
+ - lib/esse/index_type/mappings.rb
182
+ - lib/esse/index_type/serializer.rb
183
+ - lib/esse/primitives.rb
184
+ - lib/esse/primitives/hstring.rb
185
+ - lib/esse/template_loader.rb
186
+ - lib/esse/types/mapping.rb
187
+ - lib/esse/version.rb
188
+ homepage: https://github.com/marcosgz/esse
189
+ licenses:
190
+ - MIT
191
+ metadata:
192
+ homepage_uri: https://github.com/marcosgz/esse
193
+ source_code_uri: https://github.com/marcosgz/esse
194
+ changelog_uri: https://github.com/marcosgz/esse/blob/master/CHANGELOG.md
195
+ post_install_message:
196
+ rdoc_options: []
197
+ require_paths:
198
+ - lib
199
+ required_ruby_version: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ version: 2.3.0
204
+ required_rubygems_version: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ requirements: []
210
+ rubygems_version: 3.1.2
211
+ signing_key:
212
+ specification_version: 4
213
+ summary: Pure Ruby toolkit based on official elasticsearch-ruby library. (No! It isn't
214
+ a new DSL)
215
+ test_files: []