tmail 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. data/CHANGES +50 -5
  2. data/MANIFEST +188 -0
  3. data/NOTES +1 -1
  4. data/README +10 -4
  5. data/Rakefile +1 -10
  6. data/lib/tmail.rb +1 -0
  7. data/lib/tmail/Makefile +0 -1
  8. data/lib/tmail/address.rb +190 -17
  9. data/lib/tmail/attachments.rb +1 -1
  10. data/lib/tmail/base64.rb +4 -10
  11. data/lib/tmail/compat.rb +8 -6
  12. data/lib/tmail/config.rb +2 -6
  13. data/lib/tmail/core_extensions.rb +14 -18
  14. data/lib/tmail/encode.rb +47 -12
  15. data/lib/tmail/header.rb +7 -10
  16. data/lib/tmail/index.rb +2 -1
  17. data/lib/tmail/interface.rb +14 -12
  18. data/lib/tmail/loader.rb +2 -0
  19. data/lib/tmail/mail.rb +83 -24
  20. data/lib/tmail/mailbox.rb +70 -10
  21. data/lib/tmail/main.rb +2 -0
  22. data/lib/tmail/mbox.rb +2 -0
  23. data/lib/tmail/net.rb +16 -15
  24. data/lib/tmail/obsolete.rb +7 -12
  25. data/lib/tmail/parser.rb +1 -0
  26. data/lib/tmail/require_arch.rb +2 -0
  27. data/lib/tmail/scanner.rb +2 -1
  28. data/lib/tmail/scanner_r.rb +11 -10
  29. data/lib/tmail/utils.rb +83 -26
  30. data/lib/tmail/version.rb +3 -2
  31. data/log/BugTrackingLog.txt +1208 -0
  32. data/log/{ChangeLog.txt → Changelog-0.txt} +36 -0
  33. data/log/Changelog.txt +534 -0
  34. data/log/Testlog.txt +114 -0
  35. data/log/Todo.txt +0 -2
  36. data/meta/VERSION +1 -0
  37. data/meta/project.yaml +8 -5
  38. data/meta/unixname +1 -0
  39. data/setup.rb +1481 -0
  40. data/site/contributing/index.html +183 -0
  41. data/site/css/clean.css +27 -0
  42. data/site/css/layout.css +31 -0
  43. data/site/css/style.css +60 -0
  44. data/site/download/index.html +61 -0
  45. data/site/img/envelope.jpg +0 -0
  46. data/site/img/mailman.gif +0 -0
  47. data/site/img/stamp-sm.jpg +0 -0
  48. data/site/img/stamp.jpg +0 -0
  49. data/site/img/stampborder.jpg +0 -0
  50. data/site/img/tfire.jpg +0 -0
  51. data/site/img/tmail.png +0 -0
  52. data/site/index.html +270 -0
  53. data/site/js/jquery.js +31 -0
  54. data/site/log/Changelog.xsl +33 -0
  55. data/site/log/changelog.xml +1677 -0
  56. data/site/outdated/BUGS +3 -0
  57. data/site/outdated/DEPENDS +1 -0
  58. data/site/outdated/Incompatibilities +89 -0
  59. data/site/outdated/Incompatibilities.ja +102 -0
  60. data/site/outdated/NEWS +9 -0
  61. data/site/outdated/README.ja +73 -0
  62. data/site/outdated/doc.ja/address.html +275 -0
  63. data/site/outdated/doc.ja/basics.html +405 -0
  64. data/site/outdated/doc.ja/config.html +49 -0
  65. data/site/outdated/doc.ja/details.html +146 -0
  66. data/site/outdated/doc.ja/index.html +39 -0
  67. data/site/outdated/doc.ja/mail.html +793 -0
  68. data/site/outdated/doc.ja/mailbox.html +265 -0
  69. data/site/outdated/doc.ja/port.html +95 -0
  70. data/site/outdated/doc.ja/tmail.html +58 -0
  71. data/site/outdated/doc.ja/usage.html +202 -0
  72. data/site/outdated/rdd/address.rrd.m +229 -0
  73. data/site/outdated/rdd/basics.rd.m +275 -0
  74. data/site/outdated/rdd/config.rrd.m +26 -0
  75. data/site/outdated/rdd/details.rd.m +117 -0
  76. data/site/outdated/rdd/index.rhtml.m +54 -0
  77. data/site/outdated/rdd/mail.rrd.m +701 -0
  78. data/site/outdated/rdd/mailbox.rrd.m +228 -0
  79. data/site/outdated/rdd/port.rrd.m +69 -0
  80. data/site/outdated/rdd/tmail.rrd.m +33 -0
  81. data/site/outdated/rdd/usage.rd.m +247 -0
  82. data/site/quickstart/index.html +69 -0
  83. data/site/quickstart/quickstart.html +52 -0
  84. data/site/quickstart/usage.html +193 -0
  85. data/site/reference/address.html +247 -0
  86. data/site/reference/config.html +30 -0
  87. data/site/reference/index.html +101 -0
  88. data/site/reference/mail.html +726 -0
  89. data/site/reference/mailbox.html +245 -0
  90. data/site/reference/port.html +75 -0
  91. data/site/reference/tmail.html +35 -0
  92. data/test/fixtures/mailbox +405 -4
  93. data/test/fixtures/raw_email_multiple_from +30 -0
  94. data/test/kcode.rb +2 -2
  95. data/test/temp_test_one.rb +46 -0
  96. data/test/test_address.rb +77 -38
  97. data/test/test_encode.rb +0 -2
  98. data/test/test_header.rb +47 -24
  99. data/test/test_mail.rb +52 -9
  100. data/test/test_mbox.rb +28 -0
  101. data/test/test_port.rb +33 -27
  102. data/test/test_quote.rb +35 -8
  103. data/work/script/make +26 -0
  104. data/work/script/rdoc +39 -0
  105. data/{script → work/script}/setup +0 -0
  106. data/work/script/test +30 -0
  107. metadata +249 -184
  108. data/log/History.txt +0 -40
  109. data/meta/config.yaml +0 -8
  110. data/meta/icli.yaml +0 -16
  111. data/meta/tmail.roll +0 -3
  112. data/script/changelog +0 -19
  113. data/script/clobber/distclean +0 -8
  114. data/script/clobber/package +0 -10
  115. data/script/compile +0 -32
  116. data/script/pack/gem +0 -93
  117. data/script/pack/tgz +0 -41
  118. data/script/pack/zip +0 -41
  119. data/script/prepare +0 -15
  120. data/script/publish +0 -51
  121. data/script/rdoc +0 -42
  122. data/script/release +0 -10
  123. data/script/stamp +0 -33
  124. data/script/stats +0 -138
  125. data/script/tag +0 -25
  126. data/script/test +0 -36
