vanilla 1.9.14.3 → 1.9.15.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -25,7 +25,7 @@ if Object.const_defined?(:Gem)
25
25
 
26
26
  # Change these as appropriate
27
27
  s.name = "vanilla"
28
- s.version = "1.9.14.3"
28
+ s.version = "1.9.15.1"
29
29
  s.summary = "A bliki-type web content thing."
30
30
  s.author = "James Adam"
31
31
  s.email = "james@lazyatom.com.com"
@@ -13,6 +13,7 @@ grammar SnipReference
13
13
  end
14
14
 
15
15
  rule argument
16
+ hash_argument <HashArgument> /
16
17
  unquoted_words <NormalArgument> /
17
18
  quoted_word <NormalArgument>
18
19
  end
@@ -21,6 +22,19 @@ grammar SnipReference
21
22
  "," optional_spaces
22
23
  end
23
24
 
25
+ rule hash_argument
26
+ word_or_symbol optional_spaces hash_argument_separator optional_spaces word
27
+ end
28
+
29
+ rule hash_argument_separator
30
+ "=>" /
31
+ ":"
32
+ end
33
+
34
+ rule word_or_symbol
35
+ [:]? word
36
+ end
37
+
24
38
  rule word
25
39
  unquoted_word / quoted_word
26
40
  end
@@ -40,10 +40,21 @@ module SnipReference
40
40
  module ArgumentList
41
41
  def to_arguments
42
42
  args = elements[0].to_arguments
43
- args << elements[1].elements[1].to_arguments if elements[1].elements
43
+ if args.is_a?(Array)
44
+ args << elements[1].elements[1].to_arguments if elements[1].elements
45
+ elsif args.is_a?(Hash)
46
+ args.merge!(elements[1].elements[1].to_arguments) if elements[1].elements
47
+ end
44
48
  args
45
49
  end
46
50
  end
51
+ module HashArgument
52
+ def to_arguments
53
+ key = elements[0].text_value
54
+ key = $1 if key =~ /\A:(.*)\Z/
55
+ {key.to_sym => elements[4].text_value}
56
+ end
57
+ end
47
58
  module NormalArgument
48
59
  def to_arguments
49
60
  [text_value]
@@ -52,60 +63,4 @@ module SnipReference
52
63
  end
53
64
 
54
65
  require 'treetop'
