用sublime构建haml到html

时间:2014-08-18 06:45:14

标签: sublimetext2 haml

我想在sublime文本2中构建haml而不切换到iterm。所以我为sublime构建了一个简单的插件,就像这样。

import os
import sublime, sublime_plugin

class HamlToHtmlCommand(sublime_plugin.TextCommand):
    def run(self,edit):
        source = self.view.file_name()
        filefullname = source.split('/')[-1]
        filename = filefullname.split('.')[0]
        target = "/".join(source.split('/')[0:-1])
        com = "haml " + source + " > " + target + "/" + filename +'.html'
        os.system(com)


    def is_enabled(self):
        return True

但问题是,当我构建sublime时,目标html文件为空。 例如,“com”是“haml /Users/latpaw/login_register/login.haml /Users/latpaw/login_register/login.html”。但是如果在python cli中执行os.system(com),那就是对了 那么这里真正发生了什么

1 个答案:

答案 0 :(得分:0)

顺便说一句,我真的不认识Haml,所以一开始我只是试图修复你的代码。但我认为你可以直接从ST建立Haml,转到Tools→Build⌥B)。或者创建一个新的构建系统Tools→Build Systems→New build system。显然,您可以使用以下变量:

  • $ file当前文件的完整路径,例如:例如,C:\ Files \ Chapter1.txt。
  • $ file_path当前文件的目录,例如: g。,C:\ Files。
  • $ file_name当前文件的名称部分,例如: g。,Chapter1.txt。
  • $ file_extension当前文件的扩展部分,例如: g。,txt。
  • $ file_base_name当前文件的名称部分,例如: g。,文件。
  • $ packages Packages文件夹的完整路径。
  • $ project当前项目文件的完整路径。
  • $ project_path当前项目文件的目录。
  • $ project_name当前项目文件的名称部分。
  • $ project_extension当前项目文件的扩展部分。
  • $ project_base_name当前项目文件的唯一名称部分。

显然您遇到路径转义问题。当我尝试的时候,你必须有一个位于文件路径某处的空间。或者您可能知道像cat ~/Sublime Text/test这样的命令效果不佳。你可以:

  • cat ~/Sublime\ Text/test
  • cat ~/'Sublime Text/test'

我会建议晚些时候这样做:

com = "haml '" + source + "' > '" + target + "/" + filename +"'.html"

PS:可以说,更好的解决方案是在定义源,目标和文件名时直接添加这些单引号。