Module: GrapeOAS::ApiModelBuilders::Concerns::OasUtilities
- Included in:
- Operation, Request, RequestParamsSupport::ParamSchemaBuilder, Response, ResponseParsers::DocumentationResponsesParser, Introspectors::EntityIntrospector, Introspectors::EntityIntrospectorSupport::ExposureProcessor, Introspectors::EntityIntrospectorSupport::TypeSchemaResolver
- Defined in:
- lib/grape_oas/api_model_builders/concerns/oas_utilities.rb
Overview
Shared utility methods for OpenAPI schema building.
Constant Summary collapse
- VALID_CONSTANT_PATTERN =
Regex pattern for valid Ruby constant names (used for entity resolution)
/\A[A-Z][A-Za-z0-9_]*(::[A-Z][A-Za-z0-9_]*)*\z/
Class Method Summary collapse
-
.extract_extensions(hash) ⇒ Hash?
Extracts OpenAPI extension fields (x-* prefixed keys) from a hash.
-
.pluralize(key) ⇒ String
Simple pluralization (basic English rules).
-
.underscore(str) ⇒ String
Converts a CamelCase string to snake_case.
-
.valid_constant_name?(str) ⇒ Boolean
Checks if a string matches the valid Ruby constant pattern.
Instance Method Summary collapse
-
#extract_extensions(hash) ⇒ Object
Instance method version for including in classes.
-
#pluralize(key) ⇒ Object
Instance method version.
-
#underscore(str) ⇒ Object
Instance method version.
-
#valid_constant_name?(str) ⇒ Boolean
Instance method version.
Class Method Details
.extract_extensions(hash) ⇒ Hash?
Extracts OpenAPI extension fields (x-* prefixed keys) from a hash.
15 16 17 18 19 20 |
# File 'lib/grape_oas/api_model_builders/concerns/oas_utilities.rb', line 15 def self.extract_extensions(hash) return nil unless hash.is_a?(Hash) ext = hash.select { |k, _| k.to_s.start_with?("x-") } ext.empty? ? nil : ext end |
.pluralize(key) ⇒ String
Simple pluralization (basic English rules).
48 49 50 51 52 53 |
# File 'lib/grape_oas/api_model_builders/concerns/oas_utilities.rb', line 48 def self.pluralize(key) return "#{key}es" if key.end_with?("s", "x", "z", "ch", "sh") return "#{key[0..-2]}ies" if key.end_with?("y") && !%w[a e i o u].include?(key[-2]) "#{key}s" end |
.underscore(str) ⇒ String
Converts a CamelCase string to snake_case.
31 32 33 34 35 36 37 |
# File 'lib/grape_oas/api_model_builders/concerns/oas_utilities.rb', line 31 def self.underscore(str) str.gsub("::", "/") .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') .gsub(/([a-z\d])([A-Z])/, '\1_\2') .tr("-", "_") .downcase end |
.valid_constant_name?(str) ⇒ Boolean
Checks if a string matches the valid Ruby constant pattern.
64 65 66 |
# File 'lib/grape_oas/api_model_builders/concerns/oas_utilities.rb', line 64 def self.valid_constant_name?(str) str.is_a?(String) && str.match?(VALID_CONSTANT_PATTERN) end |
Instance Method Details
#extract_extensions(hash) ⇒ Object
Instance method version for including in classes
23 24 25 |
# File 'lib/grape_oas/api_model_builders/concerns/oas_utilities.rb', line 23 def extract_extensions(hash) OasUtilities.extract_extensions(hash) end |
#pluralize(key) ⇒ Object
Instance method version
56 57 58 |
# File 'lib/grape_oas/api_model_builders/concerns/oas_utilities.rb', line 56 def pluralize(key) OasUtilities.pluralize(key) end |
#underscore(str) ⇒ Object
Instance method version
40 41 42 |
# File 'lib/grape_oas/api_model_builders/concerns/oas_utilities.rb', line 40 def underscore(str) OasUtilities.underscore(str) end |
#valid_constant_name?(str) ⇒ Boolean
Instance method version
69 70 71 |
# File 'lib/grape_oas/api_model_builders/concerns/oas_utilities.rb', line 69 def valid_constant_name?(str) OasUtilities.valid_constant_name?(str) end |