Class: Generator::DataKiosk
- Inherits:
-
Object
- Object
- Generator::DataKiosk
- Includes:
- FileWriter, SchemaGenerator, SchemaHelpers
- Defined in:
- lib/generator/data_kiosk.rb
Overview
Generates Ruby type classes for Data Kiosk GraphQL schemas
Constant Summary
Constants included from Formatter
Instance Attribute Summary collapse
-
#file_path ⇒ Object
readonly
Returns the value of attribute file_path.
-
#graphql_schema ⇒ Object
readonly
Returns the value of attribute graphql_schema.
Class Method Summary collapse
-
.schema_files ⇒ Object
Override to filter .graphql files.
- .schema_type ⇒ Object
Instance Method Summary collapse
- #class_name ⇒ Object
- #generate ⇒ Object
-
#initialize(file_path) ⇒ DataKiosk
constructor
A new instance of DataKiosk.
-
#schema_name ⇒ Object
(also: #data_kiosk_name)
Extract schema name from filename "analytics_salesAndTraffic_2024_04_24.graphql" => "SalesAndTraffic20240424".
Methods included from SchemaGenerator
#generate_main_file!, included, #needs_money?, #sorted_properties
Methods included from SchemaHelpers
#api_name_for_type_resolver, #attribute_name_for, #format_property_comment, #generate_rbs!, #generic_placeholder?, #needs_money?, #nested_type_files, #ruby_type_for, #type_resolver
Methods included from Formatter
#convert_doc_links_to_full_url, #convert_html_links_to_yard, #format_method_definition, #split_long_comment_line
Methods included from FileWriter
Constructor Details
#initialize(file_path) ⇒ DataKiosk
Returns a new instance of DataKiosk.
39 40 41 42 |
# File 'lib/generator/data_kiosk.rb', line 39 def initialize(file_path) @file_path = file_path @graphql_schema = parse_graphql_schema(File.read(file_path)) end |
Instance Attribute Details
#file_path ⇒ Object (readonly)
Returns the value of attribute file_path.
25 26 27 |
# File 'lib/generator/data_kiosk.rb', line 25 def file_path @file_path end |
#graphql_schema ⇒ Object (readonly)
Returns the value of attribute graphql_schema.
25 26 27 |
# File 'lib/generator/data_kiosk.rb', line 25 def graphql_schema @graphql_schema end |
Class Method Details
.schema_files ⇒ Object
Override to filter .graphql files
33 34 35 36 |
# File 'lib/generator/data_kiosk.rb', line 33 def schema_files pattern = File.join(Config::BASE_PATH, "selling-partner-api-models/schemas/data-kiosk/*.graphql") Dir.glob(pattern) end |
.schema_type ⇒ Object
28 29 30 |
# File 'lib/generator/data_kiosk.rb', line 28 def schema_type "data_kiosk" end |
Instance Method Details
#class_name ⇒ Object
79 80 81 |
# File 'lib/generator/data_kiosk.rb', line 79 def class_name schema_name.underscore.camelize end |
#generate ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/generator/data_kiosk.rb', line 44 def generate written_files = [] all_types = [] # Generate nested types first nested_results = generate_nested_types! written_files.concat(nested_results[:files]) all_types.concat(nested_results[:types]) # Generate main module file written_files << generate_main_file! # Generate JSON introspection schema (don't format JSON files) generate_introspection_schema! # Reload and generate RBS IntrospectionLoader.reload written_files << generate_rbs!(all_types) # Format all files format_files(written_files) Generator.logger.info("Generated data_kiosk #{schema_name.underscore}") end |
#schema_name ⇒ Object Also known as: data_kiosk_name
Extract schema name from filename "analytics_salesAndTraffic_2024_04_24.graphql" => "SalesAndTraffic20240424"
71 72 73 74 75 76 77 |
# File 'lib/generator/data_kiosk.rb', line 71 def schema_name base_name = File.basename(file_path, ".graphql") # Remove "analytics_" prefix name = base_name.sub(/^analytics_/, "") # Convert to PascalCase name.split("_").map { |part| part.split(/(?=[A-Z])/).map(&:capitalize).join }.join end |