# Path: logviewer/parser.py
# def parse_log(fp, start=None):
#     def extract_time(match):
#         t = match.group('timestamp')
#         try:
#             # ISO 8601
#             timestamp = t.split('.')[0]
#             return datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%S')
#         except ValueError:
#             # RFC 2822
#             t = email.utils.parsedate(t)
#             if t is not None:
#             	t = time.mktime(t)
#             else:
#             	t = 0 # fail
#             return datetime.fromtimestamp(t)
# 
#     no = 0
#     for line in fp:
#         m = LINE_PATTERN.match(line)
#         if not m:
#             continue
# 
#         if 'PRIVMSG' in m.group('data'):
#             no += 1
# 
#             if start and no < start:
#                 continue
#             pm = PRIVMSG_PATTERN.match(m.group('data'))
#             if not pm:
#                 continue
# 
#             is_bot = not pm.group('nick')
#             pmm = PROXY_MSG_PATTERN.match(pm.group('text'))
#             if is_bot and pmm:
#                 nick = pmm.group('nick')
#                 text = pmm.group('text')
#                 is_bot = False
#             else:
#                 nick = pm.group('nick')
#                 text = pm.group('text')
# 
#             yield dict(type='privmsg', no=no,
#                 time=extract_time(m),
#                 nick=nick, text=text, is_bot=is_bot)
#         elif (m.group('dir') == '>>>' and start is None and
#               m.group('data').startswith('JOIN ') and
#               JOIN_PATTERN.match(m.group('data'))):
#             yield dict(type='join', time=extract_time(m), is_bot=True, no=-1)
# 
# Path: logviewer/util.py
# def irc_channels(config):


import time
import io
import glob
import os.path
from xml.sax.saxutils import escape
from flask import current_app
from logviewer.parser import parse_log
from logviewer import util



def unique_id(channel_id, dt, lineno):
    return '%d%s%08d' % (channel_id, dt.strftime('%Y%m%d'), lineno)


def messages(channel_id, channel, filename):
    with io.open(filename, encoding='utf-8', errors='replace') as fp:

# Path: logviewer/parser.py
# def parse_log(fp, start=None):
#     def extract_time(match):
#         t = match.group('timestamp')
#         try:
#             # ISO 8601
#             timestamp = t.split('.')[0]
#             return datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%S')
#         except ValueError:
#             # RFC 2822
#             t = email.utils.parsedate(t)
#             if t is not None:
#             	t = time.mktime(t)
#             else:
#             	t = 0 # fail
#             return datetime.fromtimestamp(t)
# 
#     no = 0
#     for line in fp:
#         m = LINE_PATTERN.match(line)
#         if not m:
#             continue
# 
#         if 'PRIVMSG' in m.group('data'):
#             no += 1
# 
#             if start and no < start:
#                 continue
#             pm = PRIVMSG_PATTERN.match(m.group('data'))
#             if not pm:
#                 continue
# 
#             is_bot = not pm.group('nick')
#             pmm = PROXY_MSG_PATTERN.match(pm.group('text'))
#             if is_bot and pmm:
#                 nick = pmm.group('nick')
#                 text = pmm.group('text')
#                 is_bot = False
#             else:
#                 nick = pm.group('nick')
#                 text = pm.group('text')
# 
#             yield dict(type='privmsg', no=no,
#                 time=extract_time(m),
#                 nick=nick, text=text, is_bot=is_bot)
#         elif (m.group('dir') == '>>>' and start is None and
#               m.group('data').startswith('JOIN ') and
#               JOIN_PATTERN.match(m.group('data'))):
#             yield dict(type='join', time=extract_time(m), is_bot=True, no=-1)
# 
# Path: logviewer/util.py
# def irc_channels(config):


# Path: logviewer/indexer.py
import time
import io
import glob
import os.path
from xml.sax.saxutils import escape
from flask import current_app
from logviewer.parser import parse_log
from logviewer import util




def unique_id(channel_id, dt, lineno):
    return '%d%s%08d' % (channel_id, dt.strftime('%Y%m%d'), lineno)


def messages(channel_id, channel, filename):
    with io.open(filename, encoding='utf-8', errors='replace') as fp:

        for msg in parse_log(fp):