net-ftp-list 3.2.3 → 3.2.4
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/VERSION.yml +2 -2
- data/lib/net/ftp/list/microsoft.rb +13 -5
- data/net-ftp-list.gemspec +7 -8
- data/test/test_net_ftp_list_microsoft.rb +48 -0
- metadata +8 -7
data/VERSION.yml
CHANGED
@@ -5,11 +5,10 @@ require 'date'
|
|
5
5
|
#
|
6
6
|
# == MATCHES
|
7
7
|
#
|
8
|
-
# 06-25-
|
9
|
-
#
|
8
|
+
# 06-25-2007 01:08PM <DIR> etc
|
9
|
+
# 06-25-07 01:08PM <DIR> etc
|
10
|
+
# 11-27-07 08:45PM 23437 README.TXT
|
10
11
|
class Net::FTP::List::Microsoft < Net::FTP::List::Parser
|
11
|
-
# Stolen straight from the ASF's commons Java FTP LIST parser library.
|
12
|
-
# http://svn.apache.org/repos/asf/commons/proper/net/trunk/src/java/org/apache/commons/net/ftp/
|
13
12
|
REGEXP = %r!
|
14
13
|
^\s*
|
15
14
|
([0-9\-:\/]{5,})\s+([0-9\-:]{3,}(?:[aApP][mM])?)\s+
|
@@ -22,7 +21,16 @@ class Net::FTP::List::Microsoft < Net::FTP::List::Parser
|
|
22
21
|
def self.parse(raw)
|
23
22
|
match = REGEXP.match(raw.strip) or return false
|
24
23
|
|
25
|
-
|
24
|
+
date_match = %r!(\d\d).(\d\d).(\d\d(?:\d\d)?)!.match(match[1])
|
25
|
+
date_format = date_match[1].to_i > 12 ? '%d-%m-%y' : '%m-%d-%y'
|
26
|
+
date_format.sub!(%r{%y}, '%Y') if date_match[3].length > 2
|
27
|
+
|
28
|
+
if match[1] !~ /\-/
|
29
|
+
date_format.gsub!(/\-/, '/') if match[1] =~ %r{/}
|
30
|
+
date_format.gsub!(/\-/, ':') if match[1] =~ %r{:}
|
31
|
+
end
|
32
|
+
|
33
|
+
mtime = DateTime.strptime("#{match[1]} #{match[2]}", "#{date_format} %H:%M%p")
|
26
34
|
is_dir = match[3] == '<DIR>'
|
27
35
|
filesize = is_dir ? 0 : match[4].to_i
|
28
36
|
|
data/net-ftp-list.gemspec
CHANGED
@@ -4,13 +4,13 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "3.2.
|
7
|
+
s.name = "net-ftp-list"
|
8
|
+
s.version = "3.2.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Stateless Systems"]
|
12
|
-
s.date =
|
13
|
-
s.email =
|
12
|
+
s.date = "2012-09-14"
|
13
|
+
s.email = "enquiries@statelesssystems.com"
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"README.txt"
|
16
16
|
]
|
@@ -34,13 +34,12 @@ Gem::Specification.new do |s|
|
|
34
34
|
"test/test_net_ftp_list_rumpus.rb",
|
35
35
|
"test/test_net_ftp_list_unix.rb"
|
36
36
|
]
|
37
|
-
s.homepage =
|
37
|
+
s.homepage = "http://github.com/stateless-systems/net-ftp-list"
|
38
38
|
s.require_paths = ["lib"]
|
39
|
-
s.rubygems_version =
|
40
|
-
s.summary =
|
39
|
+
s.rubygems_version = "1.8.15"
|
40
|
+
s.summary = "Parse FTP LIST command output."
|
41
41
|
|
42
42
|
if s.respond_to? :specification_version then
|
43
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
44
43
|
s.specification_version = 3
|
45
44
|
|
46
45
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
@@ -13,6 +13,54 @@ class TestNetFTPListMicrosoft < Test::Unit::TestCase
|
|
13
13
|
assert_equal "Microsoft", @file.server_type, 'LIST M$ directory'
|
14
14
|
end
|
15
15
|
|
16
|
+
def test_parse_dd_mm_yyyy
|
17
|
+
dd_mm_yyyy = nil
|
18
|
+
assert_nothing_raised do
|
19
|
+
dd_mm_yyyy = Net::FTP::List.parse('25-06-2007 01:08PM <DIR> etc')
|
20
|
+
end
|
21
|
+
assert_equal dd_mm_yyyy.mtime.strftime('%Y-%m-%d'), '2007-06-25'
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_parse_dd_mm_yy
|
25
|
+
dd_mm_yy = nil
|
26
|
+
assert_nothing_raised do
|
27
|
+
dd_mm_yy = Net::FTP::List.parse('25-06-07 01:08PM <DIR> etc')
|
28
|
+
end
|
29
|
+
assert_equal dd_mm_yy.mtime.strftime('%Y-%m-%d'), '2007-06-25'
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_parse_mm_dd_yy
|
33
|
+
mm_dd_yy = nil
|
34
|
+
assert_nothing_raised do
|
35
|
+
mm_dd_yy = Net::FTP::List.parse('06-25-07 01:08PM <DIR> etc')
|
36
|
+
end
|
37
|
+
assert_equal mm_dd_yy.mtime.strftime('%Y-%m-%d'), '2007-06-25'
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_default_date_mm_dd_yy
|
41
|
+
mm_dd_yy = nil
|
42
|
+
assert_nothing_raised do
|
43
|
+
mm_dd_yy = Net::FTP::List.parse('01-02-03 01:08PM <DIR> etc')
|
44
|
+
end
|
45
|
+
assert_equal mm_dd_yy.mtime.strftime('%Y-%m-%d'), '2003-01-02'
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_parse_slash_delimited_date
|
49
|
+
slash_delimited = nil
|
50
|
+
assert_nothing_raised do
|
51
|
+
slash_delimited = Net::FTP::List.parse('06/25/07 01:08PM <DIR> etc')
|
52
|
+
end
|
53
|
+
assert_equal slash_delimited.mtime.strftime('%Y-%m-%d'), '2007-06-25'
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_parse_colon_delimited_date
|
57
|
+
colon_delimited = nil
|
58
|
+
assert_nothing_raised do
|
59
|
+
colon_delimited = Net::FTP::List.parse('06:25:07 01:08PM <DIR> etc')
|
60
|
+
end
|
61
|
+
assert_equal colon_delimited.mtime.strftime('%Y-%m-%d'), '2007-06-25'
|
62
|
+
end
|
63
|
+
|
16
64
|
def test_rubbish_lines
|
17
65
|
assert_instance_of Net::FTP::List::Entry, Net::FTP::List.parse("++ bah! ++")
|
18
66
|
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: net-ftp-list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 7
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 3
|
7
8
|
- 2
|
8
|
-
-
|
9
|
-
version: 3.2.
|
9
|
+
- 4
|
10
|
+
version: 3.2.4
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Stateless Systems
|
@@ -14,8 +15,7 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2012-
|
18
|
-
default_executable:
|
18
|
+
date: 2012-09-14 00:00:00 Z
|
19
19
|
dependencies: []
|
20
20
|
|
21
21
|
description:
|
@@ -45,7 +45,6 @@ files:
|
|
45
45
|
- test/test_net_ftp_list_netware.rb
|
46
46
|
- test/test_net_ftp_list_rumpus.rb
|
47
47
|
- test/test_net_ftp_list_unix.rb
|
48
|
-
has_rdoc: true
|
49
48
|
homepage: http://github.com/stateless-systems/net-ftp-list
|
50
49
|
licenses: []
|
51
50
|
|
@@ -59,6 +58,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
59
58
|
requirements:
|
60
59
|
- - ">="
|
61
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 3
|
62
62
|
segments:
|
63
63
|
- 0
|
64
64
|
version: "0"
|
@@ -67,13 +67,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
67
67
|
requirements:
|
68
68
|
- - ">="
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
70
71
|
segments:
|
71
72
|
- 0
|
72
73
|
version: "0"
|
73
74
|
requirements: []
|
74
75
|
|
75
76
|
rubyforge_project:
|
76
|
-
rubygems_version: 1.
|
77
|
+
rubygems_version: 1.8.15
|
77
78
|
signing_key:
|
78
79
|
specification_version: 3
|
79
80
|
summary: Parse FTP LIST command output.
|