class csl_group in Bibliography Module 6.2
Same name and namespace in other branches
- 7 modules/CiteProc/CSL.inc \csl_group
- 7.2 modules/CiteProc/CSL.inc \csl_group
Hierarchy
- class \csl_collection
- class \csl_element
- class \csl_rendering_element
- class \csl_format
- class \csl_group
- class \csl_format
- class \csl_rendering_element
- class \csl_element
Expanded class hierarchy of csl_group
File
- modules/
CiteProc/ CSL.inc, line 1287
View source
class csl_group extends csl_format {
function render($data, $mode = NULL) {
$text = '';
$text_parts = array();
$terms = $variables = $have_variables = $element_count = 0;
foreach ($this->elements as $element) {
$element_count++;
if ($element instanceof csl_text && ($element->source == 'term' || $element->source == 'value')) {
$terms++;
}
if ($element instanceof csl_label) {
$terms++;
}
if ($element->source == 'variable' && isset($element->variable) && !empty($data->{$element->variable})) {
$variables++;
}
$text = $element
->render($data, $mode);
$delimiter = $this->delimiter;
if (!empty($text)) {
if ($delimiter && $element_count < count($this->elements)) {
//check to see if the delimiter is already the last character of the text string
//if so, remove it so we don't have two of them when we paste together the group
$stext = strip_tags(trim($text));
if (strrpos($stext, $delimiter[0]) + 1 == drupal_strlen($stext) && drupal_strlen($stext) > 1) {
$text = str_replace($stext, '----REPLACE----', $text);
$stext = drupal_substr($stext, 0, -1);
$text = str_replace('----REPLACE----', $stext, $text);
}
}
$text_parts[] = $text;
if ($element->source == 'variable' || isset($element->variable)) {
$have_variables++;
}
if ($element->source == 'macro') {
$have_variables++;
}
}
}
if (empty($text_parts)) {
return;
}
if ($variables && !$have_variables) {
return;
}
// there has to be at least one other none empty value before the term is output
if (count($text_parts) == $terms) {
return;
}
// there has to be at least one other none empty value before the term is output
$delimiter = $this->delimiter;
$text = implode($delimiter, $text_parts);
// insert the delimiter if supplied.
return $this
->format($text);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
csl_collection:: |
protected | property | ||
csl_collection:: |
function | |||
csl_element:: |
protected | property | ||
csl_element:: |
protected | property | ||
csl_element:: |
function | |||
csl_element:: |
function | |||
csl_element:: |
function | 5 | ||
csl_element:: |
function | |||
csl_element:: |
function | |||
csl_element:: |
function | |||
csl_element:: |
function | |||
csl_element:: |
function | |||
csl_element:: |
function | |||
csl_format:: |
protected | property | 1 | |
csl_format:: |
protected | property | ||
csl_format:: |
function |
Overrides csl_collection:: |
1 | |
csl_format:: |
function | 5 | ||
csl_format:: |
function |
Overrides csl_element:: |
2 | |
csl_group:: |
function |
Overrides csl_rendering_element:: |