spreadtheword 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b676601f96251a4526b79a395e3a7b93a7d83e253d2f7897c2648cf1d529e4ad
4
- data.tar.gz: 983c4020d19cb4ffa9d2e2ce7f1cbc94454184301294306b548ff12b16eb94d9
3
+ metadata.gz: 7c84c6682b953b9bf945cac9fb09fbf03812b01fa172d4afdbeb3de3119a8802
4
+ data.tar.gz: a15f5544db92ab6963e67c2036b4c4d3ee12a1f77e242e837bb446b195a23a92
5
5
  SHA512:
6
- metadata.gz: ce7082cff5b1ec90ff41d0002af108010abdc2616f034c44bf6cc86715d72dfd90bd42c604ab15b5d55c9f81bf9367ac4967130832360664b1122a73f097565c
7
- data.tar.gz: 6c36e551114b0557c5c57182491835e4eac5ae1eb25669c42cd68b65fb26090b67d9bafd385bb8da692bf5b3e838f8cfef3c864e3fab1b80b9b3e155a71d3ecf
6
+ metadata.gz: e735dc363ec52272fc3b6268903efb6cb406b09d30f7c9eafaa8c8528828877bab2a5a592009747d273804f6a5de027c5f21ae7c206a462f357deb0d5adb5cea
7
+ data.tar.gz: 9d2f1abc60d3f7ae0feb2f08b1705f3a6acac897ad1d82d6e012b1b8fda6faaa906e8edd45d0517e5720cc826d10f8dbcf8500b219e213e7d13bf2d3ecddb1a3
@@ -1,3 +1,4 @@
1
+ require 'cgi'
1
2
  require 'uri'
2
3
  require 'ostruct'
3
4
  require 'active_support/all'