55
- require 'vanilla/snip_reference'
56
-
57
-
58
- if __FILE__ == $0
59
-
60
- Treetop.load "vanilla/snip_reference"
61
- require 'test/unit'
62
-
63
- class SnipReferenceParserTest < Test::Unit::TestCase
64
- examples = {
65
- %|{snip}| => {:snip => 'snip', :attribute => nil, :arguments => []},
66
- %|{snip argument}| => {:snip => 'snip', :attribute => nil, :arguments => ["argument"]},
67
- %|{"snip with spaces"}| => {:snip => 'snip with spaces', :attribute => nil, :arguments => []},
68
- %|{snip-with-dashes}| => {:snip => 'snip-with-dashes', :attribute => nil, :arguments => []},
69
- %|{snip_with_underscores}| => {:snip => 'snip_with_underscores', :attribute => nil, :arguments => []},
70
- %|{"snip with spaces" argument}| => {:snip => 'snip with spaces', :attribute => nil, :arguments => ['argument']},
71
- %|{'snip with spaces' argument}| => {:snip => 'snip with spaces', :attribute => nil, :arguments => ['argument']},
72
- %|{snip "argument with spaces"}| => {:snip => 'snip', :attribute => nil, :arguments => ['argument with spaces']},
73
- %|{snip 'argument with spaces'}| => {:snip => 'snip', :attribute => nil, :arguments => ['argument with spaces']},
74
- %|{snip arg1,arg2}| => {:snip => 'snip', :attribute => nil, :arguments => ['arg1', 'arg2']},
75
- %|{snip arg1, arg2}| => {:snip => 'snip', :attribute => nil, :arguments => ['arg1', 'arg2']},
76
- %|{snip "argument with spaces", arg2}| => {:snip => 'snip', :attribute => nil, :arguments => ['argument with spaces', 'arg2']},
77
- %|{"snip with spaces" arg1, arg2}| => {:snip => 'snip with spaces', :attribute => nil, :arguments => ['arg1', 'arg2']},
78
- %|{snip.snip_attribute}| => {:snip => 'snip', :attribute => 'snip_attribute', :arguments => []},
79
- %|{snip."spaced attribute"}| => {:snip => 'snip', :attribute => 'spaced attribute', :arguments => []},
80
- %|{"snip with spaces".attribute}| => {:snip => 'snip with spaces', :attribute => 'attribute', :arguments => []},
81
- %|{snip.snip_attribute arg}| => {:snip => 'snip', :attribute => 'snip_attribute', :arguments => ['arg']},
82
- %|{snip arg with spaces}| => {:snip => 'snip', :attribute => nil, :arguments => ['arg with spaces']},
83
- %|{snip arg with spaces, another arg}| => {:snip => 'snip', :attribute => nil, :arguments => ['arg with spaces', 'another arg']},
84
- # %|{snip key1:value1,key2:value2}| => {:snip => 'snip', :arguments => {:key1 => 'value1', :key2 => 'value2'}},
85
- # %|{snip key1:value1, key2:value2}| => {:snip => 'snip', :arguments => {:key}},
86
- # %|{snip key1: value1, key2: value2}|,
87
- # %|{snip key1 => value1, key2 => value2}|,
88
- # %|{snip :key1 => value1, :key2 => value2}|,
89
- # %|{snip key1:"value with spaces"}|,
90
- # %|{snip key1 => "value with spaces"}| => {:snip => 'snip', :arguments => {:key1 => "value with spaces"}}
91
- }
92
-
93
- def setup
94
- @parser = SnipReferenceParser.new
95
- end
96
-
97
- examples.each do |example, expected|
98
- define_method :"test_parsing_#{example}" do
99
- reference = @parser.parse(example)
100
- if reference
101
- assert_equal expected[:snip], reference.snip
102
- assert_equal expected[:attribute], reference.attribute
103
- assert_equal expected[:arguments], reference.arguments
104
- else
105
- flunk "failed to parse: #{example}"
106
- end
107
- end
108
- end
109
- end
110
-
111
- end
66
+ require 'vanilla/snip_reference'
@@ -0,0 +1,53 @@
1
+ require File.join(File.dirname(__FILE__), *%w[test_helper])
2
+ Treetop.load File.join(File.dirname(__FILE__), *%w[.. lib vanilla snip_reference])
3
+
4
+ class SnipReferenceParserTest < Test::Unit::TestCase
5
+ examples = {
6
+ %|{snip}| => {:snip => 'snip', :attribute => nil, :arguments => []},
7
+ %|{snip argument}| => {:snip => 'snip', :attribute => nil, :arguments => ["argument"]},
8
+ %|{"snip with spaces"}| => {:snip => 'snip with spaces', :attribute => nil, :arguments => []},
9
+ %|{snip-with-dashes}| => {:snip => 'snip-with-dashes', :attribute => nil, :arguments => []},
10
+ %|{snip_with_underscores}| => {:snip => 'snip_with_underscores', :attribute => nil, :arguments => []},
11
+ %|{"snip with spaces" argument}| => {:snip => 'snip with spaces', :attribute => nil, :arguments => ['argument']},
12
+ %|{'snip with spaces' argument}| => {:snip => 'snip with spaces', :attribute => nil, :arguments => ['argument']},
13
+ %|{snip "argument with spaces"}| => {:snip => 'snip', :attribute => nil, :arguments => ['argument with spaces']},
14
+ %|{snip 'argument with spaces'}| => {:snip => 'snip', :attribute => nil, :arguments => ['argument with spaces']},
15
+ %|{snip arg1,arg2}| => {:snip => 'snip', :attribute => nil, :arguments => ['arg1', 'arg2']},
16
+ %|{snip arg1, arg2}| => {:snip => 'snip', :attribute => nil, :arguments => ['arg1', 'arg2']},
17
+ %|{snip "argument with spaces", arg2}| => {:snip => 'snip', :attribute => nil, :arguments => ['argument with spaces', 'arg2']},
18
+ %|{"snip with spaces" arg1, arg2}| => {:snip => 'snip with spaces', :attribute => nil, :arguments => ['arg1', 'arg2']},
19
+ %|{snip.snip_attribute}| => {:snip => 'snip', :attribute => 'snip_attribute', :arguments => []},
20
+ %|{snip."spaced attribute"}| => {:snip => 'snip', :attribute => 'spaced attribute', :arguments => []},
21
+ %|{"snip with spaces".attribute}| => {:snip => 'snip with spaces', :attribute => 'attribute', :arguments => []},
22
+ %|{snip.snip_attribute arg}| => {:snip => 'snip', :attribute => 'snip_attribute', :arguments => ['arg']},
23
+ %|{snip arg with spaces}| => {:snip => 'snip', :attribute => nil, :arguments => ['arg with spaces']},
24
+ %|{snip arg with spaces, another arg}| => {:snip => 'snip', :attribute => nil, :arguments => ['arg with spaces', 'another arg']},
25
+ %|{snip key1=>value1, key2 => value2}| => {:snip => 'snip', :arguments => {:key1 => 'value1', :key2 => 'value2'}},
26
+ %|{snip.attribute key1=>value1}| => {:snip => 'snip', :attribute => 'attribute', :arguments => {:key1 => 'value1'}},
27
+ %|{snip key1 => value1, key2 => value2}| => {:snip => 'snip', :arguments => {:key1 => 'value1', :key2 => 'value2'}},
28
+ %|{snip :key1 => value1, :key2 => value2}| => {:snip => 'snip', :arguments => {:key1 => 'value1', :key2 => 'value2'}},
29
+ %|{snip key1 => "value with spaces"}| => {:snip => 'snip', :arguments => {:key1 => "value with spaces"}},
30
+ # %|{snip "key with spaces" => value} | => {:snip => 'snip', :arguments => {:"key with spaces" => "value"}},
31
+ %|{snip key1:value1,key2:value2}| => {:snip => 'snip', :arguments => {:key1 => 'value1', :key2 => 'value2'}},
32
+ %|{snip key1:value1, key2:value2}| => {:snip => 'snip', :arguments => {:key1 => 'value1', :key2 => 'value2'}},
33
+ %|{snip key1: value1, key2: value2}| => {:snip => 'snip', :arguments => {:key1 => 'value1', :key2 => 'value2'}},
34
+ %|{snip key1:"value with spaces"}| => {:snip => 'snip', :arguments => {:key1 => 'value with spaces'}}
35
+ }
36
+
37
+ def setup
38
+ @parser = SnipReferenceParser.new
39
+ end
40
+
41
+ examples.each do |example, expected|
42
+ define_method :"test_parsing_#{example}" do
43
+ reference = @parser.parse(example)
44
+ if reference
45
+ assert_equal expected[:snip], reference.snip
46
+ assert_equal expected[:attribute], reference.attribute
47
+ assert_equal expected[:arguments], reference.arguments
48
+ else
49
+ flunk "failed to parse: #{example}"
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,5 +1,5 @@
1
1
  CurrentSnip--- # Soup attributes
