c3-linearization
Version:
A package that implements the C3 linearization algorithm
55 lines (38 loc) • 1.15 kB
Markdown
c3-linearization
================
[](https://travis-ci.org/federicobond/c3-linearization)

A package for doing Python-style C3-linearization in ECMAScript.
## Usage
```javascript
import { linearize } from 'c3-linearization'
linearize({
'A': ['B', 'C'],
'B': [],
'C': ['D'],
'D': []
})
// {
// 'A': ['A', 'B', 'C', 'D'],
// 'B': ['B'],
// 'C': ['C', 'D'],
// 'D': ['D']
// }
```
### Important notes
*Solidity* does linearization from right to left (you write the parents from most
base-like to most derived). This is exactly the reverse as in Python, where you
put the most derived classes to the left. To get correct results with Solidity,
set the `reverse` option to true.
```javascript
linearize('A': ['B', 'C'], { reverse: true })
```
*Python* is also a bit more strict in the cases that it accepts. For accurate
Python MRO, set the `python` option to true.
```javascript
linearize('A': ['B', 'C'], { python: true })
```
## Author
Federico Bond
## License
MIT