walrus 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (210) hide show
  1. data/bin/walrus +29 -14
  2. data/ext/extconf.rb +16 -0
  3. data/ext/{jindex/jindex.c → jindex.c} +27 -14
  4. data/lib/walrus/additions/string.rb +11 -5
  5. data/lib/walrus/compile_error.rb +11 -5
  6. data/lib/walrus/compiler.rb +12 -6
  7. data/lib/walrus/contrib/spec/walruscloth_spec.rb +11 -5
  8. data/lib/walrus/contrib/walruscloth.rb +11 -5
  9. data/lib/walrus/diff.rb +11 -5
  10. data/lib/walrus/document.rb +11 -5
  11. data/lib/walrus/grammar/additions/proc.rb +11 -5
  12. data/lib/walrus/grammar/additions/regexp.rb +11 -5
  13. data/lib/walrus/grammar/additions/string.rb +11 -5
  14. data/lib/walrus/grammar/additions/symbol.rb +12 -5
  15. data/lib/walrus/grammar/and_predicate.rb +11 -5
  16. data/lib/walrus/grammar/array_result.rb +11 -5
  17. data/lib/walrus/grammar/continuation_wrapper_exception.rb +11 -5
  18. data/lib/walrus/grammar/left_recursion_exception.rb +11 -5
  19. data/lib/walrus/grammar/location_tracking.rb +19 -9
  20. data/lib/walrus/grammar/match_data_wrapper.rb +11 -5
  21. data/lib/walrus/grammar/memoizing.rb +11 -5
  22. data/lib/walrus/grammar/memoizing_cache.rb +18 -9
  23. data/lib/walrus/grammar/node.rb +11 -5
  24. data/lib/walrus/grammar/not_predicate.rb +11 -5
  25. data/lib/walrus/grammar/parse_error.rb +11 -5
  26. data/lib/walrus/grammar/parser_state.rb +11 -5
  27. data/lib/walrus/grammar/parslet.rb +11 -5
  28. data/lib/walrus/grammar/parslet_choice.rb +15 -7
  29. data/lib/walrus/grammar/parslet_combination.rb +11 -5
  30. data/lib/walrus/grammar/parslet_combining.rb +11 -5
  31. data/lib/walrus/grammar/parslet_merge.rb +11 -5
  32. data/lib/walrus/grammar/parslet_omission.rb +11 -5
  33. data/lib/walrus/grammar/parslet_repetition.rb +17 -8
  34. data/lib/walrus/grammar/parslet_repetition_default.rb +11 -5
  35. data/lib/walrus/grammar/parslet_sequence.rb +20 -8
  36. data/lib/walrus/grammar/predicate.rb +11 -5
  37. data/lib/walrus/grammar/proc_parslet.rb +11 -5
  38. data/lib/walrus/grammar/regexp_parslet.rb +11 -5
  39. data/lib/walrus/grammar/skipped_substring_exception.rb +11 -5
  40. data/lib/walrus/grammar/string_enumerator.rb +14 -6
  41. data/lib/walrus/grammar/string_parslet.rb +11 -5
  42. data/lib/walrus/grammar/string_result.rb +11 -5
  43. data/lib/walrus/grammar/symbol_parslet.rb +11 -5
  44. data/lib/walrus/grammar.rb +11 -5
  45. data/lib/walrus/no_parameter_marker.rb +11 -5
  46. data/lib/walrus/parser.rb +12 -6
  47. data/lib/walrus/runner.rb +60 -67
  48. data/lib/walrus/template.rb +15 -7
  49. data/lib/walrus/version.rb +3 -0
  50. data/lib/walrus/walrus_grammar/assignment_expression.rb +11 -5
  51. data/lib/walrus/walrus_grammar/block_directive.rb +11 -5
  52. data/lib/walrus/walrus_grammar/comment.rb +11 -5
  53. data/lib/walrus/walrus_grammar/def_directive.rb +16 -8
  54. data/lib/walrus/walrus_grammar/echo_directive.rb +11 -5
  55. data/lib/walrus/walrus_grammar/escape_sequence.rb +11 -5
  56. data/lib/walrus/walrus_grammar/import_directive.rb +11 -5
  57. data/lib/walrus/walrus_grammar/include_directive.rb +11 -5
  58. data/lib/walrus/walrus_grammar/instance_variable.rb +11 -5
  59. data/lib/walrus/walrus_grammar/literal.rb +11 -5
  60. data/lib/walrus/walrus_grammar/message_expression.rb +11 -5
  61. data/lib/walrus/walrus_grammar/multiline_comment.rb +11 -5
  62. data/lib/walrus/walrus_grammar/placeholder.rb +11 -5
  63. data/lib/walrus/walrus_grammar/raw_directive.rb +11 -5
  64. data/lib/walrus/walrus_grammar/raw_text.rb +11 -5
  65. data/lib/walrus/walrus_grammar/ruby_directive.rb +11 -5
  66. data/lib/walrus/walrus_grammar/ruby_expression.rb +11 -5
  67. data/lib/walrus/walrus_grammar/set_directive.rb +11 -5
  68. data/lib/walrus/walrus_grammar/silent_directive.rb +11 -5
  69. data/lib/walrus/walrus_grammar/slurp_directive.rb +11 -5
  70. data/lib/walrus/walrus_grammar/super_directive.rb +11 -5
  71. data/lib/walrus.rb +30 -16
  72. metadata +91 -211
  73. data/ext/jindex/extconf.rb +0 -11
  74. data/ext/mkdtemp/extconf.rb +0 -11
  75. data/ext/mkdtemp/mkdtemp.c +0 -41
  76. data/lib/walrus/additions/module.rb +0 -36
  77. data/lib/walrus/additions/test/unit/error_collector.rb +0 -62
  78. data/spec/acceptance/acceptance_spec.rb +0 -97
  79. data/spec/acceptance/block/basic_block.expected +0 -1
  80. data/spec/acceptance/block/basic_block.tmpl +0 -3
  81. data/spec/acceptance/block/nested_blocks.expected +0 -5
  82. data/spec/acceptance/block/nested_blocks.tmpl +0 -11
  83. data/spec/acceptance/comments/comments_and_text.expected +0 -3
  84. data/spec/acceptance/comments/comments_and_text.tmpl +0 -6
  85. data/spec/acceptance/comments/single_comment.expected +0 -0
  86. data/spec/acceptance/comments/single_comment.tmpl +0 -1
  87. data/spec/acceptance/def/alternative_def_calling_conventions.expected +0 -3
  88. data/spec/acceptance/def/alternative_def_calling_conventions.tmpl +0 -18
  89. data/spec/acceptance/def/basic_def_block_no_output.expected +0 -0
  90. data/spec/acceptance/def/basic_def_block_no_output.tmpl +0 -17
  91. data/spec/acceptance/def/defs_can_be_called_multiple_times.expected +0 -3
  92. data/spec/acceptance/def/defs_can_be_called_multiple_times.tmpl +0 -6
  93. data/spec/acceptance/def/defs_can_be_dynamic.expected +0 -4
  94. data/spec/acceptance/def/defs_can_be_dynamic.tmpl +0 -12
  95. data/spec/acceptance/echo/echo_directive_with_numeric_literal.expected +0 -1
  96. data/spec/acceptance/echo/echo_directive_with_numeric_literal.tmpl +0 -1
  97. data/spec/acceptance/echo/echo_expression_list.expected +0 -1
  98. data/spec/acceptance/echo/echo_expression_list.tmpl +0 -1
  99. data/spec/acceptance/echo/echo_short_notation.expected +0 -1
  100. data/spec/acceptance/echo/echo_short_notation.tmpl +0 -1
  101. data/spec/acceptance/echo/echo_simple_expression.expected +0 -1
  102. data/spec/acceptance/echo/echo_simple_expression.tmpl +0 -1
  103. data/spec/acceptance/echo/echo_single_quoted_string_literal.expected +0 -1
  104. data/spec/acceptance/echo/echo_single_quoted_string_literal.tmpl +0 -1
  105. data/spec/acceptance/echo/multiple_echo_statements.expected +0 -1
  106. data/spec/acceptance/echo/multiple_echo_statements.tmpl +0 -2
  107. data/spec/acceptance/includes/basic_included_file.txt +0 -1
  108. data/spec/acceptance/includes/basic_includer.complex +0 -3
  109. data/spec/acceptance/includes/basic_includer.expected +0 -3
  110. data/spec/acceptance/includes/basic_includer.rb +0 -38
  111. data/spec/acceptance/includes/complicated_included_file.txt +0 -3
  112. data/spec/acceptance/includes/complicated_includer.complex +0 -3
  113. data/spec/acceptance/includes/complicated_includer.expected +0 -3
  114. data/spec/acceptance/includes/complicated_includer.rb +0 -41
  115. data/spec/acceptance/includes/nested_include_1.txt +0 -3
  116. data/spec/acceptance/includes/nested_include_2.txt +0 -1
  117. data/spec/acceptance/includes/nested_includer.complex +0 -3
  118. data/spec/acceptance/includes/nested_includer.expected +0 -4
  119. data/spec/acceptance/includes/nested_includer.rb +0 -41
  120. data/spec/acceptance/inheritance/basic_child.complex +0 -10
  121. data/spec/acceptance/inheritance/basic_child.expected +0 -9
  122. data/spec/acceptance/inheritance/basic_child.rb +0 -54
  123. data/spec/acceptance/inheritance/basic_parent.complex +0 -5
  124. data/spec/acceptance/inheritance/basic_parent.expected +0 -3
  125. data/spec/acceptance/inheritance/basic_parent.rb +0 -41
  126. data/spec/acceptance/inheritance/importing_child.complex +0 -8
  127. data/spec/acceptance/inheritance/importing_child.expected +0 -7
  128. data/spec/acceptance/inheritance/importing_child.rb +0 -46
  129. data/spec/acceptance/inheritance/subdirectory/importing_child_in_subdirectory.complex +0 -8
  130. data/spec/acceptance/inheritance/subdirectory/importing_child_in_subdirectory.expected +0 -7
  131. data/spec/acceptance/inheritance/subdirectory/importing_child_in_subdirectory.rb +0 -44
  132. data/spec/acceptance/multiline_comments/multiline_comment_with_directives_inside.expected +0 -0
  133. data/spec/acceptance/multiline_comments/multiline_comment_with_directives_inside.tmpl +0 -15
  134. data/spec/acceptance/multiline_comments/simple_multiline_comment.expected +0 -2
  135. data/spec/acceptance/multiline_comments/simple_multiline_comment.tmpl +0 -4
  136. data/spec/acceptance/raw/complicated_raw_example.expected +0 -57
  137. data/spec/acceptance/raw/complicated_raw_example.tmpl +0 -79
  138. data/spec/acceptance/raw-text/UTF_8.expected +0 -12
  139. data/spec/acceptance/raw-text/UTF_8.tmpl +0 -12
  140. data/spec/acceptance/raw-text/empty_file.expected +0 -0
  141. data/spec/acceptance/raw-text/empty_file.tmpl +0 -0
  142. data/spec/acceptance/raw-text/multi_line.expected +0 -4
  143. data/spec/acceptance/raw-text/multi_line.tmpl +0 -4
  144. data/spec/acceptance/raw-text/single_line.expected +0 -1
  145. data/spec/acceptance/raw-text/single_line.tmpl +0 -1
  146. data/spec/acceptance/raw-text/single_line_whitespace.expected +0 -1
  147. data/spec/acceptance/raw-text/single_line_whitespace.tmpl +0 -1
  148. data/spec/acceptance/ruby/ruby_directive_is_just_like_silent.expected +0 -1
  149. data/spec/acceptance/ruby/ruby_directive_is_just_like_silent.tmpl +0 -4
  150. data/spec/acceptance/ruby/ruby_directive_using_here_doc.expected +0 -1
  151. data/spec/acceptance/ruby/ruby_directive_using_here_doc.tmpl +0 -4
  152. data/spec/acceptance/ruby/ruby_directive_using_here_doc_alt_syntax.expected +0 -1
  153. data/spec/acceptance/ruby/ruby_directive_using_here_doc_alt_syntax.tmpl +0 -4
  154. data/spec/acceptance/ruby/ruby_directive_with_accumulate.expected +0 -1
  155. data/spec/acceptance/ruby/ruby_directive_with_accumulate.tmpl +0 -4
  156. data/spec/acceptance/ruby/ruby_directive_with_accumulate_and_block.expected +0 -1
  157. data/spec/acceptance/ruby/ruby_directive_with_accumulate_and_block.tmpl +0 -6
  158. data/spec/acceptance/set/unused_set.expected +0 -0
  159. data/spec/acceptance/set/unused_set.tmpl +0 -1
  160. data/spec/acceptance/set/used_set.expected +0 -1
  161. data/spec/acceptance/set/used_set.tmpl +0 -2
  162. data/spec/acceptance/silent/silent_and_echo_combined.expected +0 -1
  163. data/spec/acceptance/silent/silent_and_echo_combined.tmpl +0 -2
  164. data/spec/acceptance/silent/silent_short_notation.expected +0 -1
  165. data/spec/acceptance/silent/silent_short_notation.tmpl +0 -1
  166. data/spec/acceptance/silent/simple_silent_directive.expected +0 -0
  167. data/spec/acceptance/silent/simple_silent_directive.tmpl +0 -1
  168. data/spec/acceptance/slurp/basic_slurp_demo.expected +0 -1
  169. data/spec/acceptance/slurp/basic_slurp_demo.tmpl +0 -4
  170. data/spec/acceptance/super/super_with_no_effect.expected +0 -4
  171. data/spec/acceptance/super/super_with_no_effect.tmpl +0 -5
  172. data/spec/additions/module_spec.rb +0 -126
  173. data/spec/additions/string_spec.rb +0 -99
  174. data/spec/compiler_spec.rb +0 -55
  175. data/spec/grammar/additions/proc_spec.rb +0 -25
  176. data/spec/grammar/additions/regexp_spec.rb +0 -37
  177. data/spec/grammar/additions/string_spec.rb +0 -106
  178. data/spec/grammar/and_predicate_spec.rb +0 -29
  179. data/spec/grammar/continuation_wrapper_exception_spec.rb +0 -23
  180. data/spec/grammar/match_data_wrapper_spec.rb +0 -41
  181. data/spec/grammar/memoizing_cache_spec.rb +0 -112
  182. data/spec/grammar/node_spec.rb +0 -126
  183. data/spec/grammar/not_predicate_spec.rb +0 -29
  184. data/spec/grammar/parser_state_spec.rb +0 -172
  185. data/spec/grammar/parslet_choice_spec.rb +0 -49
  186. data/spec/grammar/parslet_combining_spec.rb +0 -287
  187. data/spec/grammar/parslet_merge_spec.rb +0 -33
  188. data/spec/grammar/parslet_omission_spec.rb +0 -58
  189. data/spec/grammar/parslet_repetition_spec.rb +0 -77
  190. data/spec/grammar/parslet_sequence_spec.rb +0 -49
  191. data/spec/grammar/parslet_spec.rb +0 -23
  192. data/spec/grammar/predicate_spec.rb +0 -53
  193. data/spec/grammar/proc_parslet_spec.rb +0 -52
  194. data/spec/grammar/regexp_parslet_spec.rb +0 -347
  195. data/spec/grammar/string_enumerator_spec.rb +0 -94
  196. data/spec/grammar/string_parslet_spec.rb +0 -143
  197. data/spec/grammar/symbol_parslet_spec.rb +0 -30
  198. data/spec/grammar_spec.rb +0 -545
  199. data/spec/parser_spec.rb +0 -1418
  200. data/spec/spec_helper.rb +0 -34
  201. data/spec/walrus_grammar/comment_spec.rb +0 -39
  202. data/spec/walrus_grammar/echo_directive_spec.rb +0 -63
  203. data/spec/walrus_grammar/escape_sequence_spec.rb +0 -85
  204. data/spec/walrus_grammar/literal_spec.rb +0 -41
  205. data/spec/walrus_grammar/message_expression_spec.rb +0 -37
  206. data/spec/walrus_grammar/multiline_comment_spec.rb +0 -58
  207. data/spec/walrus_grammar/placeholder_spec.rb +0 -48
  208. data/spec/walrus_grammar/raw_directive_spec.rb +0 -81
  209. data/spec/walrus_grammar/raw_text_spec.rb +0 -65
  210. data/spec/walrus_grammar/silent_directive_spec.rb +0 -34
