# transposer

> Variable transposition from dataKeys

Latest version **0.3.5** (published 2016-04-23) · 0 weekly downloads

## Install

```sh
npm install transposer
pnpm add transposer
yarn add transposer
bun add transposer
```

## 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.3.5 |
| Published | 2016-04-23 |
| First published | 2015-04-18 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | nfour |
| Maintainers | nfour |

## Links

- npm: https://www.npmjs.com/package/transposer
- Repository: https://github.com/nfour/transposer
- Homepage: https://github.com/nfour/transposer#readme
- Issues: https://github.com/nfour/transposer/issues
- npm.io page: https://npm.io/package/transposer

## Dependencies (1)

- [lutils-typeof](https://npm.io/package/lutils-typeof.md) ~0.1.0

## Recent versions

- 0.3.5 (latest) — 2016-04-23
- 0.3.4 — 2016-04-23
- 0.3.3 — 2016-04-23
- 0.3.1 — 2015-04-21
- 0.3.0 — 2015-04-20
- 0.2.8 — 2015-04-20
- 0.2.7 — 2015-04-20
- 0.2.5 — 2015-04-19
- 0.2.4 — 2015-04-19
- 0.2.3 — 2015-04-19
- 0.2.2 — 2015-04-19
- 0.2.1 — 2015-04-19
- 0.2.0 — 2015-04-19
- 0.1.1 — 2015-04-18
- 0.1.0 — 2015-04-18

## README

# Trasposer
A small and fast *"dataKey"* transposer. 

This module turns `here.is[2].some["!data!"]` into
```js
{
	here: {
		is: [
			, , { some: { "!data!": 'a value' } }
		]
	}
}
```

The dataKey syntax is just javascript.  
You can even start the dataKey with an array index to create an array.
```js
new Transposer().transpose( '[1].test', 'test' ) // returns [ , { test: 'test' } ]
```

One usecase of many:
```html
<input name="some.data[0].here" value="1" />
```

#### Install
`npm install transposer`

#### class Transposer( ?data? )
```js
Transposer = require('transposer')
transposer = new Transposer({ some: { data: 1 } })

transposer.get('some.data') // returns 1
transposer.set('some.data.here', 2)
transposer.get('some.data.here') // returns 2
transposer.data.some.data.here // returns 2
```

See `./Transposer.js` for parameter information.

#### .transpose( dataKey, value )
Turns `data.key[1].c` into its represented data structure.
Sets the last key in the string to a value.

Returns null on an invalid dataKey.

```js
new Transposer().transpose('some.data', 100) // returns { some: { data: 100 } }

// or

{ transpose } = require('transposer').prototype
transpose('some.data', 100) // returns { some: { data: 100 } }
```

#### .transposeAll( object )
Transposes all properties of `object`, modifying `object`.
Any dataKey is deleted from the object in place of the transposed parent key.

```js
data = {
	'name[0]': 'Jim'
	'name[1]': 'Bob'
	type: 'person'
}

transposer.transposeAll(data)

data // returns { name: [ 'Jim', 'Bob' ], type: 'person' }
```

#### .set( dataKey or transposedData, value)
Sets a value in `this.data`.

```js
// Both do the same thing
transposer.set('some.data', 1)
transposer.set({ some: { data: 1} })
transposer.data // returns { some: { data: 1 } }
```

#### .get( dataKey or transposedData )
Finds a value in `this.data`.

```js
transposer = new Transposer({ some: { data: 500 } })
// Both yield the same thing (The value is ignored)
transposer.get('some.data') // returns 500
transposer.get({ some: { data: null } })// returns 500
```

#### .merge( obj1, obj2, depth = 16, overwrite = false )
Merges obj2 into obj1, optionally overwriting properties.
Tries to always maintain an object's reference in obj1 unless `overwritten` is `true`.

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