Giter Site home page Giter Site logo

Comments (4)

wooorm avatar wooorm commented on August 16, 2024

Hmm interesting. Wonder why classes don’t make methods enumerable.

Your code, however:

const isConstructorFunction = (value) => Boolean(value && value.prototype && value.prototype.constructor);

Will accept any function. isConstructorFunction(function () {}) // => true

from unified.

mems avatar mems commented on August 16, 2024

Yes right, because function(){} could be used as constructor. But () => {} couldn't.

I think the only way to do handle that is to replace:

unified/index.js

Lines 270 to 274 in 612d8dd

if (newable(Parser)) {
return new Parser(String(file), file).parse()
}
return Parser(String(file), file) // eslint-disable-line new-cap

with:

let result = null;

if (newable(Parser)) {
  // "Parser" is a class or a function (but not a generator nor an arrow function)
  result = new Parser(String(file), file)
  
  if (result.hasOwnProperty("parse")) {
    result = result.parse()
  }
} else {
  result = Parser(String(file), file)
}
 
return result

Use a simple function a constructor isn't an issue :

new function(){return ["test"]} // > Array [ "test" ]

from unified.

wooorm avatar wooorm commented on August 16, 2024

I think that works, and even simpler: the else statement isn't needed from what it seems. Could you try a PR for this?

from unified.

wooorm avatar wooorm commented on August 16, 2024

Unfortunately this will not work for compiler. Because when compiler is a normal function, it should return a string, and strings can’t be returned from a constructor.

from unified.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.