pub struct Script { /* private fields */ }Expand description
Recovered AutoIt script view.
Implementations§
Source§impl Script
impl Script
Sourcepub const fn record_index(&self) -> usize
pub const fn record_index(&self) -> usize
Examples found in repository?
218fn print_scripts(scripts: &[Script]) {
219 section(&format!("scripts ({})", scripts.len()));
220 for script in scripts {
221 println!(
222 " record #{} {}",
223 script.record_index(),
224 escape_inline(script.name())
225 );
226 subfield("kind", format!("{:?}", script.kind()));
227 subfield("bytes", script.bytes().len().to_string());
228 subfield(
229 "timestamps",
230 format!(
231 "created={} last_write={}",
232 script.creation_time(),
233 script.last_write_time()
234 ),
235 );
236 subfield(
237 "text encoding",
238 script.text().map_or_else(
239 || "none".to_string(),
240 |text| format!("{:?}", text.encoding()),
241 ),
242 );
243 subfield("decode error", opt_debug(script.decode_error()));
244 match script.token_stream() {
245 None => subfield("token stream", "none".to_string()),
246 Some(tokens) => subfield(
247 "token stream",
248 format!(
249 "line_count={} tokens={}",
250 tokens.line_count(),
251 tokens.tokens().len()
252 ),
253 ),
254 }
255 match script.source_text() {
256 None => subfield("source", "<unavailable>".to_string()),
257 Some(source) => {
258 println!(" source ({} chars):", source.chars().count());
259 print_block(source);
260 }
261 }
262 }
263}Sourcepub fn name(&self) -> &str
pub fn name(&self) -> &str
Examples found in repository?
218fn print_scripts(scripts: &[Script]) {
219 section(&format!("scripts ({})", scripts.len()));
220 for script in scripts {
221 println!(
222 " record #{} {}",
223 script.record_index(),
224 escape_inline(script.name())
225 );
226 subfield("kind", format!("{:?}", script.kind()));
227 subfield("bytes", script.bytes().len().to_string());
228 subfield(
229 "timestamps",
230 format!(
231 "created={} last_write={}",
232 script.creation_time(),
233 script.last_write_time()
234 ),
235 );
236 subfield(
237 "text encoding",
238 script.text().map_or_else(
239 || "none".to_string(),
240 |text| format!("{:?}", text.encoding()),
241 ),
242 );
243 subfield("decode error", opt_debug(script.decode_error()));
244 match script.token_stream() {
245 None => subfield("token stream", "none".to_string()),
246 Some(tokens) => subfield(
247 "token stream",
248 format!(
249 "line_count={} tokens={}",
250 tokens.line_count(),
251 tokens.tokens().len()
252 ),
253 ),
254 }
255 match script.source_text() {
256 None => subfield("source", "<unavailable>".to_string()),
257 Some(source) => {
258 println!(" source ({} chars):", source.chars().count());
259 print_block(source);
260 }
261 }
262 }
263}Sourcepub const fn kind(&self) -> ScriptKind
pub const fn kind(&self) -> ScriptKind
Returns the recovered script kind.
§Returns
The ScriptKind classifying how the script was recovered.
Examples found in repository?
218fn print_scripts(scripts: &[Script]) {
219 section(&format!("scripts ({})", scripts.len()));
220 for script in scripts {
221 println!(
222 " record #{} {}",
223 script.record_index(),
224 escape_inline(script.name())
225 );
226 subfield("kind", format!("{:?}", script.kind()));
227 subfield("bytes", script.bytes().len().to_string());
228 subfield(
229 "timestamps",
230 format!(
231 "created={} last_write={}",
232 script.creation_time(),
233 script.last_write_time()
234 ),
235 );
236 subfield(
237 "text encoding",
238 script.text().map_or_else(
239 || "none".to_string(),
240 |text| format!("{:?}", text.encoding()),
241 ),
242 );
243 subfield("decode error", opt_debug(script.decode_error()));
244 match script.token_stream() {
245 None => subfield("token stream", "none".to_string()),
246 Some(tokens) => subfield(
247 "token stream",
248 format!(
249 "line_count={} tokens={}",
250 tokens.line_count(),
251 tokens.tokens().len()
252 ),
253 ),
254 }
255 match script.source_text() {
256 None => subfield("source", "<unavailable>".to_string()),
257 Some(source) => {
258 println!(" source ({} chars):", source.chars().count());
259 print_block(source);
260 }
261 }
262 }
263}Sourcepub fn bytes(&self) -> &[u8] ⓘ
pub fn bytes(&self) -> &[u8] ⓘ
Returns raw recovered script bytes.
§Returns
The best available payload bytes for the source record, before any text decode.
Examples found in repository?
218fn print_scripts(scripts: &[Script]) {
219 section(&format!("scripts ({})", scripts.len()));
220 for script in scripts {
221 println!(
222 " record #{} {}",
223 script.record_index(),
224 escape_inline(script.name())
225 );
226 subfield("kind", format!("{:?}", script.kind()));
227 subfield("bytes", script.bytes().len().to_string());
228 subfield(
229 "timestamps",
230 format!(
231 "created={} last_write={}",
232 script.creation_time(),
233 script.last_write_time()
234 ),
235 );
236 subfield(
237 "text encoding",
238 script.text().map_or_else(
239 || "none".to_string(),
240 |text| format!("{:?}", text.encoding()),
241 ),
242 );
243 subfield("decode error", opt_debug(script.decode_error()));
244 match script.token_stream() {
245 None => subfield("token stream", "none".to_string()),
246 Some(tokens) => subfield(
247 "token stream",
248 format!(
249 "line_count={} tokens={}",
250 tokens.line_count(),
251 tokens.tokens().len()
252 ),
253 ),
254 }
255 match script.source_text() {
256 None => subfield("source", "<unavailable>".to_string()),
257 Some(source) => {
258 println!(" source ({} chars):", source.chars().count());
259 print_block(source);
260 }
261 }
262 }
263}Sourcepub const fn text(&self) -> Option<&ScriptText>
pub const fn text(&self) -> Option<&ScriptText>
Returns decoded script text when available.
§Returns
Some with the ScriptText when text was recovered, or None when
decoding failed or was not attempted.
Examples found in repository?
218fn print_scripts(scripts: &[Script]) {
219 section(&format!("scripts ({})", scripts.len()));
220 for script in scripts {
221 println!(
222 " record #{} {}",
223 script.record_index(),
224 escape_inline(script.name())
225 );
226 subfield("kind", format!("{:?}", script.kind()));
227 subfield("bytes", script.bytes().len().to_string());
228 subfield(
229 "timestamps",
230 format!(
231 "created={} last_write={}",
232 script.creation_time(),
233 script.last_write_time()
234 ),
235 );
236 subfield(
237 "text encoding",
238 script.text().map_or_else(
239 || "none".to_string(),
240 |text| format!("{:?}", text.encoding()),
241 ),
242 );
243 subfield("decode error", opt_debug(script.decode_error()));
244 match script.token_stream() {
245 None => subfield("token stream", "none".to_string()),
246 Some(tokens) => subfield(
247 "token stream",
248 format!(
249 "line_count={} tokens={}",
250 tokens.line_count(),
251 tokens.tokens().len()
252 ),
253 ),
254 }
255 match script.source_text() {
256 None => subfield("source", "<unavailable>".to_string()),
257 Some(source) => {
258 println!(" source ({} chars):", source.chars().count());
259 print_block(source);
260 }
261 }
262 }
263}Sourcepub const fn decode_error(&self) -> Option<ScriptDecodeError>
pub const fn decode_error(&self) -> Option<ScriptDecodeError>
Returns text decode error details when text recovery failed.
§Returns
Some with the ScriptDecodeError when decoding failed, or None
otherwise.
Examples found in repository?
218fn print_scripts(scripts: &[Script]) {
219 section(&format!("scripts ({})", scripts.len()));
220 for script in scripts {
221 println!(
222 " record #{} {}",
223 script.record_index(),
224 escape_inline(script.name())
225 );
226 subfield("kind", format!("{:?}", script.kind()));
227 subfield("bytes", script.bytes().len().to_string());
228 subfield(
229 "timestamps",
230 format!(
231 "created={} last_write={}",
232 script.creation_time(),
233 script.last_write_time()
234 ),
235 );
236 subfield(
237 "text encoding",
238 script.text().map_or_else(
239 || "none".to_string(),
240 |text| format!("{:?}", text.encoding()),
241 ),
242 );
243 subfield("decode error", opt_debug(script.decode_error()));
244 match script.token_stream() {
245 None => subfield("token stream", "none".to_string()),
246 Some(tokens) => subfield(
247 "token stream",
248 format!(
249 "line_count={} tokens={}",
250 tokens.line_count(),
251 tokens.tokens().len()
252 ),
253 ),
254 }
255 match script.source_text() {
256 None => subfield("source", "<unavailable>".to_string()),
257 Some(source) => {
258 println!(" source ({} chars):", source.chars().count());
259 print_block(source);
260 }
261 }
262 }
263}Sourcepub const fn token_stream(&self) -> Option<&TokenStream>
pub const fn token_stream(&self) -> Option<&TokenStream>
Returns parsed token stream for tokenized scripts when available.
§Returns
Some with the token::TokenStream for a tokenized EA06 script, or
None for other kinds or when token parsing failed.
Examples found in repository?
218fn print_scripts(scripts: &[Script]) {
219 section(&format!("scripts ({})", scripts.len()));
220 for script in scripts {
221 println!(
222 " record #{} {}",
223 script.record_index(),
224 escape_inline(script.name())
225 );
226 subfield("kind", format!("{:?}", script.kind()));
227 subfield("bytes", script.bytes().len().to_string());
228 subfield(
229 "timestamps",
230 format!(
231 "created={} last_write={}",
232 script.creation_time(),
233 script.last_write_time()
234 ),
235 );
236 subfield(
237 "text encoding",
238 script.text().map_or_else(
239 || "none".to_string(),
240 |text| format!("{:?}", text.encoding()),
241 ),
242 );
243 subfield("decode error", opt_debug(script.decode_error()));
244 match script.token_stream() {
245 None => subfield("token stream", "none".to_string()),
246 Some(tokens) => subfield(
247 "token stream",
248 format!(
249 "line_count={} tokens={}",
250 tokens.line_count(),
251 tokens.tokens().len()
252 ),
253 ),
254 }
255 match script.source_text() {
256 None => subfield("source", "<unavailable>".to_string()),
257 Some(source) => {
258 println!(" source ({} chars):", source.chars().count());
259 print_block(source);
260 }
261 }
262 }
263}Sourcepub fn source_text(&self) -> Option<&str>
pub fn source_text(&self) -> Option<&str>
Returns decoded source text when available.
§Returns
Some with the decoded text string when Self::text is present, or
None otherwise.
Examples found in repository?
218fn print_scripts(scripts: &[Script]) {
219 section(&format!("scripts ({})", scripts.len()));
220 for script in scripts {
221 println!(
222 " record #{} {}",
223 script.record_index(),
224 escape_inline(script.name())
225 );
226 subfield("kind", format!("{:?}", script.kind()));
227 subfield("bytes", script.bytes().len().to_string());
228 subfield(
229 "timestamps",
230 format!(
231 "created={} last_write={}",
232 script.creation_time(),
233 script.last_write_time()
234 ),
235 );
236 subfield(
237 "text encoding",
238 script.text().map_or_else(
239 || "none".to_string(),
240 |text| format!("{:?}", text.encoding()),
241 ),
242 );
243 subfield("decode error", opt_debug(script.decode_error()));
244 match script.token_stream() {
245 None => subfield("token stream", "none".to_string()),
246 Some(tokens) => subfield(
247 "token stream",
248 format!(
249 "line_count={} tokens={}",
250 tokens.line_count(),
251 tokens.tokens().len()
252 ),
253 ),
254 }
255 match script.source_text() {
256 None => subfield("source", "<unavailable>".to_string()),
257 Some(source) => {
258 println!(" source ({} chars):", source.chars().count());
259 print_block(source);
260 }
261 }
262 }
263}Sourcepub const fn creation_time(&self) -> u64
pub const fn creation_time(&self) -> u64
Returns the source record creation timestamp as raw Windows FILETIME.
§Returns
The raw 64-bit Windows FILETIME creation timestamp from the source record.
Examples found in repository?
218fn print_scripts(scripts: &[Script]) {
219 section(&format!("scripts ({})", scripts.len()));
220 for script in scripts {
221 println!(
222 " record #{} {}",
223 script.record_index(),
224 escape_inline(script.name())
225 );
226 subfield("kind", format!("{:?}", script.kind()));
227 subfield("bytes", script.bytes().len().to_string());
228 subfield(
229 "timestamps",
230 format!(
231 "created={} last_write={}",
232 script.creation_time(),
233 script.last_write_time()
234 ),
235 );
236 subfield(
237 "text encoding",
238 script.text().map_or_else(
239 || "none".to_string(),
240 |text| format!("{:?}", text.encoding()),
241 ),
242 );
243 subfield("decode error", opt_debug(script.decode_error()));
244 match script.token_stream() {
245 None => subfield("token stream", "none".to_string()),
246 Some(tokens) => subfield(
247 "token stream",
248 format!(
249 "line_count={} tokens={}",
250 tokens.line_count(),
251 tokens.tokens().len()
252 ),
253 ),
254 }
255 match script.source_text() {
256 None => subfield("source", "<unavailable>".to_string()),
257 Some(source) => {
258 println!(" source ({} chars):", source.chars().count());
259 print_block(source);
260 }
261 }
262 }
263}Sourcepub const fn last_write_time(&self) -> u64
pub const fn last_write_time(&self) -> u64
Returns the source record last-write timestamp as raw Windows FILETIME.
§Returns
The raw 64-bit Windows FILETIME last-write timestamp from the source record.
Examples found in repository?
218fn print_scripts(scripts: &[Script]) {
219 section(&format!("scripts ({})", scripts.len()));
220 for script in scripts {
221 println!(
222 " record #{} {}",
223 script.record_index(),
224 escape_inline(script.name())
225 );
226 subfield("kind", format!("{:?}", script.kind()));
227 subfield("bytes", script.bytes().len().to_string());
228 subfield(
229 "timestamps",
230 format!(
231 "created={} last_write={}",
232 script.creation_time(),
233 script.last_write_time()
234 ),
235 );
236 subfield(
237 "text encoding",
238 script.text().map_or_else(
239 || "none".to_string(),
240 |text| format!("{:?}", text.encoding()),
241 ),
242 );
243 subfield("decode error", opt_debug(script.decode_error()));
244 match script.token_stream() {
245 None => subfield("token stream", "none".to_string()),
246 Some(tokens) => subfield(
247 "token stream",
248 format!(
249 "line_count={} tokens={}",
250 tokens.line_count(),
251 tokens.tokens().len()
252 ),
253 ),
254 }
255 match script.source_text() {
256 None => subfield("source", "<unavailable>".to_string()),
257 Some(source) => {
258 println!(" source ({} chars):", source.chars().count());
259 print_block(source);
260 }
261 }
262 }
263}