2015-10-19 68 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