summaryrefslogtreecommitdiff
path: root/includes/api/ApiFormatYaml_spyc.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/api/ApiFormatYaml_spyc.php')
-rw-r--r--includes/api/ApiFormatYaml_spyc.php14
1 files changed, 13 insertions, 1 deletions
diff --git a/includes/api/ApiFormatYaml_spyc.php b/includes/api/ApiFormatYaml_spyc.php
index b3ccff0f..b2973b8c 100644
--- a/includes/api/ApiFormatYaml_spyc.php
+++ b/includes/api/ApiFormatYaml_spyc.php
@@ -385,6 +385,18 @@
return false;
}
}
+
+ /**
+ * Find out whether a string needs to be output as a literal rather than in plain style.
+ * Added by Roan Kattouw 13-03-2008
+ * @param $value The string to check
+ * @return bool
+ */
+ function _needLiteral($value) {
+ # Check whether the string contains # or : or begins with any of:
+ # [ - ? , [ ] { } ! * & | > ' " % @ ` ]
+ return (bool)(preg_match("/[#:]/", $value) || preg_match("/^[-?,[\]{}!*&|>'\"%@`]/", $value));
+ }
/**
* Returns YAML from a key and a value
@@ -396,7 +408,7 @@
*/
function _dumpNode($key,$value,$indent) {
// do some folding here, for blocks
- if (strpos($value,"\n")) {
+ if (strpos($value,"\n") || $this->_needLiteral($value)) {
$value = $this->_doLiteralBlock($value,$indent);
} else {
$value = $this->_doFolding($value,$indent);