wc 0.98.2 → 0.99.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +14 -0
- data/Gemfile.lock +30 -0
- data/README.rdoc +11 -15
- data/Rakefile +34 -49
- data/VERSION +1 -1
- data/doc/String.html +372 -0
- data/doc/Wc.html +93 -0
- data/doc/Wc/Engine.html +289 -0
- data/doc/Wc/Reader.html +253 -0
- data/doc/_index.html +138 -0
- data/doc/class_list.html +36 -0
- data/doc/classes/Wc.html +279 -0
- data/doc/classes/Wc.src/M000001.html +38 -0
- data/doc/classes/Wc.src/M000002.html +26 -0
- data/doc/classes/Wc.src/M000003.html +74 -0
- data/doc/classes/Wc.src/M000004.html +29 -0
- data/doc/classes/Wc.src/M000005.html +25 -0
- data/doc/classes/Wc.src/M000006.html +24 -0
- data/doc/created.rid +1 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +53 -0
- data/doc/css/style.css +318 -0
- data/doc/file.README.html +107 -0
- data/doc/file_list.html +38 -0
- data/doc/files/lib/wc_rb.html +101 -0
- data/doc/fr_class_index.html +27 -0
- data/doc/fr_file_index.html +27 -0
- data/doc/fr_method_index.html +32 -0
- data/doc/frames.html +13 -0
- data/doc/index.html +107 -0
- data/doc/js/app.js +203 -0
- data/doc/js/full_list.js +149 -0
- data/doc/js/jquery.js +16 -0
- data/doc/method_list.html +99 -0
- data/doc/rdoc-style.css +208 -0
- data/doc/top-level-namespace.html +90 -0
- data/lib/wc.rb +21 -128
- data/lib/wc/engine.rb +18 -0
- data/lib/wc/reader.rb +28 -0
- data/spec/spec_helper.rb +12 -0
- data/spec/wc_spec.rb +10 -0
- data/wc.gemspec +65 -30
- metadata +111 -82
- data/.gitignore +0 -21
- data/test/helper.rb +0 -10
- data/test/test_wc.rb +0 -7
data/doc/rdoc-style.css
ADDED
@@ -0,0 +1,208 @@
|
|
1
|
+
|
2
|
+
body {
|
3
|
+
font-family: Verdana,Arial,Helvetica,sans-serif;
|
4
|
+
font-size: 90%;
|
5
|
+
margin: 0;
|
6
|
+
margin-left: 40px;
|
7
|
+
padding: 0;
|
8
|
+
background: white;
|
9
|
+
}
|
10
|
+
|
11
|
+
h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
|
12
|
+
h1 { font-size: 150%; }
|
13
|
+
h2,h3,h4 { margin-top: 1em; }
|
14
|
+
|
15
|
+
a { background: #eef; color: #039; text-decoration: none; }
|
16
|
+
a:hover { background: #039; color: #eef; }
|
17
|
+
|
18
|
+
/* Override the base stylesheet's Anchor inside a table cell */
|
19
|
+
td > a {
|
20
|
+
background: transparent;
|
21
|
+
color: #039;
|
22
|
+
text-decoration: none;
|
23
|
+
}
|
24
|
+
|
25
|
+
/* and inside a section title */
|
26
|
+
.section-title > a {
|
27
|
+
background: transparent;
|
28
|
+
color: #eee;
|
29
|
+
text-decoration: none;
|
30
|
+
}
|
31
|
+
|
32
|
+
/* === Structural elements =================================== */
|
33
|
+
|
34
|
+
div#index {
|
35
|
+
margin: 0;
|
36
|
+
margin-left: -40px;
|
37
|
+
padding: 0;
|
38
|
+
font-size: 90%;
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
div#index a {
|
43
|
+
margin-left: 0.7em;
|
44
|
+
}
|
45
|
+
|
46
|
+
div#index .section-bar {
|
47
|
+
margin-left: 0px;
|
48
|
+
padding-left: 0.7em;
|
49
|
+
background: #ccc;
|
50
|
+
font-size: small;
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
div#classHeader, div#fileHeader {
|
55
|
+
width: auto;
|
56
|
+
color: white;
|
57
|
+
padding: 0.5em 1.5em 0.5em 1.5em;
|
58
|
+
margin: 0;
|
59
|
+
margin-left: -40px;
|
60
|
+
border-bottom: 3px solid #006;
|
61
|
+
}
|
62
|
+
|
63
|
+
div#classHeader a, div#fileHeader a {
|
64
|
+
background: inherit;
|
65
|
+
color: white;
|
66
|
+
}
|
67
|
+
|
68
|
+
div#classHeader td, div#fileHeader td {
|
69
|
+
background: inherit;
|
70
|
+
color: white;
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
div#fileHeader {
|
75
|
+
background: #057;
|
76
|
+
}
|
77
|
+
|
78
|
+
div#classHeader {
|
79
|
+
background: #048;
|
80
|
+
}
|
81
|
+
|
82
|
+
|
83
|
+
.class-name-in-header {
|
84
|
+
font-size: 180%;
|
85
|
+
font-weight: bold;
|
86
|
+
}
|
87
|
+
|
88
|
+
|
89
|
+
div#bodyContent {
|
90
|
+
padding: 0 1.5em 0 1.5em;
|
91
|
+
}
|
92
|
+
|
93
|
+
div#description {
|
94
|
+
padding: 0.5em 1.5em;
|
95
|
+
background: #efefef;
|
96
|
+
border: 1px dotted #999;
|
97
|
+
}
|
98
|
+
|
99
|
+
div#description h1,h2,h3,h4,h5,h6 {
|
100
|
+
color: #125;;
|
101
|
+
background: transparent;
|
102
|
+
}
|
103
|
+
|
104
|
+
div#validator-badges {
|
105
|
+
text-align: center;
|
106
|
+
}
|
107
|
+
div#validator-badges img { border: 0; }
|
108
|
+
|
109
|
+
div#copyright {
|
110
|
+
color: #333;
|
111
|
+
background: #efefef;
|
112
|
+
font: 0.75em sans-serif;
|
113
|
+
margin-top: 5em;
|
114
|
+
margin-bottom: 0;
|
115
|
+
padding: 0.5em 2em;
|
116
|
+
}
|
117
|
+
|
118
|
+
|
119
|
+
/* === Classes =================================== */
|
120
|
+
|
121
|
+
table.header-table {
|
122
|
+
color: white;
|
123
|
+
font-size: small;
|
124
|
+
}
|
125
|
+
|
126
|
+
.type-note {
|
127
|
+
font-size: small;
|
128
|
+
color: #DEDEDE;
|
129
|
+
}
|
130
|
+
|
131
|
+
.xxsection-bar {
|
132
|
+
background: #eee;
|
133
|
+
color: #333;
|
134
|
+
padding: 3px;
|
135
|
+
}
|
136
|
+
|
137
|
+
.section-bar {
|
138
|
+
color: #333;
|
139
|
+
border-bottom: 1px solid #999;
|
140
|
+
margin-left: -20px;
|
141
|
+
}
|
142
|
+
|
143
|
+
|
144
|
+
.section-title {
|
145
|
+
background: #79a;
|
146
|
+
color: #eee;
|
147
|
+
padding: 3px;
|
148
|
+
margin-top: 2em;
|
149
|
+
margin-left: -30px;
|
150
|
+
border: 1px solid #999;
|
151
|
+
}
|
152
|
+
|
153
|
+
.top-aligned-row { vertical-align: top }
|
154
|
+
.bottom-aligned-row { vertical-align: bottom }
|
155
|
+
|
156
|
+
/* --- Context section classes ----------------------- */
|
157
|
+
|
158
|
+
.context-row { }
|
159
|
+
.context-item-name { font-family: monospace; font-weight: bold; color: black; }
|
160
|
+
.context-item-value { font-size: small; color: #448; }
|
161
|
+
.context-item-desc { color: #333; padding-left: 2em; }
|
162
|
+
|
163
|
+
/* --- Method classes -------------------------- */
|
164
|
+
.method-detail {
|
165
|
+
background: #efefef;
|
166
|
+
padding: 0;
|
167
|
+
margin-top: 0.5em;
|
168
|
+
margin-bottom: 1em;
|
169
|
+
border: 1px dotted #ccc;
|
170
|
+
}
|
171
|
+
.method-heading {
|
172
|
+
color: black;
|
173
|
+
background: #ccc;
|
174
|
+
border-bottom: 1px solid #666;
|
175
|
+
padding: 0.2em 0.5em 0 0.5em;
|
176
|
+
}
|
177
|
+
.method-signature { color: black; background: inherit; }
|
178
|
+
.method-name { font-weight: bold; }
|
179
|
+
.method-args { font-style: italic; }
|
180
|
+
.method-description { padding: 0 0.5em 0 0.5em; }
|
181
|
+
|
182
|
+
/* --- Source code sections -------------------- */
|
183
|
+
|
184
|
+
a.source-toggle { font-size: 90%; }
|
185
|
+
div.method-source-code {
|
186
|
+
background: #262626;
|
187
|
+
color: #ffdead;
|
188
|
+
margin: 1em;
|
189
|
+
padding: 0.5em;
|
190
|
+
border: 1px dashed #999;
|
191
|
+
overflow: hidden;
|
192
|
+
}
|
193
|
+
|
194
|
+
div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
195
|
+
|
196
|
+
/* --- Ruby keyword styles --------------------- */
|
197
|
+
|
198
|
+
.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
|
199
|
+
|
200
|
+
.ruby-constant { color: #7fffd4; background: transparent; }
|
201
|
+
.ruby-keyword { color: #00ffff; background: transparent; }
|
202
|
+
.ruby-ivar { color: #eedd82; background: transparent; }
|
203
|
+
.ruby-operator { color: #00ffee; background: transparent; }
|
204
|
+
.ruby-identifier { color: #ffdead; background: transparent; }
|
205
|
+
.ruby-node { color: #ffa07a; background: transparent; }
|
206
|
+
.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
|
207
|
+
.ruby-regexp { color: #ffa07a; background: transparent; }
|
208
|
+
.ruby-value { color: #7fffd4; background: transparent; }
|
@@ -0,0 +1,90 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
<title>Top Level Namespace</title>
|
7
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
|
8
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
9
|
+
|
10
|
+
<script type="text/javascript" charset="utf-8">
|
11
|
+
relpath = '';
|
12
|
+
if (relpath != '') relpath += '/';
|
13
|
+
</script>
|
14
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
15
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
16
|
+
|
17
|
+
</head>
|
18
|
+
<body>
|
19
|
+
<script type="text/javascript" charset="utf-8">
|
20
|
+
if (window.top.frames.main) document.body.className = 'frames';
|
21
|
+
</script>
|
22
|
+
|
23
|
+
<div id="header">
|
24
|
+
<div id="menu">
|
25
|
+
|
26
|
+
<a href="_index.html">Index</a> »
|
27
|
+
|
28
|
+
|
29
|
+
<span class="title">Top Level Namespace</span>
|
30
|
+
|
31
|
+
|
32
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id="search">
|
36
|
+
<a id="class_list_link" href="#">Class List</a>
|
37
|
+
<a id="method_list_link" href="#">Method List</a>
|
38
|
+
<a id ="file_list_link" href="#">File List</a>
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<div class="clear"></div>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<iframe id="search_frame"></iframe>
|
45
|
+
|
46
|
+
<div id="content"><h1>Top Level Namespace
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
</h1>
|
51
|
+
|
52
|
+
<dl class="box">
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
</dl>
|
62
|
+
<div class="clear"></div>
|
63
|
+
|
64
|
+
<h2>Defined Under Namespace</h2>
|
65
|
+
<p class="children">
|
66
|
+
|
67
|
+
|
68
|
+
<strong class="modules">Modules:</strong> <span class='object_link'><a href="Wc.html" title="Wc (module)">Wc</a></span>
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
<strong class="classes">Classes:</strong> <span class='object_link'><a href="String.html" title="String (class)">String</a></span>
|
73
|
+
|
74
|
+
|
75
|
+
</p>
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
</div>
|
82
|
+
|
83
|
+
<div id="footer">
|
84
|
+
Generated on Tue Jul 5 09:22:52 2011 by
|
85
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
86
|
+
0.6.8 (ruby-1.9.2).
|
87
|
+
</div>
|
88
|
+
|
89
|
+
</body>
|
90
|
+
</html>
|
data/lib/wc.rb
CHANGED
@@ -1,66 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
# The filename is no mandatory, but if provided it will be used to feed thw
|
8
|
-
# word counter gem, otherwise standard input is used.
|
9
|
-
# Options is an array customizing the gem's behavior further.
|
10
|
-
#
|
11
|
-
|
12
|
-
def initialize(filename=nil, options={})
|
13
|
-
@hide_list = options["hide_list"]
|
14
|
-
@words = options["words"]
|
15
|
-
@no_autorun = options["no_autorun"]
|
16
|
-
|
17
|
-
@css_mode = options["css_mode"]
|
18
|
-
|
19
|
-
if ! @hide_list
|
20
|
-
@hide_list = []
|
21
|
-
end
|
22
|
-
|
23
|
-
if ! @no_autorun
|
24
|
-
warn "[DEPRECATION]: 'no_autorun' option will be deprecated in wc 1.0.0 and the default behavior will be no_autorun=TRUE"
|
25
|
-
if filename
|
26
|
-
@filename = filename
|
27
|
-
@occurrences = _read
|
28
|
-
else
|
29
|
-
@filename =STDIN
|
30
|
-
@occurrences = _feed
|
31
|
-
end
|
32
|
-
@sorted = Array(occurrences).sort { |one, two| -(one[1] <=> two[1]) }
|
33
|
-
end
|
1
|
+
require 'wc/engine'
|
2
|
+
|
3
|
+
class String
|
4
|
+
|
5
|
+
def wc
|
6
|
+
self.occurrences.size
|
34
7
|
end
|
35
|
-
|
36
|
-
def
|
37
|
-
|
38
|
-
@sorted.each { |elem|
|
39
|
-
puts "\"#{elem[0]}\" has #{elem[1]} occurrences"
|
40
|
-
}
|
41
|
-
else
|
42
|
-
@sorted[0..@words-1].each { |elem|
|
43
|
-
puts "\"#{elem[0]}\" has #{elem[1]} occurrences"
|
44
|
-
}
|
45
|
-
end
|
8
|
+
|
9
|
+
def occurrences
|
10
|
+
Wc::Engine.read_inline(self)
|
46
11
|
end
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
# end
|
55
|
-
|
56
|
-
def to_cloud
|
57
|
-
if @words == -1
|
58
|
-
cloud_items = @sorted
|
12
|
+
|
13
|
+
def to_tag_cloud(max_words = nil)
|
14
|
+
|
15
|
+
sorted = self.occurrences
|
16
|
+
|
17
|
+
if max_words.nil?
|
18
|
+
cloud_items = sorted
|
59
19
|
else
|
60
|
-
cloud_items =
|
20
|
+
cloud_items = sorted[0..max_words-1]
|
61
21
|
end
|
62
|
-
|
63
|
-
|
22
|
+
|
23
|
+
max = sorted.first[1]
|
24
|
+
min = sorted.last[1]
|
64
25
|
|
65
26
|
range = max - min
|
66
27
|
interval = (1.0 * range)/10
|
@@ -109,72 +70,4 @@ class Wc
|
|
109
70
|
ret
|
110
71
|
end
|
111
72
|
|
112
|
-
|
113
|
-
@occurrences = Hash.new { |h, k| h[k] = 0 }
|
114
|
-
File.open(filename, "r") { |f|
|
115
|
-
f.each_line { |line|
|
116
|
-
words = line.split
|
117
|
-
words.each { |w|
|
118
|
-
if ! hide_list.include?(w.downcase)
|
119
|
-
@occurrences[w.downcase] += 1
|
120
|
-
end
|
121
|
-
}
|
122
|
-
}
|
123
|
-
}
|
124
|
-
@occurrences
|
125
|
-
end
|
126
|
-
|
127
|
-
def feed(line)
|
128
|
-
@occurrences = Hash.new { |h, k| h[k] = 0 }
|
129
|
-
words = line.split
|
130
|
-
words.each { |w|
|
131
|
-
if ! hide_list.include?(w.downcase)
|
132
|
-
@occurrences[w.downcase] += 1
|
133
|
-
end
|
134
|
-
}
|
135
|
-
@occurrences
|
136
|
-
end
|
137
|
-
|
138
|
-
def get()
|
139
|
-
@sorted = Array(occurrences).sort { |one, two| -(one[1] <=> two[1]) }
|
140
|
-
if @words == -1
|
141
|
-
c = @sorted
|
142
|
-
else
|
143
|
-
c = @sorted[0..@words-1]
|
144
|
-
end
|
145
|
-
@sorted = c
|
146
|
-
end
|
147
|
-
|
148
|
-
private
|
149
|
-
|
150
|
-
def _read()
|
151
|
-
occurrences = Hash.new { |h, k| h[k] = 0 }
|
152
|
-
File.open(@filename, "r") { |f|
|
153
|
-
f.each_line { |line|
|
154
|
-
words = line.split
|
155
|
-
words.each { |w|
|
156
|
-
if ! hide_list.include?(w.downcase)
|
157
|
-
occurrences[w.downcase] += 1
|
158
|
-
end
|
159
|
-
}
|
160
|
-
}
|
161
|
-
}
|
162
|
-
occurrences
|
163
|
-
end
|
164
|
-
|
165
|
-
def _feed()
|
166
|
-
occurrences = Hash.new { |h, k| h[k] = 0 }
|
167
|
-
filename.each_line { |line|
|
168
|
-
words = line.split
|
169
|
-
words.each { |w|
|
170
|
-
if ! hide_list.include?(w.downcase)
|
171
|
-
occurrences[w.downcase] += 1
|
172
|
-
end
|
173
|
-
}
|
174
|
-
}
|
175
|
-
occurrences
|
176
|
-
end
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
end
|
73
|
+
end
|