pub struct ShaderModuleParser { /* private fields */ }Expand description
Handle the creation and update of internal tree_sitter AST stored into a ShaderModule
use shader_sense::symbols::shader_module_parser::ShaderModuleParser;
use shader_sense::position::{ShaderPosition, ShaderRange};
use std::path::Path;
let shader_path = Path::new("./test/hlsl/ok.hlsl");
let shader_content = std::fs::read_to_string(shader_path).unwrap();
let mut shader_module_parser = ShaderModuleParser::hlsl();
let mut shader_module = shader_module_parser.create_module(shader_path, &shader_content).unwrap();
// Here we can simply insert a new text at the position 3, 4.
shader_module_parser.update_module_partial(
&mut shader_module,
&ShaderRange::new(
ShaderPosition::new(3, 4),
ShaderPosition::new(3, 4)
),
&String::from("inserted text")
).unwrap();Implementations§
Source§impl ShaderModuleParser
impl ShaderModuleParser
pub fn glsl() -> Self
pub fn hlsl() -> Self
pub fn wgsl() -> Self
Sourcepub fn from_shading_language(shading_language: ShadingLanguage) -> Self
pub fn from_shading_language(shading_language: ShadingLanguage) -> Self
Examples found in repository?
examples/main.rs (line 31)
29fn query_all_symbol<T: ShadingLanguageTag>(shader_path: &Path, shader_content: &str) {
30 // SymbolProvider intended to gather file symbol at runtime by inspecting the AST.
31 let mut shader_module_parser = ShaderModuleParser::from_shading_language(T::get_language());
32 let symbol_provider = SymbolProvider::from_shading_language(T::get_language());
33 match shader_module_parser.create_module(shader_path, shader_content) {
34 Ok(shader_module) => {
35 let symbols = symbol_provider
36 .query_symbols(
37 &shader_module,
38 ShaderParams::default(),
39 &mut default_include_callback::<T>,
40 None,
41 )
42 .unwrap();
43 let symbol_list = symbols.get_all_symbols();
44 println!("Found symbols: {:#?}", symbol_list);
45 }
46 Err(err) => println!("Failed to create ast: {:#?}", err),
47 }
48}Sourcepub fn create_module(
&mut self,
file_path: &Path,
shader_content: &str,
) -> Result<ShaderModule, ShaderError>
pub fn create_module( &mut self, file_path: &Path, shader_content: &str, ) -> Result<ShaderModule, ShaderError>
Examples found in repository?
examples/main.rs (line 33)
29fn query_all_symbol<T: ShadingLanguageTag>(shader_path: &Path, shader_content: &str) {
30 // SymbolProvider intended to gather file symbol at runtime by inspecting the AST.
31 let mut shader_module_parser = ShaderModuleParser::from_shading_language(T::get_language());
32 let symbol_provider = SymbolProvider::from_shading_language(T::get_language());
33 match shader_module_parser.create_module(shader_path, shader_content) {
34 Ok(shader_module) => {
35 let symbols = symbol_provider
36 .query_symbols(
37 &shader_module,
38 ShaderParams::default(),
39 &mut default_include_callback::<T>,
40 None,
41 )
42 .unwrap();
43 let symbol_list = symbols.get_all_symbols();
44 println!("Found symbols: {:#?}", symbol_list);
45 }
46 Err(err) => println!("Failed to create ast: {:#?}", err),
47 }
48}pub fn update_module( &mut self, module: &mut ShaderModule, new_text: &str, ) -> Result<(), ShaderError>
pub fn update_module_partial( &mut self, module: &mut ShaderModule, old_range: &ShaderRange, new_text: &str, ) -> Result<(), ShaderError>
Auto Trait Implementations§
impl Freeze for ShaderModuleParser
impl RefUnwindSafe for ShaderModuleParser
impl Send for ShaderModuleParser
impl Sync for ShaderModuleParser
impl Unpin for ShaderModuleParser
impl UnwindSafe for ShaderModuleParser
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more