Skip to content

Commit 38eb6c1

Browse files
committed
Add ERB extraction
1 parent 768a751 commit 38eb6c1

1 file changed

Lines changed: 22 additions & 1 deletion

File tree

extractor/src/main.rs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)