red 4.0.1 → 4.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +15 -0
- data/lib/red/nodes/assignment_nodes.rb +1 -1
- data/lib/red/version.rb +1 -1
- data/lib/source/ruby.rb +38 -13
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
== 4.0.2 2008-10-14
|
2
|
+
|
3
|
+
* 2 bug fixes:
|
4
|
+
* Fixed the newly introduced namespacing issue.
|
5
|
+
* Adjusted send, and attr and similar methods to properly cache their referred-to methods.
|
6
|
+
|
7
|
+
== 4.0.1 2008-10-13
|
8
|
+
|
9
|
+
* 1 major enhancement:
|
10
|
+
* Improved flexibility for platforming Red into browsers.
|
11
|
+
|
12
|
+
* 2 bug fixes:
|
13
|
+
* Fixed a namespacing issue for Constants.
|
14
|
+
* Added a few more essential internally-referenced methods.
|
15
|
+
|
1
16
|
== 4.0.0 2008-10-12
|
2
17
|
|
3
18
|
* New version released.
|
@@ -14,7 +14,7 @@ module Red
|
|
14
14
|
class Constant < AssignmentNode # :nodoc:
|
15
15
|
# [:cdecl, :Foo, {expression}]
|
16
16
|
def initialize(constant_name_sexp, expression_sexp, options)
|
17
|
-
constant_name = (@@namespace_stack + ["%s" % constant_name_sexp.red!]).join(".c$")
|
17
|
+
constant_name = ("c$" + (@@namespace_stack + ["%s" % constant_name_sexp.red!]).join(".c$")).gsub("c$c$","c$")
|
18
18
|
@@red_constants |= [constant_name]
|
19
19
|
expression = expression_sexp.red!(:as_assignment => true)
|
20
20
|
self << "%s=%s" % [constant_name, expression]
|
data/lib/red/version.rb
CHANGED
data/lib/source/ruby.rb
CHANGED
@@ -665,7 +665,7 @@ class Object
|
|
665
665
|
# k.send(:hello, "gentle", "readers") #=> "Hello gentle readers"
|
666
666
|
#
|
667
667
|
def send(method,*args)
|
668
|
-
`this[method].apply(this,args)`
|
668
|
+
`this['m$'+method._value.replace('=','Eql')].apply(this,args)`
|
669
669
|
end
|
670
670
|
|
671
671
|
# FIX: Incomplete
|
@@ -805,17 +805,20 @@ class Module
|
|
805
805
|
#return other_module
|
806
806
|
end
|
807
807
|
|
808
|
-
def attr(
|
809
|
-
`
|
810
|
-
`
|
808
|
+
def attr(attribute, writer = false)
|
809
|
+
`var a=attribute._value`
|
810
|
+
`f1=this.prototype['m$'+a]=function(){return this['i$'+arguments.callee._name];};f1._name=a`
|
811
|
+
`if(writer){f2=this.prototype['m$'+a._value+'Eql']=function(x){return this['i$'+arguments.callee._name]=x;};f2._name=a;}`
|
811
812
|
return nil
|
812
813
|
end
|
813
814
|
|
814
815
|
def attr_accessor(*symbols)
|
815
816
|
`for(var i=0,l=symbols.length;i<l;++i){
|
816
817
|
var a=symbols[i]._value;
|
817
|
-
this.prototype['m$'+a]=function(){return this['i$'+
|
818
|
-
this.prototype['m$'+a+'Eql']=function(x){return this['i$'+
|
818
|
+
f1=this.prototype['m$'+a]=function(){return this['i$'+arguments.callee._name];};
|
819
|
+
f2=this.prototype['m$'+a+'Eql']=function(x){return this['i$'+arguments.callee._name]=x;};
|
820
|
+
f1._name = a
|
821
|
+
f2._name = a
|
819
822
|
}`
|
820
823
|
return nil
|
821
824
|
end
|
@@ -823,7 +826,8 @@ class Module
|
|
823
826
|
def attr_reader(*symbols)
|
824
827
|
`for(var i=0,l=symbols.length;i<l;++i){
|
825
828
|
var a=symbols[i]._value;
|
826
|
-
this.prototype['m$'+a]=function(){return this['i$'+
|
829
|
+
f = this.prototype['m$'+a]=function(){return this['i$'+arguments.callee._name];};
|
830
|
+
f._name = a
|
827
831
|
}`
|
828
832
|
return nil
|
829
833
|
end
|
@@ -831,7 +835,8 @@ class Module
|
|
831
835
|
def attr_writer(*symbols)
|
832
836
|
`for(var i=0,l=symbols.length;i<l;++i){
|
833
837
|
var a=symbols[i]._value;
|
834
|
-
this.prototype['m$'+a+'Eql']=function(x){return this['i$'+
|
838
|
+
f = this.prototype['m$'+a+'Eql']=function(x){return this['i$'+arguments.callee._name]=x;};
|
839
|
+
f._name = a
|
835
840
|
}`
|
836
841
|
return nil
|
837
842
|
end
|
@@ -5004,16 +5009,36 @@ class Regexp
|
|
5004
5009
|
Regexp.new(value,options)
|
5005
5010
|
end
|
5006
5011
|
|
5007
|
-
#
|
5008
|
-
|
5012
|
+
# call-seq:
|
5013
|
+
# Regexp.escape(str) -> string
|
5014
|
+
# Regexp.quote(str) -> string
|
5015
|
+
#
|
5016
|
+
# Escapes any characters that would have special meaning in a regular
|
5017
|
+
# expression. Returns a new escaped string, or _str_ if no characters are
|
5018
|
+
# escaped. For any string, <tt>Regexp.escape(str) =~ str</tt> will be true.
|
5019
|
+
#
|
5020
|
+
# Regexp.escape('\\*?{}.') #=> \\\\\*\?\{\}\.
|
5021
|
+
#
|
5022
|
+
def self.escape(str)
|
5023
|
+
`$q(str._value.replace(/([-.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1'))`
|
5009
5024
|
end
|
5010
5025
|
|
5011
5026
|
# FIX: Incomplete
|
5012
5027
|
def self.last_match
|
5013
5028
|
end
|
5014
5029
|
|
5015
|
-
#
|
5016
|
-
|
5030
|
+
# call-seq:
|
5031
|
+
# Regexp.escape(str) -> string
|
5032
|
+
# Regexp.quote(str) -> string
|
5033
|
+
#
|
5034
|
+
# Escapes any characters that would have special meaning in a regular
|
5035
|
+
# expression. Returns a new escaped string, or _str_ if no characters are
|
5036
|
+
# escaped. For any string, <tt>Regexp.quote(str) =~ str</tt> will be true.
|
5037
|
+
#
|
5038
|
+
# Regexp.quote('\\*?{}.') #=> \\\\\*\?\{\}\.
|
5039
|
+
#
|
5040
|
+
def self.quote(str)
|
5041
|
+
`str._value.replace(/([-.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1')`
|
5017
5042
|
end
|
5018
5043
|
|
5019
5044
|
# FIX: Incomplete
|
@@ -6732,7 +6757,7 @@ end
|
|
6732
6757
|
|
6733
6758
|
`
|
6734
6759
|
|
6735
|
-
c$Exception.prototype.toString=function(){var class_name=this.m$class()._name,str=class_name+': '+(this._message||class_name);
|
6760
|
+
c$Exception.prototype.toString=function(){var class_name=this.m$class()._name,str=class_name+': '+(this._message||class_name);console.log(str+(this._stack!=null?'\\n from '+this.m$backtrace().join('\\n from '):''));return '#<'+str+'>';}
|
6736
6761
|
c$NilClass.prototype.toString=function(){return 'nil';};
|
6737
6762
|
c$Range.prototype.toString=function(){return ''+this._start+(this._exclusive?'...':'..')+this._end;};
|
6738
6763
|
c$Regexp.prototype.toString=function(){return '/'+this._source+'/'+(/s/.test(this._options)?'m':'')+(/i/.test(this._options)?'i':'')+(/x/.test(this._options)?'x':'');};
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: red
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jesse Sielaff
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-10-
|
12
|
+
date: 2008-10-14 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|