let s:unite_source = {
            \ 'name': 'unicodeSelect',
            \ 'hooks': {},
            \ 'action_table': {'*': {}},
            \ }

function! s:unite_source.gather_candidates(args, context)
    let codeset = a:context.codeset
    let filepath = g:unite_unicode_data_path . codeset . ".txt"

    let unicode = readfile(filepath)

    return map(unicode, '{
                \ "word": printf("%s", v:val),
                \ "source": "unicodeSelect",
                \ "kind": "unicodeSelect",
                \ }')
endfunction

function! unite#sources#unicodeSelect#define()
    return s:unite_source
endfunction