Module: SnippetsHelper

Included in:
Gitlab::SnippetSearchResults
Defined in:
app/helpers/snippets_helper.rb

Instance Method Summary collapse

Instance Method Details

#bounded_line_numbers(line, min, max, surrounding_lines) ⇒ Object

Get an array of line numbers surrounding a matching line, bounded by min/max.


39
40
41
42
43
# File 'app/helpers/snippets_helper.rb', line 39

def bounded_line_numbers(line, min, max, surrounding_lines)
  lower = line - surrounding_lines > min ? line - surrounding_lines : min
  upper = line + surrounding_lines < max ? line + surrounding_lines : max
  (lower..upper).to_a
end

#download_raw_snippet_button(snippet) ⇒ Object


14
15
16
17
18
19
20
21
22
# File 'app/helpers/snippets_helper.rb', line 14

def download_raw_snippet_button(snippet)
  link_to(sprite_icon('download'),
          gitlab_raw_snippet_path(snippet, inline: false),
          target: '_blank',
          rel: 'noopener noreferrer',
          class: "btn btn-sm has-tooltip",
          title: 'Download',
          data: { container: 'body' })
end

#embedded_raw_snippet_button(snippet, blob) ⇒ Object


77
78
79
80
81
82
83
84
85
86
# File 'app/helpers/snippets_helper.rb', line 77

def embedded_raw_snippet_button(snippet, blob)
  return if blob.empty? || blob.binary? || blob.stored_externally?

  link_to(external_snippet_icon('doc-code'),
          gitlab_raw_snippet_blob_url(snippet, blob.path),
          class: 'btn',
          target: '_blank',
          rel: 'noopener noreferrer',
          title: 'Open raw')
end

#embedded_snippet_download_button(snippet, blob) ⇒ Object


88
89
90
91
92
93
94
95
# File 'app/helpers/snippets_helper.rb', line 88

def embedded_snippet_download_button(snippet, blob)
  link_to(external_snippet_icon('download'),
          gitlab_raw_snippet_blob_url(snippet, blob.path, nil, inline: false),
          class: 'btn',
          target: '_blank',
          title: 'Download',
          rel: 'noopener noreferrer')
end

#snippet_badge(snippet) ⇒ Object


60
61
62
63
64
65
66
67
68
69
# File 'app/helpers/snippets_helper.rb', line 60

def snippet_badge(snippet)
  return unless attrs = snippet_badge_attributes(snippet)

  icon_name, text = attrs
  tag.span(class: %w[badge badge-gray]) do
    concat(sprite_icon(icon_name, size: 14, css_class: 'gl-vertical-align-middle'))
    concat(' ')
    concat(text)
  end
end

#snippet_badge_attributes(snippet) ⇒ Object


71
72
73
74
75
# File 'app/helpers/snippets_helper.rb', line 71

def snippet_badge_attributes(snippet)
  if snippet.private?
    ['lock', _('private')]
  end
end

#snippet_embed_input(snippet) ⇒ Object


49
50
51
52
53
54
55
56
57
58
# File 'app/helpers/snippets_helper.rb', line 49

def snippet_embed_input(snippet)
  (:input,
              nil,
              type: :text,
              readonly: true,
              class: 'js-snippet-url-area snippet-embed-input form-control',
              data: { url: gitlab_snippet_url(snippet) },
              value: snippet_embed_tag(snippet),
              autocomplete: 'off')
end

#snippet_embed_tag(snippet) ⇒ Object


45
46
47
# File 'app/helpers/snippets_helper.rb', line 45

def snippet_embed_tag(snippet)
  (:script, nil, src: gitlab_snippet_url(snippet, format: :js))
end

#snippets_upload_path(snippet, user) ⇒ Object


4
5
6
7
8
9
10
11
12
# File 'app/helpers/snippets_helper.rb', line 4

def snippets_upload_path(snippet, user)
  return unless user

  if snippet&.persisted?
    upload_path('personal_snippet', id: snippet.id)
  else
    upload_path('user', id: user.id)
  end
end

#subject_snippets_path(subject = nil, opts = nil) ⇒ Object

Return the path of a snippets index for a user or for a project


27
28
29
30
31
32
33
# File 'app/helpers/snippets_helper.rb', line 27

def subject_snippets_path(subject = nil, opts = nil)
  if subject.is_a?(Project)
    project_snippets_path(subject, opts)
  else # assume subject === User
    dashboard_snippets_path(opts)
  end
end