Revert "fixed bug in lib/thread Queue"
[rbx.git] / kernel / bootstrap / string.rb
blobf2e864a5f6cbfdb7c9556940c0077a6df0897863
1 class String
2   def self.template(size, str)
3     Ruby.primitive :string_template
4     raise PrimitiveFailure, "String.template primitive failed"
5   end
7   def __symbol_lookup__
8     Ruby.primitive :symbol_lookup
9     raise PrimitiveFailure, "Unable to symbolize: #{self.dump}"
10   end
12   def to_sym
13     __symbol_lookup__
14   end
16   def to_sexp_full(name, line, newlines)
17     Ruby.primitive :string_to_sexp
18     raise PrimitiveFailure, "primitive failed"
19   end
21   def to_f
22     Ruby.primitive :string_to_f
23     raise PrimitiveFailure, "primitive failed"
24   end
26   def __crypt__(other_str)
27     Ruby.primitive :str_crypt
28     raise PrimitiveFailure, "primitive failed"
29   end
31   def append(str)
32     Ruby.primitive :string_append
33     raise TypeError, "only a String instance is accepted"
34   end
36   def dup
37     Ruby.primitive :string_dup
38     raise PrimitiveFailure, "primitive failed"
39   end
41   def to_s
42     self
43   end
45   def copy_from(other, start, size, dest)
46     Ruby.primitive :string_copy_from
47     raise PrimitiveFailure, "String#copy_from primitive failed"
48   end
50   def substring(start, count)
51     return if count < 0 || start > @bytes || -start > @bytes
53     start += @bytes if start < 0
54     count = @bytes - start if start + count > @bytes
55     count = 0 if count < 0
57     str = self.class.template count, 0
58     str.copy_from self, start, count, 0
59     str.taint if self.tainted?
61     return str
62   end
64   def ==(other)
65     Ruby.primitive :string_equal
66   end
68   def length
69     @bytes
70   end
71 end