       catch error
         ""
 
-    # 高亮关键字
-    #
-    # @param li [String] HTML String. 经过渲染后的模板
-    # @param query [String] 匹配得到的关键字
-    #
-    # @return [String] 高亮处理后的 HTML 字符串
+    # Hightlight the `matched query` string.
+    #
+    # @param li [String] HTML String after eval.
+    # @param query [String] matched query.
+    #
+    # @return [String] hightlighted string.
     highlighter: (li, query) ->
       return li if not query
       li.replace new RegExp(">\\s*(\\w*)(" + query.replace("+","\\+") + ")(\\w*)\\s*<", 'ig'), (str,$1, $2, $3) ->
           '> '+$1+'<strong>' + $2 + '</strong>'+$3+' <'
 
-    # 选择某列表项的动作
-    #
-    # @param $li [jQuery Object] 选中的列表项目
+    # What to do after use choose a item.
+    #
+    # @param $li [jQuery Object] Chosen item
     selector: ($li) ->
       this.replace_str($li.data("value") || "") if $li.length > 0
 
 
-  # At.js 对数据操作(搜索, 匹配, 渲染) 的主控中心
+  # At.js central contoller(searching, matching, evaluating and rendering.)
   class Controller
 
-    # @param inputor [HTML DOM Object] 输入框
+    # @param inputor [HTML DOM Object] `input` or `textarea`
     constructor: (inputor) ->
       @settings     = {}
       @pos          = 0

          item = {name:item}
        return item

    # 匹配当前标记后面字符串的匹配规则
    #
    # @param flag [String] 当前标记 ("@", etc)
    # @param subtext [String] 输入框从开始到插入符号前的字符串
    #
    # @return [String] 匹配后得到的字符串
    matcher: (flag, subtext) ->
      regexp = new RegExp flag+'([A-Za-z0-9_\+\-]*)$|'+flag+'([^\\x00-\\xff]*)$','gi'
      match = regexp.exec subtext


    # ---------------------

    # Filter data by matched string.
    #
    # @param query [String] Matched string.
    # @param data [Array] data list
    # @param search_key [String] key word for seaching.
    #
    # @return [Array] result data.
    filter: (query, data, search_key) ->
      $.map data, (item,i) =>
        name = if $.isPlainObject(item) then item[search_key] else item
        item if name.toLowerCase().indexOf(query) >= 0

    # When `data` is string type, At.js using it as a URL to lanuch a Ajax request.
    #
    # @param params [Hash] Query for Ajax. {q: query, limit: 5}
    # @param url [String] URL to request data.
    # @param render_view [Function] render page callback.
    remote_filter: (params, url, render_view) ->
      $.ajax url,
        data: params
        success: (data) ->
          render_view(data)

    # Sorter data of course.
    #
    # @param query [String] matched string
    # @param items [Array] data that was refactored
    # @param search_key [String] key word to search
    #
    # @return [Array] sorted data
    sorter: (query, items, search_key) ->
      if !query
        return items.sort (a, b) ->
