41 lines
1.3 KiB
Ruby
41 lines
1.3 KiB
Ruby
|
module Gitlab
|
||
|
module Git
|
||
|
class WikiPage
|
||
|
attr_reader :url_path, :title, :format, :path, :version, :raw_data, :name, :text_data, :historical, :formatted_data
|
||
|
|
||
|
# This class is meant to be serializable so that it can be constructed
|
||
|
# by Gitaly and sent over the network to GitLab.
|
||
|
#
|
||
|
# Because Gollum::Page is not serializable we must get all the data from
|
||
|
# 'gollum_page' during initialization, and NOT store it in an instance
|
||
|
# variable.
|
||
|
#
|
||
|
# Note that 'version' is a WikiPageVersion instance which it itself
|
||
|
# serializable. That means it's OK to store 'version' in an instance
|
||
|
# variable.
|
||
|
def initialize(gollum_page, version)
|
||
|
@url_path = gollum_page.url_path
|
||
|
@title = gollum_page.title
|
||
|
@format = gollum_page.format
|
||
|
@path = gollum_page.path
|
||
|
@raw_data = gollum_page.raw_data
|
||
|
@name = gollum_page.name
|
||
|
@historical = gollum_page.historical?
|
||
|
@formatted_data = gollum_page.formatted_data if gollum_page.is_a?(Gollum::Page)
|
||
|
|
||
|
@version = version
|
||
|
end
|
||
|
|
||
|
def historical?
|
||
|
@historical
|
||
|
end
|
||
|
|
||
|
def text_data
|
||
|
return @text_data if defined?(@text_data)
|
||
|
|
||
|
@text_data = @raw_data && Gitlab::EncodingHelper.encode!(@raw_data.dup)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|