symbol_lookup 1.0.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b2b8007e0677cfc3161f00067e0f1d5a4c479189
4
- data.tar.gz: 20dee3aa3694015bd25b573eb0d7f809d9a5e5e3
3
+ metadata.gz: 8552cbf7c041894da45719e3a1251a4e274455d7
4
+ data.tar.gz: d4d3dcea61bd3241be9e8cecbf396eecbc434be2
5
5
  SHA512:
6
- metadata.gz: f77ffce96011270d313eeceb24278d485de55fbce181d384c77f0cd59c61b0059155c261138c58aeba461409c8958dd7402c637b9710338e1d06e7eb7bf80340
7
- data.tar.gz: 69dedc4d7f09a056c0435538625ac88201bbf24c3e40ed4fff31853a04ff4c5db7ce7cfb1d6624334a011418eb10ec5cbe8058de4934046ec7330937d719fbe3
6
+ metadata.gz: 2a062b1bab8390e5656bb68f62cad16dad05b4f00d9dc8513674a83a396c3fa555f1a9dd150aaf2fe7002f6d97d0c7db65221805142d4cb1b7e94ae1c6cfd145
7
+ data.tar.gz: 78ae46266ac6c34f1e8e229191a676b5c08a7bde9a62e34d0400f4f531d10c5b3952082104e1d375fb479eeaccd6880520c59d1154cab2f33624dd3c0596ff41
@@ -16,11 +16,67 @@ sym_lookup(VALUE cls, VALUE str)
16
16
  {
17
17
  st_data_t id;
18
18
  if (id = rb_check_id(&str)) {
19
- return ID2SYM(id);
19
+ return ID2SYM(id);
20
20
  }
21
21
  return Qnil;
22
22
  }
23
23
 
24
+ /*
25
+ * call-seq:
26
+ * str.interned -> symbol
27
+ *
28
+ * Returns the <code>Symbol</code> corresponding to <i>str</i>, returning
29
+ * nil if it did not previously exist. See <code>Symbol[str]</code>.
30
+ *
31
+ * x = :banana
32
+ * "banana".interned #=> :banana
33
+ * "mango".interned #=> nil
34
+ *
35
+ */
36
+
37
+ VALUE
38
+ str_interned(VALUE str)
39
+ {
40
+ ID id;
41
+
42
+ if (id = rb_check_id(&str)) {
43
+ return ID2SYM(id);
44
+ }
45
+ return Qnil;
46
+ }
47
+
48
+ /*
49
+ * call-seq:
50
+ * str.to_existing_sym -> symbol
51
+ *
52
+ * Returns the <code>Symbol</code> corresponding to <i>str</i>, raising an
53
+ * ArgumentError if it did not previously exist.
54
+ * See <code>Symbol[str]</code>
55
+ *
56
+ * x = :banana
57
+ * "banana".to_existing_sym #=> :banana
58
+ * "mango".to_existing_sym #=> (raises ArgumentError)
59
+ *
60
+ */
61
+
62
+ VALUE
63
+ str_to_existing_sym(VALUE str)
64
+ {
65
+ ID id;
66
+
67
+ if (id = rb_check_id(&str)) {
68
+ return ID2SYM(id);
69
+ }
70
+ rb_raise(rb_eArgError, "undefined symbol :'%s'", StringValuePtr(str));
71
+ return Qnil;
72
+ }
73
+
74
+
24
75
  void Init_symbol_lookup() {
25
76
  rb_define_singleton_method(rb_cSymbol, "[]", sym_lookup, 1);
77
+ rb_define_alias(rb_cSymbol, "interned", "intern");
78
+ rb_define_alias(rb_cSymbol, "to_existing_sym", "to_sym");
79
+
80
+ rb_define_method(rb_cString, "interned", str_interned, 0);
81
+ rb_define_method(rb_cString, "to_existing_sym", str_to_existing_sym, 0);
26
82
  }
metadata CHANGED
@@ -1,16 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: symbol_lookup
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Kerwin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-03-09 00:00:00.000000000 Z
11
+ date: 2013-03-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: A gemified version of the Symbol[str] method proposed in https://bugs.ruby-lang.org/issues/7854
13
+ description: |
14
+ A gemified version of the Symbol[str] method proposed in https://bugs.ruby-lang.org/issues/7854
15
+
16
+ Version 1.1.0 defines:
17
+ - Symbol[str] => Symbol or nil
18
+ - String#interned => Symbol or nil
19
+ - String#to_existing_sym => Symbol or exception
14
20
  email: matthew@kerwin.net.au
15
21
  executables: []
16
22
  extensions:
@@ -46,7 +52,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
46
52
  version: '0'
47
53
  requirements: []
48
54
  rubyforge_project:
49
- rubygems_version: 2.0.2
55
+ rubygems_version: 2.0.0
50
56
  signing_key:
51
57
  specification_version: 4
52
58
  summary: Symbol[str]