Class: Noiseless::MappingDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/noiseless/mapping.rb

Overview

DSL for building mapping definitions

Instance Method Summary collapse

Constructor Details

#initializeMappingDefinition

Returns a new instance of MappingDefinition.



109
110
111
# File 'lib/noiseless/mapping.rb', line 109

def initialize
  @properties = {}
end

Instance Method Details

#boolean(name) ⇒ Object



141
142
143
# File 'lib/noiseless/mapping.rb', line 141

def boolean(name, **)
  field(name, :boolean, **)
end

#date(name) ⇒ Object



145
146
147
# File 'lib/noiseless/mapping.rb', line 145

def date(name, **)
  field(name, :date, **)
end

#double(name) ⇒ Object



137
138
139
# File 'lib/noiseless/mapping.rb', line 137

def double(name, **)
  field(name, :double, **)
end

#field(name, type, **options) ⇒ Object



113
114
115
# File 'lib/noiseless/mapping.rb', line 113

def field(name, type, **options)
  @properties[name.to_s] = { type: type.to_s }.merge(options)
end

#float(name) ⇒ Object



133
134
135
# File 'lib/noiseless/mapping.rb', line 133

def float(name, **)
  field(name, :float, **)
end

#geo_point(name) ⇒ Object



149
150
151
# File 'lib/noiseless/mapping.rb', line 149

def geo_point(name, **)
  field(name, :geo_point, **)
end

#integer(name) ⇒ Object



125
126
127
# File 'lib/noiseless/mapping.rb', line 125

def integer(name, **)
  field(name, :integer, **)
end

#keyword(name) ⇒ Object



117
118
119
# File 'lib/noiseless/mapping.rb', line 117

def keyword(name, **)
  field(name, :keyword, **)
end

#long(name) ⇒ Object



129
130
131
# File 'lib/noiseless/mapping.rb', line 129

def long(name, **)
  field(name, :long, **)
end

#nested(name) ⇒ Object



163
164
165
166
167
168
169
170
171
# File 'lib/noiseless/mapping.rb', line 163

def nested(name, **, &)
  if block_given?
    nested_mapping = MappingDefinition.new
    nested_mapping.instance_eval(&)
    field(name, :nested, properties: nested_mapping.to_hash, **)
  else
    field(name, :nested, **)
  end
end

#object(name) ⇒ Object



153
154
155
156
157
158
159
160
161
# File 'lib/noiseless/mapping.rb', line 153

def object(name, **, &)
  if block_given?
    nested_mapping = MappingDefinition.new
    nested_mapping.instance_eval(&)
    field(name, :object, properties: nested_mapping.to_hash, **)
  else
    field(name, :object, **)
  end
end

#text(name) ⇒ Object



121
122
123
# File 'lib/noiseless/mapping.rb', line 121

def text(name, **)
  field(name, :text, **)
end

#to_hashObject



173
174
175
# File 'lib/noiseless/mapping.rb', line 173

def to_hash
  @properties
end