io-like 0.3.0 → 0.3.1

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 (62) hide show
  1. data/.yardopts +1 -0
  2. data/LICENSE +22 -57
  3. data/{LICENSE.rubyspec → LICENSE-rubyspec} +0 -0
  4. data/{NEWS → NEWS.md} +10 -5
  5. data/README.md +269 -0
  6. data/Rakefile +228 -0
  7. data/ruby.1.8.mspec +7 -0
  8. data/spec/binmode_spec.rb +29 -0
  9. data/spec/close_read_spec.rb +64 -0
  10. data/spec/close_spec.rb +36 -0
  11. data/spec/close_write_spec.rb +61 -0
  12. data/spec/closed_spec.rb +16 -0
  13. data/spec/each_byte_spec.rb +38 -0
  14. data/spec/each_line_spec.rb +11 -0
  15. data/spec/each_spec.rb +11 -0
  16. data/spec/eof_spec.rb +11 -0
  17. data/spec/fixtures/classes.rb +96 -0
  18. data/spec/fixtures/gets.txt +9 -0
  19. data/spec/fixtures/numbered_lines.txt +5 -0
  20. data/spec/fixtures/one_byte.txt +1 -0
  21. data/spec/fixtures/paragraphs.txt +7 -0
  22. data/spec/fixtures/readlines.txt +6 -0
  23. data/spec/flush_spec.rb +8 -0
  24. data/spec/getc_spec.rb +44 -0
  25. data/spec/gets_spec.rb +212 -0
  26. data/spec/isatty_spec.rb +6 -0
  27. data/spec/lineno_spec.rb +84 -0
  28. data/spec/output_spec.rb +47 -0
  29. data/spec/pos_spec.rb +53 -0
  30. data/spec/print_spec.rb +97 -0
  31. data/spec/printf_spec.rb +24 -0
  32. data/spec/putc_spec.rb +57 -0
  33. data/spec/puts_spec.rb +99 -0
  34. data/spec/read_spec.rb +162 -0
  35. data/spec/readchar_spec.rb +49 -0
  36. data/spec/readline_spec.rb +60 -0
  37. data/spec/readlines_spec.rb +140 -0
  38. data/spec/readpartial_spec.rb +92 -0
  39. data/spec/rewind_spec.rb +56 -0
  40. data/spec/seek_spec.rb +72 -0
  41. data/spec/shared/each.rb +204 -0
  42. data/spec/shared/eof.rb +116 -0
  43. data/spec/shared/pos.rb +39 -0
  44. data/spec/shared/tty.rb +12 -0
  45. data/spec/shared/write.rb +53 -0
  46. data/spec/sync_spec.rb +56 -0
  47. data/spec/sysread_spec.rb +87 -0
  48. data/spec/sysseek_spec.rb +68 -0
  49. data/spec/syswrite_spec.rb +60 -0
  50. data/spec/tell_spec.rb +7 -0
  51. data/spec/to_io_spec.rb +19 -0
  52. data/spec/tty_spec.rb +6 -0
  53. data/spec/ungetc_spec.rb +118 -0
  54. data/spec/write_spec.rb +61 -0
  55. data/spec_helper.rb +49 -0
  56. metadata +223 -32
  57. data/CONTRIBUTORS +0 -15
  58. data/GPL +0 -676
  59. data/HACKING +0 -123
  60. data/LEGAL +0 -56
  61. data/MANIFEST +0 -10
  62. data/README +0 -150
