uhferret 1.3.7 → 1.3.9
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.
- checksums.yaml +4 -4
- data/README.rdoc +6 -2
- data/bin/uhferret-server +1 -1
- data/lib/uhferret.rb +2 -2
- data/lib/webferret.rb +15 -16
- metadata +27 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fb73eff8cfa4c17fc76e3896896e250eaa3c2205ab2bef5538448d3f7a7c0752
|
|
4
|
+
data.tar.gz: 1712fa066f7a7ea91ff126d5a3939ecfb602c9988c8b87f863fcc65feffb91b2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b650a6127d9bdda65d6f37914760772662acc40f3bc962cab69d3424070914160712e0499a3461aa468423ae6437df6d35e7531825c5a338e4fee2229cf64ca2
|
|
7
|
+
data.tar.gz: 7e92f5b17c49fb8368386fa9725dda982f746805ade91f34e1f771525538d496f42d51a1ed00257481df38dead6416ca0a8f08e356f3d4aede0e7d91c428bacd
|
data/README.rdoc
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
= UHFerret
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Available as:
|
|
4
|
+
- rubygem: https://rubygems.org/gems/uhferret
|
|
5
|
+
- source: https://codeberg.org/peterlane/uhferret-gem
|
|
5
6
|
|
|
6
7
|
== Description
|
|
7
8
|
|
|
@@ -14,6 +15,9 @@ This library provides a Ruby wrapper around uhferret suitable for
|
|
|
14
15
|
scripting, a command-line executable, 'uhferret', and a simple
|
|
15
16
|
server version, 'uhferret-server'.
|
|
16
17
|
|
|
18
|
+
More about ferret and alternative implementations can be read on the
|
|
19
|
+
{ferret documentation}[https://peterlane.codeberg.page/ferret].
|
|
20
|
+
|
|
17
21
|
NB: to install uhferret, Ruby must be able to compile and build C extensions.
|
|
18
22
|
|
|
19
23
|
== Use
|
data/bin/uhferret-server
CHANGED
data/lib/uhferret.rb
CHANGED
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
# You should have received a copy of the GNU General Public License
|
|
18
18
|
# along with uhferret. If not, see <http://www.gnu.org/licenses/>.
|
|
19
19
|
|
|
20
|
-
require
|
|
21
|
-
require
|
|
20
|
+
require "uhferret_lib"
|
|
21
|
+
require "utils"
|
|
22
22
|
|
|
23
23
|
module UHFerret
|
|
24
24
|
|
data/lib/webferret.rb
CHANGED
|
@@ -18,14 +18,13 @@
|
|
|
18
18
|
# You should have received a copy of the GNU General Public License
|
|
19
19
|
# along with uhferret. If not, see <http://www.gnu.org/licenses/>.
|
|
20
20
|
|
|
21
|
-
require
|
|
22
|
-
require
|
|
23
|
-
require
|
|
24
|
-
require 'webrick'
|
|
21
|
+
require "uhferret"
|
|
22
|
+
require "utils"
|
|
23
|
+
require "webrick"
|
|
25
24
|
include WEBrick
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
$next_upload = 0 # global variable, keeps track of number of uploads, for naming folders
|
|
27
|
+
$next_report = 0 # global variable, keeps track of number of reports created
|
|
29
28
|
|
|
30
29
|
module UHFerret
|
|
31
30
|
|
|
@@ -35,7 +34,7 @@ module UHFerret
|
|
|
35
34
|
|
|
36
35
|
# Returns the 'welcome page' html.
|
|
37
36
|
def do_GET(req, res)
|
|
38
|
-
res[
|
|
37
|
+
res["Content-Type"] = "text/html"
|
|
39
38
|
res.body = <<BODY
|
|
40
39
|
<html><body><h1>Ferret Server</h1>
|
|
41
40
|
<p>
|
|
@@ -125,7 +124,7 @@ BODY
|
|
|
125
124
|
text_files = true
|
|
126
125
|
Dir.chdir folder
|
|
127
126
|
files = []
|
|
128
|
-
|
|
127
|
+
Doc.glob(folder+"**/*") do |filename|
|
|
129
128
|
next unless File.file?(filename) # ignore directories
|
|
130
129
|
files << filename
|
|
131
130
|
text_files = false if Utils.is_code?(filename)
|
|
@@ -144,10 +143,10 @@ BODY
|
|
|
144
143
|
upload_dir = "Upload#{@@next_upload}" # create a unique folder for user's files
|
|
145
144
|
@@next_upload += 1
|
|
146
145
|
|
|
147
|
-
Dir.mkdir $base unless File.
|
|
146
|
+
Dir.mkdir $base unless File.exist? $base
|
|
148
147
|
Dir.mkdir "#{$base}/#{upload_dir}"
|
|
149
148
|
upload_data = req.query["data"]
|
|
150
|
-
filename = upload_data.filename.gsub(
|
|
149
|
+
filename = upload_data.filename.gsub(" ", "-") # replace spaces
|
|
151
150
|
uploaded_file = "#{$base}/#{upload_dir}/#{filename}"
|
|
152
151
|
File.open(uploaded_file, "wb") do |file| # do the actual upload of the data
|
|
153
152
|
upload_data.each_data do |data|
|
|
@@ -164,10 +163,10 @@ BODY
|
|
|
164
163
|
# do the computation of similarities
|
|
165
164
|
# -- output to html table with given folder name, using file definition list
|
|
166
165
|
`#{FERRET} #{is_text ? "-t" : "-c"} -w -f ferret-file-definitions.def > results.html`
|
|
167
|
-
res[
|
|
166
|
+
res["Content-Type"] = "text/html"
|
|
168
167
|
res.body = "<meta HTTP-EQUIV=\"REFRESH\" content=\"0; url=#{$base}/#{upload_dir}/results.html\">"
|
|
169
168
|
else
|
|
170
|
-
res[
|
|
169
|
+
res["Content-Type"] = "text/html"
|
|
171
170
|
res.body = %{<html><body><h1>Error</h1>
|
|
172
171
|
<p>You did not submit a valid zip file.</p>
|
|
173
172
|
<p><a href="/ferret/home">Return to Ferret home page</a>.</p>
|
|
@@ -182,16 +181,16 @@ BODY
|
|
|
182
181
|
|
|
183
182
|
# Handles the request to create a report in xml format.
|
|
184
183
|
def do_GET(req, res)
|
|
185
|
-
upload_dir = req.query[
|
|
186
|
-
file1 = req.query[
|
|
187
|
-
file2 = req.query[
|
|
184
|
+
upload_dir = req.query["upload"]
|
|
185
|
+
file1 = req.query["file1"].gsub("%20", "\ ")
|
|
186
|
+
file2 = req.query["file2"].gsub("%20", "\ ")
|
|
188
187
|
report_name = "#{upload_dir}/report#{@@next_report}.xml"
|
|
189
188
|
@@next_report += 1
|
|
190
189
|
Dir.chdir "#{upload_dir}"
|
|
191
190
|
|
|
192
191
|
`#{FERRET} #{Utils.is_code?(file1) ? "-c" : "-t"} -x "#{report_name}" "#{file1}" "#{file2}"`
|
|
193
192
|
write_style_sheet File.dirname(report_name)
|
|
194
|
-
res[
|
|
193
|
+
res["Content-Type"] = "text/html"
|
|
195
194
|
res.body = "<meta HTTP-EQUIV=\"REFRESH\" content=\"0; url=#{report_name}\">"
|
|
196
195
|
end
|
|
197
196
|
|
metadata
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: uhferret
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.3.
|
|
4
|
+
version: 1.3.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter Lane
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
12
|
-
dependencies:
|
|
11
|
+
date: 2025-12-22 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: webrick
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.9'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.9'
|
|
13
27
|
description: "UHFerret is a copy-detection tool to analyse large sets of documents
|
|
14
28
|
\nto find pairs of documents with substantial amounts of lexical copying. \nDocuments
|
|
15
29
|
containing either natural language (e.g. English) or computer \nprograms (in C-family)
|
|
@@ -43,11 +57,13 @@ files:
|
|
|
43
57
|
- lib/uhferret.rb
|
|
44
58
|
- lib/utils.rb
|
|
45
59
|
- lib/webferret.rb
|
|
46
|
-
homepage: https://
|
|
60
|
+
homepage: https://rubygems.org/gems/uhferret
|
|
47
61
|
licenses:
|
|
48
|
-
- GPL-3.0
|
|
49
|
-
metadata:
|
|
50
|
-
|
|
62
|
+
- GPL-3.0-only
|
|
63
|
+
metadata:
|
|
64
|
+
documentation_uri: https://rubydoc.info/gems/uhferret
|
|
65
|
+
source_code_uri: https://codeberg.org/peterlane/uhferret-gem
|
|
66
|
+
post_install_message:
|
|
51
67
|
rdoc_options:
|
|
52
68
|
- "-m"
|
|
53
69
|
- README.rdoc
|
|
@@ -57,15 +73,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
57
73
|
requirements:
|
|
58
74
|
- - ">="
|
|
59
75
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: '
|
|
76
|
+
version: '3.1'
|
|
61
77
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
62
78
|
requirements:
|
|
63
79
|
- - ">="
|
|
64
80
|
- !ruby/object:Gem::Version
|
|
65
81
|
version: '0'
|
|
66
82
|
requirements: []
|
|
67
|
-
rubygems_version: 3.
|
|
68
|
-
signing_key:
|
|
83
|
+
rubygems_version: 3.3.3
|
|
84
|
+
signing_key:
|
|
69
85
|
specification_version: 4
|
|
70
86
|
summary: UHFerret is a copy-detection tool.
|
|
71
87
|
test_files: []
|