pub struct ExtensionManager { /* private fields */ }
Expand description
扩展管理器
Implementations§
Source§impl ExtensionManager
impl ExtensionManager
Sourcepub fn builder() -> ExtensionManagerBuilder
pub fn builder() -> ExtensionManagerBuilder
创建ExtensionManager构建器
§示例
use mf_core::ExtensionManager;
let manager = ExtensionManager::builder()
.add_xml_file("./schemas/main.xml")
.build()?;
pub fn new(extensions: &Vec<Extensions>) -> ForgeResult<Self>
Sourcepub fn from_xml_file(xml_file_path: &str) -> ForgeResult<Self>
pub fn from_xml_file(xml_file_path: &str) -> ForgeResult<Self>
Sourcepub fn from_xml_string(xml_content: &str) -> ForgeResult<Self>
pub fn from_xml_string(xml_content: &str) -> ForgeResult<Self>
从XML字符串创建ExtensionManager(便捷方法)
§参数
xml_content
- XML schema内容字符串
§返回值
ForgeResult<Self>
- 返回ExtensionManager实例或错误
§示例
use mf_core::ExtensionManager;
let xml = r#"
<?xml version="1.0" encoding="UTF-8"?>
<schema top_node="doc">
<nodes>
<node name="doc">
<content>paragraph+</content>
</node>
</nodes>
</schema>
"#;
let manager = ExtensionManager::from_xml_string(xml)?;
Sourcepub fn from_xml_files(xml_file_paths: &[&str]) -> ForgeResult<Self>
pub fn from_xml_files(xml_file_paths: &[&str]) -> ForgeResult<Self>
从多个XML文件创建ExtensionManager(便捷方法)
§参数
xml_file_paths
- XML schema文件路径列表
§返回值
ForgeResult<Self>
- 返回ExtensionManager实例或错误
§示例
use mf_core::ExtensionManager;
let files = vec![
"./schemas/base-nodes.xml",
"./schemas/formatting-marks.xml",
"./schemas/custom-extensions.xml"
];
let manager = ExtensionManager::from_xml_files(&files)?;
Sourcepub fn from_mixed_sources(
extensions: &[Extensions],
xml_file_paths: &[&str],
) -> ForgeResult<Self>
pub fn from_mixed_sources( extensions: &[Extensions], xml_file_paths: &[&str], ) -> ForgeResult<Self>
从Extensions和XML文件混合创建ExtensionManager(便捷方法)
§参数
extensions
- 已有的Extensions列表xml_file_paths
- 额外的XML schema文件路径列表
§返回值
ForgeResult<Self>
- 返回ExtensionManager实例或错误
§示例
use mf_core::{ExtensionManager, types::Extensions};
let existing_extensions = vec![/* ... */];
let xml_files = vec!["./schemas/additional.xml"];
let manager = ExtensionManager::from_mixed_sources(
&existing_extensions,
&xml_files
)?;
pub fn get_op_fns( &self, ) -> &Vec<Arc<dyn Fn(&GlobalResourceManager) -> ForgeResult<()> + Send + Sync>>
pub fn get_schema(&self) -> Arc<Schema>
pub fn get_plugins(&self) -> &Vec<Arc<Plugin>>
Sourcepub fn add_extensions(
&mut self,
new_extensions: Vec<Extensions>,
) -> ForgeResult<()>
pub fn add_extensions( &mut self, new_extensions: Vec<Extensions>, ) -> ForgeResult<()>
动态添加扩展并重新构建schema
§参数
new_extensions
- 要添加的新扩展列表
§返回值
ForgeResult<()>
- 成功或错误
§示例
use mf_core::{ExtensionManager, types::Extensions, node::Node};
use mf_model::node_type::NodeSpec;
let mut manager = ExtensionManager::new(&vec![])?;
let new_node = Node::create("dynamic_node", NodeSpec::default());
manager.add_extensions(vec![Extensions::N(new_node)])?;
Sourcepub fn add_xml_file(&mut self, xml_file_path: &str) -> ForgeResult<()>
pub fn add_xml_file(&mut self, xml_file_path: &str) -> ForgeResult<()>
Sourcepub fn add_xml_content(&mut self, xml_content: &str) -> ForgeResult<()>
pub fn add_xml_content(&mut self, xml_content: &str) -> ForgeResult<()>
Auto Trait Implementations§
impl Freeze for ExtensionManager
impl !RefUnwindSafe for ExtensionManager
impl Send for ExtensionManager
impl Sync for ExtensionManager
impl Unpin for ExtensionManager
impl !UnwindSafe for ExtensionManager
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more