data/HACKING DELETED
@@ -1,123 +0,0 @@
1
- = Guide to Hacking IO::Like
2
-
3
- == Licensing
4
-
5
- Contributed code must be licensed under the same license as this project. See
6
- the included LICENSE file for details. Special consideration MAY be made in
7
- some cases, but such cases will be rare.
8
-
9
-
10
- == Dependencies
11
-
12
- === Runtime
13
-
14
- * Ruby 1.8.6 or greater
15
-
16
-
17
- === Build
18
-
19
- * rubygems 0.9.0 or greater
20
- * rake 0.8.3 or greater
21
- * mspec 1.5.9 (optional - used for testing)
22
- * allison 2.0.3 (optional - used for documentation only, if available)
23
- * rsync (optional - used for publishing documentation)
24
-
25
-
26
- === Install
27
-
28
- * rubygems 0.9.0 or greater
29
-
30
-
31
- == Versioning Policy
32
-
33
- Version numbers will be in <em>x.y.z</em> format, where <em>x</em>, <em>y</em>,
34
- and <em>z</em> are integers starting from 0. The version increment rules are
35
- as follows:
36
-
37
- <b>x</b>:: Planned releases which implement significant changes and/or break API
38
- compatibility. An exception is to be made for the transition from
39
- the <em>0.y.z</em> series to the <em>1.y.z</em> series since the
40
- <em>0.y.z</em> series is expected to be unstable throughout
41
- development. When incremented, <em>y</em> and <em>z</em> are reset
42
- to 0.
43
- <b>y</b>:: Planned releases which incorporate numerous bug fixes and/or new
44
- features which do not break backward compatibility. When
45
- incremented, <em>z</em> is reset to 0.
46
- <b>z</b>:: Generally, unplanned releases which incorporate a single fix for a
47
- critical defect.
48
-
49
- This is the {Rational Versioning Policy}[http://www.rubygems.org/read/chapter/7]
50
- as outlined in the {RubyGems User Guide}[http://www.rubygems.org/read/book/1].
51
-
52
-
53
- == Support Policy
54
-
55
- Due to limitations in resources (time/money/manpower), this project will focus
56
- primarily upon the development line of the current release at any given time.
57
- Fixes and new features should be applied first to that development line and then
58
- backported to earlier releases if necessary and feasible. Long term maintenance
59
- of previous releases is not planned. Users are generally expected to upgrade to
60
- the latest release in order to receive updates unless an explicit declaration of
61
- support for a previous release is made.
62
-
63
-
64
- == Coding Style
65
-
66
- The following points are not necessarily set in stone but should rather be used
67
- as a good guideline. Consistency is the goal of coding style, and changes will
68
- be more easily accepted if they are consistent with the rest of the code.
69
-
70
- <b>File Encoding</b>:: UTF-8
71
- <b>Indentation</b>:: Two spaces; no tabs
72
- <b>Comments</b>:: Document classes, attributes, methods, and code
73
- <b>Boolean Operators</b>:: Use <tt>&&</tt> and <tt>||</tt> for boolean tests;
74
- avoid <tt>and</tt> and <tt>or</tt>
75
- <b>Method Calls</b>:: Use <tt>a_method(arg, arg, etc)</tt>; <b>not</b>
76
- <tt>a_method( arg, arg, etc )</tt>,
77
- <tt>a_method arg, arg, etc</tt>, or any other
78
- variation
79
- <b>Blocks</b>:: <tt>do end</tt> for multi-line blocks and
80
- <tt>{ }</tt> for single-line blocks
81
- <b>Line length</b>:: Limit lines to a maximum of 80 characters
82
- <b>General</b>:: Try to follow the flow and style of the rest of the
83
- code
84
-
85
-
86
- == Generating Patches
87
-
88
- Patches should usually be generated against the <em>HEAD</em> revision of the
89
- <em>master</em> branch. When generating patches, please try to implement only
90
- a single feature or bug fix per patch. Documentation describing a patch should
91
- be included along with the patch so that the maintainer can more easily
92
- determine whether or not a patch is acceptable. Patches lacking the necessary
93
- documentation will be ignored.
94
-
95
- Patches will be much more readily accepted if test cases are provided which
96
- verify correct operation. Such test cases should be provided within the patch
97
- rather than as a separate patch. Proper documentation, especially for
98
- user-visible APIs, is highly prized; providing accurate and detailed
99
- documentation, often in the form of rubydocs, throughout new code contributions
100
- will also increase the desirability of a patch.
101
-
102
- If a series of patches is generated which cannot be applied individually, make
103
- sure to mention the dependency relationships in whatever medium is being used
104
- to distribute the patches. For instance, if a bug is discovered while
105
- implementing a new feature, create a patch which fixes the bug followed by a
106
- separate patch adding the feature. If the feature patch requires the bug fix
107
- patch in order to work, note that dependency in the comments for the feature
108
- patch by somehow referencing the bug fix patch.
109
-
110
- The patch generation process in general:
111
- $ git clone git://rubyforge.org/io-like.git # Clone the repo and check out
112
- # the master branch.
113
- $ cd io-like # Enter the workspace.
114
- (make and test changes)
115
- $ git add file1 file2 .. # Add new/modified files.
116
- $ git commit # Commit changes.
117
- $ git format-patch -C HEAD^ # Create a patch for the last
118
- # commit.
119
-
120
- Repeat as necessary until all patches are generated. Then either attach them to
121
- 1 or more email messages addressed to the maintainer or attach them to tickets
122
- in the issue tracker for the project. Remember to include a brief description
123
- of the patch and its dependencies, if any.
data/LEGAL DELETED
@@ -1,56 +0,0 @@
1
- = Other Legalities
2
-
3
- == Files Licensed Differently
4
-
5
- The following file(s) are provided under a license or licenses separate from
6
- this project.
7
-
8
- See LICENSE.rubyspec for terms of use for the following:
9
- spec/binmode_spec.rb
10
- spec/close_read_spec.rb
11
- spec/close_spec.rb
12
- spec/close_write_spec.rb
13
- spec/closed_spec.rb
14
- spec/each_byte_spec.rb
15
- spec/each_line_spec.rb
16
- spec/each_spec.rb
17
- spec/eof_spec.rb
18
- spec/fixtures/classes.rb
19
- spec/fixtures/gets.txt
20
- spec/fixtures/numbered_lines.txt
21
- spec/fixtures/one_byte.txt
22
- spec/fixtures/paragraphs.txt
23
- spec/fixtures/readlines.txt
24
- spec/flush_spec.rb
25
- spec/getc_spec.rb
26
- spec/gets_spec.rb
27
- spec/isatty_spec.rb
28
- spec/lineno_spec.rb
29
- spec/output_spec.rb
30
- spec/pos_spec.rb
31
- spec/print_spec.rb
32
- spec/printf_spec.rb
33
- spec/putc_spec.rb
34
- spec/puts_spec.rb
35
- spec/read_spec.rb
36
- spec/readchar_spec.rb
37
- spec/readline_spec.rb
38
- spec/readlines_spec.rb
39
- spec/readpartial_spec.rb
40
- spec/rewind_spec.rb
41
- spec/seek_spec.rb
42
- spec/shared/each.rb
43
- spec/shared/eof.rb
44
- spec/shared/pos.rb
45
- spec/shared/tty.rb
46
- spec/shared/write.rb
47
- spec/sync_spec.rb
48
- spec/sysread_spec.rb
49
- spec/sysseek_spec.rb
50
- spec/syswrite_spec.rb
51
- spec/tell_spec.rb
52
- spec/to_io_spec.rb
53
- spec/tty_spec.rb
54
- spec/ungetc_spec.rb
55
- spec/write_spec.rb
56
- spec_helper.rb
data/MANIFEST DELETED
@@ -1,10 +0,0 @@
1
- CONTRIBUTORS
2
- GPL
3
- HACKING
4
- LEGAL
5
- LICENSE
6
- LICENSE.rubyspec
7
- MANIFEST
8
- NEWS
9
- README
10
- lib/io/like.rb
data/README DELETED
@@ -1,150 +0,0 @@
1
- = IO::Like - in the Likeness of IO
2
-
3
- The IO::Like module provides all of the methods of typical IO implementations
4
- such as File; most importantly the read, write, and seek series of methods. A
5
- class which includes IO::Like needs to provide only a few methods in order to
6
- enable the higher level methods. Buffering is automatically provided by default
7
- for the methods which normally provide it in IO.
8
-
9
- See the documentation for IO::Like for more details regarding the necessary
10
- methods.
11
-
12
-
13
- == License
14
-
15
- Copyright © 2008,2009 Jeremy Bopp <jeremy at bopp dot net>
16
-
17
- Licensed under the same terms as Ruby -- See the included LICENSE file for
18
- details
19
-
20
- Some parts licensed under the same terms as the rubyspec project -- See the
21
- included LEGAL and LICENSE.rubyspec files for details
22
-
23
-
24
- == Installation/Removal
25
-
26
- Download the GEM file and install it with:
27
- % sudo gem install io-like-VERSION.gem
28
-
29
- or directly with:
30
- % sudo gem install io-like
31
-
32
- Removal is the same in either case:
33
- % sudo gem uninstall io-like
34
-
35
-
36
- == Example
37
- More examples can be found in the +examples+ directory of the source
38
- distribution.
39
-
40
- A simple ROT13 codec:
41
- gem 'io-like' # Use require_gem for rubygems versions older than 0.9.0.
42
- require 'io/like'
43
-
44
- class ROT13Filter
45
- include IO::Like
46
-
47
- def self.open(delegate_io)
48
- filter = new(delegate_io)
49
- return filter unless block_given?
50
-
51
- begin
52
- yield(filter)
53
- ensure
54
- filter.close unless filter.closed?
55
- end
56
- end
57
-
58
- def initialize(delegate_io)
59
- @delegate_io = delegate_io
60
- end
61
-
62
- private
63
-
64
- def encode_rot13(string)
65
- result = string.dup
66
- 0.upto(result.length) do |i|
67
- case result[i]
68
- when 65..90
69
- result[i] = (result[i] - 52) % 26 + 65
70
- when 97..122
71
- result[i] = (result[i] - 84) % 26 + 97
72
- end
73
- end
74
- result
75
- end
76
-
77
- def unbuffered_read(length)
78
- encode_rot13(@delegate_io.sysread(length))
79
- end
80
-
81
- def unbuffered_seek(offset, whence = IO::SEEK_SET)
82
- @delegate_io.sysseek(offset, whence)
83
- end
84
-
85
- def unbuffered_write(string)
86
- @delegate_io.syswrite(encode_rot13(string))
87
- end
88
- end
89
-
90
- File.open('normal_file.txt', 'w') do |f|
91
- f.puts('This is a test')
92
- end
93
-
94
- File.open('rot13_file.txt', 'w') do |f|
95
- ROT13Filter.open(f) do |rot13|
96
- rot13.puts('This is a test')
97
- end
98
- end
99
-
100
- File.open('normal_file.txt') do |f|
101
- ROT13Filter.open(f) do |rot13|
102
- puts(rot13.read) # -> Guvf vf n grfg
103
- end
104
- end
105
-
106
- File.open('rot13_file.txt') do |f|
107
- ROT13Filter.open(f) do |rot13|
108
- puts(rot13.read) # -> This is a test
109
- end
110
- end
111
-
112
- File.open('normal_file.txt') do |f|
113
- ROT13Filter.open(f) do |rot13|
114
- rot13.pos = 5
115
- puts(rot13.read) # -> vf n grfg
116
- end
117
- end
118
-
119
- File.open('rot13_file.txt') do |f|
120
- ROT13Filter.open(f) do |rot13|
121
- rot13.pos = 5
122
- puts(rot13.read) # -> is a test
123
- end
124
- end
125
-
126
- File.open('normal_file.txt') do |f|
127
- ROT13Filter.open(f) do |rot13|
128
- ROT13Filter.open(rot13) do |rot26| # ;-)
129
- puts(rot26.read) # -> This is a test
130
- end
131
- end
132
- end
133
-
134
-
135
- == Known Bugs/Limitations
136
-
137
- 1. Only up to version 1.8.6 of Ruby's IO interface is implemented. Version
138
- 1.8.7 and eventually 1.9.0/2.0.0 support are coming soon.
139
- 2. Ruby's finalization capabilities fall a bit short in a few respects, and as a
140
- result, it is impossible to cause the close, close_read, or close_write
141
- methods to be called automatically when an including class is garbage
142
- collected. Define a class open method in the manner of File.open which
143
- guarantees that an appropriate close method will be called after executing a
144
- block. Other than that, be diligent about calling the close methods.
145
-
146
-
147
- == Contributing
148
-
149
- Contributions for bug fixes, documentation, extensions, tests, etc. are
150
- encouraged. Please read the file HACKING for details.