ruby_sscanf 0.2.3 → 0.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.
- checksums.yaml +4 -4
- data/README.md +26 -14
- data/irbt.rb +18 -0
- data/lib/ruby_sscanf/version.rb +1 -1
- data/{Rakefile → rakefile.rb} +2 -9
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 39d5948584a8362aff629ef8e2e69d4e0ecf1db6
|
4
|
+
data.tar.gz: 34886c12fb70ee94405aa2bdbc1ee31effdb9aa2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d35f7a9492d9560a62bdeb05aa271ea2925854d875f1cc0809c992bf7089a4c8744ca26434986e939e4b9d7bfd55b3d025d16fe1112c693bbf2599e54e913cf
|
7
|
+
data.tar.gz: cf7b631bb392d898cd3c737c52ea195720522cfe13b2ed28109557c24e37a2d46182a165702bad545c56d226442285efd151607ec0a7d500cf85ff582c6401cb
|
data/README.md
CHANGED
@@ -8,6 +8,7 @@ It is noteworthy that this gem never was intended to be 100% compatible with
|
|
8
8
|
the built in scanf library. Some differences are:
|
9
9
|
* It deals only with strings and not IO objects.
|
10
10
|
* It adds formats for rational, complex, and quoted string data.
|
11
|
+
* It adds formats with embedded regular expression specifications.
|
11
12
|
* It adopts a more uniform approach to eating (or not eating) superfluous spaces.
|
12
13
|
* Unsigned integer data are not allowed to be negative.
|
13
14
|
|
@@ -27,6 +28,8 @@ Or install it yourself as:
|
|
27
28
|
|
28
29
|
$ gem install ruby_sscanf
|
29
30
|
|
31
|
+
The ruby_sscanf gem itself is found at: ( https://rubygems.org/gems/ruby_sscanf )
|
32
|
+
|
30
33
|
## Usage
|
31
34
|
|
32
35
|
The basic usage for sscanf is:
|
@@ -98,8 +101,10 @@ leading '0x' or '0X'.
|
|
98
101
|
* [^chars] - Scan for a contiguous string of characters not in the set [^chars]
|
99
102
|
* /regex/ - Scan for a string matching the regular expression. This may be
|
100
103
|
followed by one or more optional flags. Supported flags are i, m, and x.
|
104
|
+
Limitation: zero width (positive or negative) look behind assertions (?<= )
|
105
|
+
and (?<! ) are not supported at this time.
|
101
106
|
|
102
|
-
|
107
|
+
#### Examples
|
103
108
|
Here are a few exmaples of the sscanf method in action.
|
104
109
|
|
105
110
|
```ruby
|
@@ -156,9 +161,12 @@ returns ["a", "b", "c"]
|
|
156
161
|
|
157
162
|
"a abbccc acbcad".sscanf "%/A/i %/a+b+c+/ %/([ab][cd])+/"
|
158
163
|
returns ["a", "abbccc", "acbcad"]
|
164
|
+
|
165
|
+
" 1234i ".sscanf(" %/\\d+/\\i")
|
166
|
+
returns ["1234"]
|
159
167
|
```
|
160
168
|
|
161
|
-
|
169
|
+
#### Getting unparsed text
|
162
170
|
When a string is parsed, there may be some text at the end of the string that
|
163
171
|
is not parsed. It is possible to retrieve this text using the following:
|
164
172
|
|
@@ -166,6 +174,13 @@ is not parsed. It is possible to retrieve this text using the following:
|
|
166
174
|
String.sscanf_unparsed
|
167
175
|
```
|
168
176
|
|
177
|
+
## Demo
|
178
|
+
|
179
|
+
A test bed for experimenting with the ruby_sscanf gem is available as a rake
|
180
|
+
task:
|
181
|
+
|
182
|
+
$ rake console
|
183
|
+
|
169
184
|
## Benchmarks
|
170
185
|
|
171
186
|
I ran a test just to make sure that ruby_sscanf was not terribly
|
@@ -174,28 +189,28 @@ pleased to see that in fact ruby_sscanf was faster. Here are the results:
|
|
174
189
|
|
175
190
|
Warming up --------------------------------------
|
176
191
|
Scan strings with ruby_sscanf
|
177
|
-
1.
|
192
|
+
1.734k i/100ms
|
178
193
|
Scan strings with scanf
|
179
|
-
|
194
|
+
309.000 i/100ms
|
180
195
|
Calculating -------------------------------------
|
181
196
|
Scan strings with ruby_sscanf
|
182
|
-
|
197
|
+
17.926k (± 0.6%) i/s - 90.168k
|
183
198
|
Scan strings with scanf
|
184
|
-
3.
|
199
|
+
3.123k (± 0.6%) i/s - 15.759k
|
185
200
|
|
186
201
|
Comparison:
|
187
|
-
Scan strings with ruby_sscanf:
|
188
|
-
Scan strings with scanf:
|
202
|
+
Scan strings with ruby_sscanf: 17925.7 i/s
|
203
|
+
Scan strings with scanf: 3123.0 i/s - 5.74x slower
|
189
204
|
|
190
205
|
This benchmark test was run under:
|
191
206
|
* ruby 2.1.6p336 (2015-04-13 revision 50298) [i386-mingw32]
|
192
|
-
* format_engine version = 0.
|
207
|
+
* format_engine version = 0.7.2
|
193
208
|
|
194
209
|
## Contributing
|
195
210
|
|
196
211
|
#### Plan A
|
197
212
|
|
198
|
-
1. Fork it ( https://github.com/PeterCamilleri/
|
213
|
+
1. Fork it ( https://github.com/PeterCamilleri/ruby_sscanf/fork )
|
199
214
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
200
215
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
201
216
|
4. Push to the branch (`git push origin my-new-feature`)
|
@@ -204,8 +219,5 @@ This benchmark test was run under:
|
|
204
219
|
#### Plan B
|
205
220
|
|
206
221
|
Go to the GitHub repository and raise an issue calling attention to some
|
207
|
-
aspect that could use some TLC or a suggestion or idea.
|
208
|
-
the issue that match the point you are trying to make. Then follow your
|
209
|
-
issue and keep up-to-date as it is worked on. Or not as pleases you.
|
210
|
-
All input are greatly appreciated.
|
222
|
+
aspect that could use some TLC or a suggestion or an idea.
|
211
223
|
|
data/irbt.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
# An IRB + ruby_sscanf test bed
|
3
|
+
|
4
|
+
require 'irb'
|
5
|
+
|
6
|
+
puts "Starting an IRB console with ruby_sscanf loaded."
|
7
|
+
|
8
|
+
if ARGV[0] == 'local'
|
9
|
+
require_relative 'lib/ruby_sscanf'
|
10
|
+
puts "ruby_sscanf loaded locally: #{RubySscanf::VERSION}"
|
11
|
+
|
12
|
+
ARGV.shift
|
13
|
+
else
|
14
|
+
require 'ruby_sscanf'
|
15
|
+
puts "ruby_sscanf loaded from gem: #{RubySscanf::VERSION}"
|
16
|
+
end
|
17
|
+
|
18
|
+
IRB.start
|
data/lib/ruby_sscanf/version.rb
CHANGED
data/{Rakefile → rakefile.rb}
RENAMED
@@ -34,16 +34,9 @@ task :reek do |t|
|
|
34
34
|
`reek --no-color lib > reek.txt`
|
35
35
|
end
|
36
36
|
|
37
|
-
desc "
|
37
|
+
desc "Fire up an IRB session with ruby_sscanf preloaded."
|
38
38
|
task :console do
|
39
|
-
|
40
|
-
require 'irb/completion'
|
41
|
-
require './lib/ruby_sscanf'
|
42
|
-
puts "Starting an IRB console with ruby_sscanf."
|
43
|
-
puts "Use 'quit' to exit."
|
44
|
-
puts
|
45
|
-
ARGV.clear
|
46
|
-
IRB.start
|
39
|
+
system "ruby irbt.rb local"
|
47
40
|
end
|
48
41
|
|
49
42
|
desc "What version of code is this?"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_sscanf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Camilleri
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: format_engine
|
@@ -105,11 +105,12 @@ files:
|
|
105
105
|
- Gemfile
|
106
106
|
- LICENSE.txt
|
107
107
|
- README.md
|
108
|
-
- Rakefile
|
109
108
|
- bench/bench.rb
|
109
|
+
- irbt.rb
|
110
110
|
- lib/ruby_sscanf.rb
|
111
111
|
- lib/ruby_sscanf/engine.rb
|
112
112
|
- lib/ruby_sscanf/version.rb
|
113
|
+
- rakefile.rb
|
113
114
|
- ruby_sscanf.gemspec
|
114
115
|
- tests/scan_tests.rb
|
115
116
|
homepage: http://teuthida-technologies.com/
|