to_hash

in opensearch-dsl/lib/opensearch/dsl/search/base_component.rb [168:188]


          def to_hash(options={})
            case
              
              when @block
                @hash = (@args && ! @args.empty?) ? { name => { @args => {} } } : { name => {} }
                call
                @hash[self.name.to_sym].update @options unless @options.empty?
                @hash
              
              when @hash[self.name.to_sym] && ! @args.is_a?(Hash) && @hash[self.name.to_sym][@args]
                @hash[self.name.to_sym].update @options unless @options.empty?
                @hash
              
              when @hash[self.name.to_sym] && @args.respond_to?(:to_hash) && ! @args.empty?
                { name => @args.to_hash }
              
              else
                @hash
            end
          end