首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何扩展Parsedown以将类添加到表标记

如何扩展Parsedown以将类添加到表标记
EN

Stack Overflow用户
提问于 2016-03-04 06:04:52
回答 3查看 790关注 0票数 2

我想为Parsedown编写一个扩展,这样我就可以为每个表标记添加一个默认类。我发现我可以通过在blockTable函数中添加行来分配属性(在第870行附近),从而成功地破解源代码:

代码语言:javascript
复制
$Block = array(
        'alignments' => $alignments,
        'identified' => true,
        'element' => array(
                'name' => 'table',
                'handler' => 'elements',
                'attributes' => array(
                        'class' => 'table',
                ),
        ),
);

但是,如果我尝试松散地遵循Change Element Markup extension tutorial,我就不会成功(可能是因为表解析可能是一个迭代过程,而本教程中的示例是一个简单的字符串替换)。

我试过了:

代码语言:javascript
复制
class Extension extends Parsedown
{

        protected function blockTable($Line, array $Block = null)
        {
                $Block = parent::blockTable($Line, array $Block = null);

                $Block['table']['attributes']['class'] = 'table';

                return $Block;
        }

}   

但这并不管用。

EN

回答 3

Stack Overflow用户

发布于 2016-05-28 13:28:56

我不太确定你的代码出了什么问题,因为你的代码和我的一致。我只是简单地添加了

代码语言:javascript
复制
'attributes' => array(
      'class' => 'table table-responsive'
),

发送到identifyTable,在850行,所以它变成了

代码语言:javascript
复制
        $Block = array(
            'alignments' => $alignments,
            'identified' => true,
            'element' => array(
                'name' => 'table',
                'handler' => 'elements',
                'attributes' => array(
                    'class' => 'table table-responsive',
                ),
            ),
        );

这对我来说很好。但这对你来说似乎是一样的,除了表响应性。

您使用的是什么版本?

票数 1
EN

Stack Overflow用户

发布于 2019-07-11 17:14:17

我在symfony演示应用程序中遇到了完全相同的问题。最后,结果证明它不是向下解析的,因为输出是由html-sanitizer清除的。允许表的class属性解决了这个问题。

对于symfony 4演示应用程序,请添加到config/packages/html_sanitizer.yaml

代码语言:javascript
复制
html_sanitizer:
  #[...]
  sanitizers:
    default:
      # [...]
      tags:
        table:
          allowed_attributes:
           - "class"
票数 0
EN

Stack Overflow用户

发布于 2021-06-23 15:44:16

我知道这是一个5年零3个月前提出的非常古老的问题,但我在谷歌搜索中发现了这个答案,所以我认为用输出表类的代码来回答这个问题是值得的。

代码语言:javascript
复制
class Extension extends Parsedown {

    protected function blockTable($Line, ?array $Block = null)
    {   
        $Block = parent::blockTable($Line, $Block);

        if(is_null($Block)){ return; }

        $Block['element']['attributes']['class'] = 'table table-responsive';
        return $Block;

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35783984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档