@@ -1,40 +0,0 @@
1
- === 1.2.0 / 2007-11-29
2
-
3
- * 5 major enhancements:
4
- * Extensive documentation work. (mikel)
5
- * Removed base64 c extension. It's speed benefit was negligable (only 0.2 sec over 10000 sizable encode/decode runs) (trans)
6
- * Closed 15445 - TMail::Mail#create_forward now returns a new Mail object that has the original mail as an encoded 7 bit multipart attachment. Also moved create_forward and create_reply from tmail/net into tmail/interface as it makes more sense to have it there. (mikel)
7
- * Closed 15643 - TMail::Mail#reply_addresses was returning an empty array if reply_to was set to nil (ie, the header field existed but was empty) instead of returning the from address or default. (mikel)
8
- * Closed 16025 - TMail scanner.rb would not parse ATOM chars correctly making it fail tests where the C version passed them. Fixed this by updating the Scanner.rb version to be in step with the C version (there was an extra @ symbol in the ATOM CHARS definition that was not in the C version.) (mikel)
9
- * Fixed scanner.rb so that it would pass the same tests that the C version does - had a sundry @ symbol inside of the ATOM CHARS
10
- * 3 minor enhancements:
11
- * Renamed scanner_c.c to tmailscanner.c (trans)
12
- * Changed TMail::Mail#sender to have a default "default" value of nil to be in alignment with all the other interface methods (mikel)
13
- * Made base64_decode and base64_encode into ! versions as they are destructive on the mail body (encodes the body to base64 or decodes it), made aliases for base64_decode and base64_encode to point back to the bang versions. Doing this with a view to change base64_encode to a non destructive version (returns the encoded body) in future versions. (mikel)
14
-
15
- === 1.1.1 / 2007-11-05
16
-
17
- * 3 major enhancement:
18
- * Created unified package, for installation in any platform.
19
- * Added require_arch.rb to facilitate multi-platform support.
20
- * If compilation fails, set NORUBYEXT="true" and reinstall.
21
- * 3 minor enhancement:
22
- * Fixed line wrapping of long header fields so that they wrap at the correct whitespace points.
23
- * Fixed bug where re-assigning the mail.body to existing mail object that already had a parsed body would not re-parse the body.
24
- * Started documenting the source code... lots more to do.
25
-
26
- === 1.1.0 / 2007-10-28
27
-
28
- * 1 minor enhancements:
29
- * Changed the quoting of paramaters in the header fields to wrap double quotes around fields that are needed to be quoted.
30
- * Removed keeping double quotes around a filename that does not need double quotes per RFC 1521
31
- * More clean up and getting tests passing. Now standing at 2 failures out of 3366 assertions. One is the incorrect handling of "@"@test.com (returns @@test.com) and the other is a japanese encoding issue.
32
-
33
- === 1.0.0 / 2007-10-28
34
-
35
- * 1 major enhancement:
36
- * TMail is now released as a GEM!
37
- * 2 minor enhancements:
38
- * Fixed bug 15077 - TMail now recognizes attachments as soon as they are added to the body.
39
- * Refactored handling of quotations in header fields - now cleaner
40
-
@@ -1,8 +0,0 @@
1
- publish:
2
- project: tmail
3
- source: doc
4
-
5
- rdoc:
6
- output: doc/rdoc
7
- main: README
8
-
@@ -1,16 +0,0 @@
1
- ---
2
- rubyforge:
3
- project : tmail
4
- username : transami
5
-
6
- release:
7
- store : pkg
8
- package : tmail
9
- notelog : NOTES
10
- changelog : CHANGES
11
-
12
- publish: {}
13
-
14
- announce:
15
- message: README
16
-
@@ -1,3 +0,0 @@
1
- tmail 1.2.1 stable 2007-12-25
2
- lib/tmail
3
- ext/tmailscanner/tmail
@@ -1,19 +0,0 @@
1
- #!/usr/bin/env ratch
2
-
3
- # generate changelogs
4
-
5
- file = 'log/History.txt'
6
- out = 'log/Release.txt'
7
-
8
- name, version = *File.basename(glob("meta/*.roll").first).chomp('.roll').split('-')
9
-
10
- main :changelog => [:recent] do
11
- mkdir_p "doc/log"
12
- svn "log --xml > doc/log/changelog.xml"
13
- end
14
-
15
- task :recent do
16
- changes = /^===\s*#{version}(.*?)\n===/m.match(File.read(file))[0]
17
- changes = changes.chomp('===').strip.sub(/^===\s+/, 'TAG ')
18
- File.open(out, 'w'){ |f| f << changes }
19
- end
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env ratch
2
-
3
- main :distclean do
4
- cd 'ext/tmailscanner/tmail' do
5
- make 'distclean'
6
- end
7
- end
8
-
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ratch
2
-
3
- # Remove package products.
4
-
5
- main :clobber_packaging do
6
- glob("pkg/*").each do |f|
7
- rm_r(f)
8
- end
9
- end
10
-
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env ratch
2
-
3
- # compile extensions
4
-
5
- main :compile => [:compile_scanner] do
6
- puts "Compile complete."
7
- end
8
-
9
- task :compile_scanner do
10
- file = nil
11
- cd("ext/tmailscanner/tmail") do
12
- ruby "extconf.rb"
13
- make
14
-
15
- #file = glob("tmailscanner.#{dlext}").first
16
- #file = File.expand_path(file) if file
17
- end
18
-
19
- #if file
20
- # mkdir_p("lib/tmail/#{arch}")
21
- # mv(file, "lib/tmail/#{arch}/")
22
- #end
23
- end
24
-
25
- def dlext
26
- Config::CONFIG['DLEXT']
27
- end
28
-
29
- def arch
30
- Config::CONFIG['arch']
31
- end
32
-
@@ -1,93 +0,0 @@
1
- #!/usr/bin/env ratch
2
-
3
- # generate gem package
4
-
5
- # TODO: Should this use staging too, like zip/tgz?
6
-
7
- begin
8
- require 'rubygems/specification'
9
- Gem::manage_gems
10
- rescue LoadError
11
- raise LoadError, "RubyGems is not installed?"
12
- end
13
-
14
- # Create a Gem package.
15
-
16
- main 'pack/gem' do
17
- status "Creating .gem package"
18
-
19
- config = configuration['pack'] || {}
20
- config = config['gem'] || {}
21
-
22
- package = package().clone
23
- package.update(config)
24
-
25
- store = config[:store] || 'pkg'
26
-
27
- #dir = Dir.pwd
28
-
29
- file = nil
30
- #cd(dir) do
31
- #status "vi #{metadata.name}.gemspec"
32
- builder = ::Gem::Builder.new(gemspec(package))
33
- status "gem build #{package.name}"
34
- unless dryrun?
35
- file = builder.build
36
- file = File.expand_path(file)
37
- end
38
- #end
39
-
40
- transfer(file, store)
41
- end
42
-
43
- # Transfer package file to storage location.
44
-
45
- def transfer(file, store)
46
- dest = File.join(store, File.basename(file)) # move to store, unless already there
47
- dest = File.expand_path(dest)
48
- mv(file, store) unless file == dest
49
- end
50
-
51
- # Create Gem::Specification.
52
-
53
- def gemspec(package)
54
- distribute = package.filelist
55
- #distribute = Dir.multiglob_with_default( '**/*', distribute )
56
-
57
- ::Gem::Specification.new do |spec|
58
- spec.name = package.name
59
- spec.version = package.version
60
- spec.summary = package.brief
61
- spec.description = package.description
62
- spec.author = [package.author].flatten
63
- spec.email = package.email
64
- spec.rubyforge_project = package.development if /rubyforge.org/ =~ package.development
65
- spec.homepage = package.homepage
66
-
67
- # Platform: ruby, mswin32, i586-linux, powerpc-darwin, current
68
- spec.platform = 'ruby' # TODO current support!
69
-
70
- spec.require_paths = [package.gem_path].flatten.reverse
71
-
72
- #if package.platform != 'ruby'
73
- # spec.require_paths.concat(spec.require_paths.collect{ |d| File.join(d, platform) })
74
- #end
75
-
76
- spec.bindir = "bin"
77
- spec.executables = package.executables
78
- spec.requirements = package.requirements
79
- spec.has_rdoc = package.document
80
-
81
- if package.dependencies
82
- package.dependencies.each do |d,v|
83
- spec.add_dependency(*[d,v].compact)
84
- end
85
- end
86
-
87
- spec.extensions = package.compile
88
-
89
- spec.files = distribute
90
-
91
- spec.test_files = distribute.select{ |f| f =~ /^test\// } # TODO make test_files configurable
92
- end
93
- end
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env ratch
2
-
3
- # generate tar gzip package
4
-
5
- main 'pack/tgz' do
6
- status "Creating .tgz package"
7
-
8
- config = configuration['pack'] || {}
9
- config = config['tgz'] || {}
10
-
11
- package = package().clone
12
- package.update(config)
13
-
14
- store = config[:store] || 'pkg'
15
- templ = config[:template]
16
-
17
- name = package.stage_name(templ)
18
- stage = File.join(store, name)
19
- files = package.filelist
20
-
21
- stage(stage, files)
22
-
23
- if dryrun?
24
- status "tar -cxf #{name}.tgz"
25
- else
26
- file = nil
27
- cd(store) do
28
- file = tgz(name)
29
- end
30
- transfer(file, store)
31
- end
32
- end
33
-
34
- # Transfer package file to storage location.
35
-
36
- def transfer(file, store)
37
- # move to store, unless already there
38
- dest = File.join(store, File.basename(file))
39
- dest = File.expand_path(dest)
40
- mv(file, store) unless file == dest
41
- end
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env ratch
2
-
3
- # generate zip package
4
-
5
- main 'pack/zip' do
6
- status "Creating .zip package"
7
-
8
- config = configuration['pack'] || {}
9
- config = config['zip'] || {}
10
-
11
- package = package().clone
12
- package.update(config)
13
-
14
- store = config[:store] || 'pkg'
15
- templ = config[:template]
16
-
17
- name = package.stage_name(templ)
18
- stage = File.join(store, name)
19
- files = package.filelist
20
-
21
- stage(stage, files)
22
-
23
- if dryrun?
24
- status "tar -cxf #{name}.zip"
25
- else
26
- file = nil
27
- cd(store) do
28
- file = zip(name)
29
- end
30
- transfer(file, store)
31
- end
32
- end
33
-
34
- # Transfer package file to storage location.
35
-
36
- def transfer(file, store)
37
- # move to store, unless already there
38
- dest = File.join(store, File.basename(file))
39
- dest = File.expand_path(dest)
40
- mv(file, store) unless file == dest
41
- end
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ratch
2
-
3
- # prepare for release
4
- #
5
- # This updates the manifest file
6
- # and generates the packages.
7
-
8
- main :prepare do
9
- stamp
10
- manifest "up"
11
- pack.gem
12
- pack.zip
13
- pack.tgz
14
- end
15
-
@@ -1,51 +0,0 @@
1
- #!/usr/bin/env ratch
2
-
3
- # Publish website to rubyforge
4
- #
5
- # This task publishes the source dir (deafult 'doc')
6
- # to a rubyforge website.
7
-
8
- main :publish do
9
- config = configuration['publish']
10
-
11
- project = config['project']
12
- subdir = config['subdir']
13
- source = config['source'] || "doc"
14
- username = config['username'] || ENV['RUBYFORGE_USERNAME']
15
- protect = %w{usage statcvs statsvn robot.txt wiki}
16
- exclude = %w{.svn}
17
-
18
- abort "no project" unless project
19
- abort "no username (you can also set RUBYFORGE_USERNAME evironament variable)" unless username
20
-
21
- if subdir
22
- destination = File.join(project, subdir)
23
- else
24
- destination = project
25
- end
26
-
27
- dir = source.chomp('/') + '/'
28
- url = "#{username}@rubyforge.org:/var/www/gforge-projects/#{destination}"
29
-
30
- op = ['-rLvz', '--delete-after'] # maybe -p ?
31
-
32
- # add filter options. The commandline version didn't seem
33
- # to work, so I opted for creating an .rsync_filter file for
34
- # all cases.
35
-
36
- filter_file = File.join(source,'.rsync-filter')
37
-
38
- unless file?(filter_file)
39
- File.open(filter_file, 'w') do |f|
40
- exclude.map{|e| f << "- #{e}\n"}
41
- protect.map{|e| f << "P #{e}\n"}
42
- end
43
- end
44
-
45
- op << "--filter='dir-merge #{filter_file}'"
46
-
47
- args = op + [dir, url]
48
-
49
- rsync(*args.to_params)
50
- end
51
-
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env ratch
2
-
3
- # generate rdocs
4
- #
5
- # Generate Rdoc documentation. Settings are
6
- # the same as the rdoc command's options.
7
-
8
- main :rdoc do
9
- # Load rdoc configuration.
10
-
11
- config = configuration['rdoc']
12
-
13
- config['op'] = config.delete('output') if config['output']
14
-
15
- config = {
16
- 'template' => 'html',
17
- 'op' => 'doc/rdoc',
18
- 'merge' => true,
19
- 'inline-source' => true,
20
- 'exclude' => %w{MANIFEST, Manifest.txt},
21
- 'include' => %w{[A-Z]* lib ext}
22
- }.update(config)
23
-
24
- output = config['op']
25
-
26
- # Check for parent directory.
27
- # (Helps to ensure we're in the right place.)
28
-
29
- dir!(File.dirname(output))
30
-
31
- # Prepare command arguments.
32
-
33
- vector = config.command_vector('include')
34
-
35
- # Remove old rdocs, if any.
36
-
37
- rm_r(output) if File.exist?(output)
38
-
39
- # Document.
40
-
41
- rdoc(*vector)
42
- end
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env ratch
2
-
3
- # release packages
4
-
5
- main :release do
6
- version = rollrc.version
7
-
8
- icli "rubyforge release --version=#{version}"
9
- end
10
-