import color, mode from point import Point from lex import Grammar, PatternRule, RegionRule class MetadataGrammar(Grammar): rules = [ PatternRule(r'username', r'[a-zA-Z0-9_]+'), ] class BlameGrammar(Grammar): rules = [ RegionRule(r'metadata', r'^[0-9\.]+', MetadataGrammar, r'(?:[0-9]{4}-[0-9]{2}-[0-9]{2}|[0-9]{2}-[A-Z][a-z]{2}-[0-9]{2})'), PatternRule(r'data', r'.+$'), ] class Blame(mode.Fundamental): modename = 'Blame' grammar = BlameGrammar colors = { 'metadata.start': ('blue', 'default', 'bold'), 'metadata.username': ('cyan', 'default', 'bold'), 'metadata.end': ('green', 'default', 'bold'), } install = Blame.install