silverstripe-framework/parsers/TextParser.php
Damian Mooyman 5c9044a007 API Enforce default_cast for all field usages
API Introduce HTMLFragment as casting helper for HTMLText with shortcodes disabled
API Introduce DBField::CDATA for XML file value encoding
API RSSFeed now casts from the underlying model rather than by override
API Introduce CustomMethods::getExtraMethodConfig() to allow metadata to be queried
BUG Remove _call hack from VirtualPage
API Remove FormField::$dontEscape
API Introduce HTMLReadonlyField for non-editable readonly HTML
API FormField::Field() now returns string in many cases rather than DBField instance.
API Remove redundant *_val methods from ViewableData
API ViewableData::obj() no longer has a $forceReturnObject parameter as it always returns an object
BUG  Fix issue with ViewableData caching incorrect field values after being modified.
API Remove deprecated DB class methods
API Enforce plain text left/right formfield titles
2016-07-13 17:15:45 +12:00

63 lines
1.9 KiB
PHP

<?php
/**
* Parses text in a variety of ways.
*
* Called from a template by $Content.Parse(SubClassName), similar to $Content.XML.
* This will work on any Text database field (Or a sub-class, such as HTMLText,
* although it's usefulness in this situation is more limited).
*
* Any sub-classes of TextParser must implement a parse() method.
* This should take $this->content and parse it however you want. For an example
* of the implementation, @see BBCodeParser.
*
* Your sub-class will be initialized with a string of text, then parse() will be called.
* parse() should (after processing) return the formatted string.
*
* Note: $this->content will have NO conversions applied to it.
* You should run Covert::raw2xml or whatever is appropriate before using it.
*
* Optionally (but recommended), is creating a static usable_tags method,
* which will return a SS_List of all the usable tags that can be parsed.
* This will (mostly) be used to create helper blocks - telling users what things will be parsed.
* Again, @see BBCodeParser for an example of the syntax
*
* @todo Define a proper syntax for (or refactor) usable_tags that can be extended as needed.
* @package framework
* @subpackage misc
*/
abstract class TextParser extends Object {
/**
* @var string
*/
protected $content;
/**
* Creates a new TextParser object.
*
* @param string $content The contents of the dbfield
*/
public function __construct($content = "") {
parent::__construct();
$this->content = $content;
parent::__construct();
}
/**
* Convenience method, shouldn't really be used, but it's here if you want it
*
* @param string $content
*/
public function setContent($content = "") {
$this->content = $content;
}
/**
* Define your own parse method to parse $this->content appropriately.
* See the class doc-block for more implementation details.
*
* @return DBField
*/
abstract public function parse();
}