Add regexp_for_value helper method
This commit is contained in:
parent
4ba547809f
commit
41e4072393
3 changed files with 25 additions and 40 deletions
|
@ -68,6 +68,19 @@ module Gitlab
|
|||
def highlighted_lines
|
||||
@highlighted_lines ||= highlighted_text.lines
|
||||
end
|
||||
|
||||
def regexp_for_value(value, default: /[^'"]+/)
|
||||
case value
|
||||
when Array
|
||||
Regexp.union(value.map { |v| regexp_for_value(v, default: default) })
|
||||
when String
|
||||
Regexp.escape(value)
|
||||
when Regexp
|
||||
value
|
||||
else
|
||||
default
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -24,32 +24,13 @@ module Gitlab
|
|||
# link_json('specific_package', '1.0.1', link: :key)
|
||||
# # Will link `specific_package` in `"specific_package": "1.0.1"`
|
||||
def link_json(key, value = nil, link: :value, &url_proc)
|
||||
key =
|
||||
case key
|
||||
when Array
|
||||
Regexp.union(key.map { |name| Regexp.escape(name) })
|
||||
when String
|
||||
Regexp.escape(key)
|
||||
when nil
|
||||
'[^"]+'
|
||||
else
|
||||
key
|
||||
end
|
||||
|
||||
value =
|
||||
case value
|
||||
when String
|
||||
Regexp.escape(value)
|
||||
when nil
|
||||
'[^"]+'
|
||||
else
|
||||
value
|
||||
end
|
||||
key = regexp_for_value(key, default: /[^"]+/)
|
||||
value = regexp_for_value(value, default: /[^"]+/)
|
||||
|
||||
if link == :value
|
||||
value = "(?<name>#{value})"
|
||||
value = /(?<name>#{value})/
|
||||
else
|
||||
key = "(?<name>#{key})"
|
||||
key = /(?<name>#{key})/
|
||||
end
|
||||
|
||||
link_regex(/"#{key}":\s*"#{value}"/, &url_proc)
|
||||
|
|
|
@ -20,25 +20,16 @@ module Gitlab
|
|||
#
|
||||
# link_method_call('name')
|
||||
# # Will link `package` in `self.name = "package"`
|
||||
def link_method_call(method_names, value = nil, &url_proc)
|
||||
method_names = Array(method_names).map { |name| Regexp.escape(name) }
|
||||
|
||||
value =
|
||||
case value
|
||||
when String
|
||||
Regexp.escape(value)
|
||||
when nil
|
||||
/[^'"]+/
|
||||
else
|
||||
value
|
||||
end
|
||||
def link_method_call(method_name, value = nil, &url_proc)
|
||||
method_name = regexp_for_value(method_name)
|
||||
value = regexp_for_value(value)
|
||||
|
||||
regex = %r{
|
||||
#{Regexp.union(method_names)} # Method name
|
||||
\s* # Whitespace
|
||||
[(=]? # Opening brace or equals sign
|
||||
\s* # Whitespace
|
||||
['"](?<name>#{value})['"] # Package name in quotes
|
||||
#{method_name} # Method name
|
||||
\s* # Whitespace
|
||||
[(=]? # Opening brace or equals sign
|
||||
\s* # Whitespace
|
||||
['"](?<name>#{value})['"] # Package name in quotes
|
||||
}x
|
||||
|
||||
link_regex(regex, &url_proc)
|
||||
|
|
Loading…
Reference in a new issue