Class: Precious::Views::Compare

Inherits:
Layout
  • Object
show all
Includes:
HasPage
Defined in:
lib/gollum/views/compare.rb

Direct Known Subclasses

Commit

Constant Summary

Constants included from RouteHelpers

RouteHelpers::ROUTES

Constants included from LocaleHelpers

LocaleHelpers::NO_METHOD_MESSAGE, LocaleHelpers::YAML_VARIABLE_REGEXP

Instance Attribute Summary collapse

Attributes inherited from Layout

#name, #path

Instance Method Summary collapse

Methods included from HasPage

#escaped_url_path, #format, #id, #path

Methods inherited from Layout

#base_url, #critic_markup, #css, #custom_css, #custom_js, #custom_path, #escaped_name, #has_path, #history, #js, #latest_changes, #mathjax_config_path, #mathjax_js, #overview, #partial, #per_page_uploads, #search, #show_local_time

Methods included from TemplateCascade

#first_path_available, #template_file, #template_priority_path, #template_priority_path=

Methods included from OcticonHelpers

included, #octicon, #rocticon, #rocticon_css

Methods included from RouteHelpers

#clean_url, included, #page_route, parse_routes

Methods included from SprocketsHelpers

included, #sprockets_asset_path, #sprockets_image_path, #sprockets_javascript_tag, #sprockets_stylesheet_tag

Methods included from LocaleHelpers

#t

Methods included from AppHelpers

#extract_page_dir

Instance Attribute Details

#allow_editingObject (readonly)

Returns the value of attribute allow_editing.



6
7
8
# File 'lib/gollum/views/compare.rb', line 6

def allow_editing
  @allow_editing
end

#diffObject (readonly)

Returns the value of attribute diff.



6
7
8
# File 'lib/gollum/views/compare.rb', line 6

def diff
  @diff
end

#messageObject (readonly)

Returns the value of attribute message.



6
7
8
# File 'lib/gollum/views/compare.rb', line 6

def message
  @message
end

#pageObject (readonly)

Returns the value of attribute page.



6
7
8
# File 'lib/gollum/views/compare.rb', line 6

def page
  @page
end

#versionsObject (readonly)

Returns the value of attribute versions.



6
7
8
# File 'lib/gollum/views/compare.rb', line 6

def versions
  @versions
end

Instance Method Details

#afterObject



16
17
18
# File 'lib/gollum/views/compare.rb', line 16

def after
  @versions[1][0..6]
end

#beforeObject



12
13
14
# File 'lib/gollum/views/compare.rb', line 12

def before
  @versions[0][0..6]
end

#git_line?(line) ⇒ Boolean

Returns:

  • (Boolean)


104
105
106
# File 'lib/gollum/views/compare.rb', line 104

def git_line?(line)
  !!(line =~ /^(\\ No newline|Binary files|@@)/)
end

#left_diff_line_number(line) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/gollum/views/compare.rb', line 62

def left_diff_line_number(line)
  if git_line?(line)
    m, li                  = *line.match(/\-(\d+)/)
    @left_diff_line_number = li.to_i
    @current_line_number   = @left_diff_line_number
    ret                    = '...'
  elsif line[0] == ?-
    ret                    = @left_diff_line_number.to_s
    @left_diff_line_number += 1
    @current_line_number   = @left_diff_line_number - 1
  elsif line[0] == ?+
    ret = ' '
  else
    ret                    = @left_diff_line_number.to_s
    @left_diff_line_number += 1
    @current_line_number   = @left_diff_line_number - 1
  end
  ret
end

#line_class(line) ⇒ Object

private



46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/gollum/views/compare.rb', line 46

def line_class(line)
  if line =~ /^@@/
    'gc'
  elsif git_line?(line)
    'gg'
  elsif line =~ /^\+/
    'gi'
  elsif line =~ /^\-/
    'gd'
  else
    ''
  end
end

#lines(diff = @diff) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/gollum/views/compare.rb', line 20

def lines(diff = @diff)
  lines = []
  lines_to_parse = diff.split("\n")[3..-1]
  lines_to_parse = lines_to_parse[2..-1] if lines_to_parse[0] =~ /^(---|rename to )/

  if lines_to_parse.nil? || lines_to_parse.empty?
    lines_to_parse = []  # File is created without content
  else
    lines_to_parse = lines_to_parse[1..-1] if lines_to_parse[0].start_with?('+++')
  end

  lines_to_parse.each_with_index do |line, line_index|
    lines << { :line  => line,
               :class => line_class(line),
               :ldln  => left_diff_line_number(line),
               :rdln  => right_diff_line_number(line) }
  end
  lines
end

#right_diff_line_number(line) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/gollum/views/compare.rb', line 84

def right_diff_line_number(line)
  if git_line?(line)
    m, ri                   = *line.match(/\+(\d+)/)
    @right_diff_line_number = ri.to_i
    @current_line_number    = @right_diff_line_number
    ret                     = '...'
  elsif line[0] == ?-
    ret = ' '
  elsif line[0] == ?+
    ret                     = @right_diff_line_number.to_s
    @right_diff_line_number += 1
    @current_line_number    = @right_diff_line_number - 1
  else
    ret                     = @right_diff_line_number.to_s
    @right_diff_line_number += 1
    @current_line_number    = @right_diff_line_number - 1
  end
  ret
end

#show_revertObject



40
41
42
# File 'lib/gollum/views/compare.rb', line 40

def show_revert
  !@message
end

#titleObject



8
9
10
# File 'lib/gollum/views/compare.rb', line 8

def title
  "Comparison of #{@page.title}"
end