File tree Expand file tree Collapse file tree 3 files changed +31
-1
lines changed
Expand file tree Collapse file tree 3 files changed +31
-1
lines changed Original file line number Diff line number Diff line change @@ -41,6 +41,7 @@ module Typelizer
4141 # Config keys that don't affect file content (runtime behavior, or effects captured via properties).
4242 CONFIGS_NOT_AFFECTING_OUTPUT = %i[
4343 serializer_name_mapper
44+ filename_mapper
4445 serializer_model_mapper
4546 properties_transformer
4647 model_plugin
@@ -56,6 +57,7 @@ module Typelizer
5657
5758 Config = Struct . new (
5859 :serializer_name_mapper ,
60+ :filename_mapper ,
5961 :serializer_model_mapper ,
6062 :properties_transformer ,
6163 :properties_sort_order ,
@@ -95,6 +97,8 @@ def self.defaults
9597 name . sub ( /(Serializer|Resource)\z / , "" )
9698 end ,
9799
100+ filename_mapper : nil ,
101+
98102 serializer_model_mapper : lambda do |serializer |
99103 base_class = serializer_name_mapper . call ( serializer )
100104 Object . const_get ( base_class ) if Object . const_defined? ( base_class )
Original file line number Diff line number Diff line change @@ -36,7 +36,11 @@ def name
3636 end
3737
3838 def filename
39- name . gsub ( "::" , "/" )
39+ if config . filename_mapper
40+ config . filename_mapper . call ( config . serializer_name_mapper . call ( serializer ) )
41+ else
42+ name . gsub ( "::" , "/" )
43+ end
4044 end
4145
4246 def index_path ( index_dir )
Original file line number Diff line number Diff line change @@ -88,6 +88,28 @@ def restore_defaults!
8888 FileUtils . rm_rf ( custom_output_dir )
8989 end
9090
91+ it "uses filename_mapper to generate nested file paths" do
92+ nested_dir = default_output_dir . parent . join ( "generator_nested" )
93+
94+ configuration . writer ( :nested ) do |c |
95+ c . output_dir = nested_dir
96+ c . filename_mapper = -> ( name ) { name . gsub ( "::" , "/" ) }
97+ end
98+
99+ generator . call ( force : true )
100+
101+ # Alba::UserSerializer mapped name is "Alba::User", filename becomes "Alba/User"
102+ expect ( nested_dir . join ( "Alba/User.ts" ) ) . to exist
103+ expect ( nested_dir . join ( "AlbaUser.ts" ) ) . not_to exist
104+
105+ # Type name in index.ts is still flat
106+ index_content = File . read ( nested_dir . join ( "index.ts" ) )
107+ expect ( index_content ) . to include ( "AlbaUser" )
108+ expect ( index_content ) . to include ( "'./Alba/User'" )
109+ ensure
110+ FileUtils . rm_rf ( nested_dir )
111+ end
112+
91113 it "generates files for all writers and applies writer-specific transformers" do
92114 expect { generator . call ( force : true ) } . not_to raise_error
93115
You can’t perform that action at this time.
0 commit comments