diff --git a/README.md b/README.md index 4109442..2d71af4 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,11 @@ Configurations: Typescript::Rails::Compiler.default_options = [ ... ] ``` +To use typescript template generator, add to your config file: + +``` +config.app_generators.javascript_engine :typescript +``` ## Contributing diff --git a/lib/rails/generators/typescript/assets/assets_generator.rb b/lib/rails/generators/typescript/assets/assets_generator.rb new file mode 100644 index 0000000..1fef1eb --- /dev/null +++ b/lib/rails/generators/typescript/assets/assets_generator.rb @@ -0,0 +1,13 @@ +require "rails/generators/named_base" + +module Typescript + module Generators + class AssetsGenerator < ::Rails::Generators::NamedBase + source_root File.expand_path("../templates", __FILE__) + + def copy_coffee + template "javascript.ts", File.join('app/assets/javascripts', class_path, "#{file_name}.ts") + end + end + end +end diff --git a/lib/rails/generators/typescript/assets/templates/javascript.ts b/lib/rails/generators/typescript/assets/templates/javascript.ts new file mode 100644 index 0000000..e69de29 diff --git a/lib/typescript/rails/engine.rb b/lib/typescript/rails/engine.rb index 40b0e90..2015c08 100644 --- a/lib/typescript/rails/engine.rb +++ b/lib/typescript/rails/engine.rb @@ -1,6 +1,9 @@ require 'rails/engine' class Typescript::Rails::Engine < Rails::Engine - # For now, let's not be the default generator ... - # config.app_generators.javascript_engine :ts + # config.app_generators.javascript_engine :typescript + + if config.respond_to?(:annotations) + config.annotations.register_extensions("ts") { |annotation| /#\s*(#{annotation}):?\s*(.*)$/ } + end end \ No newline at end of file diff --git a/test/asset_generator_test.rb b/test/asset_generator_test.rb new file mode 100644 index 0000000..699e7b0 --- /dev/null +++ b/test/asset_generator_test.rb @@ -0,0 +1,15 @@ +require 'test_helper' +require 'rails/generators/typescript/assets/assets_generator' + +class AssetGeneratorTest < Rails::Generators::TestCase + tests Typescript::Generators::AssetsGenerator + + destination File.expand_path("../tmp", __FILE__) + setup :prepare_destination + + def test_assets + run_generator %w(posts) + assert_no_file "app/assets/javascripts/posts.js" + assert_file "app/assets/javascripts/posts.ts" + end +end diff --git a/test/controller_generator_test.rb b/test/controller_generator_test.rb new file mode 100644 index 0000000..c2db1cc --- /dev/null +++ b/test/controller_generator_test.rb @@ -0,0 +1,19 @@ +require 'test_helper' +require 'rails/generators/rails/controller/controller_generator' +require 'rails/generators/typescript/assets/assets_generator' + +class ControllerGeneratorTest < Rails::Generators::TestCase + tests Rails::Generators::ControllerGenerator + + destination File.expand_path("../tmp", __FILE__) + setup do + prepare_destination + copy_routes + end + + def test_assets + run_generator %w(posts --javascript-engine=typescript --orm=false) + assert_no_file "app/assets/javascripts/posts.js" + assert_file "app/assets/javascripts/posts.ts" + end +end diff --git a/test/scaffold_generator_test.rb b/test/scaffold_generator_test.rb new file mode 100644 index 0000000..67e85d2 --- /dev/null +++ b/test/scaffold_generator_test.rb @@ -0,0 +1,19 @@ +require 'test_helper' +require 'rails/generators/rails/scaffold/scaffold_generator' +require 'rails/generators/typescript/assets/assets_generator' + +class ScaffoldGeneratorTest < Rails::Generators::TestCase + tests Rails::Generators::ScaffoldGenerator + + destination File.expand_path("../tmp", __FILE__) + setup do + prepare_destination + copy_routes + end + + def test_assets + run_generator %w(posts --javascript-engine=typescript --orm=false) + assert_no_file "app/assets/javascripts/posts.js" + assert_file "app/assets/javascripts/posts.ts" + end +end diff --git a/test/support/routes.rb b/test/support/routes.rb new file mode 100644 index 0000000..e69de29
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: