lib/trac-wiki/parser.rb in trac-wiki-0.3.23 vs lib/trac-wiki/parser.rb in trac-wiki-0.3.24

- old
+ new

@@ -195,10 +195,32 @@ @line_no += count if @count_lines_level == 0 end def init_macros @macro_commands = { - '!ifeq' => proc { |env| env.expand_arg(0) == env.expand_arg(1) ? env.expand_arg(2) : env.expand_arg(3) }, + '!ifeq' => proc { |env| what = env.expand_arg(0) + count = env.arg_count + i = 1 + ret = '' + while count > i + argi = env.expand_arg(i) + # this is else: + if count <= i + 1 + ret = argi + break + end + + # we found it + if what == argi + ret = env.expand_arg(i+1) + break + end + + # next + i +=2 + end + ret.sub /\n\s+\Z/, "\n" + }, '!ifdef' => proc { |env| env.at(env.expand_arg(0), nil, false).nil? ? env.expand_arg(2) : env.expand_arg(1) }, '!set' => proc { |env| env[env.expand_arg(0)] = env.expand_arg(1); '' }, '!yset' => proc { |env| env[env.expand_arg(0)] = YAML.load(env.arg(1)); '' }, '!sub' => proc { |env| pat = env.expand_arg(1) pat = Regexp.new(pat[1..-2]) if pat =~ /\A\/.*\/\Z/