Module: KotlinCodeGenerator
- Defined in:
- lib/arkana/kotlin_code_generator.rb
Overview
Responsible for generating Kotlin source and test files.
Class Method Summary collapse
-
.generate(template_arguments:, config:) ⇒ Object
Generates Kotlin code and test files for the given template arguments.
- .render(template, template_arguments, destination_file) ⇒ Object
- .set_up_kotlin_classes(sources_dir, tests_dir, template_arguments, config) ⇒ Object
- .set_up_kotlin_interfaces(path, template_arguments, config) ⇒ Object
- .set_up_kotlin_module(path, template_arguments) ⇒ Object
Class Method Details
.generate(template_arguments:, config:) ⇒ Object
Generates Kotlin code and test files for the given template arguments.
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/arkana/kotlin_code_generator.rb', line 10 def self.generate(template_arguments:, config:) kotlin_module_dir = config.result_path kotlin_sources_dir = File.join(kotlin_module_dir, "src", "main", config.kotlin_sources_path, config.kotlin_package_name.split(".")) kotlin_tests_dir = File.join(kotlin_module_dir, "src", "test", config.kotlin_sources_path, config.kotlin_package_name.split(".")) if config.should_generate_gradle_build_file set_up_kotlin_module(kotlin_module_dir, template_arguments) end set_up_kotlin_interfaces(kotlin_sources_dir, template_arguments, config) set_up_kotlin_classes(kotlin_sources_dir, kotlin_tests_dir, template_arguments, config) end |
.render(template, template_arguments, destination_file) ⇒ Object
51 52 53 54 55 |
# File 'lib/arkana/kotlin_code_generator.rb', line 51 def self.render(template, template_arguments, destination_file) renderer = ERB.new(template, trim_mode: ">") # Don't automatically add newlines at the end of each template tag result = renderer.result(template_arguments.get_binding) File.write(destination_file, result) end |
.set_up_kotlin_classes(sources_dir, tests_dir, template_arguments, config) ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/arkana/kotlin_code_generator.rb', line 41 def self.set_up_kotlin_classes(sources_dir, tests_dir, template_arguments, config) dirname = File.dirname(__FILE__) source_template = File.read("#{dirname}/templates/kotlin/arkana.kt.erb") tests_template = File.read("#{dirname}/templates/kotlin/arkana_tests.kt.erb") FileUtils.mkdir_p(sources_dir) FileUtils.mkdir_p(tests_dir) if config.should_generate_unit_tests render(source_template, template_arguments, File.join(sources_dir, "#{config.namespace}.kt")) render(tests_template, template_arguments, File.join(tests_dir, "#{config.namespace}Test.kt")) if config.should_generate_unit_tests end |
.set_up_kotlin_interfaces(path, template_arguments, config) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/arkana/kotlin_code_generator.rb', line 33 def self.set_up_kotlin_interfaces(path, template_arguments, config) dirname = File.dirname(__FILE__) sources_dir = path source_template = File.read("#{dirname}/templates/kotlin/arkana_protocol.kt.erb") FileUtils.mkdir_p(path) render(source_template, template_arguments, File.join(sources_dir, "#{config.namespace}Environment.kt")) end |
.set_up_kotlin_module(path, template_arguments) ⇒ Object
23 24 25 26 27 28 29 30 31 |
# File 'lib/arkana/kotlin_code_generator.rb', line 23 def self.set_up_kotlin_module(path, template_arguments) dirname = File.dirname(__FILE__) sources_dir = path readme_template = File.read("#{dirname}/templates/readme.erb") source_template = File.read("#{dirname}/templates/kotlin/build.gradle.kts.erb") FileUtils.mkdir_p(path) render(readme_template, template_arguments, File.join(path, "README.md")) render(source_template, template_arguments, File.join(sources_dir, "build.gradle.kts")) end |