# call-signature

> Parse / Generate Method Signatures

Latest version **0.0.2** (published 2015-11-23) · MIT license · 0 weekly downloads

## Install

```sh
npm install call-signature
pnpm add call-signature
yarn add call-signature
bun add call-signature
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.2 |
| Published | 2015-11-23 |
| First published | 2015-11-23 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.10.0 |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 11 |
| Author | James Talmage |
| Maintainers | jamestalmage, twada |

## Links

- npm: https://www.npmjs.com/package/call-signature
- Repository: https://github.com/jamestalmage/call-signature
- Homepage: https://github.com/jamestalmage/call-signature#readme
- Issues: https://github.com/jamestalmage/call-signature/issues
- npm.io page: https://npm.io/package/call-signature

## Recent versions

- 0.0.2 (latest) — 2015-11-23
- 0.0.1 — 2015-11-23

## README

# call-signature [![Build Status](https://travis-ci.org/jamestalmage/call-signature.svg?branch=master)](https://travis-ci.org/jamestalmage/call-signature)

> Parse / Generate Method Signatures


## Install

```
$ npm install --save call-signature
```


## Usage

```js
var signature = require('call-signature');

// parse a call signature definition
var parsed = signature.parse('t.equal(expected, actual, [message])');

console.log(parsed);
/* =>  
       {
         callee: {
           type: 'MemberExpression',
           object: 't',
           member: 'equal'
         },
         args: [
           {
             name: 'actual',
             optional: false
           },
           {
             name: 'expected',
             optional: false
           },
           {
             name: 'message',
             optional: true
           }
         ]
       }
*/


// Create signature definitions from the parsed object.
signature.generate(parsed);

//=> "t.equal(expected, actual, [message])"
```


## API

### callSignature.parse(input)

#### input

Type: `string`

A string that matches the call signature spec:

`object.member(required_arg1, required_arg2, [optional_arg1])`
`name(required_arg1, required_arg2, [optional_arg1])`

`object`, `member` and `name` can be any identifiers, but currently the callee must be a `MemberExpression` or an `Identifier` (that requirement may loosen in the future).
 
You can have any number of arguments. Optional arguments are denoted by placing the argument name between square `[`brackets`]`.

#### returns

A simple JS Object with three properties `callee` and `args`.

`callee` will be an object containing `type` property and its corresponding properties.

when matched against `MemberExpression` like `foo.bar(baz)`, `object` and `member` will be strings.

    callee: {
      type: 'MemberExpression',
      object: 'foo',
      member: 'bar'
    }

when matched against `Identifier` like `foo(baz)`, `name` will be string.

    callee: {
      type: 'Identifier',
      name: 'foo'
    }

`args` will be an array. Each item of the array will have two properties `name`, and `optional`. 
 `name` will be the `string` name of the arg. `optional` will be a boolean value.

### callSignature.generate(parsed)

#### input

Type: `Object`

Must have the same definition as the return value from the `parse` method.

#### returns

A `string` signature definition that will parse to exactly the provided input.

## Related

- [escallmatch](https://www.npmjs.com/package/escallmatch) - Similar, with compatible string definitions to this library. Can be used to match AST Nodes to parsed signatures.

## License

MIT © [James Talmage](http://github.com/jamestalmage)

---
_Source: https://npm.io/package/call-signature · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
