[−][src]Struct lib_ruby_parser::ParserOptions
Configuration of the parser
Fields
buffer_name: String
Name of the buffer. Used in all diagnostic messages
debug: bool
Controls whether the parser should run in debug mode
Debug mode forces parser/lexer to print additional information while running (like bison actions)
decoder: CustomDecoder
Custom decoder that can be used if the source is encoded in unknown encoding. Only UTF-8 and ASCII-8BIT/BINARY are supported out of the box.
Example
use lib_ruby_parser::source::{InputError, RecognizedEncoding, CustomDecoder}; use lib_ruby_parser::{Parser, ParserOptions, ParserResult}; fn decode(encoding: RecognizedEncoding, input: &[u8]) -> Result<Vec<u8>, InputError> { if let RecognizedEncoding::US_ASCII = encoding { // reencode and return Ok(result) return Ok(b"# encoding: us-ascii\ndecoded".to_vec()); } Err(InputError::DecodingError( "only us-ascii is supported".to_owned(), )) } // Or let decode_closure = |encoding: RecognizedEncoding, input: &[u8]| -> Result<Vec<u8>, InputError> { if let RecognizedEncoding::US_ASCII = encoding { // reencode and return Ok(result) return Ok(b"# encoding: us-ascii\ndecoded".to_vec()); } Err(InputError::DecodingError( "only us-ascii is supported".to_owned(), )) }; let decoder = CustomDecoder::new(Box::new(decode_closure)); let options = ParserOptions { decoder, debug: true, ..Default::default() }; let mut parser = Parser::new(b"# encoding: us-ascii\n3 + 3", options); let ParserResult { ast, input, .. } = parser.do_parse(); assert_eq!(ast.unwrap().expression().source(&input).unwrap(), "decoded".to_owned())
Trait Implementations
impl Default for ParserOptions
[src]
Auto Trait Implementations
impl !RefUnwindSafe for ParserOptions
[src]
impl !Send for ParserOptions
[src]
impl !Sync for ParserOptions
[src]
impl Unpin for ParserOptions
[src]
impl !UnwindSafe for ParserOptions
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,