RusaMember 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +24 -0
- data/README.txt +6 -3
- data/Rakefile +0 -1
- data/bin/rusa_member +6 -0
- data/lib/member.rb +71 -0
- data/lib/parse_member.rb +164 -0
- data/lib/parse_result.rb +94 -0
- data/lib/rusa_member.rb +1 -1
- data/test/files/boston.html +209 -0
- data/test/files/clubMembers.txt +1674 -0
- data/test/files/doe.txt +8 -0
- data/test/files/dussler.html +101 -0
- data/test/files/dussler.txt +8 -0
- data/test/files/dussler_results_2006.html +243 -0
- data/test/files/dussler_results_2007.html +278 -0
- data/test/files/dussler_results_2008.html +211 -0
- data/test/files/member_pre.txt +82 -0
- data/test/files/member_search.txt +82 -0
- data/test/files/multiSmith.txt +241 -0
- data/test/files/no_results.html +164 -0
- data/test/files/one_result.html +172 -0
- data/test/files/post.txt +13 -0
- data/test/files/smith.html +173 -0
- data/test/files/smith.txt +10 -0
- data/test/files/thomas.html +101 -0
- data/test/files/thomas_results_2008.html +369 -0
- data/test/html_frags.rb +113 -0
- data/test/test_parse_results.rb +94 -20
- metadata +34 -2
data/test/html_frags.rb
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
|
3
|
+
##
|
4
|
+
# Student Name: bill dussler
|
5
|
+
# Homework Week: 8
|
6
|
+
#
|
7
|
+
|
8
|
+
module HtmlFragments
|
9
|
+
|
10
|
+
RESULT_1 = <<-EOF
|
11
|
+
<P><B>Dussler</B>, William | RUSA No. 0137 | Burien, WA
|
12
|
+
<BR>Seattle International Randonneurs | ACP Club Code: 947018
|
13
|
+
<BR><A HREF="/join.html">Membership Expires:</A>
|
14
|
+
<B>2008/12/31</B>
|
15
|
+
EOF
|
16
|
+
|
17
|
+
RESULT_2 = <<-EOF
|
18
|
+
<P><B>Aard</B>, Arar | RUSA No. 013 | Boston, MA
|
19
|
+
<BR>Boston Brevet Series | ACP Club Code: 123
|
20
|
+
<BR><A HREF="/join.html">Membership Expires:</A>
|
21
|
+
<B>2009/12/31</B>
|
22
|
+
EOF
|
23
|
+
|
24
|
+
RESULT_3 = <<-EOF
|
25
|
+
<P><B>Zard</B>, Marmar | RUSA No. 9137 | Bothell, WA
|
26
|
+
<BR>Ballard Vikings | ACP Club Code: 947018
|
27
|
+
<BR><A HREF="/join.html">Membership Expires:</A>
|
28
|
+
<B>1999/12/31</B>
|
29
|
+
EOF
|
30
|
+
|
31
|
+
HTML_OPEN = <<-EOF
|
32
|
+
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 3.2//EN">
|
33
|
+
<HTML>
|
34
|
+
<HEAD>
|
35
|
+
<TITLE>RUSA: Members </TITLE>
|
36
|
+
<META HTTP-EQUIV="Keywords" CONTENT="Bicycle Touring, Bicycle Racing, Long Distance Cycling, Cycling, Bicycling, Randonneur, Randonneuring, Brevet, RUSA">
|
37
|
+
<META HTTP-EQUIV="Reply-to" CONTENT="lois_springsteen@prodigy.net (Lois Springsteen)">
|
38
|
+
<BASEFONT SIZE=3>
|
39
|
+
</HEAD>
|
40
|
+
<BODY BGCOLOR="#FFFFFF" TEXT="#003399" LINK="#FF0000" VLINK="#FF0000" ALINK="#003399">
|
41
|
+
<TABLE BORDER=0 HSPACE=0 cellpadding=10 WIDTH=100%>
|
42
|
+
<TR>
|
43
|
+
<TD ALIGN=left VALIGN=middle width=140>
|
44
|
+
<IMG SRC="http://www.rusa.org/Images/logorusa.gif" ALT="RUSA Logo" HSPACE=0 ALIGN=absmiddle>
|
45
|
+
</TD>
|
46
|
+
<TD ALIGN=left VALIGN=middle>
|
47
|
+
<H1><FONT FACE="ARIAL, HELVETICA"><B>Members</B></FONT></H1>
|
48
|
+
</TD>
|
49
|
+
<TD ALIGN=right VALIGN=middle></TD>
|
50
|
+
</TR>
|
51
|
+
</TABLE>
|
52
|
+
<HR SIZE=3 WIDTH="100%" ALIGN=CENTER>
|
53
|
+
<TABLE BORDER=0 HSPACE=0 cellpadding=10>
|
54
|
+
<TR ALIGN=left VALIGN=top width=140>
|
55
|
+
<TD NOWRAP>
|
56
|
+
<FONT FACE="ARIAL, HELVETICA" SIZE=-1>
|
57
|
+
<B>General</B><SMALL>
|
58
|
+
<BR>-- <A HREF="http://www.rusa.org/announce.html"><FONT COLOR="#3cb545">Announcements (11/28)</FONT></A>
|
59
|
+
<BR>-- <A HREF="http://www.rusa.org/about.html">About Randonneuring</A>
|
60
|
+
<BR>-- <A HREF="http://www.rusa.org/links.html">Links</A>
|
61
|
+
<BR>-- <A HREF="http://www.rusa.org/index.html">Home</A>
|
62
|
+
</SMALL>
|
63
|
+
<P><B>Search For</B><SMALL>
|
64
|
+
<BR>-- <A HREF="http://www.rusa.org/cgi-bin/eventsearch_GF.pl">Rides</A>
|
65
|
+
<BR>-- <A HREF="http://www.rusa.org/results_search.html">Results</A>
|
66
|
+
<BR>-- <A HREF="http://www.rusa.org/cgi-bin/membersearch_GF.pl">Members</A>
|
67
|
+
<BR>-- <A HREF="http://www.rusa.org/cgi-bin/officialsearch_GF.pl">Officials</A>
|
68
|
+
<BR>-- <A HREF="http://www.rusa.org/cgi-bin/clubsearch_GF.pl">ACP Club Codes</A>
|
69
|
+
<BR>-- <A HREF="http://www.rusa.org/cgi-bin/routesearch_GF.pl">Routes</A>
|
70
|
+
<BR>-- <A HREF="http://www.rusa.org/teamrando.html">Team Events</A>
|
71
|
+
<BR>-- <A HREF="http://www.rusa.org/perminfo.html">Permanents</A>
|
72
|
+
</SMALL>
|
73
|
+
<P><B>Members' Info</B><SMALL>
|
74
|
+
<BR>-- <A HREF="http://www.rusa.org/join.html">Join/Renew</A>
|
75
|
+
<BR>-- <A HREF="http://www.rusa.org/awards.html">Awards</A>
|
76
|
+
<BR>-- <A HREF="http://www.rusa.org/cgi-bin/store_GF.pl">Online Store</A>
|
77
|
+
<BR>-- <A HREF="http://www.rusa.org/nletter.html">Newsletter</A>
|
78
|
+
<BR>-- <A HREF="http://www.rusa.org/pbpphotogallery.html">Photo Gallery</A>
|
79
|
+
<BR>-- <A HREF="http://www.rusa.org/stories.html">Rider Stories</A>
|
80
|
+
</SMALL>
|
81
|
+
<P><B>Long Brevets</B><SMALL>
|
82
|
+
<BR>-- <A HREF="http://www.rusa.org/pbp.html">PBP: Paris-Brest-Paris</A>
|
83
|
+
<BR>-- <A HREF="http://www.rusa.org/1200kms.html">Others</A>
|
84
|
+
</SMALL>
|
85
|
+
<P><B>Administration</B><SMALL>
|
86
|
+
<BR>-- <A HREF="http://www.rusa.org/rules.html">Rules</A>
|
87
|
+
<BR>-- <A HREF="http://www.rusa.org/rbakit.html">RBAs</A>
|
88
|
+
<BR>-- <A HREF="http://www.rusa.org/records.html">Records</A>
|
89
|
+
</SMALL>
|
90
|
+
</FONT>
|
91
|
+
</TD>
|
92
|
+
<TD ALIGN=left VALIGN=top>
|
93
|
+
|
94
|
+
999999 Matches Found
|
95
|
+
EOF
|
96
|
+
|
97
|
+
HTML_CLOSE = <<-EOF
|
98
|
+
</TD>
|
99
|
+
</TR>
|
100
|
+
</TABLE>
|
101
|
+
<HR SIZE=3 WIDTH="100%" ALIGN=Center>
|
102
|
+
<P><FONT FACE="ARIAL, HELVETICA" SIZE=-1>Revision: November 29, 2008<BR>
|
103
|
+
Please direct questions, comments, or problem reports to the <A HREF="http://www.rusa.org/webmaster.html">webmaster</A>.<BR>
|
104
|
+
<B>© Copyright 2008, <A HREF="http://www.rusa.org">Randonneurs USA</A></B>,
|
105
|
+
except as noted otherwise.</FONT></P>
|
106
|
+
</BODY>
|
107
|
+
</HTML>
|
108
|
+
|
109
|
+
</BODY>
|
110
|
+
</HTML>
|
111
|
+
EOF
|
112
|
+
|
113
|
+
end
|
data/test/test_parse_results.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
##
|
4
4
|
# Student Name: bill dussler
|
5
|
-
# Homework Week:
|
5
|
+
# Homework Week: 8
|
6
6
|
#
|
7
7
|
|
8
8
|
$: << 'lib'
|
@@ -13,38 +13,112 @@ require 'time'
|
|
13
13
|
require 'lib/member'
|
14
14
|
require 'parse_member'
|
15
15
|
require 'parse_result'
|
16
|
-
require 'pp'
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
class TestParseMember < Test::Unit::TestCase
|
17
|
+
class TestParseResult < Test::Unit::TestCase
|
21
18
|
def setup
|
22
19
|
@stringIO_mock = Proc.new{|file| StringIO.open file }
|
23
20
|
@localFile_mock = Proc.new{|file| open file }
|
24
21
|
@pm = ParseMember.new
|
25
22
|
|
26
23
|
end
|
27
|
-
|
28
|
-
def
|
29
|
-
|
24
|
+
|
25
|
+
def test_parse_no_results
|
26
|
+
member = Person.new({
|
27
|
+
:id => '0137',
|
28
|
+
:first_name => 'william',
|
29
|
+
:last_name => 'dussler',
|
30
|
+
})
|
31
|
+
|
32
|
+
pr = ParseResult.new
|
33
|
+
pr.results(member) {|file| open "test/files/no_results.html"}
|
34
|
+
assert_equal 0, member.results.size
|
30
35
|
end
|
31
36
|
|
32
|
-
def
|
33
|
-
member = Person.new
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
37
|
+
def test_parse_one_result
|
38
|
+
member = Person.new({
|
39
|
+
:id => '0137',
|
40
|
+
:first_name => 'william',
|
41
|
+
:last_name => 'dussler',
|
42
|
+
})
|
43
|
+
|
44
|
+
pr = ParseResult.new
|
45
|
+
pr.results(member) {|file| open "test/files/one_result.html"}
|
46
|
+
assert_equal 1, member.results.size
|
47
|
+
|
48
|
+
assert_equal Time.parse("09/13/2008"), member.results[0].date
|
49
|
+
assert_equal "50055", member.results[0].certificate
|
50
|
+
assert_equal "600", member.results[0].distance
|
51
|
+
assert_equal "ACPB", member.results[0].type
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_parse_multi_years
|
55
|
+
member = Person.new({
|
56
|
+
:id => '0137',
|
57
|
+
:first_name => 'william',
|
58
|
+
:last_name => 'dussler',
|
59
|
+
})
|
60
|
+
|
38
61
|
pr = ParseResult.new
|
39
62
|
pr.results(member, 2008) {|file| open "test/files/dussler_results_2008.html"}
|
63
|
+
pr.results(member, 2006) {|file| open "test/files/dussler_results_2006.html"}
|
40
64
|
|
41
|
-
assert_equal
|
42
|
-
|
43
|
-
|
65
|
+
assert_equal 11, member.results.size
|
66
|
+
|
67
|
+
assert_equal 2, member.awards[2008].size
|
68
|
+
assert_equal 2008, member.awards[2008][0].year
|
69
|
+
assert_equal "RUSA 1570 km", member.awards[2008][0].type
|
70
|
+
assert_equal "Super Randonneur", member.awards[2008][1].type
|
71
|
+
|
72
|
+
assert_equal 1, member.awards[2006].size
|
73
|
+
assert_equal 2006, member.awards[2006][0].year
|
74
|
+
assert_equal "RUSA 2260 km", member.awards[2006][0].type
|
75
|
+
|
76
|
+
assert_equal Time.parse("07/12/2008"), member.results[0].date
|
77
|
+
assert_equal "RUSA-P02782", member.results[0].certificate
|
78
|
+
assert_equal "100", member.results[0].distance
|
79
|
+
assert_equal "RUSAP", member.results[0].type
|
80
|
+
end
|
44
81
|
|
45
|
-
|
46
|
-
|
47
|
-
|
82
|
+
def test_parse_multi_members
|
83
|
+
member1 = Person.new({
|
84
|
+
:id => '0137',
|
85
|
+
:first_name => 'william',
|
86
|
+
:last_name => 'dussler',
|
87
|
+
})
|
88
|
+
|
89
|
+
member2 = Person.new({
|
90
|
+
:id => '0064',
|
91
|
+
:first_name => 'mark',
|
92
|
+
:last_name => 'thomas',
|
93
|
+
})
|
94
|
+
|
95
|
+
pr = ParseResult.new
|
96
|
+
pr.results(member1, 2008) {|file| open "test/files/dussler_results_2008.html"}
|
97
|
+
pr.results(member2, 2008) {|file| open "test/files/thomas_results_2008.html"}
|
98
|
+
|
99
|
+
# first member
|
100
|
+
assert_equal 6, member1.results.size
|
101
|
+
|
102
|
+
assert_equal 2, member1.awards[2008].size
|
103
|
+
assert_equal 2008, member1.awards[2008][0].year
|
104
|
+
assert_equal "RUSA 1570 km", member1.awards[2008][0].type
|
105
|
+
assert_equal "Super Randonneur", member1.awards[2008][1].type
|
106
|
+
assert_equal Time.parse("07/12/2008"), member1.results[0].date
|
107
|
+
assert_equal "RUSA-P02782", member1.results[0].certificate
|
108
|
+
assert_equal "100", member1.results[0].distance
|
109
|
+
assert_equal "RUSAP", member1.results[0].type
|
110
|
+
|
111
|
+
# second member
|
112
|
+
assert_equal 23, member2.results.size
|
113
|
+
assert_equal 1, member2.awards[2008].size
|
114
|
+
assert_equal 2008, member2.awards[2008][0].year
|
115
|
+
assert_equal "RUSA 5549 km", member2.awards[2008][0].type
|
116
|
+
|
117
|
+
assert_equal Time.parse("09/13/2008"), member2.results[22].date
|
118
|
+
assert_equal "50062", member2.results[22].certificate
|
119
|
+
assert_equal "600", member2.results[22].distance
|
120
|
+
assert_equal "ACPB", member2.results[22].type
|
121
|
+
assert_equal "Seattle International Randonneurs / 947018", member2.results[22].organizer
|
48
122
|
|
49
123
|
end
|
50
124
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: RusaMember
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bill dussler
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-12-
|
12
|
+
date: 2008-12-20 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -33,13 +33,45 @@ extra_rdoc_files:
|
|
33
33
|
- History.txt
|
34
34
|
- Manifest.txt
|
35
35
|
- README.txt
|
36
|
+
- test/files/clubMembers.txt
|
37
|
+
- test/files/doe.txt
|
38
|
+
- test/files/dussler.txt
|
39
|
+
- test/files/member_pre.txt
|
40
|
+
- test/files/member_search.txt
|
41
|
+
- test/files/multiSmith.txt
|
42
|
+
- test/files/post.txt
|
43
|
+
- test/files/smith.txt
|
36
44
|
files:
|
37
45
|
- History.txt
|
38
46
|
- Manifest.txt
|
39
47
|
- README.txt
|
40
48
|
- Rakefile
|
41
49
|
- bin/rusa_member
|
50
|
+
- lib/member.rb
|
51
|
+
- lib/parse_member.rb
|
52
|
+
- lib/parse_result.rb
|
42
53
|
- lib/rusa_member.rb
|
54
|
+
- test/files/boston.html
|
55
|
+
- test/files/clubMembers.txt
|
56
|
+
- test/files/doe.txt
|
57
|
+
- test/files/dussler.html
|
58
|
+
- test/files/dussler.txt
|
59
|
+
- test/files/dussler_results_2006.html
|
60
|
+
- test/files/dussler_results_2007.html
|
61
|
+
- test/files/dussler_results_2008.html
|
62
|
+
- test/files/member_pre.txt
|
63
|
+
- test/files/member_search.txt
|
64
|
+
- test/files/multiSmith.txt
|
65
|
+
- test/files/no_results.html
|
66
|
+
- test/files/one_result.html
|
67
|
+
- test/files/post.txt
|
68
|
+
- test/files/smith.html
|
69
|
+
- test/files/smith.txt
|
70
|
+
- test/files/thomas.html
|
71
|
+
- test/files/thomas_results_2008.html
|
72
|
+
- test/html_frags.rb
|
73
|
+
- test/test_parse_member.rb
|
74
|
+
- test/test_parse_results.rb
|
43
75
|
has_rdoc: true
|
44
76
|
homepage: http://rubyforge.org/projects/uwruby
|
45
77
|
post_install_message:
|