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/