Defect #12744
closed
Unable to call a macro with a name that contains uppercase letters
Added by Ling Li almost 12 years ago.
Updated almost 12 years ago.
Description
I recently upgraded from 2.0 to 2.2 and found that some macros stopped working. Those macros have upper-case letters in their name (e.g., EnableLaTeXMath), and it seems to me that Redmine 2.2 only triggers macro names in lower cases.
hypothesis: when looking up macros, Redmine 2.2 converts the macro name to lower case; but when registering the macro, Redmine 2.2 forgets to lower-case the names. So if a macro has upper case letters in the name during registration, it will never be found when it is called...
Files
I don't know Ruby but this line seems suspicious where name is added to available_macros
before downcase: source:trunk/lib/redmine/wiki_formatting/macros.rb#L151
available_macros[name] = {:desc => @@desc || ''}.merge(options)
(well, it's possible that available_macros is not used during macro look-up. I'll try to figure out why my plugin works only after I rename it to lower-case.)
I think that was the culprit. An ugly line (before that L151) fixes the problem, and confirms that the problem was due to not lower-casing the names during macro registration:
name = "#{name}".downcase # <-- this is the ugly fix
name = name.to_sym if name.is_a?(String)
available_macros[name] = {:desc => @@desc || ''}.merge(options)
@@desc = nil
Definitions.send :define_method, "macro_#{name}", &block # <-- downcase was already done
- Subject changed from Macro name has to be lower-cased? to Unable to call a macro with a name that contains uppercase letters
- Status changed from New to Closed
- Assignee set to Jean-Philippe Lang
- Target version set to 2.2.1
- Resolution set to Fixed
Fix committed with test in r11126, thanks for pointing this out.
Maybe we should even make macro name case-sensitive?
- Status changed from Closed to Resolved
I can confirm that r11126 fixes the problem. Thanks.
Jean-Philippe Lang wrote:
Fix committed with test in r11126, thanks for pointing this out.
Maybe we should even make macro name case-sensitive?
I've just been stuck by this bug with my own macros too. There have already been many macro uses with case-confused names, so I hope they would remain case-insensitive.
Btw, I like {{macro_list}} to show macro names with case preserved. Please consider a fix like an attached patch.
- Status changed from Resolved to Closed
Merged.
Btw, I like
hello_world
Sample macro.
macro_list
Displays a list of all available macros, including description if available.
child_pages
Displays a list of child pages. With no argument, it displays the child pages of the current wiki page. Examples:
{{child_pages}} -- can be used from a wiki page only
{{child_pages(depth=2)}} -- display 2 levels nesting only
{{child_pages(Foo)}} -- lists all children of page Foo
{{child_pages(Foo, parent=1)}} -- same as above with a link to page Foo
include
Includes a wiki page. Examples:
{{include(Foo)}}
{{include(projectname:Foo)}} -- to include a page of a specific project wiki
collapse
Inserts of collapsed block of text. Examples:
{{collapse
This is a block of text that is collapsed by default.
It can be expanded by clicking a link.
}}
{{collapse(View details...)
With custom link text.
}}
thumbnail
Displays a clickable thumbnail of an attached image.
Default size is 200 pixels. Examples:
{{thumbnail(image.png)}}
{{thumbnail(image.png, size=300, title=Thumbnail)}} -- with custom title and size
issue
Displays an issue link including additional information. Examples:
{{issue(123)}} -- Issue #123: Enhance macro capabilities
{{issue(123, project=true)}} -- Andromeda - Issue #123: Enhance macro capabilities
{{issue(123, tracker=false)}} -- #123: Enhance macro capabilities
{{issue(123, subject=false, project=true)}} -- Andromeda - Issue #123
sample_macro
Sample macro
to show macro names with case preserved. Please consider a fix like an attached patch.
Will be fixed as a separate issue.
Also available in: Atom
PDF