basyura's blog

あしたになったらほんきだす。

Redmine - wiki 記法を増やす

wiki 記法を増やしてみる。plugin 化したいけど ApplicationHelper にベタ書きされているので難しそう。メソッドをごっそり書き換えるなら可能に思えるが本体側の修正に取り残されるので微妙。

とりあえずやってみる。個別ブランチは feature を頭に付けるルールになっているので、feature:hoge と書いたら自分でホストしている gitlab 上の feature/hoge ブランチへのリンクを貼るようにしてみる。

  • app/helpers/application_helper.rb

ApplicationHelper#parse_redmine_links

def parse_redmine_links(text, default_project, obj, attr, only_path, options)
  text.gsub!(%r{<a( [^>]+?)?>(.*?)</a>|([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-_]+):)?(feature|attachment|document|version|forum|news|message|project|commit|source|export)?(((#)|((([a-z0-9\-_]+)\|)?(r)))((\d+)((#note)?-(\d+))?)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]][^A-Za-z0-9_/])|,|\s|\]|<|$)}) do |m|
          elsif sep == ':'
            # removes the double quotes if any
            name = identifier.gsub(%r{^"(.*)"$}, "\\1")
            name = CGI.unescapeHTML(name)
            puts "name : " + name.to_s
            case prefix
            when 'feature'
              # host, group, project はそれぞれの環境による
              link = link_to("feature:#{name}", "http://#{host}/gitlab/#{group}/{project}/tree/feature/#{name}", target: 'blank')

どうせ外部リンクなんだし、URL を直接貼り付ければいいじゃんという感じに。