Class: ElasticGraph::SchemaDefinition::SchemaElements::EnumValueNamer
- Inherits:
-
Object
- Object
- ElasticGraph::SchemaDefinition::SchemaElements::EnumValueNamer
- Defined in:
- lib/elastic_graph/schema_definition/schema_elements/enum_value_namer.rb
Overview
Abstraction for generating names for GraphQL enum values. This allows users to customize the naming of our built-in enum values.
Instance Method Summary collapse
-
#initialize(overrides_by_type_name = {}) ⇒ EnumValueNamer
constructor
A new instance of EnumValueNamer.
-
#name_for(type_name, value_name) ⇒ Object
Returns the name that should be used for the given ‘type_name` and `value_name`.
-
#unused_overrides ⇒ Object
Returns the overrides that did not wind up being used.
-
#used_value_names_by_type_name ⇒ Object
Full set of enum type and value names that were used.
Constructor Details
#initialize(overrides_by_type_name = {}) ⇒ EnumValueNamer
Returns a new instance of EnumValueNamer.
21 22 23 24 25 26 27 28 |
# File 'lib/elastic_graph/schema_definition/schema_elements/enum_value_namer.rb', line 21 def initialize(overrides_by_type_name = {}) overrides_by_type_name = Support::HashUtil .stringify_keys(overrides_by_type_name) # : ::Hash[::String, ::Hash[::String, ::String]] @used_value_names_by_type_name = ::Hash.new { |h, k| h[k] = [] } validate_overrides(overrides_by_type_name) super(overrides_by_type_name: overrides_by_type_name) end |
Instance Method Details
#name_for(type_name, value_name) ⇒ Object
Returns the name that should be used for the given ‘type_name` and `value_name`.
31 32 33 34 |
# File 'lib/elastic_graph/schema_definition/schema_elements/enum_value_namer.rb', line 31 def name_for(type_name, value_name) @used_value_names_by_type_name[type_name] << value_name overrides_by_type_name.dig(type_name, value_name) || value_name end |
#unused_overrides ⇒ Object
Returns the overrides that did not wind up being used. Unused overrides usually happen because of a typo, and can be safely removed.
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/elastic_graph/schema_definition/schema_elements/enum_value_namer.rb', line 38 def unused_overrides overrides_by_type_name.filter_map do |type_name, overrides| if @used_value_names_by_type_name.key?(type_name) unused_overrides = overrides.except(*@used_value_names_by_type_name.fetch(type_name)) [type_name, unused_overrides] unless unused_overrides.empty? else [type_name, overrides] end end.to_h end |
#used_value_names_by_type_name ⇒ Object
Full set of enum type and value names that were used. Can be used to provide suggestions for when there are ‘unused_overrides`.
51 52 53 |
# File 'lib/elastic_graph/schema_definition/schema_elements/enum_value_namer.rb', line 51 def used_value_names_by_type_name @used_value_names_by_type_name.dup end |