 
   document = window.document
 
-  $.egen = $.eGen = (queryTokens, attrs, innerContents) ->
+  $.egen = $.eGen = (queryTokens, attrs, innerContents, raw) ->
     tagName = id = null
 
     # generate element

        when ' '
          # nested element with tag-name
          queryTokens.unshift token[2]
          innerContents = $.egen(queryTokens, null, innerContents)
          queryTokens = []
          continue
        else
          throw "The query token provided ('#{tokenStr}') is not a valid token type."

    # set attributes
    $element.attr attrs if attrs

    # set inner contents
    if innerContents
      if typeof innerContents is 'string'
        # disable html code
        $element.text(innerContents)
      else
        $element.append(innerContents)

    $element

  $.fn.egen = $.fn.eGen = (queryTokens, attrs, innerContents) ->
    @append $.egen(queryTokens, attrs, innerContents)

    else
      if typeof queryTokens is 'string'
        queryTokens = queryTokens.split /(?![\w\-]+|$)/
      else if not raw
        queryTokens = queryTokens.concat() # duplicate
      if queryTokens[0] and /^\w/.test queryTokens[0]
        tagName = queryTokens.shift()
      else
        tagName = 'div'
    element = document.createElement tagName
    $element = $(element) unless raw

    # set attributes
    $element.attr attrs if not raw and attrs

    # setup id, class
    while queryTokens.length
