xbbcode_table.module in Extensible BBCode 8
Same filename and directory in other branches
xbbcode_table.module The module file, containing hook implementations.
File
xbbcode_table/xbbcode_table.moduleView source
<?php
/**
 * @file xbbcode_table.module
 * The module file, containing hook implementations.
 */
/**
 * Implements hook_xbbcode_info().
 */
function xbbcode_table_xbbcode_info() {
  $tags['table'] = array(
    'callback' => '_xbbcode_table_render',
    'description' => t('Create a table from comma-separated data. The tag option contains an optional caption and column headers; a prefix of ! or # aligns the column to the center or the right, respectively.'),
    'sample' => t("[table=Caption;!Item,Color,#Amount]\nFish,Red,1\nFish,Blue,2\n[/table]"),
  );
  return $tags;
}
/**
 * Renders a table tag.
 */
function _xbbcode_table_render($tag) {
  $alignment = array(
    '' => 'left',
    '#' => 'right',
    '!' => 'center',
  );
  if ($tag->option) {
    // Look for an optional caption;header syntax.
    preg_match('/^(?:(.*);)?(.*)$/', $tag->option, $match);
    list($_, $caption, $headers) = $match;
  }
  else {
    $caption = $tag
      ->attr('caption');
    $headers = $tag
      ->attr('headers');
  }
  if ($headers) {
    $headers = explode(',', $headers);
    foreach ($headers as $i => $header) {
      // !<name> is aligned right, #<name> is centered, otherwise aligned left.
      preg_match('/^([#!]?)(.+)$/', $header, $match);
      $headers[$i] = $match[2];
      $align[$i] = $alignment[$match[1]];
    }
  }
  else {
    $headers = array();
  }
  $rows = explode("\n", trim($tag->content));
  foreach ($rows as $row) {
    $row = explode(',', $row);
    if ($headers) {
      foreach ($row as $i => $cell) {
        $row[$i] = array(
          'data' => $cell,
          'style' => 'text-align:' . $align[$i],
        );
      }
    }
    $cells[] = $row;
  }
  // Strip linebreaks, in case this text passes through a linebreak converter.
  return str_replace("\n", '', theme('table', array(
    'header' => $headers,
    'rows' => $cells,
    'caption' => $caption,
  )));
}Functions
| 
            Name | 
                  Description | 
|---|---|
| xbbcode_table_xbbcode_info | Implements hook_xbbcode_info(). | 
| _xbbcode_table_render | Renders a table tag. |