data/spec/spec_helper.rb DELETED
@@ -1,34 +0,0 @@
1
- # Copyright 2007 Wincent Colaiuta
2
- # This program is distributed in the hope that it will be useful, but WITHOUT
3
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
5
- # in the accompanying file, "LICENSE.txt", for more details.
6
- #
7
- # $Id$
8
-
9
- # Individual spec files that require this helper file can be run individually from the commandline.
10
-
11
- require 'pathname'
12
- require 'rubygems'
13
- require 'spec'
14
-
15
- module Walrus
16
- module SpecHelper
17
-
18
- if not const_defined? "LIBDIR"
19
- # will append the local "lib" and "ext" directories to search path if not already present
20
- base = File.join(File.dirname(__FILE__), '..')
21
- LIBDIR = Pathname.new(File.join(base, 'lib')).realpath
22
- EXTDIR = Pathname.new(File.join(base, 'ext')).realpath
23
- TOOL = Pathname.new(File.join(base, 'bin', 'walrus')).realpath
24
- # normalize all paths in the load path (use "rescue" because "realpath" will raise if lstat(2) fails for the path: non-existent paths, relative paths etc)
25
- normalized = $:.collect { |path| Pathname.new(path).realpath rescue path }
26
-
27
- # only add the directories if they do not appear to be present already
28
- [LIBDIR, EXTDIR].each { |path| $:.push(path) unless normalized.include?(path) }
29
- end
30
-
31
- end # module SpecHelper
32
- end # module Walrus
33
-
34
- require 'walrus'
@@ -1,39 +0,0 @@
1
- # Copyright 2007 Wincent Colaiuta
2
- # This program is distributed in the hope that it will be useful, but WITHOUT
3
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
5
- # in the accompanying file, "LICENSE.txt", for more details.
6
- #
7
- # $Id: /mirrors/Walrus/trunk/walrus/spec/walrus_grammar/comment_spec.rb 6720 2007-04-10T15:33:38.497892Z wincent $
8
-
9
- require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
10
- require 'walrus/parser' # ensure that WalrusGrammar is defined before continuing
11
-
12
- module Walrus
13
- class WalrusGrammar
14
-
15
- describe 'compiling a comment instance' do
16
-
17
- it 'comments should produce no meaningful output' do
18
- eval(Comment.new(' hello world').compile).should == nil
19
- end
20
-
21
- end
22
-
23
- describe 'producing a Document containing Comment' do
24
-
25
- setup do
26
- @parser = Parser.new
27
- end
28
-
29
- it 'should produce no output' do
30
- comment = @parser.compile('## hello world', :class_name => :CommentSpec)
31
- self.class.class_eval(comment)
32
- self.class::Walrus::WalrusGrammar::CommentSpec.new.fill.should == ''
33
- end
34
-
35
- end
36
-
37
- end # class WalrusGrammar
38
- end # module Walrus
39
-
@@ -1,63 +0,0 @@
1
- # Copyright 2007 Wincent Colaiuta
2
- # This program is distributed in the hope that it will be useful, but WITHOUT
3
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
5
- # in the accompanying file, "LICENSE.txt", for more details.
6
- #
7
- # $Id: /mirrors/Walrus/trunk/walrus/spec/walrus_grammar/echo_directive_spec.rb 6720 2007-04-10T15:33:38.497892Z wincent $
8
-
9
- require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
10
- require 'walrus/parser' # ensure that WalrusGrammar is defined before continuing
11
-
12
- module Walrus
13
- class WalrusGrammar
14
-
15
- class EchoDirectiveAccumulator
16
- attr_reader :content
17
- def initialize
18
- @content = ''
19
- end
20
- def accumulate(string)
21
- @content << string
22
- end
23
- end
24
-
25
- describe 'compiling an EchoDirective instance' do
26
-
27
- it 'should be able to round trip' do
28
- string = StringResult.new('hello world')
29
- string.source_text = "'hello world'"
30
- @accumulator = EchoDirectiveAccumulator.new
31
- @accumulator.instance_eval(EchoDirective.new(SingleQuotedStringLiteral.new(string)).compile)
32
- @accumulator.content.should == 'hello world'
33
- end
34
-
35
- # regression test for inputs that previously raised
36
- it 'should be able to recognize the short form' do
37
- @parser = Parser.new
38
- lambda { @parser.parse('#= Walrus::VERSION #') }.should_not raise_error
39
- lambda { @parser.parse('<meta name="generator" content="Walrus #= Walrus::VERSION #">') }.should_not raise_error
40
- end
41
-
42
- end
43
-
44
- describe 'producing a Document containing an EchoDirective' do
45
-
46
- setup do
47
- @parser = Parser.new
48
- end
49
-
50
- it 'should be able to round trip' do
51
-
52
- # simple example
53
- compiled = @parser.compile("#echo 'foo'", :class_name => :EchoDirectiveSpecAlpha)
54
- self.class.class_eval(compiled)
55
- self.class::Walrus::WalrusGrammar::EchoDirectiveSpecAlpha.new.fill.should == 'foo'
56
-
57
- end
58
-
59
- end
60
-
61
- end # class WalrusGrammar
62
- end # module Walrus
63
-
@@ -1,85 +0,0 @@
1
- # Copyright 2007 Wincent Colaiuta
2
- # This program is distributed in the hope that it will be useful, but WITHOUT
3
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
5
- # in the accompanying file, "LICENSE.txt", for more details.
6
- #
7
- # $Id: /mirrors/Walrus/trunk/walrus/spec/walrus_grammar/escape_sequence_spec.rb 6720 2007-04-10T15:33:38.497892Z wincent $
8
-
9
- require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
10
- require 'walrus/parser' # ensure that WalrusGrammar is defined before continuing
11
-
12
- module Walrus
13
- class WalrusGrammar
14
-
15
- class EscapeSequenceAccumulator
16
- attr_reader :content
17
- def initialize
18
- @content = ''
19
- end
20
- def accumulate(string)
21
- @content << string
22
- end
23
- end
24
-
25
- describe 'compiling an EscapeSequence instance' do
26
-
27
- setup do
28
- @accumulator = EscapeSequenceAccumulator.new
29
- end
30
-
31
- it 'should be able to round trip ($)' do
32
- sequence = EscapeSequence.new('$')
33
- @accumulator.instance_eval(sequence.compile)
34
- @accumulator.content.should == '$'
35
- end
36
-
37
- it 'should be able to round trip (#)' do
38
- sequence = EscapeSequence.new('#')
39
- @accumulator.instance_eval(sequence.compile)
40
- @accumulator.content.should == '#'
41
- end
42
-
43
- it 'should be able to round trip (\\)' do
44
- sequence = EscapeSequence.new('\\')
45
- @accumulator.instance_eval(sequence.compile)
46
- @accumulator.content.should == '\\'
47
- end
48
-
49
- end
50
-
51
- describe 'producing a Document containing an EscapeSequence' do
52
-
53
- setup do
54
- @parser = Parser.new
55
- end
56
-
57
- it 'should be able to round trip' do
58
-
59
- # single $
60
- sequence = @parser.compile('\\$', :class_name => :EscapeSequenceSpecAlpha)
61
- self.class.class_eval(sequence)
62
- self.class::Walrus::WalrusGrammar::EscapeSequenceSpecAlpha.new.fill.should == '$'
63
-
64
- # single #
65
- sequence = @parser.compile('\\#', :class_name => :EscapeSequenceSpecBeta)
66
- self.class.class_eval(sequence)
67
- self.class::Walrus::WalrusGrammar::EscapeSequenceSpecBeta.new.fill.should == '#'
68
-
69
- # single \
70
- sequence = @parser.compile('\\\\', :class_name => :EscapeSequenceSpecDelta)
71
- self.class.class_eval(sequence)
72
- self.class::Walrus::WalrusGrammar::EscapeSequenceSpecDelta.new.fill.should == '\\'
73
-
74
- # multiple escape markers
75
- sequence = @parser.compile('\\\\\\#\\$', :class_name => :EscapeSequenceSpecGamma)
76
- self.class.class_eval(sequence)
77
- self.class::Walrus::WalrusGrammar::EscapeSequenceSpecGamma.new.fill.should == '\\#$'
78
-
79
- end
80
-
81
- end
82
-
83
- end # class WalrusGrammar
84
- end # module Walrus
85
-
@@ -1,41 +0,0 @@
1
- # Copyright 2007 Wincent Colaiuta
2
- # This program is distributed in the hope that it will be useful, but WITHOUT
3
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
5
- # in the accompanying file, "LICENSE.txt", for more details.
6
- #
7
- # $Id: /mirrors/Walrus/trunk/walrus/spec/walrus_grammar/literal_spec.rb 6702 2007-04-09T15:04:40.448669Z wincent $
8
-
9
- require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
10
- require 'walrus/parser' # ensure that WalrusGrammar is defined before continuing
11
-
12
- module Walrus
13
- class WalrusGrammar
14
-
15
- describe 'compiling a double-quoted string literal instance' do
16
-
17
- it 'should produce a string literal' do
18
- string = StringResult.new('hello world') # construct the string result the same way the parser does
19
- string.source_text = '"hello world"' # the original source text includes the quotes
20
- compiled = DoubleQuotedStringLiteral.new(string).compile # but the inner lexeme is just the contents
21
- compiled.should == '"hello world"'
22
- eval(compiled).should == 'hello world'
23
- end
24
-
25
- end
26
-
27
- describe 'compiling a single-quoted string literal instance' do
28
-
29
- it 'should produce a string literal' do
30
- string = StringResult.new('hello world') # construct the string result the same way the parser does
31
- string.source_text = "'hello world'" # the original source text includes the quotes
32
- compiled = SingleQuotedStringLiteral.new(string).compile # but the inner lexeme is just the contents
33
- compiled.should == "'hello world'"
34
- eval(compiled).should == 'hello world'
35
- end
36
-
37
- end
38
-
39
- end # class WalrusGrammar
40
- end # module Walrus
41
-
@@ -1,37 +0,0 @@
1
- # Copyright 2007 Wincent Colaiuta
2
- # This program is distributed in the hope that it will be useful, but WITHOUT
3
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
5
- # in the accompanying file, "LICENSE.txt", for more details.
6
- #
7
- # $Id: /mirrors/Walrus/trunk/walrus/spec/walrus_grammar/message_expression_spec.rb 6704 2007-04-09T18:30:00.421185Z wincent $
8
-
9
- require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
10
- require 'walrus/parser' # ensure that WalrusGrammar is defined before continuing
11
-
12
- module Walrus
13
- class WalrusGrammar
14
-
15
- describe 'calling source_text on a message expression inside an echo directive' do
16
-
17
- setup do
18
- @parser = Parser.new
19
- end
20
-
21
- it 'should return the text of the expression only' do
22
-
23
- directive = @parser.parse '#echo string.downcase'
24
- directive.column_start.should == 0
25
- directive.expression.target.column_start.should == 6
26
- directive.expression.message.column_start.should == 13
27
-
28
- # ideally we'd report 6 here, but there is no way for Walrus to know that we don't want to count the skipped whitespace
29
- directive.expression.column_start.should == 5
30
- directive.expression.source_text.should == ' string.downcase'
31
-
32
- end
33
- end
34
-
35
- end # class WalrusGrammar
36
- end # module Walrus
37
-
@@ -1,58 +0,0 @@
1
- # Copyright 2007 Wincent Colaiuta
2
- # This program is distributed in the hope that it will be useful, but WITHOUT
3
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
5
- # in the accompanying file, "LICENSE.txt", for more details.
6
- #
7
- # $Id: /mirrors/Walrus/trunk/walrus/spec/walrus_grammar/multiline_comment_spec.rb 6720 2007-04-10T15:33:38.497892Z wincent $
8
-
9
- require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
10
- require 'walrus/parser' # ensure that WalrusGrammar is defined before continuing
11
-
12
- module Walrus
13
-
14
- class WalrusGrammar
15
-
16
- describe 'compiling a comment instance' do
17
-
18
- it 'comments should produce no meaningful output' do
19
- self.class.class_eval(MultilineComment.new(" hello\n world ").compile).should == nil
20
- end
21
-
22
- end
23
-
24
- describe 'producing a Document containing Comment' do
25
-
26
- setup do
27
- @parser = Parser.new
28
- end
29
-
30
- it 'should produce no output' do
31
-
32
- # simple multiline comment
33
- comment = @parser.compile("#* hello\n world *#", :class_name => :MultilineCommentSpecAlpha)
34
- self.class.class_eval(comment)
35
- self.class::Walrus::WalrusGrammar::MultilineCommentSpecAlpha.new.fill.should == ''
36
-
37
- # nested singleline comment
38
- comment = @parser.compile("#* hello ## <-- first line\n world *#", :class_name => :MultilineCommentSpecBeta)
39
- self.class.class_eval(comment)
40
- self.class::Walrus::WalrusGrammar::MultilineCommentSpecBeta.new.fill.should == ''
41
-
42
- # nested multiline comment
43
- comment = @parser.compile("#* hello ## <-- first line\n world #* <-- second line *# *#", :class_name => :MultilineCommentSpecDelta)
44
- self.class.class_eval(comment)
45
- self.class::Walrus::WalrusGrammar::MultilineCommentSpecDelta.new.fill.should == ''
46
-
47
- # multiple comments
48
- comment = @parser.compile("#* hello *##* world *#", :class_name => :MultilineCommentSpecGamma)
49
- self.class.class_eval(comment)
50
- self.class::Walrus::WalrusGrammar::MultilineCommentSpecGamma.new.fill.should == ''
51
-
52
- end
53
-
54
- end
55
-
56
- end # class WalrusGrammar
57
- end # module Walrus
58
-
@@ -1,48 +0,0 @@
1
- # Copyright 2007 Wincent Colaiuta
2
- # This program is distributed in the hope that it will be useful, but WITHOUT
3
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
5
- # in the accompanying file, "LICENSE.txt", for more details.
6
- #
7
- # $Id: /mirrors/Walrus/trunk/walrus/spec/walrus_grammar/placeholder_spec.rb 6720 2007-04-10T15:33:38.497892Z wincent $
8
-
9
- require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
10
- require 'walrus/parser' # ensure that WalrusGrammar is defined before continuing
11
-
12
- module Walrus
13
- class WalrusGrammar
14
-
15
- describe 'a placeholder with no parameters' do
16
-
17
- setup do
18
- @parser = Parser.new
19
- end
20
-
21
- it 'should be substituted into the output' do
22
- placeholder = @parser.compile("#set $foo = 'bar'\n$foo", :class_name => :PlaceholderSpecAlpha)
23
- self.class.class_eval(placeholder)
24
- self.class::Walrus::WalrusGrammar::PlaceholderSpecAlpha.new.fill.should == 'bar'
25
- end
26
-
27
- end
28
-
29
- describe 'a placeholder that accepts one parameter' do
30
-
31
- setup do
32
- @parser = Parser.new
33
- end
34
-
35
- it 'should be substituted into the output' do
36
- placeholder = @parser.compile( %q{#def foo(string)
37
- #echo string.downcase
38
- #end
39
- $foo("HELLO WORLD")}, :class_name => :PlaceholderSpecBeta)
40
- self.class.class_eval(placeholder)
41
- self.class::Walrus::WalrusGrammar::PlaceholderSpecBeta.new.fill.should == "hello world"
42
- end
43
-
44
- end
45
-
46
- end # class WalrusGrammar
47
- end # module Walrus
48
-
@@ -1,81 +0,0 @@
1
- # Copyright 2007 Wincent Colaiuta
2
- # This program is distributed in the hope that it will be useful, but WITHOUT
3
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
5
- # in the accompanying file, "LICENSE.txt", for more details.
6
- #
7
- # $Id: /mirrors/Walrus/trunk/walrus/spec/walrus_grammar/raw_directive_spec.rb 6720 2007-04-10T15:33:38.497892Z wincent $
8
-
9
- require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
10
- require 'walrus/parser' # ensure that WalrusGrammar is defined before continuing
11
-
12
- module Walrus
13
- class WalrusGrammar
14
-
15
- class RawDirectiveAccumulator
16
- attr_reader :content
17
- def initialize
18
- @content = ''
19
- end
20
- def accumulate(string)
21
- @content << string
22
- end
23
- end
24
-
25
- describe 'compiling a RawDirective instance' do
26
-
27
- it 'should be able to round trip' do
28
- @accumulator = RawDirectiveAccumulator.new
29
- @raw = RawDirective.new('hello \'world\'\\... € #raw, $raw, \\raw')
30
- @accumulator.instance_eval(@raw.compile)
31
- @accumulator.content.should == 'hello \'world\'\\... € #raw, $raw, \\raw'
32
- end
33
-
34
- end
35
-
36
- describe 'producing a Document containing RawText' do
37
-
38
- setup do
39
- @parser = Parser.new
40
- end
41
-
42
- it 'should be able to round trip' do
43
-
44
- # simple example
45
- raw = @parser.compile("#raw\nhello world\n#end", :class_name => :RawDirectiveSpecAlpha)
46
- self.class.class_eval(raw)
47
- self.class::Walrus::WalrusGrammar::RawDirectiveSpecAlpha.new.fill.should == "hello world\n"
48
-
49
- # containing single quotes
50
- raw = @parser.compile("#raw\nhello 'world'\n#end", :class_name => :RawDirectiveSpecBeta)
51
- self.class.class_eval(raw)
52
- self.class::Walrus::WalrusGrammar::RawDirectiveSpecBeta.new.fill.should == "hello 'world'\n"
53
-
54
- # containing a newline
55
- raw = @parser.compile("#raw\nhello\nworld\n#end", :class_name => :RawDirectiveSpecDelta)
56
- self.class.class_eval(raw)
57
- self.class::Walrus::WalrusGrammar::RawDirectiveSpecDelta.new.fill.should == "hello\nworld\n"
58
-
59
- # using a "here document"
60
- raw = @parser.compile("#raw <<HERE
61
- hello world
62
- literal #end with no effect
63
- HERE", :class_name => :RawDirectiveSpecGamma)
64
- self.class.class_eval(raw)
65
- self.class::Walrus::WalrusGrammar::RawDirectiveSpecGamma.new.fill.should == "hello world\nliteral #end with no effect\n"
66
-
67
- # "here document", alternative syntax
68
- raw = @parser.compile("#raw <<-HERE
69
- hello world
70
- literal #end with no effect
71
- HERE", :class_name => :RawDirectiveSpecIota)
72
- self.class.class_eval(raw)
73
- self.class::Walrus::WalrusGrammar::RawDirectiveSpecIota.new.fill.should == "hello world\nliteral #end with no effect\n"
74
-
75
- end
76
-
77
- end
78
-
79
- end # class WalrusGrammar
80
- end # module Walrus
81
-
@@ -1,65 +0,0 @@
1
- # Copyright 2007 Wincent Colaiuta
2
- # This program is distributed in the hope that it will be useful, but WITHOUT
3
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
5
- # in the accompanying file, "LICENSE.txt", for more details.
6
- #
7
- # $Id: /mirrors/Walrus/trunk/walrus/spec/walrus_grammar/raw_text_spec.rb 6720 2007-04-10T15:33:38.497892Z wincent $
8
-
9
- require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
10
- require 'walrus/parser' # ensure that WalrusGrammar is defined before continuing
11
-
12
- module Walrus
13
- class WalrusGrammar
14
-
15
- class RawTextAccumulator
16
- attr_reader :content
17
- def initialize
18
- @content = ''
19
- end
20
- def accumulate(string)
21
- @content << string
22
- end
23
- end
24
-
25
- describe 'compiling a RawText instance' do
26
-
27
- it 'should be able to round trip' do
28
- @accumulator = RawTextAccumulator.new
29
- @raw_text = RawText.new('hello \'world\'\\... €')
30
- @accumulator.instance_eval(@raw_text.compile)
31
- @accumulator.content.should == 'hello \'world\'\\... €'
32
- end
33
-
34
- end
35
-
36
- describe 'producing a Document containing RawText' do
37
-
38
- setup do
39
- @parser = Parser.new
40
- end
41
-
42
- it 'should be able to round trip' do
43
-
44
- # simple example
45
- raw_text = @parser.compile('hello world', :class_name => :RawTextSpecAlpha)
46
- self.class.class_eval(raw_text)
47
- self.class::Walrus::WalrusGrammar::RawTextSpecAlpha.new.fill.should == 'hello world'
48
-
49
- # containing single quotes
50
- raw_text = @parser.compile("hello 'world'", :class_name => :RawTextSpecBeta)
51
- self.class.class_eval(raw_text)
52
- self.class::Walrus::WalrusGrammar::RawTextSpecBeta.new.fill.should == "hello 'world'"
53
-
54
- # containing a newline
55
- raw_text = @parser.compile("hello\nworld", :class_name => :RawTextSpecDelta)
56
- self.class.class_eval(raw_text)
57
- self.class::Walrus::WalrusGrammar::RawTextSpecDelta.new.fill.should == "hello\nworld"
58
-
59
- end
60
-
61
- end
62
-
63
- end # class WalrusGrammar
64
- end # module Walrus
65
-
@@ -1,34 +0,0 @@
1
- # Copyright 2007 Wincent Colaiuta
2
- # This program is distributed in the hope that it will be useful, but WITHOUT
3
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4
- # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
5
- # in the accompanying file, "LICENSE.txt", for more details.
6
- #
7
- # $Id: /mirrors/Walrus/trunk/walrus/spec/walrus_grammar/silent_directive_spec.rb 6720 2007-04-10T15:33:38.497892Z wincent $
8
-
9
- require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
10
- require 'walrus/parser' # ensure that WalrusGrammar is defined before continuing
11
-
12
- module Walrus
13
- class WalrusGrammar
14
-
15
- describe 'producing a Document containing a SilentDirective' do
16
-
17
- setup do
18
- @parser = Parser.new
19
- end
20
-
21
- it 'should produce no output' do
22
-
23
- # simple example
24
- compiled = @parser.compile("#silent 'foo'", :class_name => :SilentDirectiveSpecAlpha)
25
- self.class.class_eval(compiled)
26
- self.class::Walrus::WalrusGrammar::SilentDirectiveSpecAlpha.new.fill.should == ''
27
-
28
- end
29
-
30
- end
31
-
32
- end # class WalrusGrammar
33
- end # module Walrus
34
-