mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-08-06 05:43:51 +00:00
refactor: move some type to base class
This commit is contained in:
parent
cdceeddddb
commit
8f0d37e24c
42
core/modules/parsers/base.js
Normal file
42
core/modules/parsers/base.js
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/**
|
||||||
|
* Base structure for a parse node
|
||||||
|
*
|
||||||
|
* @typedef {Object} ParseTreeNode
|
||||||
|
* @property {string} type - Type of widget
|
||||||
|
* @property {Object} [attributes] - Attributes of widget
|
||||||
|
* @property {ParseTreeNode[]} [children] - Array of child parse nodes
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class for parsers. This only provides typing
|
||||||
|
*
|
||||||
|
* @class
|
||||||
|
* @param {string} type - Content type of text to be parsed
|
||||||
|
* @param {string} text - Text to be parsed
|
||||||
|
* @param {Object} options - Parser options
|
||||||
|
* @param {boolean} [options.parseAsInline=false] - If true, text will be parsed as an inline run
|
||||||
|
* @param {Object} options.wiki - Reference to wiki store in use
|
||||||
|
* @param {string} [options._canonical_uri] - Optional URI of content if text is missing or empty
|
||||||
|
* @param {boolean} [options.configTrimWhiteSpace=false] - If true, parser trims white space
|
||||||
|
*/
|
||||||
|
function Parser(type, text, options) {
|
||||||
|
/**
|
||||||
|
* Result AST
|
||||||
|
* @type {ParseTreeNode[]}
|
||||||
|
*/
|
||||||
|
this.tree = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Original text without modifications
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
this.source = text;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Source content type in MIME format
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.Parser = Parser;
|
@ -25,18 +25,16 @@ Attributes are stored as hashmaps of the following objects:
|
|||||||
/*global $tw: false */
|
/*global $tw: false */
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {import('../base').Parser} Parser
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WikiParser class for parsing text of a specified MIME type.
|
* WikiParser class for parsing text of a specified MIME type.
|
||||||
*
|
*
|
||||||
* @class
|
* @class
|
||||||
|
* @extends {Parser}
|
||||||
* @constructor
|
* @constructor
|
||||||
* @param {string} type - Content type of the text to be parsed
|
|
||||||
* @param {string} text - Text to be parsed
|
|
||||||
* @param {Object} options - Parser options
|
|
||||||
* @param {boolean} [options.parseAsInline=false] - If true, the text will be parsed as an inline run
|
|
||||||
* @param {Object} options.wiki - Reference to the wiki store in use
|
|
||||||
* @param {string} [options._canonical_uri] - Optional URI of the content if text is missing or empty
|
|
||||||
* @param {boolean} [options.configTrimWhiteSpace=false] - If true, the parser trims white space
|
|
||||||
*/
|
*/
|
||||||
function WikiParser(type,text,options) {
|
function WikiParser(type,text,options) {
|
||||||
this.wiki = options.wiki;
|
this.wiki = options.wiki;
|
||||||
|
@ -1037,7 +1037,7 @@ exports.initParsers = function(moduleType) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {import('$:/core/modules/parsers/wikiparser/wikiparser.js')["text/vnd.tiddlywiki"]} WikiParser
|
* @typedef {import('$:/core/modules/parsers/base.js').Parser} Parser
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1051,13 +1051,12 @@ exports.initParsers = function(moduleType) {
|
|||||||
* @param {string} [options.defaultType="text/vnd.tiddlywiki"] - Default type to use if no parser is found for specified type
|
* @param {string} [options.defaultType="text/vnd.tiddlywiki"] - Default type to use if no parser is found for specified type
|
||||||
* @param {boolean} [options.configTrimWhiteSpace=false] - If true, trims white space according to configuration
|
* @param {boolean} [options.configTrimWhiteSpace=false] - If true, trims white space according to configuration
|
||||||
*
|
*
|
||||||
* @returns {WikiParser|null} Parser instance or null if no parser is found
|
* @returns {Parser|null} Parser instance or null if no parser is found
|
||||||
*/
|
*/
|
||||||
exports.parseText = function(type,text,options) {
|
exports.parseText = function(type,text,options) {
|
||||||
text = text || "";
|
text = text || "";
|
||||||
options = options || {};
|
options = options || {};
|
||||||
/**
|
/**
|
||||||
* @type WikiParser
|
|
||||||
* Select a parser
|
* Select a parser
|
||||||
*/
|
*/
|
||||||
var Parser = $tw.Wiki.parsers[type];
|
var Parser = $tw.Wiki.parsers[type];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user