2015-10-19 76 views
0

我想创建一个函数,在触控笔中包装另一个内置函数。喜欢的东西:如何在手写笔中创建包装功能?

myFunction(color, amount) 
    darken(color, amount) 

我想为一个项目中创建多个主题,并且在一些主题是黑暗的,有些是光,所以hover我想lighen()background-color和其他darken(),并使用myFunction()在所有主题中通用的文件中,仅改变每个主题中的函数定义。

我想知道的是:它有可能吗?或者如果在触笔中有任何其他的函数多态机制,可以动态改变函数定义的任何方法。

我曾尝试:

  • 首先我想简单地包装,如:

    inHover (color, amount) 
        darken(color, amount) 
    

    但我得到:

    cmd.exe /D /C E:/node/nodist/bin/stylus.cmd definitions.styl 
    E:\node\nodist\bin\node_modules\stylus\bin\stylus:662 
           throw err; 
          ^
    
    RangeError: definitions.styl:20:10 
        16| 
        17| /* Functions */ 
        18| 
        19| inHover (color, amount) 
        20| darken(color, amount) 
    ----------------^ 
        21| 
    
    Maximum call stack size exceeded 
        at darken() (E:/node/nodist/bin/node_modules/stylus/lib/functions/index.styl:128:21) 
        at "inHover (color" (definitions.styl:18:16) 
    
        at Evaluator.visit (E:\node\nodist\bin\node_modules\stylus\lib\visitor\evaluator.js:162:34) 
        at Evaluator.visitIdent (E:\node\nodist\bin\node_modules\stylus\lib\visitor\evaluator.js:533:23) 
        at Evaluator.Visitor.visit (E:\node\nodist\bin\node_modules\stylus\lib\visitor\index.js:28:40) 
        at Evaluator.visit (E:\node\nodist\bin\node_modules\stylus\lib\visitor\evaluator.js:156:18) 
        at Evaluator.visitExpression (E:\node\nodist\bin\node_modules\stylus\lib\visitor\evaluator.js:630:26) 
        at Evaluator.Visitor.visit (E:\node\nodist\bin\node_modules\stylus\lib\visitor\index.js:28:40) 
        at Evaluator.visit (E:\node\nodist\bin\node_modules\stylus\lib\visitor\evaluator.js:156:18) 
        at Evaluator.visitIdent (E:\node\nodist\bin\node_modules\stylus\lib\visitor\evaluator.js:533:23) 
        at Evaluator.Visitor.visit (E:\node\nodist\bin\node_modules\stylus\lib\visitor\index.js:28:40) 
        at Evaluator.visit (E:\node\nodist\bin\node_modules\stylus\lib\visitor\evaluator.js:156:18) 
    
  • 我不能使用的块,因为他们不接受论据。

我的代码:

HTML代码:

<html> 
    <head> 
     <link href='/css/themes/my_theme/index.css' rel='styleSheet'/> 
    <body ng-app='app'> 

     <!-- Body defination --> 

    </body> 
</html> 

/css/themes/my_theme/index.styl文件:

@import 'definitions.styl' 

@import '../../site.styl' /* All the common css styles*/ 

myFunction(color, amount) 
    darken(color, amount) 

/css/themes/my_theme/definitions.styl文件:

/* Color definitions */ 
colorPrimary = red 
colorBackground = green 

/* Functions */ 
inHover (color, amount) 
    darken(color, amount) 

我用什么:

  • 笔0.52.4
  • 节点4.1.1
  • 表达4.13.3

回答

1

那么这个代码对我的作品(试删除功能定义中的(之前的空格):

inHover(color, amount) 
    darken(color, amount) 

body 
    color: inHover(#c00, 10) 

与手写笔0.52.4来编译:

body { 
    color: #900; 
} 
+0

即使我刚刚试了一下,隔离,并且它的工作,这似乎问题是其他地方。 – Musa