$ = require('jquery')
_ = require('lodash')
Binding = require('./mixins/binding')
getDeep = require('./util/get-deep')
setDeep = require('./util/set-deep')

class Data extends Binding

  constructor: (element) ->
    data = $(element).data()
    delete data.burger
    @__data = data
    super()

  get: (attrs) ->
    split = attrs?.split?('.')
    getDeep(split, @__data)

  set: (attrs, value) ->
    split = attrs.split('.')

    clone = _.cloneDeep(@__data)
    @__data = setDeep(split, value, clone)
    @emit(attrs, [value, @])
    @__data

  isEqual: (dataObj) ->
    @get() == dataObj.get()

module.exports = Data
