ctype 0.2.0

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 (2) hide show
  1. data/lib/ctype.rb +80 -0
  2. metadata +39 -0
@@ -0,0 +1,80 @@
1
+ #
2
+ # = ctype.rb: ctype.h as syntactic sugar for Ruby
3
+ #
4
+ # Homepage:: http://ctype.rubyforge.org
5
+ # Author:: murphy (Kornelius Kalnbach)
6
+ # Copyright:: (cc) 2005 cYcnus
7
+ # License:: GPL
8
+ # Version:: 0.2.0 (2005-03-16)
9
+ #
10
+ # === It's simple
11
+ #
12
+ # C: <code>isalpha(x)</code>
13
+ # Ruby: <code>x.alpha?</code>
14
+ #
15
+ # Also working (as of version 0.2.0):
16
+ #
17
+ # nil.digit? == false (useful if getc returns nil)
18
+ # 'a string'.alpha? == true
19
+ #
20
+ # === Further information
21
+ #
22
+ # Uses the POSIX character classes [[:...:]] implemented in Regexp.
23
+ #
24
+ # See the documentation for ctype.h at
25
+ # http://www-ccs.ucsd.edu/c/ctype.html
26
+ #
27
+
28
+ =begin
29
+
30
+ POSIX Character Classes. [:class:]
31
+ This is an alternate method of specifying a range of characters to match.
32
+
33
+ [:alnum:] matches alphabetic or numeric characters. This is equivalent to A-Za-z0-9.
34
+ [:alpha:] matches alphabetic characters. This is equivalent to A-Za-z.
35
+ [:blank:] matches a space or a tab.
36
+ [:cntrl:] matches control characters.
37
+ [:digit:] matches (decimal) digits. This is equivalent to 0-9.
38
+ [:graph:] graphic printable characters. Matches characters in the range of ASCII 33 - 126.
39
+ This is the same as [:print:], below, but excluding the space character.
40
+ [:lower:] matches lowercase alphabetic characters. This is equivalent to a-z.
41
+ [:print:] printable characters. Matches characters in the range of ASCII 32 - 126.
42
+ This is the same as [:graph:], above, but adding the space character.
43
+ [:space:] matches whitespace characters (space and horizontal tab).
44
+ [:upper:] matches uppercase alphabetic characters. This is equivalent to A-Z.
45
+ [:xdigit:] matches hexadecimal digits. This is equivalent to 0-9A-Fa-f.
46
+ =end
47
+
48
+ POSIX_CHARACTER_CLASSES = %w[ alnum alpha cntrl digit graph lower print punct space upper xdigit ]
49
+
50
+ # ?A.upper?
51
+ class Fixnum
52
+ POSIX_CHARACTER_CLASSES.each do |c|
53
+ rx = Regexp.new('[[:' + c + ':]]')
54
+ define_method((c + '?').to_sym) do
55
+ self >= 0 and rx === self.chr
56
+ end
57
+ end
58
+ end
59
+
60
+ # 'A'.upper?
61
+ class String
62
+ POSIX_CHARACTER_CLASSES.each do |c|
63
+ rx = Regexp.new('[[:' + c + ':]]')
64
+ meth = (c + '?').to_sym
65
+ define_method(meth) do
66
+ if self[0]
67
+ self[0].send meth
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ # nil.upper?
74
+ class NilClass
75
+ POSIX_CHARACTER_CLASSES.each do |c|
76
+ define_method((c + '?').to_sym) do
77
+ false
78
+ end
79
+ end
80
+ end
metadata ADDED
@@ -0,0 +1,39 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.8
3
+ specification_version: 1
4
+ name: ctype
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.2.0
7
+ date: 2005-03-17
8
+ summary: ctype provides Ruby-style methods known from ctype.h.
9
+ require_paths:
10
+ - lib
11
+ email: murphy@cYcnus.de
12
+ homepage: ruby.cycnus.de
13
+ rubyforge_project: ctype
14
+ description: "ctype is a simple implementation of ctype.h. It provides methods like alpha?
15
+ and digit? for Fixnums and Strings, so it can be used for string analysing (like
16
+ scanners): 'c'.alpha? -> true"
17
+ autorequire:
18
+ default_executable:
19
+ bindir: bin
20
+ has_rdoc: true
21
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
22
+ requirements:
23
+ -
24
+ - ">"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.0
27
+ version:
28
+ platform: ruby
29
+ authors:
30
+ - murphy
31
+ files:
32
+ - lib/ctype.rb
33
+ test_files: []
34
+ rdoc_options: []
35
+ extra_rdoc_files: []
36
+ executables: []
37
+ extensions: []
38
+ requirements: []
39
+ dependencies: []