diff options
Diffstat (limited to 'lib/gitlab/legacy_github_import/comment_formatter.rb')
-rw-r--r-- | lib/gitlab/legacy_github_import/comment_formatter.rb | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/lib/gitlab/legacy_github_import/comment_formatter.rb b/lib/gitlab/legacy_github_import/comment_formatter.rb new file mode 100644 index 00000000000..d2c7a8ae9f4 --- /dev/null +++ b/lib/gitlab/legacy_github_import/comment_formatter.rb @@ -0,0 +1,69 @@ +module Gitlab + module LegacyGithubImport + class CommentFormatter < BaseFormatter + attr_writer :author_id + + def attributes + { + project: project, + note: note, + commit_id: raw_data.commit_id, + line_code: line_code, + author_id: author_id, + type: type, + created_at: raw_data.created_at, + updated_at: raw_data.updated_at + } + end + + private + + def author + @author ||= UserFormatter.new(client, raw_data.user) + end + + def author_id + author.gitlab_id || project.creator_id + end + + def body + raw_data.body || "" + end + + def line_code + return unless on_diff? + + parsed_lines = Gitlab::Diff::Parser.new.parse(diff_hunk.lines) + generate_line_code(parsed_lines.to_a.last) + end + + def generate_line_code(line) + Gitlab::Git.diff_line_code(file_path, line.new_pos, line.old_pos) + end + + def on_diff? + diff_hunk.present? + end + + def diff_hunk + raw_data.diff_hunk + end + + def file_path + raw_data.path + end + + def note + if author.gitlab_id + body + else + formatter.author_line(author.login) + body + end + end + + def type + 'LegacyDiffNote' if on_diff? + end + end + end +end |