@@ -52,7 +53,7 @@ class Spreadtheword
52
53
  @getTranslation = lambda { |sentence|
53
54
  unless translateCache[sentence]
54
55
  @utils.say "Translating\n-> #{sentence}\n"
55
- translateCache[sentence] = @translate.translate(sentence, to: "en").text
56
+ translateCache[sentence] = CGI.unescapeHTML(@translate.translate(sentence, to: "en").text)
56
57
  @utils.say "<- #{translateCache[sentence]}\n"
57
58
  end
58
59
  translateCache[sentence]
@@ -86,7 +87,8 @@ class Spreadtheword
86
87
  def run!
87
88
  fetchAllLogs
88
89
  parseTopics
89
- writer = Spreadtheword::LaTeX.new(@title, @author, @topics, @getTranslation)
90
+ sortTopics
91
+ writer = Spreadtheword::LaTeX.new(@title, @author, @topics, @getTranslation, @gitlab)
90
92
  writer.write!
91
93
  end
92
94
 
@@ -116,7 +118,7 @@ class Spreadtheword
116
118
  end
117
119
 
118
120
  def fetchLogs
119
- cmd = %Q{git log --pretty=format:"%an__spreadtheword__%s"}
121
+ cmd = %Q{git log --pretty=format:"%an#{CONNECTOR}%s#{CONNECTOR}%H"}
120
122
  if @since
121
123
  cmd = %Q{#{cmd} #{@since}..master}
122
124
  end
@@ -132,6 +134,7 @@ class Spreadtheword
132
134
  OpenStruct.new.tap do |y|
133
135
  y.author = contents[0]
134
136
  y.origMsg = contents[1]
137
+ y.shaHash = contents[2]
135
138
  if @translate && y.origMsg =~ NONASCII
136
139
  y.msg = @getTranslation.call(contents[1])
137
140
  else
@@ -197,6 +200,17 @@ class Spreadtheword
197
200
  end
198
201
  end
199
202
 
203
+ def sortTopics
204
+ topicsH = @topics
205
+ @topics = []
206
+ topicsH.each do |k,v|
207
+ @topics << [k,v]
208
+ end
209
+ @topics.sort! do |x,y|
210
+ y[1].size <=> x[1].size
211
+ end
212
+ end
213
+
200
214
  def gitUserName
201
215
  `git config --get user.name`.to_s.strip
202
216
  end
@@ -1,11 +1,12 @@
1
1
  require 'nokogiri'
2
2
 
3
3
  class Spreadtheword::LaTeX
4
- def initialize title, author, topics, getTranslation
4
+ def initialize title, author, topics, getTranslation, gitlab
5
5
  @title = title
6
6
  @author = author
7
7
  @topics = topics
8
8
  @getTranslation = getTranslation
9
+ @gitlab = gitlab
9
10
  end
10
11
 
11
12
  def write!
@@ -47,7 +48,9 @@ class Spreadtheword::LaTeX
47
48
 
48
49
  def sections
49
50
  ret = ''
50
- @topics.each do |k,v|
51
+ @topics.each do |topic|
52
+ k=topic[0]
53
+ v=topic[1]
51
54
  next if k.nil?
52
55
  first = v[0]
53
56
  title = k
@@ -63,7 +66,7 @@ class Spreadtheword::LaTeX
63
66
  url = first[:payload][:spreadthewordPermalink]
64
67
  end
65
68
  ret += %Q_
66
- \\section{#{escape title}}
69
+ \\section{#{escape title.titleize}}
67
70
 
68
71
  \\subsection{Background}
69
72
 
@@ -71,6 +74,8 @@ class Spreadtheword::LaTeX
71
74
  _
72
75
 
73
76
  if description.present?
77
+ description.strip!
78
+ description[0] = description[0].upcase
74
79
  ret += %Q_
75
80
  \\subsection{Description}
76
81
 
@@ -84,11 +89,12 @@ _
84
89
  \\newpage
85
90
  _
86
91
  end
87
- if @topics[nil]
92
+ topicNil = @topics.find{|x| x[0].nil?}
93
+ if topicNil
88
94
  ret += %Q_
89
95
  \\section{Others}
90
96
  _
91
- ret += printDevelopers(@topics[nil])
97
+ ret += printDevelopers(topicNil[1])
92
98
  end
93
99
  ret
94
100
  end
@@ -104,26 +110,46 @@ _
104
110
 
105
111
  \\begin{enumerate}
106
112
  _
107
- developers.each do |k,v|
108
- ret += %Q_
109
- \\item #{escape k} ($#{v.size*100 / values.size}\\%$)
110
- _
113
+ devArr = developers.map do |k,v|
114
+ [
115
+ v.size, %Q_
116
+ \\item #{escape k.titleize} ($#{format('%.2f', v.size*100.0 / values.size)}\\%$)
117
+ _, k, v
118
+ ]
119
+ end
120
+ devArr.sort! do |x,y|
121
+ y[0] <=> x[0]
122
+ end
123
+ devArr.each do |x|
124
+ ret += x[1]
111
125
  end
112
126
  ret += %Q_
113
127
  \\end{enumerate}
114
128
  _
115
- developers.each do |k,v|
129
+ devArr.each do |dev|
130
+ k = dev[2]
131
+ v = dev[3]
116
132
  ret += %Q_
117
- \\subsection{#{escape k}'s Commit Messages}
133
+ \\subsection{#{escape k.titleize}'s Commit Messages}
118
134
  \\begin{enumerate}
119
135
  _
136
+ reverseH = {}
120
137
  uniqM = v.map do |x|
121
- x[:commit].msg
122
- end.uniq
123
- uniqM.each do |x|
124
- ret += %Q_
125
- \\item #{escape x}
126
- _
138
+ msg = x[:commit].msg.to_s.strip.humanize
139
+ reverseH[msg] = x
140
+ msg
141
+ end.uniq.sort
142
+ uniqM.each do |msg|
143
+ x = reverseH[msg]
144
+ if @gitlab
145
+ ret += %Q_
146
+ \\item \\href{#{@gitlab.scheme}://#{@gitlab.host}/#{x[:commit].gitlabProject[:namespace]}/#{x[:commit].gitlabProject[:project]}/commit/#{x[:commit].shaHash}}{#{escape msg}}
147
+ _
148
+ else
149
+ ret += %Q_
150
+ \\item #{escape msg}
151
+ _
152
+ end
127
153
  end
128
154
  ret += %Q_
129
155
  \\end{enumerate}
@@ -1,3 +1,3 @@
1
1
  class Spreadtheword
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spreadtheword
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Minqi Pan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-01 00:00:00.000000000 Z
11
+ date: 2018-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gitlab