@@ -125,6 +125,8 @@ fn main() -> std::io::Result<()> {
125125 let language = tree_sitter_ruby:: language ( ) ;
126126 let erb = tree_sitter_embedded_template:: language ( ) ;
127127 let schema = node_types:: read_node_types_str ( "ruby" , tree_sitter_ruby:: NODE_TYPES ) ?;
128+ let erb_schema =
129+ node_types:: read_node_types_str ( "erb" , tree_sitter_embedded_template:: NODE_TYPES ) ?;
128130 let lines: std:: io:: Result < Vec < String > > = std:: io:: BufReader :: new ( file_list) . lines ( ) . collect ( ) ;
129131 let lines = lines?;
130132 lines. par_iter ( ) . try_for_each ( |line| {
@@ -133,8 +135,18 @@ fn main() -> std::io::Result<()> {
133135 let src_archive_file = path_for ( & src_archive_dir, & path, "" ) ;
134136 let mut source = std:: fs:: read ( & path) ?;
135137 let code_ranges;
138+ let erb_trap;
136139 if path. extension ( ) . map_or ( false , |x| x == "erb" ) {
137140 tracing:: info!( "scanning: {}" , path. display( ) ) ;
141+ erb_trap = Some ( extractor:: extract (
142+ erb,
143+ "erb" ,
144+ & erb_schema,
145+ & path,
146+ & source,
147+ & [ ] ,
148+ ) ?) ;
149+
138150 let ( ranges, line_breaks) = scan_erb ( erb, & source) ;
139151 for i in line_breaks {
140152 if i < source. len ( ) {
@@ -144,6 +156,7 @@ fn main() -> std::io::Result<()> {
144156 code_ranges = ranges;
145157 } else {
146158 code_ranges = vec ! [ ] ;
159+ erb_trap = None ;
147160 }
148161 let trap = extractor:: extract ( language, "ruby" , & schema, & path, & source, & code_ranges) ?;
149162 std:: fs:: create_dir_all ( & src_archive_file. parent ( ) . unwrap ( ) ) ?;
@@ -152,9 +165,17 @@ fn main() -> std::io::Result<()> {
152165 let trap_file = std:: fs:: File :: create ( & trap_file) ?;
153166 let mut trap_file = BufWriter :: new ( trap_file) ;
154167 match trap_compression {
155- TrapCompression :: None => write ! ( trap_file, "{}" , trap) ,
168+ TrapCompression :: None => {
169+ if erb_trap. is_some ( ) {
170+ write ! ( trap_file, "{}" , erb_trap. unwrap( ) ) ?;
171+ }
172+ write ! ( trap_file, "{}" , trap)
173+ }
156174 TrapCompression :: Gzip => {
157175 let mut compressed_writer = GzEncoder :: new ( trap_file, flate2:: Compression :: fast ( ) ) ;
176+ if erb_trap. is_some ( ) {
177+ write ! ( compressed_writer, "{}" , erb_trap. unwrap( ) ) ?;
178+ }
158179 write ! ( compressed_writer, "{}" , trap)
159180 }
160181 }
0 commit comments