具有预定义变量列表的实时模板和添加参数的复杂逻辑

时间:2017-04-26 09:54:12

标签: phpstorm webstorm live-templates

我想创建生成fa-icons的实时模板。例如下一个

<i class="ace-icon fa fa-arrow-right icon-on-right align-top bigger-125"></i>
<i class="ace-icon fa fa-arrow-left icon-on-left bigger-140"></i>
<i class="ace-icon fa fa-times icon-on-right"></i>
<i class="fa fa-bars"></i>

下一步要生成的规则:

  1. 最小生成的模板为<i class="fa fa-$ICON_NAME$"></i>
  2. 需要有能力添加课程ace-icon,如果添加了设置icon-on-[right|left]
  3. 如果$ICON_NAME$fa-arrow-[right|left]且已设置ace-icon,请设置icon-on-[right|left]中设置的方向部分
  4. 能够选择编写附加类,例如{/ 1}}
  5. 如果align-top中的设置$SIZE$添加此类,则跳过
  6. 必须预定义bigger-$SIZE$$ICON_NAME$的选项。
  7. 假设实时模板

    $SIZE$

    我的问题:

    1. 如何设置<i class="$ACE_CLASS$ fa fa-$ICON_NAME$ icon-on-$ACE_DIRECTION$ $OPTIONAL_CLASS$ bigger-$SIZE$"></i> $ICON_NAME$$ACE_DIRECTION$的预定义选项列表?
    2. 如果尺寸为空,如何渲染$SIZE$
    3. 如何检查bigger-$SIZE$是否包含$ICON_NAME$并切换它?
    4. 如果$ACE_DIRECTION$为真,如何呈现icon-on-$ACE_DIRECTION$bigger-$SIZE$

1 个答案:

答案 0 :(得分:2)

  

如何设置$ICON_NAME$$ACE_DIRECTION$$SIZE$的预定义选项列表?

enum(sCompletionString1,sCompletionString2,...) - https://www.jetbrains.com/help/phpstorm/2017.1/live-template-variables.html#predefined_functions

  

如果尺寸为空,如何不渲染bigger-$SIZE$

不可能 - 实时模板没有conditionsloops

我可能只建议另一个enum包含所有bigger-XXX个选项,包括空选项(基本上 - 而不是bigger-$SIZE$$BIGGER-SIZE$)。

2017.2应该 GroovyScript support - 也许您可以code your own Live Template function或某些内容(see this link获取某些文档链接)...

  

如何检查$ICON_NAME$是否包含$ACE_DIRECTION$并切换它?

与上述相同:不可能 - 实时模板没有条件。

  

如果icon-on-$ACE_DIRECTION$为真,如何呈现bigger-$SIZE$$ACE_CLASS$

与上述相同:不可能 - 实时模板没有条件。

您可以创建多个不同场景的实时模板(当然,它们会有不同的缩写:例如fai表示一个案例,fai2表示另一个案例等。“