Gentoo Archives: gentoo-commits

From: Slava Bacherikov <slava@××××××××××××××.ua>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/libs/package_info/generic_metadata/
Date: Thu, 02 Aug 2012 22:45:38
Message-Id: 1343947096.e0dc774175b38f254b348ec4cf25b8aaaa34adc3.bacher09@gentoo
1 commit: e0dc774175b38f254b348ec4cf25b8aaaa34adc3
2 Author: Slava Bacherikov <slava <AT> bacher09 <DOT> org>
3 AuthorDate: Thu Aug 2 22:38:16 2012 +0000
4 Commit: Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
5 CommitDate: Thu Aug 2 22:38:16 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=e0dc7741
7
8 More right latest changelog message detection
9
10 ---
11 .../generic_metadata/changelog_highlight.py | 63 ++++++++++++++++++++
12 1 files changed, 63 insertions(+), 0 deletions(-)
13
14 diff --git a/gpackages/libs/package_info/generic_metadata/changelog_highlight.py b/gpackages/libs/package_info/generic_metadata/changelog_highlight.py
15 index d0b683e..5ccbd5c 100644
16 --- a/gpackages/libs/package_info/generic_metadata/changelog_highlight.py
17 +++ b/gpackages/libs/package_info/generic_metadata/changelog_highlight.py
18 @@ -5,6 +5,7 @@ from pygments.style import Style
19 from pygments.token import *
20 from pygments import highlight
21 import re
22 +from collections import deque
23
24 DATE_RE = r'\d\d? [A-Z][a-z]{2} \d{4}'
25 EMAIL_RE = r'[\w\.\-\+]+@(?:[\w\-]+\.)+\w+'
26 @@ -140,6 +141,7 @@ class ChangelogHtmlFormater(HtmlFormatter):
27 last = self.token_decorate(ttype, parts[-1])
28 if line and last:
29 if lspan != cspan:
30 +
31 line += (lspan and '</span>') + cspan + last
32 lspan = cspan
33 else:
34 @@ -190,3 +192,64 @@ def changelog_termial_highlight(text):
35 def changelog_style_css():
36 f = ChangelogHtmlFormater(style = ChangelogStyle)
37 return f.get_style_defs()
38 +
39 +def group_tokens(text):
40 + c = ChangelogLexer()
41 + queue = deque()
42 + group_type = None
43 + group = []
44 + for token, value in c.get_tokens(text):
45 + queue.append((token, value))
46 +
47 + if len(queue)>6:
48 + token_q, value_q = queue[0]
49 + if token_q == Operator and value_q == '*':
50 + yield (group_type, group)
51 + group_type = 'version'
52 + group = []
53 + elif token_q == Whitespace:
54 + token2_q, value2_q = queue[1]
55 + if token2_q == Date:
56 + token3_q, value3_q = queue[2]
57 + if token3_q == Punctuation:
58 + yield (group_type, group)
59 + group_type = 'message'
60 + group = []
61 +
62 + group.append(queue.popleft())
63 +
64 + yield (group_type, group + list(queue))
65 +
66 +def latest_message_group(text):
67 + for group_type, group in group_tokens(text):
68 + if group_type == 'message':
69 + return group
70 +
71 +def latest_group_messages_group(text):
72 + groups = []
73 + for group_type, group in group_tokens(text):
74 + if group_type == 'version':
75 + groups.append((group_type, group))
76 + if group_type == 'message':
77 + groups.append((group_type, group))
78 + return groups
79 +
80 +def tokensgroup_to_toknes(groups):
81 + tk = []
82 + for group_type, group in groups:
83 + tk += group
84 + return tk
85 +
86 +def tokens_to_text(lex):
87 + mystr = ''
88 + for token, value in lex:
89 + mystr += value
90 + return mystr
91 +
92 +def latest_message(text):
93 + return tokens_to_text(latest_message_group(text))
94 +
95 +def latest_group_messages(text):
96 + groups = latest_group_messages_group(text)
97 + return tokens_to_text(tokensgroup_to_toknes(groups))
98 +