如何在手写笔中创建包装函数?

时间:2015-10-19 10:13:31

标签: stylus

我想创建一个在手写笔中包装另一个内置函数的函数。类似的东西:

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 code:

<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
  • express 4.13.3

1 个答案:

答案 0 :(得分:1)

好吧,这段代码适合我(尝试删除函数定义中(之前的空格):

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

body
  color: inHover(#c00, 10)

使用Stylus 0.52.4编译为:

body {
  color: #900;
}