vanilla 1.9.14.3 → 1.9.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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