##// END OF EJS Templates
Fixed that #extract_macro_options should not be greedy (#12451)....
Jean-Philippe Lang -
r10658:14e56006a1f8
parent child
Show More
@@ -48,7 +48,7 module Redmine
48 48
49 49 def extract_macro_options(args, *keys)
50 50 options = {}
51 while args.last.to_s.strip =~ %r{^(.+)\=(.+)$} && keys.include?($1.downcase.to_sym)
51 while args.last.to_s.strip =~ %r{^(.+?)\=(.+)$} && keys.include?($1.downcase.to_sym)
52 52 options[$1.downcase.to_sym] = $2
53 53 args.pop
54 54 end
@@ -100,6 +100,25 class Redmine::WikiFormatting::MacrosTest < ActionView::TestCase
100 100 assert_equal '<p>Hello world! Object: Issue, Called with no argument and no block of text.</p>', textilizable(text, :object => Issue.find(1))
101 101 end
102 102
103 def test_extract_macro_options_should_with_args
104 options = extract_macro_options(["arg1", "arg2"], :foo, :size)
105 assert_equal([["arg1", "arg2"], {}], options)
106 end
107
108 def test_extract_macro_options_should_with_options
109 options = extract_macro_options(["foo=bar", "size=2"], :foo, :size)
110 assert_equal([[], {:foo => "bar", :size => "2"}], options)
111 end
112
113 def test_extract_macro_options_should_with_args_and_options
114 options = extract_macro_options(["arg1", "arg2", "foo=bar", "size=2"], :foo, :size)
115 assert_equal([["arg1", "arg2"], {:foo => "bar", :size => "2"}], options)
116 end
117
118 def test_extract_macro_options_should_parse_options_lazily
119 options = extract_macro_options(["params=x=1&y=2"], :params)
120 assert_equal([[], {:params => "x=1&y=2"}], options)
121 end
103 122
104 123 def test_macro_exception_should_be_displayed
105 124 Redmine::WikiFormatting::Macros.macro :exception do |obj, args|
General Comments 0
You need to be logged in to leave comments. Login now