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
@@ -1,17 +0,0 @@
|
|
1
|
-
#def body
|
2
|
-
The key distinction between the \#block and \#def directives is that
|
3
|
-
the former automatically produces output in the template whereas the
|
4
|
-
latter only produces output if explicitly caused to do so (via a
|
5
|
-
placeholder).
|
6
|
-
|
7
|
-
Basically, a \#def directive defines a chunk of material that can be
|
8
|
-
used in a template or overridden or customized in an inheriting
|
9
|
-
template. The chunk is defined but no output is included by default.
|
10
|
-
|
11
|
-
A \#block directive, on the other hand, both defines a chunk and
|
12
|
-
automatically emits its contents in the template at the point it was
|
13
|
-
defined.
|
14
|
-
|
15
|
-
As such, this sample file will produce no output, although it will
|
16
|
-
cause a method to be added to the compiled version of the template.
|
17
|
-
#end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
#def counter
|
2
|
-
#ruby
|
3
|
-
@counter ||= 0 # initialize counter
|
4
|
-
@counter += 1 # increment counter
|
5
|
-
#end
|
6
|
-
#end
|
7
|
-
## Note how in the first three cases below I use an explicit end-of-directive marker;
|
8
|
-
## this is to ensure that Walrus "sees" (and emits) a newline after each number.
|
9
|
-
#echo counter#
|
10
|
-
#echo counter#
|
11
|
-
#echo counter#
|
12
|
-
#echo counter
|
@@ -1 +0,0 @@
|
|
1
|
-
42
|
@@ -1 +0,0 @@
|
|
1
|
-
#echo 42
|
@@ -1 +0,0 @@
|
|
1
|
-
It doesn't get much simpler than this...
|
@@ -1 +0,0 @@
|
|
1
|
-
#echo "It doesn't get much simpler than this"; "..."
|
@@ -1 +0,0 @@
|
|
1
|
-
42
|
@@ -1 +0,0 @@
|
|
1
|
-
#= 42 #
|
@@ -1 +0,0 @@
|
|
1
|
-
It doesn't get much simpler than this
|
@@ -1 +0,0 @@
|
|
1
|
-
#echo "It doesn't get much simpler than this"
|
@@ -1 +0,0 @@
|
|
1
|
-
Hello, world!
|
@@ -1 +0,0 @@
|
|
1
|
-
#echo 'Hello, world!'
|
@@ -1 +0,0 @@
|
|
1
|
-
foobar
|
@@ -1 +0,0 @@
|
|
1
|
-
Paragraph 2
|
@@ -1,38 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# Generated Fri Apr 13 16:10:49 +0200 2007 by Walrus version 0.1
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubygems'
|
6
|
-
rescue LoadError
|
7
|
-
# installing Walrus via RubyGems is recommended
|
8
|
-
# otherwise Walrus must be installed in the RUBYLIB load path
|
9
|
-
end
|
10
|
-
|
11
|
-
require 'walrus/document'
|
12
|
-
|
13
|
-
module Walrus
|
14
|
-
|
15
|
-
class WalrusGrammar
|
16
|
-
|
17
|
-
class BasicIncluder < Document
|
18
|
-
|
19
|
-
def template_body
|
20
|
-
|
21
|
-
accumulate('Paragraph 1' + "\n") # RawText
|
22
|
-
# Include (start): basic_included_file.txt:
|
23
|
-
accumulate('Paragraph 2' + "\n") # RawText
|
24
|
-
accumulate('Paragraph 3') # RawText
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
if __FILE__ == $0 # when run from the command line the default action is to call 'run'
|
30
|
-
new.run
|
31
|
-
end
|
32
|
-
|
33
|
-
end # BasicIncluder
|
34
|
-
|
35
|
-
end # WalrusGrammar
|
36
|
-
|
37
|
-
end # Walrus
|
38
|
-
|
@@ -1,41 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# Generated Fri Apr 13 16:10:50 +0200 2007 by Walrus version 0.1
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubygems'
|
6
|
-
rescue LoadError
|
7
|
-
# installing Walrus via RubyGems is recommended
|
8
|
-
# otherwise Walrus must be installed in the RUBYLIB load path
|
9
|
-
end
|
10
|
-
|
11
|
-
require 'walrus/document'
|
12
|
-
|
13
|
-
module Walrus
|
14
|
-
|
15
|
-
class WalrusGrammar
|
16
|
-
|
17
|
-
class ComplicatedIncluder < Document
|
18
|
-
|
19
|
-
def template_body
|
20
|
-
|
21
|
-
accumulate('This example features an include file which itself contains a variety of directives.' + "\n") # RawText
|
22
|
-
# Include (start): complicated_included_file.txt:
|
23
|
-
accumulate('This is the included file.' + "\n") # RawText
|
24
|
-
# Comment: It features comments which won't appear in the final output.
|
25
|
-
instance_eval { @my_ivar='hello, world!' } # Silent directive
|
26
|
-
accumulate('Final paragraph, referencing an instance variable defined in the included file: ') # RawText
|
27
|
-
accumulate(instance_eval { @my_ivar }) # Echo directive
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
if __FILE__ == $0 # when run from the command line the default action is to call 'run'
|
33
|
-
new.run
|
34
|
-
end
|
35
|
-
|
36
|
-
end # ComplicatedIncluder
|
37
|
-
|
38
|
-
end # WalrusGrammar
|
39
|
-
|
40
|
-
end # Walrus
|
41
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
Paragraph 3
|
@@ -1,41 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# Generated Fri Apr 13 16:10:50 +0200 2007 by Walrus version 0.1
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubygems'
|
6
|
-
rescue LoadError
|
7
|
-
# installing Walrus via RubyGems is recommended
|
8
|
-
# otherwise Walrus must be installed in the RUBYLIB load path
|
9
|
-
end
|
10
|
-
|
11
|
-
require 'walrus/document'
|
12
|
-
|
13
|
-
module Walrus
|
14
|
-
|
15
|
-
class WalrusGrammar
|
16
|
-
|
17
|
-
class NestedIncluder < Document
|
18
|
-
|
19
|
-
def template_body
|
20
|
-
|
21
|
-
accumulate('Paragraph 1' + "\n") # RawText
|
22
|
-
# Include (start): nested_include_1.txt:
|
23
|
-
accumulate('Paragraph 2' + "\n") # RawText
|
24
|
-
# Comment: This next include will add "Paragraph 3":
|
25
|
-
# Include (start): nested_include_2.txt:
|
26
|
-
accumulate('Paragraph 3' + "\n") # RawText
|
27
|
-
accumulate('Paragraph 4') # RawText
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
if __FILE__ == $0 # when run from the command line the default action is to call 'run'
|
33
|
-
new.run
|
34
|
-
end
|
35
|
-
|
36
|
-
end # NestedIncluder
|
37
|
-
|
38
|
-
end # WalrusGrammar
|
39
|
-
|
40
|
-
end # Walrus
|
41
|
-
|
@@ -1,10 +0,0 @@
|
|
1
|
-
#extends 'basic_parent'
|
2
|
-
#def footer
|
3
|
-
This is the overridden footer. Note that in the overridden version of the footer
|
4
|
-
I'm using a \#def block rather than a \#block like in the parent template. The
|
5
|
-
reason for this is that \#block calls automatically in-line their contents at
|
6
|
-
the point where they are declared.
|
7
|
-
|
8
|
-
Given that this template \#extends the parent, the parent will *already* be
|
9
|
-
in-lining the footer, so there is no need to in-line it again.
|
10
|
-
#end
|
@@ -1,9 +0,0 @@
|
|
1
|
-
This is the base template which subclasses will inherit.
|
2
|
-
|
3
|
-
This is the overridden footer. Note that in the overridden version of the footer
|
4
|
-
I'm using a #def block rather than a #block like in the parent template. The
|
5
|
-
reason for this is that #block calls automatically in-line their contents at
|
6
|
-
the point where they are declared.
|
7
|
-
|
8
|
-
Given that this template #extends the parent, the parent will *already* be
|
9
|
-
in-lining the footer, so there is no need to in-line it again.
|
@@ -1,54 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# Generated Fri Apr 13 16:10:51 +0200 2007 by Walrus version 0.1
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubygems'
|
6
|
-
rescue LoadError
|
7
|
-
# installing Walrus via RubyGems is recommended
|
8
|
-
# otherwise Walrus must be installed in the RUBYLIB load path
|
9
|
-
end
|
10
|
-
|
11
|
-
require 'walrus/document'
|
12
|
-
require File.join(File.dirname(__FILE__), 'basic_parent').to_s
|
13
|
-
|
14
|
-
module Walrus
|
15
|
-
|
16
|
-
class WalrusGrammar
|
17
|
-
|
18
|
-
class BasicChild < BasicParent
|
19
|
-
|
20
|
-
def template_body
|
21
|
-
|
22
|
-
super # (invoked automatically due to Extends directive)
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
def footer
|
27
|
-
accumulate('This is the overridden footer. Note that in the overridden version of the footer' + "\n") # RawText
|
28
|
-
accumulate('I\'m using a ') # RawText (continued)
|
29
|
-
accumulate("#") # EscapeSequence
|
30
|
-
accumulate('def block rather than a ') # RawText
|
31
|
-
accumulate("#") # EscapeSequence
|
32
|
-
accumulate('block like in the parent template. The' + "\n") # RawText
|
33
|
-
accumulate('reason for this is that ') # RawText (continued)
|
34
|
-
accumulate("#") # EscapeSequence
|
35
|
-
accumulate('block calls automatically in-line their contents at' + "\n") # RawText
|
36
|
-
accumulate('the point where they are declared.' + "\n") # RawText (continued)
|
37
|
-
accumulate('' + "\n") # RawText (continued)
|
38
|
-
accumulate('Given that this template ') # RawText (continued)
|
39
|
-
accumulate("#") # EscapeSequence
|
40
|
-
accumulate('extends the parent, the parent will *already* be' + "\n") # RawText
|
41
|
-
accumulate('in-lining the footer, so there is no need to in-line it again.' + "\n") # RawText (continued)
|
42
|
-
end
|
43
|
-
|
44
|
-
|
45
|
-
if __FILE__ == $0 # when run from the command line the default action is to call 'run'
|
46
|
-
new.run
|
47
|
-
end
|
48
|
-
|
49
|
-
end # BasicChild
|
50
|
-
|
51
|
-
end # WalrusGrammar
|
52
|
-
|
53
|
-
end # Walrus
|
54
|
-
|
@@ -1,41 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# Generated Fri Apr 13 16:10:51 +0200 2007 by Walrus version 0.1
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubygems'
|
6
|
-
rescue LoadError
|
7
|
-
# installing Walrus via RubyGems is recommended
|
8
|
-
# otherwise Walrus must be installed in the RUBYLIB load path
|
9
|
-
end
|
10
|
-
|
11
|
-
require 'walrus/document'
|
12
|
-
|
13
|
-
module Walrus
|
14
|
-
|
15
|
-
class WalrusGrammar
|
16
|
-
|
17
|
-
class BasicParent < Document
|
18
|
-
|
19
|
-
def template_body
|
20
|
-
|
21
|
-
accumulate('This is the base template which subclasses will inherit.' + "\n") # RawText
|
22
|
-
accumulate('' + "\n") # RawText (continued)
|
23
|
-
lookup_and_accumulate_placeholder(:footer)
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
def footer
|
28
|
-
accumulate('This is the footer for the base template.' + "\n") # RawText
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
if __FILE__ == $0 # when run from the command line the default action is to call 'run'
|
33
|
-
new.run
|
34
|
-
end
|
35
|
-
|
36
|
-
end # BasicParent
|
37
|
-
|
38
|
-
end # WalrusGrammar
|
39
|
-
|
40
|
-
end # Walrus
|
41
|
-
|
@@ -1,8 +0,0 @@
|
|
1
|
-
#import 'basic_parent'
|
2
|
-
This time we use an \#import directive rather than an \#extends.
|
3
|
-
|
4
|
-
This means that we have access to all of the methods defined in the parent,
|
5
|
-
but the main "template_body" is not explicitly called.
|
6
|
-
|
7
|
-
Here we'll call in the parent's footer:
|
8
|
-
$footer
|
@@ -1,7 +0,0 @@
|
|
1
|
-
This time we use an #import directive rather than an #extends.
|
2
|
-
|
3
|
-
This means that we have access to all of the methods defined in the parent,
|
4
|
-
but the main "template_body" is not explicitly called.
|
5
|
-
|
6
|
-
Here we'll call in the parent's footer:
|
7
|
-
This is the footer for the base template.
|
@@ -1,46 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# Generated Fri Apr 13 16:10:52 +0200 2007 by Walrus version 0.1
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubygems'
|
6
|
-
rescue LoadError
|
7
|
-
# installing Walrus via RubyGems is recommended
|
8
|
-
# otherwise Walrus must be installed in the RUBYLIB load path
|
9
|
-
end
|
10
|
-
|
11
|
-
require 'walrus/document'
|
12
|
-
require File.join(File.dirname(__FILE__), 'basic_parent').to_s
|
13
|
-
|
14
|
-
module Walrus
|
15
|
-
|
16
|
-
class WalrusGrammar
|
17
|
-
|
18
|
-
class ImportingChild < BasicParent
|
19
|
-
|
20
|
-
def template_body
|
21
|
-
|
22
|
-
accumulate('This time we use an ') # RawText
|
23
|
-
accumulate("#") # EscapeSequence
|
24
|
-
accumulate('import directive rather than an ') # RawText
|
25
|
-
accumulate("#") # EscapeSequence
|
26
|
-
accumulate('extends.' + "\n") # RawText
|
27
|
-
accumulate('' + "\n") # RawText (continued)
|
28
|
-
accumulate('This means that we have access to all of the methods defined in the parent,' + "\n") # RawText (continued)
|
29
|
-
accumulate('but the main "template_body" is not explicitly called.' + "\n") # RawText (continued)
|
30
|
-
accumulate('' + "\n") # RawText (continued)
|
31
|
-
accumulate('Here we\'ll call in the parent\'s footer:' + "\n") # RawText (continued)
|
32
|
-
lookup_and_accumulate_placeholder(:footer)
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
|
37
|
-
if __FILE__ == $0 # when run from the command line the default action is to call 'run'
|
38
|
-
new.run
|
39
|
-
end
|
40
|
-
|
41
|
-
end # ImportingChild
|
42
|
-
|
43
|
-
end # WalrusGrammar
|
44
|
-
|
45
|
-
end # Walrus
|
46
|
-
|
@@ -1,8 +0,0 @@
|
|
1
|
-
#import '../basic_parent'
|
2
|
-
We have to use a different form of the \#import directive when working
|
3
|
-
within a subdirectory. Instead of providing a class name we pass a
|
4
|
-
quoted string literal with relative path information. In this way Walrus
|
5
|
-
knows where to find the parent template.
|
6
|
-
|
7
|
-
Here we'll call in the parent's footer:
|
8
|
-
$footer
|
@@ -1,7 +0,0 @@
|
|
1
|
-
We have to use a different form of the #import directive when working
|
2
|
-
within a subdirectory. Instead of providing a class name we pass a
|
3
|
-
quoted string literal with relative path information. In this way Walrus
|
4
|
-
knows where to find the parent template.
|
5
|
-
|
6
|
-
Here we'll call in the parent's footer:
|
7
|
-
This is the footer for the base template.
|
@@ -1,44 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# Generated Fri Apr 13 16:10:52 +0200 2007 by Walrus version 0.1
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubygems'
|
6
|
-
rescue LoadError
|
7
|
-
# installing Walrus via RubyGems is recommended
|
8
|
-
# otherwise Walrus must be installed in the RUBYLIB load path
|
9
|
-
end
|
10
|
-
|
11
|
-
require 'walrus/document'
|
12
|
-
require File.join(File.dirname(__FILE__), '..', 'basic_parent').to_s
|
13
|
-
|
14
|
-
module Walrus
|
15
|
-
|
16
|
-
class WalrusGrammar
|
17
|
-
|
18
|
-
class ImportingChildInSubdirectory < BasicParent
|
19
|
-
|
20
|
-
def template_body
|
21
|
-
|
22
|
-
accumulate('We have to use a different form of the ') # RawText
|
23
|
-
accumulate("#") # EscapeSequence
|
24
|
-
accumulate('import directive when working' + "\n") # RawText
|
25
|
-
accumulate('within a subdirectory. Instead of providing a class name we pass a' + "\n") # RawText (continued)
|
26
|
-
accumulate('quoted string literal with relative path information. In this way Walrus' + "\n") # RawText (continued)
|
27
|
-
accumulate('knows where to find the parent template.' + "\n") # RawText (continued)
|
28
|
-
accumulate('' + "\n") # RawText (continued)
|
29
|
-
accumulate('Here we\'ll call in the parent\'s footer:' + "\n") # RawText (continued)
|
30
|
-
lookup_and_accumulate_placeholder(:footer)
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
|
35
|
-
if __FILE__ == $0 # when run from the command line the default action is to call 'run'
|
36
|
-
new.run
|
37
|
-
end
|
38
|
-
|
39
|
-
end # ImportingChildInSubdirectory
|
40
|
-
|
41
|
-
end # WalrusGrammar
|
42
|
-
|
43
|
-
end # Walrus
|
44
|
-
|
File without changes
|
@@ -1,15 +0,0 @@
|
|
1
|
-
#*
|
2
|
-
|
3
|
-
Another multiline comment
|
4
|
-
|
5
|
-
Note that I can use anything I want inside comments:
|
6
|
-
|
7
|
-
* Tabs
|
8
|
-
* Non-existent #directives
|
9
|
-
* Real directives like #raw, #set, #super, #def and #import
|
10
|
-
* Placeholders: $hello("world")
|
11
|
-
* Escape sequences: \n\r
|
12
|
-
* Nested comments: ## here is a single-line one
|
13
|
-
* Nested comments: #* here is a multi-line one *#
|
14
|
-
|
15
|
-
*#
|
@@ -1,57 +0,0 @@
|
|
1
|
-
This example demonstrates a number of different uses of the #raw directive.
|
2
|
-
In this paragraph if I want to use characters that have a special meaning for
|
3
|
-
Walrus then I have to escape them (example, a $placeholder, a #directive, an
|
4
|
-
\$ escape sequence).
|
5
|
-
|
6
|
-
But this paragraph is different, it is inside a #raw block.
|
7
|
-
I can do anything at all in the #raw block without having to escape it.
|
8
|
-
For example, use Walrus directives:
|
9
|
-
#super, #set a = b
|
10
|
-
Use placeholders:
|
11
|
-
$a, $b, $c
|
12
|
-
Use backslashes:
|
13
|
-
\n, \t, \m, \n, \o
|
14
|
-
|
15
|
-
This paragraph is another example where the closing marker is not
|
16
|
-
on a new line of it's own...
|
17
|
-
This is an example where I use an explicit directive-closing marker (#) so that
|
18
|
-
I can start my #raw content on the same line as the opening directive. I can do the
|
19
|
-
same trick with the closing directive so that my text can continue on on the same
|
20
|
-
line... See?
|
21
|
-
|
22
|
-
This paragraph uses a "here document". That means I can include a literal #end directive
|
23
|
-
in it without it causing the block to come to an end. Here we see the block continuing
|
24
|
-
and I can still use $placeholders and #directives without them having any special meaning.
|
25
|
-
The end marker (in this case "HERE") must be the first and last thing on the line in order
|
26
|
-
for it to be detected. All other uses of the end marker go through literally with no
|
27
|
-
special meaning.
|
28
|
-
|
29
|
-
There is no way to include a literal end directive in a #raw block without the help of
|
30
|
-
a "here document". You can't escape the end directive for example, because the escape
|
31
|
-
character (\) has no special meaning in a #raw block. Notice that if I try it it won't
|
32
|
-
work:\
|
33
|
-
I am now outside the #raw block because the #end directive was interpreted as an end marker
|
34
|
-
despite my attempt to escape it.
|
35
|
-
|
36
|
-
This is an example of an alternative "here document" syntax. The hyphen means that you can
|
37
|
-
precede the end marker with whitespace. Note that if the marker (in this case "THERE") is
|
38
|
-
preceded by non-whitespace characters on the same line then it has no special meaning: THERE
|
39
|
-
Likewise, if it is followed by such characters then it has no meaning either....
|
40
|
-
THERE... we keep going because "THERE" wasn't the last thing on the line.
|
41
|
-
|
42
|
-
Trailing whitespace is acceptable after the end marker, but it is not included in the output.
|
43
|
-
|
44
|
-
The same is true when using the alternative syntax.
|
45
|
-
|
46
|
-
In fact, trailing whitespace is acceptable when first opening the here document too, but it
|
47
|
-
is ignored
|
48
|
-
|
49
|
-
THe same is true for the alternate syntax.
|
50
|
-
|
51
|
-
Note that when using the alternative "here document" syntax the optional whitespace before the
|
52
|
-
end marker truly is optional; that is, the end marker can be the first thing on the line if
|
53
|
-
you want it to. (Although if that's the case you may as well use the first syntax.)
|
54
|
-
|
55
|
-
In this example I am going to use some multi-byte characters:
|
56
|
-
€áéíóú
|
57
|
-
àèìòù
|