slara / generator-reveal

Yeoman generator for Reveal.js
MIT License
429 stars 52 forks source link

numeric slide names lead to exception #65

Closed okoetter closed 9 years ago

okoetter commented 9 years ago

If I want to create a slide with a numeric name I get an exception,

e.g. yo reveal:slide "2"


C:\Program Files\nodejs\node_modules\generator-reveal\node_modules\yeoman-generator\node_modules\nopt\lib\nopt.js:239
    if (arg.match(/^-{2,}$/)) {
            ^
TypeError: Object 2 has no method 'match'
    at parse (C:\Program Files\nodejs\node_modules\generator-reveal\node_modules\yeoman-generator\node_modules\nopt\lib\nopt.js:239:13)
    at nopt (C:\Program Files\nodejs\node_modules\generator-reveal\node_modules\yeoman-generator\node_modules\nopt\lib\nopt.js:40:3)
    at SlideGenerator.Base.parseOptions (C:\Program Files\nodejs\node_modules\generator-reveal\node_modules\yeoman-generator\lib\base.js:331:10)
    at SlideGenerator.option (C:\Program Files\nodejs\node_modules\generator-reveal\node_modules\yeoman-generator\lib\base.js:262:8)
    at SlideGenerator.Base (C:\Program Files\nodejs\node_modules\generator-reveal\node_modules\yeoman-generator\lib\base.js:85:8)
    at SlideGenerator.module.exports.Base.extend.constructor (C:\Program Files\nodejs\node_modules\generator-reveal\node_modules\yeoman-generator\lib\named-base.js:19:10)
    at new SlideGenerator (C:\Program Files\nodejs\node_modules\generator-reveal\slide\index.js:17:51)
    at Environment.instantiate (C:\Program Files\nodejs\node_modules\yo\node_modules\yeoman-environment\lib\environment.js:281:10)
    at Environment.create (C:\Program Files\nodejs\node_modules\yo\node_modules\yeoman-environment\lib\environment.js:258:15)
    at Environment.run (C:\Program Files\nodejs\node_modules\yo\node_modules\yeoman-environment\lib\environment.js:317:24)
carlos-soto commented 9 years ago

I'm getting the exact same thing... how come nobody thought of numeric inputs?

carlos-soto commented 9 years ago

@okoetter. Fixed it on the requiring file, just change the prototype of Number object to include the match and charAt functions... Add this before including the module:

Number.prototype.match = String.prototype.match; Number.prototype.charAt = String.prototype.charAt; var reveal = require('generator-reveal');

Hope it works for you.

janraasch commented 9 years ago

Seems like this is could be a generic yeoman-generator problem. Have you run into this with other subgenerators, i.e.

yo generator-name:subgenerator-name "2"

?

carlos-soto commented 9 years ago

Yup. It's definitely a yeoman generator problem as the error occurs in one of their dependencies (nopt). I got the error while I was building my own generator. Their logic looks for "--" in the arguments to check for options (ex: "--debug") and since the Number Type doesn't have the match and charAt functions the code breaks. Adding those functions to the prototype of Number fixes it. Not the ideal fix, but I didn't want to edit the nopt module since we don't store the node_modules on our repository. Peace out.

janraasch commented 9 years ago

Okay, cool. Could you open an issue on their end? I'll close this one.