tmail 1.2.3.1 → 1.2.6

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.
Files changed (158) hide show
  1. data/README +10 -0
  2. data/ext/tmailscanner/tmail/tmailscanner.c +39 -8
  3. data/lib/tmail.rb +1 -0
  4. data/lib/tmail/address.rb +6 -40
  5. data/lib/tmail/attachments.rb +41 -22
  6. data/lib/tmail/encode.rb +9 -0
  7. data/lib/tmail/header.rb +5 -3
  8. data/lib/tmail/interface.rb +40 -3
  9. data/lib/tmail/mail.rb +3 -3
  10. data/lib/tmail/mailbox.rb +3 -2
  11. data/lib/tmail/net.rb +3 -1
  12. data/lib/tmail/parser.rb +204 -620
  13. data/lib/tmail/parser.y +38 -3
  14. data/lib/tmail/quoting.rb +38 -1
  15. data/lib/tmail/utils.rb +28 -4
  16. data/lib/tmail/vendor/rchardet-1.3/COPYING +504 -0
  17. data/lib/tmail/vendor/rchardet-1.3/README +12 -0
  18. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet.rb +67 -0
  19. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/big5freq.rb +927 -0
  20. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/big5prober.rb +42 -0
  21. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/chardistribution.rb +237 -0
  22. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/charsetgroupprober.rb +112 -0
  23. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/charsetprober.rb +75 -0
  24. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb +64 -0
  25. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/constants.rb +42 -0
  26. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/escprober.rb +90 -0
  27. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/escsm.rb +244 -0
  28. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/eucjpprober.rb +88 -0
  29. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/euckrfreq.rb +596 -0
  30. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/euckrprober.rb +42 -0
  31. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/euctwfreq.rb +430 -0
  32. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/euctwprober.rb +42 -0
  33. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312freq.rb +474 -0
  34. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312prober.rb +42 -0
  35. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/hebrewprober.rb +289 -0
  36. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/jisfreq.rb +570 -0
  37. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/jpcntx.rb +229 -0
  38. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langbulgarianmodel.rb +229 -0
  39. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langcyrillicmodel.rb +330 -0
  40. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langgreekmodel.rb +227 -0
  41. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langhebrewmodel.rb +202 -0
  42. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langhungarianmodel.rb +226 -0
  43. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langthaimodel.rb +201 -0
  44. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/latin1prober.rb +147 -0
  45. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/mbcharsetprober.rb +89 -0
  46. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/mbcsgroupprober.rb +47 -0
  47. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/mbcssm.rb +542 -0
  48. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/sbcharsetprober.rb +124 -0
  49. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/sbcsgroupprober.rb +58 -0
  50. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/sjisprober.rb +88 -0
  51. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/universaldetector.rb +166 -0
  52. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/utf8prober.rb +87 -0
  53. data/lib/tmail/version.rb +1 -1
  54. data/setup.rb +2 -2
  55. data/test/fixtures/apple_unquoted_content_type +44 -0
  56. data/test/fixtures/inline_attachment.txt +2095 -0
  57. data/test/fixtures/iso_8859_1_email_without_encoding_and_message_id.txt +16 -0
  58. data/test/fixtures/mailbox.zip +0 -0
  59. data/test/fixtures/marked_as_iso_8859_1_but_it_is_utf_8.txt +33 -0
  60. data/test/fixtures/marked_as_utf_8_but_it_is_iso_8859_1.txt +56 -0
  61. data/test/fixtures/raw_email_bad_time +62 -0
  62. data/test/fixtures/raw_email_double_at_in_header +14 -0
  63. data/test/fixtures/raw_email_only_attachment +17 -0
  64. data/test/fixtures/raw_email_string_in_date_field +17 -0
  65. data/test/fixtures/raw_email_trailing_dot +21 -0
  66. data/test/fixtures/raw_email_with_quoted_attachment_filename +60 -0
  67. data/test/fixtures/raw_email_with_wrong_splitted_multibyte_encoded_word_subject +15 -0
  68. data/test/fixtures/the_only_part_is_a_word_document.txt +425 -0
  69. data/test/fixtures/unquoted_filename_in_attachment +177 -0
  70. data/test/test_address.rb +114 -92
  71. data/test/test_attachments.rb +84 -1
  72. data/test/test_encode.rb +54 -0
  73. data/test/test_header.rb +60 -2
  74. data/test/test_mail.rb +22 -15
  75. data/test/test_mbox.rb +12 -3
  76. data/test/test_port.rb +13 -9
  77. data/test/test_quote.rb +9 -0
  78. data/tmail.gemspec +34 -0
  79. metadata +68 -167
  80. data/MANIFEST +0 -191
  81. data/log/BugTrackingLog.txt +0 -1231
  82. data/log/Changelog.txt +0 -534
  83. data/log/Fixme.txt +0 -6
  84. data/log/Testlog.txt +0 -2340
  85. data/log/Todo.txt +0 -30
  86. data/log/fixme.rdoc +0 -6
  87. data/meta/MANIFEST +0 -128
  88. data/meta/VERSION +0 -1
  89. data/meta/project.yaml +0 -30
  90. data/meta/unixname +0 -1
  91. data/sample/bench_base64.rb +0 -48
  92. data/sample/data/multipart +0 -23
  93. data/sample/data/normal +0 -29
  94. data/sample/data/sendtest +0 -5
  95. data/sample/data/simple +0 -14
  96. data/sample/data/test +0 -27
  97. data/sample/extract-attachements.rb +0 -33
  98. data/sample/from-check.rb +0 -26
  99. data/sample/multipart.rb +0 -26
  100. data/sample/parse-bench.rb +0 -68
  101. data/sample/parse-test.rb +0 -19
  102. data/sample/sendmail.rb +0 -94
  103. data/site/contributing/index.html +0 -183
  104. data/site/css/clean.css +0 -27
  105. data/site/css/layout.css +0 -31
  106. data/site/css/style.css +0 -60
  107. data/site/download/index.html +0 -61
  108. data/site/img/envelope.jpg +0 -0
  109. data/site/img/mailman.gif +0 -0
  110. data/site/img/stamp-sm.jpg +0 -0
  111. data/site/img/stamp.jpg +0 -0
  112. data/site/img/stampborder.jpg +0 -0
  113. data/site/img/tfire.jpg +0 -0
  114. data/site/img/tmail.png +0 -0
  115. data/site/index.html +0 -270
  116. data/site/js/jquery.js +0 -31
  117. data/site/log/Changelog.xsl +0 -33
  118. data/site/log/changelog.xml +0 -1677
  119. data/site/outdated/BUGS +0 -3
  120. data/site/outdated/DEPENDS +0 -1
  121. data/site/outdated/Incompatibilities +0 -89
  122. data/site/outdated/Incompatibilities.ja +0 -102
  123. data/site/outdated/NEWS +0 -9
  124. data/site/outdated/README.ja +0 -73
  125. data/site/outdated/doc.ja/address.html +0 -275
  126. data/site/outdated/doc.ja/basics.html +0 -405
  127. data/site/outdated/doc.ja/config.html +0 -49
  128. data/site/outdated/doc.ja/details.html +0 -146
  129. data/site/outdated/doc.ja/index.html +0 -39
  130. data/site/outdated/doc.ja/mail.html +0 -793
  131. data/site/outdated/doc.ja/mailbox.html +0 -265
  132. data/site/outdated/doc.ja/port.html +0 -95
  133. data/site/outdated/doc.ja/tmail.html +0 -58
  134. data/site/outdated/doc.ja/usage.html +0 -202
  135. data/site/outdated/rdd/address.rrd.m +0 -229
  136. data/site/outdated/rdd/basics.rd.m +0 -275
  137. data/site/outdated/rdd/config.rrd.m +0 -26
  138. data/site/outdated/rdd/details.rd.m +0 -117
  139. data/site/outdated/rdd/index.rhtml.m +0 -54
  140. data/site/outdated/rdd/mail.rrd.m +0 -701
  141. data/site/outdated/rdd/mailbox.rrd.m +0 -228
  142. data/site/outdated/rdd/port.rrd.m +0 -69
  143. data/site/outdated/rdd/tmail.rrd.m +0 -33
  144. data/site/outdated/rdd/usage.rd.m +0 -247
  145. data/site/quickstart/index.html +0 -69
  146. data/site/quickstart/quickstart.html +0 -52
  147. data/site/quickstart/usage.html +0 -193
  148. data/site/reference/address.html +0 -247
  149. data/site/reference/config.html +0 -30
  150. data/site/reference/index.html +0 -101
  151. data/site/reference/mail.html +0 -726
  152. data/site/reference/mailbox.html +0 -245
  153. data/site/reference/port.html +0 -75
  154. data/site/reference/tmail.html +0 -35
  155. data/work/script/make +0 -26
  156. data/work/script/rdoc +0 -39
  157. data/work/script/setup +0 -1616
  158. data/work/script/test +0 -30
