chars 0.2.0 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6257e8d2fa2f62cc364fc2e0ba901d777963476968264dd7747bc4407e5ff54c
4
+ data.tar.gz: 16f5ecc2f44e8265869aac4946a64cacda2ae8dcdae3b669081a48d34f034f4e
5
+ SHA512:
6
+ metadata.gz: ebaf16c18de6b000b6219bf4afe7142926e24293b6b1e62214f937c51c5bdf7f5ffa7f46eecb151e1da044f7b49e1479b7d2cc947a6e20fa2a586f28b4a8a525
7
+ data.tar.gz: 4c9c98dcbab77b201b86fc32a628575e4b0ebc03608c50c7591b51a70821127778ced5122f57de846c7c863440fa0e9555fe7bfd2940a913e494a929c74a513e
data/.document CHANGED
@@ -1,4 +1,4 @@
1
1
  lib/**/*.rb
2
2
  -
3
- ChangeLog.*
3
+ ChangeLog.md
4
4
  LICENSE.txt
data/.gemspec ADDED
File without changes
@@ -0,0 +1,28 @@
1
+ name: CI
2
+
3
+ on: [ push, pull_request ]
4
+
5
+ jobs:
6
+ tests:
7
+ runs-on: ubuntu-latest
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ ruby:
12
+ - 2.4
13
+ - 2.5
14
+ - 2.6
15
+ - 2.7
16
+ - 3.0
17
+ - jruby
18
+ name: Ruby ${{ matrix.ruby }}
19
+ steps:
20
+ - uses: actions/checkout@v2
21
+ - name: Set up Ruby
22
+ uses: ruby/setup-ruby@v1
23
+ with:
24
+ ruby-version: ${{ matrix.ruby }}
25
+ - name: Install dependencies
26
+ run: bundle install --jobs 4 --retry 3
27
+ - name: Run tests
28
+ run: bundle exec rake test
data/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ /Gemfile.lock
2
+ /doc/
3
+ /pkg/
4
+ /vendor/bundle
5
+ .DS_Store
6
+ .yardoc
7
+ *.swp
8
+ *~
data/.yardopts CHANGED
@@ -1 +1 @@
1
- --markup markdown --title 'Chars Documentation' --protected --files ChangeLog.md,LICENSE.txt
1
+ --markup markdown --title 'Chars Documentation' --protected --quiet
data/ChangeLog.md CHANGED
@@ -1,3 +1,32 @@
1
+ ### 0.2.4 / 2021-10-22
2
+
3
+ * Require [ruby] >= 2.0.0.
4
+ * Added {Chars::CharSet#initialize_copy} to prevent leaking characters
5
+ between copied {Chars::CharSet} objects.
6
+
7
+ ### 0.2.3 / 2020-12-25
8
+
9
+ * Change {Chars::CharSet} to inherit from `Set`, instead of `SortedSet`.
10
+
11
+ ### 0.2.2 / 2012-05-28
12
+
13
+ * {Chars::CharSet#initialize} now raises a TypeError when given arguments
14
+ that were neither a `String`, `Integer` or `Enumerable`.
15
+ * Allow {Chars::CharSet#strings_in} to yield results as they are found.
16
+ * Improved the performance of {Chars::CharSet#strings_in} when operating on
17
+ small Strings.
18
+ * Replaced ore-tasks with
19
+ [rubygems-tasks](https://github.com/postmodern/rubygems-tasks#readme).
20
+
21
+ ### 0.2.1 / 2011-06-22
22
+
23
+ * Added {Chars::CharSet.[]}
24
+ * Added {Chars::CharSet#<<}.
25
+ * Added {Chars::CharSet#byte_to_char}.
26
+ * Added {Chars::CharSet#char_to_byte}.
27
+ * Added a cache of characters of the bytes within {Chars::CharSet}.
28
+ * Use `String#each_char` to distinguish Unicode from ASCII.
29
+
1
30
  ### 0.2.0 / 2010-10-27
2
31
 
3
32
  * Make sure all enumerable methods in {Chars::CharSet} return an
@@ -43,3 +72,4 @@
43
72
  belongs to a certain character set.
44
73
  * Supports random text generation using specific character sets.
45
74
 
75
+ [ruby]: https://www.ruby-lang.org/
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :development do
6
+ gem 'rake'
7
+ gem 'rubygems-tasks', '~> 0.2'
8
+ gem 'rspec', '~> 3.0'
9
+ gem 'kramdown'
10
+ gem 'yard', '~> 0.9'
11
+ gem 'yard-spellcheck', require: false
12
+ end
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  (The MIT License)
2
2
 
3
- Copyright (c) 2009-2010 Hal Brodigan
3
+ Copyright (c) 2009-2021 Hal Brodigan
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # Chars
2
2
 
3
- * http://chars.rubyforge.org/
4
- * http://github.com/postmodern/chars/
5
- * Postmodern (postmodern.mod3 at gmail.com)
3
+ [![CI](https://github.com/postmodern/chars.rb/actions/workflows/ruby.yml/badge.svg)](https://github.com/postmodern/chars.rb/actions/workflows/ruby.yml)
4
+
5
+ * [Source](https://github.com/postmodern/chars.rb#readme)
6
+ * [Issues](https://github.com/postmodern/chars.rb/issues)
7
+ * [Documentation](https://rubydoc.info/gems/chars)
6
8
 
7
9
  ## Description
8
10
 
@@ -12,80 +14,111 @@ recognizing text and generating random text from specific character sets.
12
14
  ## Features
13
15
 
14
16
  * Provides character sets for:
15
- * Numeric ('0' - '9')
16
- * Octal ('0' - '7')
17
- * Uppercase Hexadecimal ('0' - '9', 'A' - 'F')
18
- * Lowercase Hexadecimal ('0' - '9', 'a' - 'f')
19
- * Hexadecimal ('0' - '9', 'a' - 'f', 'A' - 'F')
20
- * Uppercase Alpha ('A' - 'Z')
21
- * Lowercase Alpha ('a' - 'z')
22
- * Alpha ('a' - 'z', 'A' - 'Z')
23
- * Alpha-numeric ('0' - '9', 'a' - 'z', 'A' - 'Z')
24
- * Punctuation (' ', '\'', '"', '`', ',', ';', ':', '~', '-', '(', ')',
25
- '[', ']', '{', '}', '.', '?', '!')
26
- * Symbols (' ', '\'', '"', '`', ',', ';', ':', '~', '-', '(', ')',
27
- '[', ']', '{', '}', '.', '?', '!', '@', '#', '$', '%', '^', '&', '*',
28
- '_', '+', '=', '|', '\\', '<', '>', '/')
29
- * Space (' ', '\f', '\n', '\r', '\t', '\v')
30
- * Visible ('0' - '9', 'a' - 'z', 'A' - 'Z', '\'', '"', '`', ',',
31
- ';', ':', '~', '-', '(', ')', '[', ']', '{', '}', '.', '?', '!', '@',
32
- '#', '$', '%', '^', '&', '*', '_', '+', '=', '|', '\\', '<', '>', '/',)
33
- * Printable ('0' - '9', 'a' - 'z', 'A' - 'Z', ' ', '\'', '"', '`', ',',
34
- ';', ':', '~', '-', '(', ')', '[', ']', '{', '}', '.', '?', '!', '@',
35
- '#', '$', '%', '^', '&', '*', '_', '+', '=', '|', '\\', '<', '>', '/',
36
- '\f', '\n', '\r', '\t', '\v')
37
- * Control ('\x00' - '\x1f', '\x7f')
38
- * Signed ASCII ('\x00' - '\x7f')
39
- * ASCII ('\x00' - '\xff')
17
+ * Numeric: `0` - `9`
18
+ * Octal: `0` - `7`
19
+ * Uppercase Hexadecimal: `0` - `9`, `A` - `F`
20
+ * Lowercase Hexadecimal: `0` - `9`, `a` - `f`
21
+ * Hexadecimal: `0` - `9`, `a` - `f`, `A` - `F`
22
+ * Uppercase Alpha: `A` - `Z`
23
+ * Lowercase Alpha: `a` - `z`
24
+ * Alpha: `a` - `z`, `A` - `Z`
25
+ * Alpha-numeric: `0` - `9`, `a` - `z`, `A` - `Z`
26
+ * Punctuation: `' '`, `'`, `"`, `` ` ``, `,`, `;`, `:`, `~`, `-`, `(`, `)`, `[`, `]`, `{`, `}`, `.`, `?`, `!`
27
+ * Symbols: `' '`, `'`, `"`, `` ` ``, `,`, `;`, `:`, `~`, `-`, `(`, `)`, `[`, `]`, `{`, `}`, `.`, `?`, `!`, `@`, `#`, `$`, `%`, `^`, `&`, `*`, `_`, `+`, `=`, `|`, `\`, `<`, `>`, `/`
28
+ * Space: `' '`, `\f`, `\n`, `\r`, `\t`, `\v`
29
+ * Visible: `0` - `9`, `a` - `z`, `A` - `Z`, `'`, `"`, `` ` ``, `,`, `;`, `:`, `~`, `-`, `(`, `)`, `[`, `]`, `{`, `}`, `.`, `?`, `!`, `@`, `#`, `$`, `%`, `^`, `&`, `*`, `_`, `+`, `=`, `|`, `\`, `<`, `>`, `/`
30
+ * Printable: `0` - `9`, `a` - `z`, `A` - `Z`, `' '`, `'`, `"`, `` ` ``, `,`, `;`, `:`, `~`, `-`, `(`, `)`, `[`, `]`, `{`, `}`, `.`, `?`, `!`, `@`, `#`, `$`, `%`, `^`, `&`, <code>*</code>, <code>_</code>, `+`, `=`, `|`, `\`, `<`, `>`, `/`, `\f`, `\n`, `\r`, `\t`, `\v`
31
+ * Control: `\x00` - `\x1f`, `\x7f`
32
+ * Signed ASCII: `\x00` - `\x7f`
33
+ * ASCII: `\x00` - `\xff`
40
34
 
41
35
  ## Examples
42
36
 
43
37
  Determine whether a byte belongs to a character set:
44
38
 
45
- 0x41.alpha?
46
- # => true
39
+ ```ruby
40
+ 0x41.alpha?
41
+ # => true
42
+ ```
47
43
 
48
44
  Determine whether a String belongs to a character set:
49
45
 
50
- "22e1c0".hex?
51
- # => true
46
+ ```ruby
47
+ "22e1c0".hex?
48
+ # => true
49
+ ```
52
50
 
53
51
  Find all sub-strings that belong to a character set within a String:
54
52
 
55
- ls = File.read('/bin/ls')
56
- Chars.printable.strings_in(ls)
57
- # => ["/lib64/ld-linux-x86-64.so.2", "KIq/", "5J~!", "%L~!", ...]
53
+ ```ruby
54
+ ls = File.read('/bin/ls')
55
+ Chars.printable.strings_in(ls)
56
+ # => ["/lib64/ld-linux-x86-64.so.2", "KIq/", "5J~!", "%L~!", ...]
57
+ ```
58
58
 
59
59
  Return a random character from the set of all characters:
60
60
 
61
- Chars.all.random_char
62
- # => "\x94"
61
+ ```ruby
62
+ Chars.all.random_char
63
+ # => "\x94"
64
+ ```
63
65
 
64
66
  Return a random Array of characters from the alpha-numeric character set:
65
67
 
66
- Chars.alpha_numeric.random_chars(10)
67
- # => ["Q", "N", "S", "4", "x", "z", "3", "M", "F", "F"]
68
+ ```ruby
69
+ Chars.alpha_numeric.random_chars(10)
70
+ # => ["Q", "N", "S", "4", "x", "z", "3", "M", "F", "F"]
71
+ ```
68
72
 
69
73
  Return a random Array of a random length of unique characters from the
70
74
  visible character set:
71
75
 
72
- Chars.visible.random_distinct_chars(1..10)
73
- # => ["S", "l", "o", "8", "'", "q"]
76
+ ```ruby
77
+ Chars.visible.random_distinct_chars(1..10)
78
+ # => ["S", "l", "o", "8", "'", "q"]
79
+ ```
74
80
 
75
81
  Return a random String from the set of all characters:
76
82
 
77
- Chars.all.random_string(10)
78
- # => "\xc2h\xad\xccm7\x1e6J\x13"
83
+ ```ruby
84
+ Chars.all.random_string(10)
85
+ # => "\xc2h\xad\xccm7\x1e6J\x13"
86
+ ```
79
87
 
80
88
  Return a random String with a random length between 5 and 10, from the
81
89
  set of space characters:
82
90
 
83
- Chars.space.random_string(5..10)
84
- # => "\r\v\n\t\n\f"
91
+ ```ruby
92
+ Chars.space.random_string(5..10)
93
+ # => "\r\v\n\t\n\f"
94
+ ```
95
+
96
+ ## Requirements
97
+
98
+ * [ruby](https://www.ruby-lang.org/) >= 2.0.0
85
99
 
86
100
  ## Install
87
101
 
88
- $ sudo gem install chars
102
+ $ gem install chars
103
+
104
+ ### gemspec
105
+
106
+ ```ruby
107
+ gem.add_dependency 'chars', '~> 0.2'
108
+ ```
109
+
110
+ ### Gemfile
111
+
112
+ ```ruby
113
+ gem 'chars', '~> 0.2'
114
+ ```
115
+
116
+ ## Crystal
117
+
118
+ [chars.cr] is a [Crystal] port of this library.
119
+
120
+ [chars.cr]: https://github.com/postmodern/chars.cr
121
+ [Crystal]: https://crystal-lang.org/
89
122
 
90
123
  ## License
91
124
 
data/Rakefile CHANGED
@@ -1,35 +1,12 @@
1
1
  require 'rubygems'
2
- require 'rake'
3
2
 
4
- begin
5
- gem 'ore-tasks', '~> 0.1.2'
6
- require 'ore/tasks'
3
+ require 'rubygems/tasks'
4
+ Gem::Tasks.new
7
5
 
8
- Ore::Tasks.new
9
- rescue LoadError => e
10
- STDERR.puts e.message
11
- STDERR.puts "Run `gem install ore-tasks` to install 'ore/tasks'."
12
- end
13
-
14
- begin
15
- gem 'rspec', '~> 2.0.0'
16
- require 'rspec/core/rake_task'
17
-
18
- RSpec::Core::RakeTask.new
19
- rescue LoadError => e
20
- task :spec do
21
- abort "Please run `gem install rspec` to install RSpec."
22
- end
23
- end
6
+ require 'rspec/core/rake_task'
7
+ RSpec::Core::RakeTask.new
8
+ task :test => :spec
24
9
  task :default => :spec
25
10
 
26
- begin
27
- gem 'yard', '~> 0.6.0'
28
- require 'yard'
29
-
30
- YARD::Rake::YardocTask.new
31
- rescue LoadError => e
32
- task :yard do
33
- abort "Please run `gem install yard` to install YARD."
34
- end
35
- end
11
+ require 'yard'
12
+ YARD::Rake::YardocTask.new
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__),'..','lib'))
4
+
5
+ require 'chars'
6
+ require 'benchmark'
7
+
8
+ CHARSET = Chars::ALPHA_NUMERIC
9
+ N = 1_000_000
10
+ STRING = ('A' * N) + '!'
11
+ ENUM = (['A', 0x42] * (N / 2)) << '!'
12
+
13
+ Benchmark.bm(12) do |b|
14
+ b.report('String') { CHARSET === STRING }
15
+ b.report('Enumerable') { CHARSET === ENUM }
16
+ end
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__),'..','lib'))
4
+
5
+ require 'chars'
6
+ require 'benchmark'
7
+
8
+ CHARSET = Chars::ALPHA_NUMERIC
9
+ STRING = File.open('/usr/bin/openssl','rb') do |file|
10
+ file.read
11
+ end
12
+
13
+ Benchmark.bm(24) do |b|
14
+ b.report('strings_in') do
15
+ CHARSET.strings_in(STRING) { |offset,string| }
16
+ end
17
+
18
+ (5..20).step(5) do |n|
19
+ b.report("strings_in (length=#{n})") do
20
+ CHARSET.strings_in(STRING, :length => n) { |offset,string| }
21
+ end
22
+ end
23
+ end
data/chars.gemspec CHANGED
@@ -1,10 +1,61 @@
1
- # -*- encoding: utf-8 -*-
1
+ # encoding: utf-8
2
2
 
3
- begin
4
- Ore::Specification.new do |gemspec|
5
- # custom logic here
3
+ require 'yaml'
4
+
5
+ Gem::Specification.new do |gem|
6
+ gemspec = YAML.load_file('gemspec.yml')
7
+
8
+ gem.name = gemspec.fetch('name')
9
+ gem.version = gemspec.fetch('version') do
10
+ lib_dir = File.join(File.dirname(__FILE__),'lib')
11
+ $LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
12
+
13
+ require 'chars/version'
14
+ Chars::VERSION
15
+ end
16
+
17
+ gem.summary = gemspec['summary']
18
+ gem.description = gemspec['description']
19
+ gem.licenses = Array(gemspec['license'])
20
+ gem.authors = Array(gemspec['authors'])
21
+ gem.email = gemspec['email']
22
+ gem.homepage = gemspec['homepage']
23
+ gem.metadata = gemspec['metadata'] if gemspec['metadata']
24
+
25
+ glob = lambda { |patterns| gem.files & Dir[*patterns] }
26
+
27
+ gem.files = `git ls-files`.split($/)
28
+ gem.files = glob[gemspec['files']] if gemspec['files']
29
+
30
+ gem.executables = gemspec.fetch('executables') do
31
+ glob['bin/*'].map { |path| File.basename(path) }
32
+ end
33
+ gem.default_executable = gem.executables.first if Gem::VERSION < '1.7.'
34
+
35
+ gem.extensions = glob[gemspec['extensions'] || 'ext/**/extconf.rb']
36
+ gem.test_files = glob[gemspec['test_files'] || '{test/{**/}*_test.rb']
37
+ gem.extra_rdoc_files = glob[gemspec['extra_doc_files'] || '*.{txt,md}']
38
+
39
+ gem.require_paths = Array(gemspec.fetch('require_paths') {
40
+ %w[ext lib].select { |dir| File.directory?(dir) }
41
+ })
42
+
43
+ gem.requirements = gemspec['requirements']
44
+ gem.required_ruby_version = gemspec['required_ruby_version']
45
+ gem.required_rubygems_version = gemspec['required_rubygems_version']
46
+ gem.post_install_message = gemspec['post_install_message']
47
+
48
+ split = lambda { |string| string.split(/,\s*/) }
49
+
50
+ if gemspec['dependencies']
51
+ gemspec['dependencies'].each do |name,versions|
52
+ gem.add_dependency(name,split[versions])
53
+ end
54
+ end
55
+
56
+ if gemspec['development_dependencies']
57
+ gemspec['development_dependencies'].each do |name,versions|
58
+ gem.add_development_dependency(name,split[versions])
59
+ end
6
60
  end
7
- rescue NameError
8
- STDERR.puts "The 'chars.gemspec' file requires Ore."
9
- STDERR.puts "Run `gem install ore` to install Ore."
10
61
  end
data/gemspec.yml CHANGED
@@ -5,12 +5,18 @@ description:
5
5
  recognizing text and generating random text from specific character sets.
6
6
 
7
7
  license: MIT
8
- homepage: http://github.com/postmodern/chars
8
+ homepage: https://github.com/postmodern/chars.rb#readme
9
9
  authors: Postmodern
10
10
  email: postmodern.mod3@gmail.com
11
11
  has_yard: true
12
12
 
13
+ metadata:
14
+ documentation_uri: https://rubydoc.info/gems/chars
15
+ source_code_uri: https://github.com/postmodern/chars.rb
16
+ bug_tracker_uri: https://github.com/postmodern/chars.rb/issues
17
+ changelog_uri: https://github.com/postmodern/chars.rb/blob/master/ChangeLog.md
18
+
19
+ required_ruby_version: ">= 2.0.0"
20
+
13
21
  development_dependencies:
14
- ore: ~> 0.2.0
15
- ore-tasks: ~> 0.1.2
16
- rspec: ~> 2.0.0
22
+ bundler: ~> 2.0