opal 0.6.3 → 0.7.0.beta1
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.
- checksums.yaml +4 -4
- data/.gitignore +0 -1
- data/.spectator +2 -0
- data/.spectator-mspec +3 -0
- data/.travis.yml +8 -11
- data/CHANGELOG.md +33 -0
- data/CONTRIBUTING.md +8 -43
- data/Gemfile +15 -4
- data/Guardfile +77 -0
- data/README.md +15 -9
- data/Rakefile +36 -12
- data/benchmarks/operators.rb +11 -0
- data/bin/opal +10 -13
- data/bin/opal-build +4 -4
- data/bin/opal-mspec +10 -0
- data/bin/opal-repl +4 -3
- data/examples/sinatra/Gemfile +1 -1
- data/examples/sinatra/config.ru +3 -3
- data/lib/mspec/opal/main.rb.erb +2 -2
- data/lib/mspec/opal/rake_task.rb +31 -24
- data/lib/mspec/opal/runner.rb +18 -1
- data/lib/mspec/opal/sprockets.js +17 -0
- data/lib/opal.rb +1 -34
- data/lib/opal/builder.rb +92 -58
- data/lib/opal/builder_processors.rb +165 -0
- data/lib/opal/cli.rb +85 -144
- data/lib/opal/cli_options.rb +136 -90
- data/lib/opal/cli_runners.rb +10 -0
- data/lib/opal/cli_runners/nodejs.rb +56 -0
- data/lib/opal/cli_runners/phantom.js +35 -0
- data/lib/opal/cli_runners/phantomjs.rb +28 -0
- data/lib/opal/cli_runners/server.rb +54 -0
- data/lib/opal/compiler.rb +35 -16
- data/lib/opal/erb.rb +29 -15
- data/lib/opal/hike_path_finder.rb +18 -0
- data/lib/opal/nodes.rb +1 -0
- data/lib/opal/nodes/call.rb +107 -26
- data/lib/opal/nodes/call_special.rb +31 -6
- data/lib/opal/nodes/class.rb +2 -2
- data/lib/opal/nodes/constants.rb +5 -20
- data/lib/opal/nodes/def.rb +4 -4
- data/lib/opal/nodes/defined.rb +3 -3
- data/lib/opal/nodes/definitions.rb +1 -1
- data/lib/opal/nodes/for.rb +35 -0
- data/lib/opal/nodes/helpers.rb +2 -2
- data/lib/opal/nodes/iter.rb +3 -3
- data/lib/opal/nodes/literal.rb +10 -2
- data/lib/opal/nodes/masgn.rb +2 -2
- data/lib/opal/nodes/module.rb +2 -2
- data/lib/opal/nodes/scope.rb +1 -0
- data/lib/opal/nodes/singleton_class.rb +2 -2
- data/lib/opal/nodes/super.rb +2 -2
- data/lib/opal/nodes/top.rb +30 -3
- data/lib/opal/parser.rb +15 -1
- data/lib/opal/parser/grammar.rb +2571 -2452
- data/lib/opal/parser/grammar.y +37 -5
- data/lib/opal/parser/keywords.rb +2 -0
- data/lib/opal/parser/lexer.rb +21 -11
- data/lib/opal/path_reader.rb +28 -0
- data/lib/opal/paths.rb +38 -0
- data/lib/opal/source_map.rb +32 -15
- data/lib/opal/sprockets/environment.rb +9 -2
- data/lib/opal/sprockets/erb.rb +1 -2
- data/lib/opal/sprockets/path_reader.rb +34 -0
- data/lib/opal/sprockets/processor.rb +40 -39
- data/lib/opal/sprockets/server.rb +47 -33
- data/lib/opal/version.rb +1 -1
- data/opal.gemspec +10 -5
- data/opal/README.md +6 -0
- data/opal/corelib/array.rb +36 -4
- data/opal/corelib/array/inheritance.rb +6 -6
- data/opal/corelib/basic_object.rb +9 -9
- data/opal/corelib/boolean.rb +1 -1
- data/opal/corelib/class.rb +12 -12
- data/opal/corelib/dir.rb +20 -0
- data/opal/corelib/enumerable.rb +42 -42
- data/opal/corelib/enumerator.rb +1 -1
- data/opal/corelib/error.rb +2 -2
- data/opal/corelib/file.rb +56 -0
- data/opal/corelib/hash.rb +5 -5
- data/opal/corelib/helpers.rb +3 -3
- data/opal/corelib/io.rb +13 -10
- data/opal/corelib/kernel.rb +44 -68
- data/opal/corelib/method.rb +1 -1
- data/opal/corelib/module.rb +89 -114
- data/opal/corelib/nil_class.rb +1 -1
- data/opal/corelib/numeric.rb +27 -23
- data/opal/corelib/proc.rb +5 -5
- data/opal/corelib/range.rb +8 -4
- data/opal/corelib/regexp.rb +5 -5
- data/opal/corelib/runtime.js +589 -272
- data/opal/corelib/string.rb +52 -37
- data/opal/corelib/string/inheritance.rb +5 -5
- data/opal/corelib/time.rb +102 -52
- data/opal/corelib/variables.rb +3 -3
- data/opal/opal.rb +2 -0
- data/package.json +9 -0
- data/spec/filters/bugs/array.rb +0 -6
- data/spec/filters/bugs/language.rb +4 -0
- data/spec/filters/bugs/numeric.rb +7 -6
- data/spec/filters/bugs/opal.rb +2 -0
- data/spec/filters/bugs/regexp.rb +4 -0
- data/spec/filters/bugs/string.rb +0 -7
- data/spec/filters/bugs/stringscanner.rb +4 -1
- data/spec/filters/unsupported/private_methods.rb +2 -0
- data/spec/lib/builder_processors_spec.rb +27 -0
- data/spec/lib/builder_spec.rb +66 -0
- data/spec/{cli → lib}/cli_spec.rb +60 -5
- data/spec/{cli → lib}/compiler_spec.rb +66 -5
- data/spec/{cli → lib}/dependency_resolver_spec.rb +1 -1
- data/spec/lib/fixtures/no_requires.rb +1 -0
- data/spec/{cli → lib}/fixtures/opal_file.rb +0 -0
- data/spec/lib/fixtures/require_tree_test.rb +3 -0
- data/spec/lib/fixtures/required_tree_test/required_file1.rb +1 -0
- data/spec/lib/fixtures/required_tree_test/required_file2.rb +1 -0
- data/spec/lib/fixtures/requires.rb +7 -0
- data/spec/{cli → lib}/fixtures/sprockets_file.js.rb +0 -0
- data/spec/lib/fixtures/sprockets_require_tree_test.rb +3 -0
- data/spec/lib/hike_path_finder_spec.rb +23 -0
- data/spec/{cli → lib}/lexer_spec.rb +1 -1
- data/spec/{cli → lib}/parser/alias_spec.rb +1 -1
- data/spec/{cli → lib}/parser/and_spec.rb +1 -1
- data/spec/{cli → lib}/parser/attrasgn_spec.rb +1 -1
- data/spec/{cli → lib}/parser/begin_spec.rb +1 -1
- data/spec/{cli → lib}/parser/block_spec.rb +1 -1
- data/spec/{cli → lib}/parser/break_spec.rb +1 -1
- data/spec/{cli → lib}/parser/call_spec.rb +1 -1
- data/spec/{cli → lib}/parser/class_spec.rb +1 -1
- data/spec/{cli → lib}/parser/comments_spec.rb +1 -1
- data/spec/{cli → lib}/parser/def_spec.rb +1 -1
- data/spec/{cli → lib}/parser/if_spec.rb +1 -1
- data/spec/{cli → lib}/parser/iter_spec.rb +1 -1
- data/spec/{cli → lib}/parser/lambda_spec.rb +1 -1
- data/spec/{cli → lib}/parser/literal_spec.rb +1 -1
- data/spec/{cli → lib}/parser/masgn_spec.rb +1 -1
- data/spec/{cli → lib}/parser/module_spec.rb +1 -1
- data/spec/{cli → lib}/parser/not_spec.rb +1 -1
- data/spec/{cli → lib}/parser/op_asgn1_spec.rb +1 -1
- data/spec/{cli → lib}/parser/op_asgn2_spec.rb +1 -1
- data/spec/{cli → lib}/parser/or_spec.rb +1 -1
- data/spec/{cli → lib}/parser/return_spec.rb +1 -1
- data/spec/{cli → lib}/parser/sclass_spec.rb +1 -1
- data/spec/{cli → lib}/parser/string_spec.rb +8 -1
- data/spec/{cli → lib}/parser/super_spec.rb +1 -1
- data/spec/lib/parser/unary_spec.rb +48 -0
- data/spec/{cli → lib}/parser/undef_spec.rb +1 -1
- data/spec/{cli → lib}/parser/unless_spec.rb +1 -1
- data/spec/{cli → lib}/parser/variables_spec.rb +1 -1
- data/spec/{cli → lib}/parser/while_spec.rb +1 -1
- data/spec/{cli → lib}/parser/yield_spec.rb +1 -1
- data/spec/lib/path_reader_spec.rb +24 -0
- data/spec/lib/shared/path_finder_shared.rb +19 -0
- data/spec/lib/shared/path_reader_shared.rb +31 -0
- data/spec/lib/spec_helper.rb +9 -0
- data/spec/lib/sprockets/environment_spec.rb +30 -0
- data/spec/{cli → lib}/sprockets/erb_spec.rb +1 -1
- data/spec/lib/sprockets/path_reader_spec.rb +25 -0
- data/spec/{cli → lib}/sprockets/processor_spec.rb +9 -2
- data/spec/lib/sprockets/server_spec.rb +20 -0
- data/spec/opal/compiler/irb_spec.rb +11 -11
- data/spec/opal/core/fixtures/require_tree_files/file 1.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_files/file 2.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_files/file 3.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_files/file 4.rb +1 -0
- data/spec/opal/core/fixtures/require_tree_files/file 5.rb +1 -0
- data/spec/opal/core/kernel/require_tree_spec.rb +7 -0
- data/spec/opal/core/kernel/respond_to_spec.rb +2 -2
- data/spec/opal/core/runtime/method_missing_spec.rb +19 -0
- data/spec/opal/core/source_map_spec.rb +2 -2
- data/spec/opal/core/string_spec.rb +11 -0
- data/spec/opal/stdlib/erb/erb_spec.rb +0 -1
- data/spec/opal/stdlib/thread/mutex_spec.rb +40 -0
- data/spec/opal/stdlib/thread/thread_queue_spec.rb +32 -0
- data/spec/opal/stdlib/thread/thread_spec.rb +60 -0
- data/spec/rubyspecs +54 -11
- data/spec/spec_helper.rb +18 -3
- data/spec/support/mspec_rspec_adapter.rb +33 -0
- data/spec/{cli/spec_helper.rb → support/parser_helpers.rb} +10 -10
- data/stdlib/README.md +3 -0
- data/stdlib/benchmark.rb +10 -0
- data/stdlib/date.rb +2 -2
- data/stdlib/dir.rb +1 -5
- data/stdlib/file.rb +1 -7
- data/stdlib/json.rb +10 -1
- data/stdlib/native.rb +5 -5
- data/stdlib/nodejs.rb +5 -0
- data/stdlib/nodejs/dir.rb +13 -0
- data/stdlib/nodejs/file.rb +98 -0
- data/stdlib/nodejs/fileutils.rb +26 -0
- data/stdlib/nodejs/io.rb +2 -0
- data/stdlib/nodejs/irb.rb +45 -0
- data/stdlib/nodejs/process.rb +16 -0
- data/stdlib/nodejs/require.rb +32 -0
- data/stdlib/nodejs/rubygems.rb +68 -0
- data/stdlib/nodejs/runtime.rb +25 -0
- data/stdlib/nodejs/yaml.rb +11 -0
- data/stdlib/opal-parser.rb +1 -2
- data/stdlib/opal-source-maps.rb +2 -0
- data/stdlib/phantomjs.rb +8 -0
- data/stdlib/process.rb +10 -0
- data/stdlib/promise.rb +12 -4
- data/stdlib/set.rb +27 -0
- data/stdlib/source_map.rb +5 -63
- data/stdlib/source_map/map.rb +220 -0
- data/stdlib/source_map/mapping.rb +26 -0
- data/stdlib/source_map/offset.rb +88 -0
- data/stdlib/source_map/version.rb +3 -0
- data/stdlib/source_map/vlq.rb +77 -101
- data/stdlib/sourcemap.rb +1 -0
- data/stdlib/strscan.rb +7 -1
- data/stdlib/template.rb +1 -1
- data/stdlib/thread.rb +147 -7
- metadata +238 -104
- data/lib/mspec/opal/mspec_fixes.rb +0 -87
- data/spec/cli/sprockets/environment_spec.rb +0 -14
- data/spec/filters/bugs/symbol.rb +0 -5
- data/spec/opal/core/kernel/warn_spec.rb +0 -83
- data/spec/opal/core/language/numbers_spec.rb +0 -60
- data/stdlib/opal-source-maps.js.erb +0 -2
- data/stdlib/source_map/generator.rb +0 -251
- data/stdlib/source_map/parser.rb +0 -102
data/opal/corelib/string.rb
CHANGED
|
@@ -3,7 +3,7 @@ require 'corelib/comparable'
|
|
|
3
3
|
class String
|
|
4
4
|
include Comparable
|
|
5
5
|
|
|
6
|
-
`def
|
|
6
|
+
`def.$$is_string = true`
|
|
7
7
|
|
|
8
8
|
def self.try_convert(what)
|
|
9
9
|
what.to_str
|
|
@@ -81,7 +81,7 @@ class String
|
|
|
81
81
|
|
|
82
82
|
def =~(other)
|
|
83
83
|
%x{
|
|
84
|
-
if (other
|
|
84
|
+
if (other.$$is_string) {
|
|
85
85
|
#{raise TypeError, 'type mismatch: String given'};
|
|
86
86
|
}
|
|
87
87
|
|
|
@@ -93,7 +93,7 @@ class String
|
|
|
93
93
|
%x{
|
|
94
94
|
var size = self.length;
|
|
95
95
|
|
|
96
|
-
if (index
|
|
96
|
+
if (index.$$is_range) {
|
|
97
97
|
var exclude = index.exclude,
|
|
98
98
|
length = index.end,
|
|
99
99
|
index = index.begin;
|
|
@@ -313,7 +313,7 @@ class String
|
|
|
313
313
|
options = pattern.substr(pattern.lastIndexOf('/') + 1) + 'g',
|
|
314
314
|
regexp = pattern.substr(1, pattern.lastIndexOf('/') - 1);
|
|
315
315
|
|
|
316
|
-
self.$sub
|
|
316
|
+
self.$sub.$$p = block;
|
|
317
317
|
return self.$sub(new RegExp(regexp, options), replace);
|
|
318
318
|
}
|
|
319
319
|
end
|
|
@@ -328,7 +328,7 @@ class String
|
|
|
328
328
|
|
|
329
329
|
def include?(other)
|
|
330
330
|
%x{
|
|
331
|
-
if (other
|
|
331
|
+
if (other.$$is_string) {
|
|
332
332
|
return self.indexOf(other) !== -1;
|
|
333
333
|
}
|
|
334
334
|
}
|
|
@@ -616,7 +616,7 @@ class String
|
|
|
616
616
|
return [self];
|
|
617
617
|
}
|
|
618
618
|
|
|
619
|
-
if (pattern && pattern
|
|
619
|
+
if (pattern && pattern.$$is_regexp) {
|
|
620
620
|
var pattern_str = pattern.toString();
|
|
621
621
|
|
|
622
622
|
/* Opal and JS's repr of an empty RE. */
|
|
@@ -762,14 +762,44 @@ class String
|
|
|
762
762
|
`self.replace(/^\s*/, '').replace(/\s*$/, '')`
|
|
763
763
|
end
|
|
764
764
|
|
|
765
|
+
%x{
|
|
766
|
+
// convert Ruby back reference to JavaScript back reference
|
|
767
|
+
function convertReplace(replace) {
|
|
768
|
+
return replace.replace(
|
|
769
|
+
/(^|[^\\])\\\\(\d)/g, '$1\\$2'
|
|
770
|
+
).replace(
|
|
771
|
+
/(^|[^\\])(\\\\)+\\\\(\d)/g, '$1$2\\$3'
|
|
772
|
+
).replace(
|
|
773
|
+
/(^|[^\\])(?:(\\)\\)+([^\\]|$)/g, '$1$2$3'
|
|
774
|
+
);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
|
|
765
778
|
def sub(pattern, replace = undefined, &block)
|
|
766
779
|
%x{
|
|
767
|
-
if (typeof(
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
780
|
+
if (typeof(pattern) !== 'string' && !pattern.$$is_regexp) {
|
|
781
|
+
pattern = #{Opal.coerce_to! pattern, String, :to_str};
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
if (replace !== undefined) {
|
|
785
|
+
if (#{replace.is_a?(Hash)}) {
|
|
786
|
+
return self.replace(pattern, function(str) {
|
|
787
|
+
var value = #{replace[str]};
|
|
788
|
+
|
|
789
|
+
return (value == null) ? nil : #{value.to_s};
|
|
790
|
+
});
|
|
791
|
+
}
|
|
792
|
+
else {
|
|
793
|
+
if (typeof(replace) !== 'string') {
|
|
794
|
+
replace = #{Opal.coerce_to! replace, String, :to_str};
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
replace = convertReplace(replace);
|
|
798
|
+
return self.replace(pattern, replace);
|
|
799
|
+
}
|
|
800
|
+
|
|
771
801
|
}
|
|
772
|
-
if (block !== nil) {
|
|
802
|
+
else if (block != null && block !== nil) {
|
|
773
803
|
return self.replace(pattern, function() {
|
|
774
804
|
// FIXME: this should be a formal MatchData object with all the goodies
|
|
775
805
|
var match_data = []
|
|
@@ -788,36 +818,16 @@ class String
|
|
|
788
818
|
var match_len = match_data.length;
|
|
789
819
|
|
|
790
820
|
// $1, $2, $3 not being parsed correctly in Ruby code
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
821
|
+
for (var i = 1; i < match_len; i++) {
|
|
822
|
+
Opal.gvars[String(i)] = match_data[i];
|
|
823
|
+
}
|
|
794
824
|
#{$& = `match_data[0]`};
|
|
795
825
|
#{$~ = `match_data`};
|
|
796
826
|
return block(match_data[0]);
|
|
797
827
|
});
|
|
798
828
|
}
|
|
799
|
-
else if (replace !== undefined) {
|
|
800
|
-
if (#{replace.is_a?(Hash)}) {
|
|
801
|
-
return self.replace(pattern, function(str) {
|
|
802
|
-
var value = #{replace[str]};
|
|
803
|
-
|
|
804
|
-
return (value == null) ? nil : #{value.to_s};
|
|
805
|
-
});
|
|
806
|
-
}
|
|
807
|
-
else {
|
|
808
|
-
replace = #{String.try_convert(replace)};
|
|
809
|
-
|
|
810
|
-
if (replace == null) {
|
|
811
|
-
#{raise TypeError, "can't convert #{replace.class} into String"};
|
|
812
|
-
}
|
|
813
|
-
|
|
814
|
-
return self.replace(pattern, replace);
|
|
815
|
-
}
|
|
816
|
-
}
|
|
817
829
|
else {
|
|
818
|
-
|
|
819
|
-
replace = replace.toString().replace(/\\([1-9])/g, '$$$1')
|
|
820
|
-
return self.replace(pattern, replace);
|
|
830
|
+
#{raise ArgumentError, 'wrong number of arguments (1 for 2)'}
|
|
821
831
|
}
|
|
822
832
|
}
|
|
823
833
|
end
|
|
@@ -880,8 +890,13 @@ class String
|
|
|
880
890
|
end
|
|
881
891
|
|
|
882
892
|
def to_proc
|
|
883
|
-
proc
|
|
884
|
-
|
|
893
|
+
# Give name to self in case this proc is passed to instance_eval
|
|
894
|
+
sym = self
|
|
895
|
+
|
|
896
|
+
proc do |*args, &block|
|
|
897
|
+
raise ArgumentError, "no receiver given" if args.empty?
|
|
898
|
+
obj = args.shift
|
|
899
|
+
obj.send(sym, *args, &block)
|
|
885
900
|
end
|
|
886
901
|
end
|
|
887
902
|
|
|
@@ -3,10 +3,10 @@ class String
|
|
|
3
3
|
replace = Class.new(String::Wrapper)
|
|
4
4
|
|
|
5
5
|
%x{
|
|
6
|
-
klass
|
|
7
|
-
klass
|
|
8
|
-
klass
|
|
9
|
-
klass
|
|
6
|
+
klass.$$proto = replace.$$proto;
|
|
7
|
+
klass.$$proto.$$class = klass;
|
|
8
|
+
klass.$$alloc = replace.$$alloc;
|
|
9
|
+
klass.$$parent = #{String::Wrapper};
|
|
10
10
|
|
|
11
11
|
klass.$allocate = replace.$allocate;
|
|
12
12
|
klass.$new = replace.$new;
|
|
@@ -38,7 +38,7 @@ class String::Wrapper
|
|
|
38
38
|
def method_missing(*args, &block)
|
|
39
39
|
result = @literal.__send__(*args, &block)
|
|
40
40
|
|
|
41
|
-
if `result
|
|
41
|
+
if `result.$$is_string != null`
|
|
42
42
|
if `result == #@literal`
|
|
43
43
|
self
|
|
44
44
|
else
|
data/opal/corelib/time.rb
CHANGED
|
@@ -124,24 +124,26 @@ class Time
|
|
|
124
124
|
other = Opal.coerce_to other, Integer, :to_int
|
|
125
125
|
|
|
126
126
|
%x{
|
|
127
|
-
var result
|
|
128
|
-
|
|
127
|
+
var result = new Date(self.getTime() + (other * 1000));
|
|
128
|
+
result.tz_offset = #@tz_offset;
|
|
129
|
+
|
|
129
130
|
return result;
|
|
130
131
|
}
|
|
131
132
|
end
|
|
132
133
|
|
|
133
134
|
def -(other)
|
|
134
135
|
if Time === other
|
|
135
|
-
`(self.getTime() - other.getTime()) / 1000`
|
|
136
|
-
else
|
|
137
|
-
other = Opal.coerce_to other, Integer, :to_int
|
|
138
|
-
|
|
139
|
-
%x{
|
|
140
|
-
var result = new Date(self.getTime() - (other * 1000));
|
|
141
|
-
result.tz_offset = self.tz_offset;
|
|
142
|
-
return result;
|
|
143
|
-
}
|
|
136
|
+
return `(self.getTime() - other.getTime()) / 1000`
|
|
144
137
|
end
|
|
138
|
+
|
|
139
|
+
other = Opal.coerce_to other, Integer, :to_int
|
|
140
|
+
|
|
141
|
+
%x{
|
|
142
|
+
var result = new Date(self.getTime() - (other * 1000));
|
|
143
|
+
result.tz_offset = #@tz_offset;
|
|
144
|
+
|
|
145
|
+
return result;
|
|
146
|
+
}
|
|
145
147
|
end
|
|
146
148
|
|
|
147
149
|
def <=>(other)
|
|
@@ -159,7 +161,14 @@ class Time
|
|
|
159
161
|
alias ctime asctime
|
|
160
162
|
|
|
161
163
|
def day
|
|
162
|
-
|
|
164
|
+
%x{
|
|
165
|
+
if (#@tz_offset === 0) {
|
|
166
|
+
return self.getUTCDate();
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
return self.getDate();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
163
172
|
end
|
|
164
173
|
|
|
165
174
|
def yday
|
|
@@ -179,11 +188,18 @@ class Time
|
|
|
179
188
|
end
|
|
180
189
|
|
|
181
190
|
def friday?
|
|
182
|
-
|
|
191
|
+
`#{wday} == 5`
|
|
183
192
|
end
|
|
184
193
|
|
|
185
194
|
def hour
|
|
186
|
-
|
|
195
|
+
%x{
|
|
196
|
+
if (#@tz_offset === 0) {
|
|
197
|
+
return self.getUTCHours();
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
return self.getHours();
|
|
201
|
+
}
|
|
202
|
+
}
|
|
187
203
|
end
|
|
188
204
|
|
|
189
205
|
def inspect
|
|
@@ -197,25 +213,46 @@ class Time
|
|
|
197
213
|
alias mday day
|
|
198
214
|
|
|
199
215
|
def min
|
|
200
|
-
|
|
216
|
+
%x{
|
|
217
|
+
if (#@tz_offset === 0) {
|
|
218
|
+
return self.getUTCMinutes();
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
return self.getMinutes();
|
|
222
|
+
}
|
|
223
|
+
}
|
|
201
224
|
end
|
|
202
225
|
|
|
203
226
|
def mon
|
|
204
|
-
|
|
227
|
+
%x{
|
|
228
|
+
if (#@tz_offset === 0) {
|
|
229
|
+
return self.getUTCMonth() + 1;
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
return self.getMonth() + 1;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
205
235
|
end
|
|
206
236
|
|
|
207
237
|
def monday?
|
|
208
|
-
|
|
238
|
+
`#{wday} == 1`
|
|
209
239
|
end
|
|
210
240
|
|
|
211
241
|
alias month mon
|
|
212
242
|
|
|
213
243
|
def saturday?
|
|
214
|
-
|
|
244
|
+
`#{wday} == 6`
|
|
215
245
|
end
|
|
216
246
|
|
|
217
247
|
def sec
|
|
218
|
-
|
|
248
|
+
%x{
|
|
249
|
+
if (#@tz_offset === 0) {
|
|
250
|
+
return self.getUTCSeconds();
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
return self.getSeconds();
|
|
254
|
+
}
|
|
255
|
+
}
|
|
219
256
|
end
|
|
220
257
|
|
|
221
258
|
def usec
|
|
@@ -246,14 +283,15 @@ class Time
|
|
|
246
283
|
|
|
247
284
|
def getgm
|
|
248
285
|
%x{
|
|
249
|
-
var result
|
|
250
|
-
|
|
286
|
+
var result = new Date(self.getTime());
|
|
287
|
+
result.tz_offset = 0;
|
|
288
|
+
|
|
251
289
|
return result;
|
|
252
290
|
}
|
|
253
291
|
end
|
|
254
292
|
|
|
255
293
|
def gmt?
|
|
256
|
-
|
|
294
|
+
`#@tz_offset === 0`
|
|
257
295
|
end
|
|
258
296
|
|
|
259
297
|
def gmt_offset
|
|
@@ -283,42 +321,42 @@ class Time
|
|
|
283
321
|
|
|
284
322
|
switch (conv) {
|
|
285
323
|
case 'Y':
|
|
286
|
-
result +=
|
|
324
|
+
result += #{year};
|
|
287
325
|
break;
|
|
288
326
|
|
|
289
327
|
case 'C':
|
|
290
328
|
zero = !blank;
|
|
291
|
-
result += Match.round(
|
|
329
|
+
result += Match.round(#{year} / 100);
|
|
292
330
|
break;
|
|
293
331
|
|
|
294
332
|
case 'y':
|
|
295
333
|
zero = !blank;
|
|
296
|
-
result += (
|
|
334
|
+
result += (#{year} % 100);
|
|
297
335
|
break;
|
|
298
336
|
|
|
299
337
|
case 'm':
|
|
300
338
|
zero = !blank;
|
|
301
|
-
result +=
|
|
339
|
+
result += #{mon};
|
|
302
340
|
break;
|
|
303
341
|
|
|
304
342
|
case 'B':
|
|
305
|
-
result += long_months[
|
|
343
|
+
result += long_months[#{mon} - 1];
|
|
306
344
|
break;
|
|
307
345
|
|
|
308
346
|
case 'b':
|
|
309
347
|
case 'h':
|
|
310
348
|
blank = !zero;
|
|
311
|
-
result += short_months[
|
|
349
|
+
result += short_months[#{mon} - 1];
|
|
312
350
|
break;
|
|
313
351
|
|
|
314
352
|
case 'd':
|
|
315
353
|
zero = !blank
|
|
316
|
-
result +=
|
|
354
|
+
result += #{day};
|
|
317
355
|
break;
|
|
318
356
|
|
|
319
357
|
case 'e':
|
|
320
358
|
blank = !zero
|
|
321
|
-
result +=
|
|
359
|
+
result += #{day};
|
|
322
360
|
break;
|
|
323
361
|
|
|
324
362
|
case 'j':
|
|
@@ -327,40 +365,40 @@ class Time
|
|
|
327
365
|
|
|
328
366
|
case 'H':
|
|
329
367
|
zero = !blank;
|
|
330
|
-
result +=
|
|
368
|
+
result += #{hour};
|
|
331
369
|
break;
|
|
332
370
|
|
|
333
371
|
case 'k':
|
|
334
372
|
blank = !zero;
|
|
335
|
-
result +=
|
|
373
|
+
result += #{hour};
|
|
336
374
|
break;
|
|
337
375
|
|
|
338
376
|
case 'I':
|
|
339
377
|
zero = !blank;
|
|
340
|
-
result += (
|
|
378
|
+
result += (#{hour} % 12 || 12);
|
|
341
379
|
break;
|
|
342
380
|
|
|
343
381
|
case 'l':
|
|
344
382
|
blank = !zero;
|
|
345
|
-
result += (
|
|
383
|
+
result += (#{hour} % 12 || 12);
|
|
346
384
|
break;
|
|
347
385
|
|
|
348
386
|
case 'P':
|
|
349
|
-
result += (
|
|
387
|
+
result += (#{hour} >= 12 ? "pm" : "am");
|
|
350
388
|
break;
|
|
351
389
|
|
|
352
390
|
case 'p':
|
|
353
|
-
result += (
|
|
391
|
+
result += (#{hour} >= 12 ? "PM" : "AM");
|
|
354
392
|
break;
|
|
355
393
|
|
|
356
394
|
case 'M':
|
|
357
395
|
zero = !blank;
|
|
358
|
-
result +=
|
|
396
|
+
result += #{min};
|
|
359
397
|
break;
|
|
360
398
|
|
|
361
399
|
case 'S':
|
|
362
400
|
zero = !blank;
|
|
363
|
-
result +=
|
|
401
|
+
result += #{sec}
|
|
364
402
|
break;
|
|
365
403
|
|
|
366
404
|
case 'L':
|
|
@@ -402,26 +440,26 @@ class Time
|
|
|
402
440
|
break;
|
|
403
441
|
|
|
404
442
|
case 'A':
|
|
405
|
-
result += days_of_week[
|
|
443
|
+
result += days_of_week[#{wday}];
|
|
406
444
|
break;
|
|
407
445
|
|
|
408
446
|
case 'a':
|
|
409
|
-
result += short_days[
|
|
447
|
+
result += short_days[#{wday}];
|
|
410
448
|
break;
|
|
411
449
|
|
|
412
450
|
case 'u':
|
|
413
|
-
result += (
|
|
451
|
+
result += (#{wday} + 1);
|
|
414
452
|
break;
|
|
415
453
|
|
|
416
454
|
case 'w':
|
|
417
|
-
result +=
|
|
455
|
+
result += #{wday};
|
|
418
456
|
break;
|
|
419
457
|
|
|
420
458
|
// TODO: week year
|
|
421
459
|
// TODO: week number
|
|
422
460
|
|
|
423
461
|
case 's':
|
|
424
|
-
result +=
|
|
462
|
+
result += #{to_i};
|
|
425
463
|
break;
|
|
426
464
|
|
|
427
465
|
case 'n':
|
|
@@ -489,11 +527,11 @@ class Time
|
|
|
489
527
|
end
|
|
490
528
|
|
|
491
529
|
def sunday?
|
|
492
|
-
|
|
530
|
+
`#{wday} == 0`
|
|
493
531
|
end
|
|
494
532
|
|
|
495
533
|
def thursday?
|
|
496
|
-
|
|
534
|
+
`#{wday} == 4`
|
|
497
535
|
end
|
|
498
536
|
|
|
499
537
|
def to_a
|
|
@@ -511,24 +549,36 @@ class Time
|
|
|
511
549
|
alias to_s inspect
|
|
512
550
|
|
|
513
551
|
def tuesday?
|
|
514
|
-
|
|
552
|
+
`#{wday} == 2`
|
|
515
553
|
end
|
|
516
554
|
|
|
517
555
|
alias utc? gmt?
|
|
518
556
|
|
|
519
|
-
|
|
520
|
-
`self.getTimezoneOffset() * -60`
|
|
521
|
-
end
|
|
557
|
+
alias utc_offset gmt_offset
|
|
522
558
|
|
|
523
559
|
def wday
|
|
524
|
-
|
|
560
|
+
%x{
|
|
561
|
+
if (#@tz_offset === 0) {
|
|
562
|
+
return self.getUTCDay();
|
|
563
|
+
}
|
|
564
|
+
else {
|
|
565
|
+
return self.getDay();
|
|
566
|
+
}
|
|
567
|
+
}
|
|
525
568
|
end
|
|
526
569
|
|
|
527
570
|
def wednesday?
|
|
528
|
-
|
|
571
|
+
`#{wday} == 3`
|
|
529
572
|
end
|
|
530
573
|
|
|
531
574
|
def year
|
|
532
|
-
|
|
575
|
+
%x{
|
|
576
|
+
if (#@tz_offset === 0) {
|
|
577
|
+
return self.getUTCFullYear();
|
|
578
|
+
}
|
|
579
|
+
else {
|
|
580
|
+
return self.getFullYear();
|
|
581
|
+
}
|
|
582
|
+
}
|
|
533
583
|
end
|
|
534
584
|
end
|