Javascript 手写笔:生成CamelCase变量

Javascript 手写笔:生成CamelCase变量,javascript,css,stylus,Javascript,Css,Stylus,希望在新生成的手写笔变量中生成camelCase占位符(后续问题): smallMarginTop normalMarginTop 等等 如何实现这一点,无论是使用Javascript API还是在手写笔中本机实现?手写笔中没有大写的函数,但您可以使用JS API和内置函数轻松添加它。例如: 到大写.js module.exports = function() { return function(stylus) { stylus.define('to-upper-case', f

希望在新生成的手写笔变量中生成camelCase占位符(后续问题):

  • smallMarginTop
  • normalMarginTop
等等


如何实现这一点,无论是使用Javascript API还是在手写笔中本机实现?

手写笔中没有大写的
函数,但您可以使用JS API和内置函数轻松添加它。例如:

到大写.js

module.exports = function() {
  return function(stylus) {
    stylus.define('to-upper-case', function(node) {
      var nodeName = node.nodeName
        , val = node.string;

      if ('string' == nodeName) {
        return new stylus.nodes.String(val.toUpperCase());
      } else if ('ident' == nodeName) {
        return new stylus.nodes.Ident(val.toUpperCase());
      } else {
        throw new Error('to-upper-case accepts string or ident but got "' + nodeName + '"');
      }
    });
  };
};
测试.styl

use('to-upper-case.js')

properties = margin padding

proportions = mini small normal medium large

for property in properties
  for proportion, i in proportions
    define("$" + property + to-upper-case('' + substr(proportion, 0, 1)) + substr(proportion, 1), unit(i / 3, "em"))

不为我工作。手写笔只是在未定义变量时发出变量。使用与您提供的代码完全相同的代码,我获得的最大成功是
$marginMini
,但仍然是0。你能提供一个有效的例子吗?也许是一个代码笔?这里有一个要点,我遇到了一个不同的问题:我在尝试用本机手写笔包装函数时收到错误消息“to upper case accepts string或Identit but get function”:您会收到这个错误,因为手写笔的内置函数只有一个字母(例如,
s
p
)。您应该使用连接将它们转换为字符串:
转换为大写(“”+substr(string,0,1))+substr(string,1)
。或者,您可以修改插件代码以接受其工作的函数(return function.name.toUpperCase())。任何对该示例感兴趣的人都可以查看my new helpers.styl:
use('to-upper-case.js')

properties = margin padding

proportions = mini small normal medium large

for property in properties
  for proportion, i in proportions
    define("$" + property + to-upper-case('' + substr(proportion, 0, 1)) + substr(proportion, 1), unit(i / 3, "em"))