walrus 0.1 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/walrus +29 -14
- data/ext/extconf.rb +16 -0
- data/ext/{jindex/jindex.c → jindex.c} +27 -14
- data/lib/walrus/additions/string.rb +11 -5
- data/lib/walrus/compile_error.rb +11 -5
- data/lib/walrus/compiler.rb +12 -6
- data/lib/walrus/contrib/spec/walruscloth_spec.rb +11 -5
- data/lib/walrus/contrib/walruscloth.rb +11 -5
- data/lib/walrus/diff.rb +11 -5
- data/lib/walrus/document.rb +11 -5
- data/lib/walrus/grammar/additions/proc.rb +11 -5
- data/lib/walrus/grammar/additions/regexp.rb +11 -5
- data/lib/walrus/grammar/additions/string.rb +11 -5
- data/lib/walrus/grammar/additions/symbol.rb +12 -5
- data/lib/walrus/grammar/and_predicate.rb +11 -5
- data/lib/walrus/grammar/array_result.rb +11 -5
- data/lib/walrus/grammar/continuation_wrapper_exception.rb +11 -5
- data/lib/walrus/grammar/left_recursion_exception.rb +11 -5
- data/lib/walrus/grammar/location_tracking.rb +19 -9
- data/lib/walrus/grammar/match_data_wrapper.rb +11 -5
- data/lib/walrus/grammar/memoizing.rb +11 -5
- data/lib/walrus/grammar/memoizing_cache.rb +18 -9
- data/lib/walrus/grammar/node.rb +11 -5
- data/lib/walrus/grammar/not_predicate.rb +11 -5
- data/lib/walrus/grammar/parse_error.rb +11 -5
- data/lib/walrus/grammar/parser_state.rb +11 -5
- data/lib/walrus/grammar/parslet.rb +11 -5
- data/lib/walrus/grammar/parslet_choice.rb +15 -7
- data/lib/walrus/grammar/parslet_combination.rb +11 -5
- data/lib/walrus/grammar/parslet_combining.rb +11 -5
- data/lib/walrus/grammar/parslet_merge.rb +11 -5
- data/lib/walrus/grammar/parslet_omission.rb +11 -5
- data/lib/walrus/grammar/parslet_repetition.rb +17 -8
- data/lib/walrus/grammar/parslet_repetition_default.rb +11 -5
- data/lib/walrus/grammar/parslet_sequence.rb +20 -8
- data/lib/walrus/grammar/predicate.rb +11 -5
- data/lib/walrus/grammar/proc_parslet.rb +11 -5
- data/lib/walrus/grammar/regexp_parslet.rb +11 -5
- data/lib/walrus/grammar/skipped_substring_exception.rb +11 -5
- data/lib/walrus/grammar/string_enumerator.rb +14 -6
- data/lib/walrus/grammar/string_parslet.rb +11 -5
- data/lib/walrus/grammar/string_result.rb +11 -5
- data/lib/walrus/grammar/symbol_parslet.rb +11 -5
- data/lib/walrus/grammar.rb +11 -5
- data/lib/walrus/no_parameter_marker.rb +11 -5
- data/lib/walrus/parser.rb +12 -6
- data/lib/walrus/runner.rb +60 -67
- data/lib/walrus/template.rb +15 -7
- data/lib/walrus/version.rb +3 -0
- data/lib/walrus/walrus_grammar/assignment_expression.rb +11 -5
- data/lib/walrus/walrus_grammar/block_directive.rb +11 -5
- data/lib/walrus/walrus_grammar/comment.rb +11 -5
- data/lib/walrus/walrus_grammar/def_directive.rb +16 -8
- data/lib/walrus/walrus_grammar/echo_directive.rb +11 -5
- data/lib/walrus/walrus_grammar/escape_sequence.rb +11 -5
- data/lib/walrus/walrus_grammar/import_directive.rb +11 -5
- data/lib/walrus/walrus_grammar/include_directive.rb +11 -5
- data/lib/walrus/walrus_grammar/instance_variable.rb +11 -5
- data/lib/walrus/walrus_grammar/literal.rb +11 -5
- data/lib/walrus/walrus_grammar/message_expression.rb +11 -5
- data/lib/walrus/walrus_grammar/multiline_comment.rb +11 -5
- data/lib/walrus/walrus_grammar/placeholder.rb +11 -5
- data/lib/walrus/walrus_grammar/raw_directive.rb +11 -5
- data/lib/walrus/walrus_grammar/raw_text.rb +11 -5
- data/lib/walrus/walrus_grammar/ruby_directive.rb +11 -5
- data/lib/walrus/walrus_grammar/ruby_expression.rb +11 -5
- data/lib/walrus/walrus_grammar/set_directive.rb +11 -5
- data/lib/walrus/walrus_grammar/silent_directive.rb +11 -5
- data/lib/walrus/walrus_grammar/slurp_directive.rb +11 -5
- data/lib/walrus/walrus_grammar/super_directive.rb +11 -5
- data/lib/walrus.rb +30 -16
- metadata +91 -211
- data/ext/jindex/extconf.rb +0 -11
- data/ext/mkdtemp/extconf.rb +0 -11
- data/ext/mkdtemp/mkdtemp.c +0 -41
- data/lib/walrus/additions/module.rb +0 -36
- data/lib/walrus/additions/test/unit/error_collector.rb +0 -62
- data/spec/acceptance/acceptance_spec.rb +0 -97
- data/spec/acceptance/block/basic_block.expected +0 -1
- data/spec/acceptance/block/basic_block.tmpl +0 -3
- data/spec/acceptance/block/nested_blocks.expected +0 -5
- data/spec/acceptance/block/nested_blocks.tmpl +0 -11
- data/spec/acceptance/comments/comments_and_text.expected +0 -3
- data/spec/acceptance/comments/comments_and_text.tmpl +0 -6
- data/spec/acceptance/comments/single_comment.expected +0 -0
- data/spec/acceptance/comments/single_comment.tmpl +0 -1
- data/spec/acceptance/def/alternative_def_calling_conventions.expected +0 -3
- data/spec/acceptance/def/alternative_def_calling_conventions.tmpl +0 -18
- data/spec/acceptance/def/basic_def_block_no_output.expected +0 -0
- data/spec/acceptance/def/basic_def_block_no_output.tmpl +0 -17
- data/spec/acceptance/def/defs_can_be_called_multiple_times.expected +0 -3
- data/spec/acceptance/def/defs_can_be_called_multiple_times.tmpl +0 -6
- data/spec/acceptance/def/defs_can_be_dynamic.expected +0 -4
- data/spec/acceptance/def/defs_can_be_dynamic.tmpl +0 -12
- data/spec/acceptance/echo/echo_directive_with_numeric_literal.expected +0 -1
- data/spec/acceptance/echo/echo_directive_with_numeric_literal.tmpl +0 -1
- data/spec/acceptance/echo/echo_expression_list.expected +0 -1
- data/spec/acceptance/echo/echo_expression_list.tmpl +0 -1
- data/spec/acceptance/echo/echo_short_notation.expected +0 -1
- data/spec/acceptance/echo/echo_short_notation.tmpl +0 -1
- data/spec/acceptance/echo/echo_simple_expression.expected +0 -1
- data/spec/acceptance/echo/echo_simple_expression.tmpl +0 -1
- data/spec/acceptance/echo/echo_single_quoted_string_literal.expected +0 -1
- data/spec/acceptance/echo/echo_single_quoted_string_literal.tmpl +0 -1
- data/spec/acceptance/echo/multiple_echo_statements.expected +0 -1
- data/spec/acceptance/echo/multiple_echo_statements.tmpl +0 -2
- data/spec/acceptance/includes/basic_included_file.txt +0 -1
- data/spec/acceptance/includes/basic_includer.complex +0 -3
- data/spec/acceptance/includes/basic_includer.expected +0 -3
- data/spec/acceptance/includes/basic_includer.rb +0 -38
- data/spec/acceptance/includes/complicated_included_file.txt +0 -3
- data/spec/acceptance/includes/complicated_includer.complex +0 -3
- data/spec/acceptance/includes/complicated_includer.expected +0 -3
- data/spec/acceptance/includes/complicated_includer.rb +0 -41
- data/spec/acceptance/includes/nested_include_1.txt +0 -3
- data/spec/acceptance/includes/nested_include_2.txt +0 -1
- data/spec/acceptance/includes/nested_includer.complex +0 -3
- data/spec/acceptance/includes/nested_includer.expected +0 -4
- data/spec/acceptance/includes/nested_includer.rb +0 -41
- data/spec/acceptance/inheritance/basic_child.complex +0 -10
- data/spec/acceptance/inheritance/basic_child.expected +0 -9
- data/spec/acceptance/inheritance/basic_child.rb +0 -54
- data/spec/acceptance/inheritance/basic_parent.complex +0 -5
- data/spec/acceptance/inheritance/basic_parent.expected +0 -3
- data/spec/acceptance/inheritance/basic_parent.rb +0 -41
- data/spec/acceptance/inheritance/importing_child.complex +0 -8
- data/spec/acceptance/inheritance/importing_child.expected +0 -7
- data/spec/acceptance/inheritance/importing_child.rb +0 -46
- data/spec/acceptance/inheritance/subdirectory/importing_child_in_subdirectory.complex +0 -8
- data/spec/acceptance/inheritance/subdirectory/importing_child_in_subdirectory.expected +0 -7
- data/spec/acceptance/inheritance/subdirectory/importing_child_in_subdirectory.rb +0 -44
- data/spec/acceptance/multiline_comments/multiline_comment_with_directives_inside.expected +0 -0
- data/spec/acceptance/multiline_comments/multiline_comment_with_directives_inside.tmpl +0 -15
- data/spec/acceptance/multiline_comments/simple_multiline_comment.expected +0 -2
- data/spec/acceptance/multiline_comments/simple_multiline_comment.tmpl +0 -4
- data/spec/acceptance/raw/complicated_raw_example.expected +0 -57
- data/spec/acceptance/raw/complicated_raw_example.tmpl +0 -79
- data/spec/acceptance/raw-text/UTF_8.expected +0 -12
- data/spec/acceptance/raw-text/UTF_8.tmpl +0 -12
- data/spec/acceptance/raw-text/empty_file.expected +0 -0
- data/spec/acceptance/raw-text/empty_file.tmpl +0 -0
- data/spec/acceptance/raw-text/multi_line.expected +0 -4
- data/spec/acceptance/raw-text/multi_line.tmpl +0 -4
- data/spec/acceptance/raw-text/single_line.expected +0 -1
- data/spec/acceptance/raw-text/single_line.tmpl +0 -1
- data/spec/acceptance/raw-text/single_line_whitespace.expected +0 -1
- data/spec/acceptance/raw-text/single_line_whitespace.tmpl +0 -1
- data/spec/acceptance/ruby/ruby_directive_is_just_like_silent.expected +0 -1
- data/spec/acceptance/ruby/ruby_directive_is_just_like_silent.tmpl +0 -4
- data/spec/acceptance/ruby/ruby_directive_using_here_doc.expected +0 -1
- data/spec/acceptance/ruby/ruby_directive_using_here_doc.tmpl +0 -4
- data/spec/acceptance/ruby/ruby_directive_using_here_doc_alt_syntax.expected +0 -1
- data/spec/acceptance/ruby/ruby_directive_using_here_doc_alt_syntax.tmpl +0 -4
- data/spec/acceptance/ruby/ruby_directive_with_accumulate.expected +0 -1
- data/spec/acceptance/ruby/ruby_directive_with_accumulate.tmpl +0 -4
- data/spec/acceptance/ruby/ruby_directive_with_accumulate_and_block.expected +0 -1
- data/spec/acceptance/ruby/ruby_directive_with_accumulate_and_block.tmpl +0 -6
- data/spec/acceptance/set/unused_set.expected +0 -0
- data/spec/acceptance/set/unused_set.tmpl +0 -1
- data/spec/acceptance/set/used_set.expected +0 -1
- data/spec/acceptance/set/used_set.tmpl +0 -2
- data/spec/acceptance/silent/silent_and_echo_combined.expected +0 -1
- data/spec/acceptance/silent/silent_and_echo_combined.tmpl +0 -2
- data/spec/acceptance/silent/silent_short_notation.expected +0 -1
- data/spec/acceptance/silent/silent_short_notation.tmpl +0 -1
- data/spec/acceptance/silent/simple_silent_directive.expected +0 -0
- data/spec/acceptance/silent/simple_silent_directive.tmpl +0 -1
- data/spec/acceptance/slurp/basic_slurp_demo.expected +0 -1
- data/spec/acceptance/slurp/basic_slurp_demo.tmpl +0 -4
- data/spec/acceptance/super/super_with_no_effect.expected +0 -4
- data/spec/acceptance/super/super_with_no_effect.tmpl +0 -5
- data/spec/additions/module_spec.rb +0 -126
- data/spec/additions/string_spec.rb +0 -99
- data/spec/compiler_spec.rb +0 -55
- data/spec/grammar/additions/proc_spec.rb +0 -25
- data/spec/grammar/additions/regexp_spec.rb +0 -37
- data/spec/grammar/additions/string_spec.rb +0 -106
- data/spec/grammar/and_predicate_spec.rb +0 -29
- data/spec/grammar/continuation_wrapper_exception_spec.rb +0 -23
- data/spec/grammar/match_data_wrapper_spec.rb +0 -41
- data/spec/grammar/memoizing_cache_spec.rb +0 -112
- data/spec/grammar/node_spec.rb +0 -126
- data/spec/grammar/not_predicate_spec.rb +0 -29
- data/spec/grammar/parser_state_spec.rb +0 -172
- data/spec/grammar/parslet_choice_spec.rb +0 -49
- data/spec/grammar/parslet_combining_spec.rb +0 -287
- data/spec/grammar/parslet_merge_spec.rb +0 -33
- data/spec/grammar/parslet_omission_spec.rb +0 -58
- data/spec/grammar/parslet_repetition_spec.rb +0 -77
- data/spec/grammar/parslet_sequence_spec.rb +0 -49
- data/spec/grammar/parslet_spec.rb +0 -23
- data/spec/grammar/predicate_spec.rb +0 -53
- data/spec/grammar/proc_parslet_spec.rb +0 -52
- data/spec/grammar/regexp_parslet_spec.rb +0 -347
- data/spec/grammar/string_enumerator_spec.rb +0 -94
- data/spec/grammar/string_parslet_spec.rb +0 -143
- data/spec/grammar/symbol_parslet_spec.rb +0 -30
- data/spec/grammar_spec.rb +0 -545
- data/spec/parser_spec.rb +0 -1418
- data/spec/spec_helper.rb +0 -34
- data/spec/walrus_grammar/comment_spec.rb +0 -39
- data/spec/walrus_grammar/echo_directive_spec.rb +0 -63
- data/spec/walrus_grammar/escape_sequence_spec.rb +0 -85
- data/spec/walrus_grammar/literal_spec.rb +0 -41
- data/spec/walrus_grammar/message_expression_spec.rb +0 -37
- data/spec/walrus_grammar/multiline_comment_spec.rb +0 -58
- data/spec/walrus_grammar/placeholder_spec.rb +0 -48
- data/spec/walrus_grammar/raw_directive_spec.rb +0 -81
- data/spec/walrus_grammar/raw_text_spec.rb +0 -65
- data/spec/walrus_grammar/silent_directive_spec.rb +0 -34
data/bin/walrus
CHANGED
@@ -1,23 +1,30 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
# Copyright 2007 Wincent Colaiuta
|
3
|
-
# This program is
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
2
|
+
# Copyright 2007-2008 Wincent Colaiuta
|
3
|
+
# This program is free software: you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation, either version 3 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
7
|
#
|
8
|
-
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License
|
14
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
9
15
|
|
10
16
|
module Walrus
|
11
|
-
|
17
|
+
|
12
18
|
EXIT_LOAD_ERROR = 1
|
13
19
|
EXIT_ARGUMENT_ERROR = 2
|
14
20
|
EXIT_OTHER_ERROR = 3
|
15
|
-
|
21
|
+
EXIT_UNKNOWN_ERROR = 4
|
22
|
+
|
16
23
|
begin
|
17
24
|
require 'walrus/runner'
|
18
25
|
rescue LoadError => e
|
19
26
|
$stderr.puts <<-HERE
|
20
|
-
|
27
|
+
:: error: load error (#{e.to_s})
|
21
28
|
|
22
29
|
If you are trying to run Walrus but have not yet installed it, it may be that
|
23
30
|
Ruby cannot find the Walrus files. You can help Ruby to find the Walrus "lib"
|
@@ -30,15 +37,23 @@ substituting absolute paths for "lib" and "ext":
|
|
30
37
|
HERE
|
31
38
|
exit EXIT_LOAD_ERROR
|
32
39
|
end
|
33
|
-
|
34
|
-
begin
|
40
|
+
|
41
|
+
begin
|
35
42
|
Runner.new.run
|
43
|
+
rescue SystemExit => e
|
44
|
+
# normally raised for "--version" or "--help" switches
|
45
|
+
rescue Interrupt => e
|
46
|
+
$stderr.puts ':: aborting: interrupt'
|
47
|
+
exit EXIT_OTHER_ERROR
|
36
48
|
rescue Runner::ArgumentError => e
|
37
|
-
$stderr.puts "
|
49
|
+
$stderr.puts ":: error: #{e.to_s}", "For usage information type: #{$0} --help"
|
38
50
|
exit EXIT_ARGUMENT_ERROR
|
39
51
|
rescue Runner::Error => e
|
40
|
-
$stderr.puts "
|
52
|
+
$stderr.puts ":: error: #{e.to_s}"
|
41
53
|
exit EXIT_OTHER_ERROR
|
54
|
+
rescue Exception => e
|
55
|
+
$stderr.puts ":: error: #{e.to_s}"
|
56
|
+
exit EXIT_UNKNOWN_ERROR
|
42
57
|
end
|
43
|
-
|
58
|
+
|
44
59
|
end # module Walrus
|
data/ext/extconf.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# Copyright 2007-2010 Wincent Colaiuta
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
|
+
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
14
|
+
|
15
|
+
require 'mkmf'
|
16
|
+
create_makefile('jindex')
|
@@ -1,22 +1,32 @@
|
|
1
|
-
/*
|
2
|
-
Copyright 2007 Wincent Colaiuta
|
3
|
-
This program is
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
1
|
+
/*
|
2
|
+
Copyright 2007-2010 Wincent Colaiuta
|
3
|
+
This program is free software: you can redistribute it and/or modify
|
4
|
+
it under the terms of the GNU General Public License as published by
|
5
|
+
the Free Software Foundation, either version 3 of the License, or
|
6
|
+
(at your option) any later version.
|
7
|
+
|
8
|
+
This program is distributed in the hope that it will be useful,
|
9
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
GNU General Public License for more details.
|
12
|
+
|
13
|
+
You should have received a copy of the GNU General Public License
|
14
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
9
15
|
*/
|
10
16
|
|
11
17
|
#include <ruby.h>
|
12
18
|
|
13
19
|
/*
|
14
20
|
|
15
|
-
Common code used by almost identical "jindex" and "jrindex" methods. A C
|
21
|
+
Common code used by almost identical "jindex" and "jrindex" methods. A C
|
22
|
+
extension is necessary here because with direct access to the rb_backref_get
|
23
|
+
and rb_backref_set API there is no way to propagate $~ back to the caller after
|
24
|
+
invoking the "index" and "rindex" methods. The code is basically equivalent to
|
25
|
+
the following Ruby code:
|
16
26
|
|
17
27
|
def index arg1, optional_arg
|
18
28
|
index = super # plus code here for deciding whether or not to pass optional argument
|
19
|
-
match = ($~ ? $~.clone : nil)
|
29
|
+
match = ($~ ? $~.clone : nil)
|
20
30
|
index unpack('C*')[0...index].pack('C*').jlength # jlength clobbers $~ as a side effect, should consider rewriting it
|
21
31
|
$~ = match # in pure Ruby setting $~ here has only a local effect (not seen by caller)
|
22
32
|
index
|
@@ -32,7 +42,7 @@ static VALUE walrus_str_index_common(ID func, int argc, VALUE *argv, VALUE str)
|
|
32
42
|
{
|
33
43
|
VALUE packing_format = rb_str_new2("C*");
|
34
44
|
VALUE unpacked = rb_funcall(str, rb_intern("unpack"), 1, packing_format); /* unpack('C*') */
|
35
|
-
VALUE range = rb_funcall(rb_cRange, rb_intern("new"), 3, INT2FIX(0), index, Qtrue);
|
45
|
+
VALUE range = rb_funcall(rb_cRange, rb_intern("new"), 3, INT2FIX(0), index, Qtrue);
|
36
46
|
VALUE slice = rb_funcall(unpacked, rb_intern("slice"), 1, range); /* [0...idx] */
|
37
47
|
VALUE packed = rb_funcall(slice, rb_intern("pack"), 1, packing_format); /* pack('C*') */
|
38
48
|
jindex = rb_funcall(packed, rb_intern("jlength"), 0); /* jlength */
|
@@ -48,7 +58,9 @@ call-seq:
|
|
48
58
|
str.jindex(fixnum [, offset]) -> Fixnum or nil
|
49
59
|
str.jindex(regexp [, offset]) -> Fixnum or nil
|
50
60
|
|
51
|
-
Multibyte-friendly equivalent of the String#index method. If $KCODE is
|
61
|
+
Multibyte-friendly equivalent of the String#index method. If $KCODE is
|
62
|
+
appropriately set will return an accurate index based on character count rather
|
63
|
+
than byte counts.
|
52
64
|
|
53
65
|
*/
|
54
66
|
static VALUE walrus_str_jindex_m(int argc, VALUE *argv, VALUE str)
|
@@ -63,7 +75,9 @@ call-seq:
|
|
63
75
|
str.jrindex(fixnum [, offset]) -> Fixnum or nil
|
64
76
|
str.jrindex(regexp [, offset]) -> Fixnum or nil
|
65
77
|
|
66
|
-
Multibyte-friendly equivalent of the String#rindex method. If $KCODE is
|
78
|
+
Multibyte-friendly equivalent of the String#rindex method. If $KCODE is
|
79
|
+
appropriately set will return an accurate index based on character count rather
|
80
|
+
than byte counts.
|
67
81
|
|
68
82
|
*/
|
69
83
|
static VALUE walrus_str_jrindex_m(int argc, VALUE *argv, VALUE str)
|
@@ -76,4 +90,3 @@ void Init_jindex()
|
|
76
90
|
rb_define_method(rb_cString, "jindex", walrus_str_jindex_m, -1);
|
77
91
|
rb_define_method(rb_cString, "jrindex", walrus_str_jrindex_m, -1);
|
78
92
|
}
|
79
|
-
|
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'walrus'
|
10
16
|
|
data/lib/walrus/compile_error.rb
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'walrus'
|
10
16
|
|
data/lib/walrus/compiler.rb
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'walrus'
|
10
16
|
require 'pathname'
|
@@ -74,7 +80,7 @@ module Walrus
|
|
74
80
|
|
75
81
|
<<-RETURN
|
76
82
|
\#!/usr/bin/env ruby
|
77
|
-
\# Generated
|
83
|
+
\# Generated by Walrus <http://walrus.wincent.com/>
|
78
84
|
|
79
85
|
begin
|
80
86
|
require 'rubygems'
|
@@ -1,11 +1,17 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# Copyright 2007 Wincent Colaiuta
|
3
|
-
# This program is
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
3
|
+
# This program is free software: you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation, either version 3 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
7
|
#
|
8
|
-
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License
|
14
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
9
15
|
|
10
16
|
require 'rubygems'
|
11
17
|
require 'spec'
|
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'rubygems'
|
10
16
|
gem 'RedCloth', '= 3.0.4'; require 'redcloth'
|
data/lib/walrus/diff.rb
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'walrus'
|
10
16
|
require 'open3'
|
data/lib/walrus/document.rb
CHANGED
@@ -1,12 +1,18 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
#
|
3
3
|
# Copyright 2007 Wincent Colaiuta
|
4
|
-
# This program is
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
4
|
+
# This program is free software: you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation, either version 3 of the License, or
|
7
|
+
# (at your option) any later version.
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU General Public License
|
15
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
10
16
|
|
11
17
|
require 'walrus'
|
12
18
|
require 'pathname'
|
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'walrus'
|
10
16
|
|
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'walrus'
|
10
16
|
|
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'walrus'
|
10
16
|
|
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'walrus'
|
10
16
|
|
@@ -25,6 +31,7 @@ class Symbol
|
|
25
31
|
def build(superclass, *params)
|
26
32
|
|
27
33
|
# first use the continuation trick to find out what grammar (namespace) receiver is being messaged in
|
34
|
+
# Ruby 1.9/2.0 will not support continuations, so may need to come up with an alternative
|
28
35
|
continuation = nil
|
29
36
|
value = callcc { |c| continuation = c }
|
30
37
|
if value == continuation # first time that we're here
|
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'walrus'
|
10
16
|
|
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'walrus'
|
10
16
|
|
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'walrus'
|
10
16
|
|
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'walrus'
|
10
16
|
|
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'walrus'
|
10
16
|
|
@@ -92,10 +98,14 @@ module Walrus
|
|
92
98
|
# Given another object that responds to column_end and line_end, returns true if the receiver is rightmost or equal.
|
93
99
|
# If the other object is farther to the right returns false.
|
94
100
|
def rightmost?(other)
|
95
|
-
if self.line_end > other.line_end
|
96
|
-
|
97
|
-
elsif
|
98
|
-
|
101
|
+
if self.line_end > other.line_end
|
102
|
+
true
|
103
|
+
elsif other.line_end > self.line_end
|
104
|
+
false
|
105
|
+
elsif self.column_end >= other.column_end
|
106
|
+
true
|
107
|
+
else
|
108
|
+
false
|
99
109
|
end
|
100
110
|
end
|
101
111
|
|
@@ -1,10 +1,16 @@
|
|
1
1
|
# Copyright 2007 Wincent Colaiuta
|
2
|
-
# This program is
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
2
|
+
# This program is free software: you can redistribute it and/or modify
|
3
|
+
# it under the terms of the GNU General Public License as published by
|
4
|
+
# the Free Software Foundation, either version 3 of the License, or
|
5
|
+
# (at your option) any later version.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# This program is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
+
# GNU General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU General Public License
|
13
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
8
14
|
|
9
15
|
require 'walrus'
|
10
16
|
|