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 UnsafeUnpin 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