Module: Skit::JsonSchema
- Extended by:
- T::Sig
- Defined in:
- lib/skit/json_schema.rb,
lib/skit/json_schema/cli.rb,
lib/skit/json_schema/config.rb,
lib/skit/json_schema/types/const.rb,
lib/skit/json_schema/naming_utils.rb,
lib/skit/json_schema/code_generator.rb,
lib/skit/json_schema/class_name_path.rb,
lib/skit/json_schema/schema_analyzer.rb,
lib/skit/json_schema/definitions/module.rb,
lib/skit/json_schema/definitions/struct.rb,
lib/skit/json_schema/definitions/enum_type.rb,
lib/skit/json_schema/definitions/const_type.rb,
lib/skit/json_schema/definitions/property_type.rb,
lib/skit/json_schema/definitions/property_types.rb,
lib/skit/json_schema/definitions/struct_property.rb,
lib/skit/json_schema/definitions/hash_property_type.rb,
lib/skit/json_schema/definitions/array_property_type.rb,
lib/skit/json_schema/definitions/tuple_property_type.rb,
lib/skit/json_schema/definitions/union_property_type.rb
Defined Under Namespace
Modules: Definitions, NamingUtils, Types Classes: CLI, ClassNamePath, CodeGenerator, Config, SchemaAnalyzer
Class Method Summary collapse
Class Method Details
.generate(schema, options = {}) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/skit/json_schema.rb', line 55 def self.generate(schema, = {}) # Extract and validate options (support both symbol and string keys) class_name = T.cast([:class_name] || ["class_name"], T.nilable(String)) module_name = T.cast([:module_name] || ["module_name"], T.nilable(String)) typed_strictness = T.cast([:typed_strictness] || ["typed_strictness"], T.nilable(String)) || "strict" # Create config with smart defaults config = Config.new( class_name: class_name, module_name: module_name, typed_strictness: typed_strictness ) # Analyze schema analyzer = SchemaAnalyzer.new(schema, config) module_definition = analyzer.analyze # Generate code generator = CodeGenerator.new(module_definition, config) generator.generate end |