2
- :updated_at: 2009-11-24 10:47:54.395720 +00:00
2
+ :updated_at: 2009-11-24 11:25:40.019881 +00:00
3
3
  :name: current_snip
4
4
  :render_as: Ruby
5
5
  :usage: |-
@@ -12,4 +12,4 @@ CurrentSnip--- # Soup attributes
12
12
  &#123;current_snip name&#125;
13
13
 
14
14
  will output the name of the current snip, or the name of the snip currently being edited.
15
- :created_at: 2009-11-24 10:47:54.395718 +00:00
15
+ :created_at: 2009-11-24 11:25:40.019878 +00:00
@@ -1,5 +1,5 @@
1
1
  --- # Soup attributes
2
- :updated_at: 2009-11-24 10:47:54.396490 +00:00
2
+ :updated_at: 2009-11-24 11:25:40.020545 +00:00
3
3
  :name: system
4
4
  :main_template: "{current_snip}"
5
- :created_at: 2009-11-24 10:47:54.396487 +00:00
5
+ :created_at: 2009-11-24 11:25:40.020543 +00:00
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vanilla
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.14.3
4
+ version: 1.9.15.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Adam
@@ -122,6 +122,7 @@ files:
122
122
  - test/markdown_renderer_test.rb
123
123
  - test/raw_renderer_test.rb
124
124
  - test/ruby_renderer_test.rb
125
+ - test/snip_parser_test.rb
125
126
  - test/test_helper.rb
126
127
  - test/tmp/config.yml
127
128
  - test/tmp/soup/current_snip.yml