 # @param {Object} object Section object with information
 # @param {String} key Name of the tag
 # @param {String} value Value to be set
-# @param {Object} options Tag definitions
+# @param {Object} options Tag definitions (default {})
 # @returns {Number|String} Return the length of the array or value
 #
-_setAttribute = (object, key, value, options) ->
+_setAttribute = (object, key, value, options = {}) ->
   if options.hasMultiple? and options.hasMultiple
     object[key] ?= []
     object[key].push value


      if key?
        if multiLineKey and not _(argObject).isEmpty()
          do (multiLineKey, currentSection, argObject, definitions) ->
            keys = multiLineKey.split "."
            _setAttribute(currentSection,
              keys[0],
              argObject,
              definitions[keys[0]]
            )

          argObject = {}


      # When key doesn't exist and multi line key is set,
      # add the value to the original key
      if multiLineKey and value?
        object = if _(argObject).isEmpty() then currentSection else argObject
        value += "  \n" if value
        _setAttribute(object,
          _getMultiLineKey(-1),
          value,
          definitions[_getMultiLineKey(-1)]
        )

    else
      if hasComment and not _(currentSection).isEmpty()

        # Check if there is remaining argObject to be cleared
        if multiLineKey and not _(argObject).isEmpty()
          _setAttribute(currentSection,
            _getMultiLineKey(0),
            argObject,
            definitions[_getMultiLineKey(0)]
          )

          multiLineKey = ""
          argObject    = {}