@@ -1,68 +0,0 @@
1
- #
2
- # parser benchmark
3
- #
4
-
5
- require 'tmail'
6
-
7
-
8
- if ARGV.empty? then
9
- $stderr.puts "usage: #{$0} <mhdir> <mhdir>..."
10
- exit 0
11
- end
12
- ARGV.each do |dname|
13
- unless File.directory? dname then
14
- $stderr.puts "not directory: #{dname}"
15
- exit 1
16
- end
17
- end
18
-
19
- $stdout.sync = true
20
-
21
- $count = 0
22
- $failnum = 0
23
- $dirfail = 0
24
- $fieldname = ''
25
- $dirname = ''
26
- $port = nil
27
-
28
- begin
29
- ARGV.each do |dirname|
30
- $dirname = dirname
31
-
32
- TMail::MhLoader.new( dirname ).each do |port|
33
- begin
34
- t = TMail::Mail.new( port )
35
- $port = port
36
-
37
- t.each_header do |key, field|
38
- $fieldname = key
39
- next if /received/i === key
40
- if ::TMail::StructH === field then
41
- field.instance_eval { parse unless @parsed }
42
- end
43
- end
44
- rescue TMail::SyntaxError
45
- $stderr.puts "fail in #{$count+1}, field #{$fieldname}"
46
- $stderr.puts $!.to_s
47
- $failnum += 1
48
- $dirfail += 1
49
-
50
- if $failnum % 10 == 0 then
51
- puts 'fail = ' + $failnum.to_s
52
- #raise
53
- end
54
- end
55
-
56
- $count += 1
57
- puts "end #{$count}" if $count % 50 == 0
58
- end
59
-
60
- puts "directory #{dirname} end, fail=#{$dirfail}"
61
- $dirfail = 0
62
- end
63
- rescue
64
- puts "at #{$port.inspect}, non ParseError raised"
65
- raise
66
- end
67
-
68
- puts "parse #{$count} files, fail=#{$failnum}"
@@ -1,19 +0,0 @@
1
- #
2
- # parser test
3
- #
4
-
5
- require 'tmail'
6
-
7
- puts "testing parser --------------------------------"
8
- puts
9
-
10
- TMail::Mail.load( 'data/normal' ).each_header do |key, field|
11
- if field.respond_to? :parse, true then
12
- field.instance_eval {
13
- parse
14
- @written = true
15
- }
16
- end
17
- printf "%s ok\n", field.name
18
- # puts field.decoded
19
- end
@@ -1,94 +0,0 @@
1
- #
2
- # sendmail.rb
3
- #
4
-
5
- require 'tmail'
6
- require 'net/smtp'
7
- require 'nkf'
8
- require 'etc'
9
- require 'socket'
10
- require 'getopts'
11
-
12
-
13
- def usage( status, msg = nil )
14
- output = (status == 0 ? $stdout : $stderr)
15
- output.puts msg if msg
16
- output.print(<<EOS)
17
- Usage: cat msg | #{File.basename $0} [-j|--ja] [-s <subject>] [-f <from>] <to>
18
-
19
- -h,--host=addr SMTP server address. (default=localhost)
20
- -s,--subject=sbj subject of the message. (default=(none))
21
- -f,--from=from from address.
22
- -j,--ja handle japanese message. (default=off)
23
-
24
- EOS
25
- exit status
26
- end
27
-
28
- def main
29
- getopts('j', 'ja', 'h:', 'host:',
30
- 's:', 'subject:', 'f:', 'from:',
31
- 'help') or usage(1)
32
-
33
- smtphost = $OPT_host || $OPT_h || 'localhost'
34
- subject = $OPT_subject || $OPT_s
35
- from = $OPT_from || $OPT_f || guess_from_address()
36
- usage(1, 'Sender address not given') unless from
37
- to = ARGV
38
- usage(1, 'Receipt address(es) not given') if to.empty?
39
- ja_locale = $OPT_ja || $OPT_j
40
-
41
- send_mail smtphost, setup_mail(from, to, subject, $stdin.read, ja_locale)
42
- end
43
-
44
- def setup_mail( from, to, subject, body, ja_locale )
45
- mail = TMail::Mail.new
46
- mail.date = Time.now
47
- mail.from = from
48
- mail.to = to
49
- mail.subject = subject if subject
50
- mail.mime_version = '1.0'
51
- if ja_locale
52
- mail.body = NKF.nkf('-j', body)
53
- mail.set_content_type 'text', 'plain', 'charset' => 'iso-2022-jp'
54
- else
55
- mail.body = body
56
- mail.set_content_type 'text', 'plain'
57
- end
58
- mail
59
- end
60
-
61
- def send_mail( host, mail )
62
- msg = mail.encoded
63
- $stderr.print msg if $DEBUG
64
-
65
- smtp = Net::SMTP.new(host, 25)
66
- smtp.set_debug_output $stderr if $DEBUG
67
- smtp.start {
68
- smtp.send_mail msg, mail.from_address, mail.destinations
69
- }
70
- end
71
-
72
- def guess_from_address
73
- user = getlogin()
74
- unless user
75
- $stderr.puts 'cannot get user account; abort.'
76
- exit 1
77
- end
78
- if domain = (Socket.gethostname || ENV['HOSTNAME'] || ENV['HOST'])
79
- user + '@' + domain
80
- else
81
- user
82
- end
83
- end
84
-
85
- def getlogin
86
- begin
87
- require 'etc'
88
- Etc.getlogin
89
- rescue LoadError
90
- ENV['LOGNAME'] || ENV['USER']
91
- end
92
- end
93
-
94
- main
@@ -1,183 +0,0 @@
1
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
- <html lang="en">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/html; charset=utf8">
5
- <meta http-equiv="Content-Language" content="en">
6
-
7
- <link rel="stylesheet" href="../css/clean.css" type="text/css" media="screen, projection, print"/>
8
- <link rel="stylesheet" href="../css/layout.css" type="text/css" media="screen, projection, print"/>
9
- <link rel="stylesheet" href="../css/style.css" type="text/css" media="screen, projection, print"/>
10
-
11
- <link rel="icon" href="../img/tfire.jpg" type="image/x-icon"/>
12
-
13
- <title>TMail &mdash; Contributing to the best Ruby email handler ever!</title>
14
-
15
- <script type="text/javascript" src="../js/jquery.js"></script>
16
-
17
- </head>
18
- <body>
19
- <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
20
- </script>
21
- <script type="text/javascript">
22
- _uacct = "UA-2871747-1";
23
- urchinTracker();
24
- </script>
25
-
26
- <div class="container">
27
-
28
- <div class="logo">
29
- <img src="../img/stamp-sm.jpg"/>
30
- </div>
31
-
32
- <div class="title">
33
- <h1>TMail</h1>
34
- <h2>Ruby on Mail</h2>
35
- </div>
36
-
37
- <div class="menu">
38
- &nbsp;
39
- <a href="../index.html">Home</a> &nbsp;&nbsp;
40
- <a href="../quickstart/index.html">Quickstart</a> &nbsp;&nbsp;
41
- <a href="http://lindsaar.net/tmail/" onClick="javascript:urchinTracker('/outgoing/rubyforge.org/blog_page');">Blog</a> &nbsp;&nbsp;
42
- <a href="http://rubyforge.org/frs/?group_id=4512" onClick="javascript:urchinTracker('/outgoing/rubyforge.org/download_page');">Download</a> &nbsp;&nbsp;
43
- <a href="http://rubyforge.org/mailman/listinfo/tmail-talk">Mailing List</a> &nbsp;&nbsp;
44
- <a href="../reference/index.html">Reference</a> &nbsp;&nbsp;
45
- <a href="../rdoc/index.html">RDocs</a> &nbsp;&nbsp;
46
- <a href="http://rubyforge.org/projects/tmail/" onClick="javascript:urchinTracker('/outgoing/rubyforge.org/project_page');">Project</a> &nbsp;&nbsp;
47
- <a href="../contributing/index.html">Contributing</a>
48
- </div>
49
-
50
- <div class="main">
51
- <h1>Contributing to TMail</h1>
52
-
53
- <p>
54
- Here is a blunt truth, TMail is what we (that is you and me) make it.
55
- </p>
56
-
57
- <p>
58
- I have had a few people asking how to contribute to TMail, so I thought I
59
- would quickly do a write up on how to go about it.
60
- </p>
61
-
62
- <p>
63
- First things first, go to the <a href="http://rubyforge.org/mailman/listinfo/tmail-talk"
64
- title="Tmail-talk Info Page">TMail Mailing list</a> and subscribe and let us
65
- know what you want to attack, while this is definitely not a requirement to
66
- writing a patch, maybe someone else has the same problem and / or is mid
67
- fixing it, plus, we're basically a nice bunch of people ;)
68
- </p>
69
-
70
- <p>
71
- Then, if you are new to this sort of thing you should go and read this great write up
72
- by <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/"
73
- title="Dr Nic &raquo; 8 steps for fixing other people&#8217;s code">Dr Nic</a>
74
- which covers the basic steps on how to check out, patch and submit fixes to
75
- code. This also applied very well to TMail.
76
- </p>
77
-
78
- <p>
79
- Then, you need to get a copy of the latest TMail trunk code. You do this like so:
80
- </p>
81
-
82
- <pre class="shell">
83
- baci:~ mikel$ svn checkout http://tmail.rubyforge.org/svn/trunk tmail
84
- </pre>
85
-
86
- <p>
87
- This will check out the most recent version of TMail from the source tree at
88
- RubyForge. Once you have this, the first thing you should do is run the test
89
- suite. There are over 4000 assertions run by the test suite to make sure all
90
- is OK. This also gives you a stable datum of "When I got it, it was working
91
- so I just have to make sure it stays working...". To run the tests, do this:
92
- </p>
93
-
94
-
95
- <pre class="shell">
96
- baci:~ mikel$ cd tmail
97
- baci:~/tmail mikel$ rake test
98
- (in /Users/mikel/tmail)
99
- /usr/local/bin/ruby -Ilib:test ((SNIP))
100
- Loaded suite /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.1/lib/rake/rake_test_loader
101
- Started
102
- ........................................................................
103
- ........................................................................
104
- ............................................................
105
- Finished in 0.456426 seconds.
106
-
107
- 204 tests, 4014 assertions, 0 failures, 0 errors
108
- </pre>
109
-
110
- <p>
111
- If you get any errors at this point, post to the TMail Mailing list and let us
112
- know, tell us what version of Ruby you are running, and what platform you are on
113
- as well as any error output from the tests. If you can fix it, go ahead!
114
- </p>
115
-
116
- <p>
117
- Now that you have the trunk version, you need to write your patch and submit it.
118
- If you are making a code change, you should write a test driven change, if you
119
- are new to this, you can find a great screen cast by James Edward Gray II on
120
- <a href="http://macromates.com/screencast/ruby_quiz_screencast.mov">TDD with Textmate.</a>
121
- This will give you the basics of what a test drive change is and how to go about it.
122
- For all you RSpec fans, I am seriously considering moving the testing framework over
123
- to BDD and RSpec, if you want to get on board and help out, that would be great!
124
- </p>
125
-
126
- <p>
127
- Once you have written your test, run rake test again and watch it fail. This is a
128
- key part of Test Driven Development. Then write your change in the code.
129
- </p>
130
-
131
- <p>
132
- Once you have written your code, run rake test again, and your test should now pass
133
- and every OTHER test should also pass. If this is the case, then well done! You
134
- have just made a test driven change to the TMail library.
135
- </p>
136
-
137
- <p>
138
- Now you need to make the diff file of what you have done against the library. You
139
- do this using the svn diff command. First however, you should update your code, just
140
- in case someone else has updated the source tree between you checking it out and
141
- writing your patch. So, you do both like this:
142
- </p>
143
-
144
- <pre class="shell">
145
- baci:~/tmail mikel$ svn up
146
- At revision 206.
147
- baci:~/tmail mikel$ svn diff > my_well_named_patch_file.diff
148
- baci:~/tmail mikel$
149
- </pre>
150
-
151
- <p>
152
- Note: If while doing the SVN UP anything was updated, you should re-run your
153
- tests using rake test to make sure your patch didn't just go stale :)
154
- </p>
155
-
156
- <p>
157
- Next step is peer review. Go open a patch ticket on the
158
- <a href="http://rubyforge.org/tracker/?group_id=4512" title="RubyForge: TMail:">
159
- RubyForge tracker</a>, in it, select the right category and group for the patch
160
- you have made (if there isn't one that matches, leave it as none and then mention
161
- this in the description field). Give your ticket a name, and then attach your file.
162
- </p>
163
-
164
- <p>
165
- It is a good idea to then go to the TMail Talk list and let everyone know about your
166
- patch. Then we can check it out, suggest changes or commit it if all is good.
167
- </p>
168
-
169
- <p>
170
- That's it! Easy hey? Once you have submitted patches, it gets easier and you get
171
- to bask in the glory of being a committer to Ruby's most popular mail handling
172
- library.
173
- </p>
174
-
175
- </div>
176
-
177
- <div class="footer">
178
- Copyright (c) 2007 TMail Project &reg; All Rights Reserved
179
- </div>
180
-
181
- </div>
182
- </body>
183
- </html>
@@ -1,27 +0,0 @@
1
- * {
2
- background: transparent;
3
- }
4
-
5
- body {
6
- margin: 0;
7
- padding: 0;
8
- font-size: 12px;
9
- color: #333333;
10
- }
11
-
12
- div {
13
- font-size: 15px;
14
- }
15
-
16
- p {
17
- font-size: 15px;
18
- line-height: 19px;
19
- }
20
-
21
- pre {
22
- font-size: 13px;
23
- font-family: Courier, sans-serif;
24
- background-color: #EEE;
25
- display: block;
26
- border: 1px solid #999;
27
- }
@@ -1,31 +0,0 @@
1
-
2
- .container{
3
- width: 800px;
4
- margin: 0 auto;
5
- padding: 10px 20px 10px 20px;
6
- }
7
-
8
- .logo {
9
- float: right;
10
- width: 150px;
11
- padding: 0 0 10px 0;
12
- text-align: right;
13
- }
14
-
15
- .menu {
16
- margin-top: 30px;
17
- width: 650px;
18
- }
19
-
20
- .menu a {
21
- text-decoration: none;
22
- }
23
-
24
- .main {
25
- clear: both;
26
- padding: 10px 20px;
27
- }
28
-
29
- .footer {
30
- margin: 30px 0 10px 0;
31
- }
@@ -1,60 +0,0 @@
1
- body {
2
- background: #FFFFFF;
3
- }
4
-
5
- .container {
6
- background: white;
7
- }
8
-
9
- .title h1 {
10
- color: red;
11
- font-size: 72px;
12
- font-family: Times New Roman;
13
- font-weight: bold;
14
- margin: 0;
15
- padding: 0px;
16
- }
17
-
18
- .title h2 {
19
- color: #cc5500;
20
- font-size: 16px;
21
- font-family: Times New Roman;
22
- font-weight: bold;
23
- margin: 0;
24
- padding: 0 12px;
25
- letter-spacing: 8px;
26
- }
27
-
28
- .menu {
29
- text-align: left;
30
- color: red;
31
- font-size: 14px;
32
- }
33
-
34
- .main {
35
- border: 1px solid orange;
36
- }
37
-
38
- .footer {
39
- color: gray;
40
- font-size: .9em;
41
- }
42
-
43
- pre {
44
- border: 1px solid #dddddd;
45
- font-family: monospace;
46
- font-size: 0.8em;
47
- line-height: 1.6em;
48
- }
49
-
50
- pre.ruby {
51
- color: red;
52
- background: #eeeeee;
53
- padding: 10px;
54
- }
55
-
56
- pre.shell {
57
- color: green;
58
- background: #eeeeee;
59
- padding: 10px;
60
- }