class GitPlus::Parsers::Commits::Saved::Entry

Parses a saved commit entry into a commit object.

Public Class Methods

call(**attributes) click to toggle source
# File lib/git_plus/parsers/commits/saved/entry.rb, line 13
def self.call **attributes
  new.call(**attributes)
end
new(commit = Commit.new) click to toggle source
# File lib/git_plus/parsers/commits/saved/entry.rb, line 17
def initialize commit = Commit.new
  @commit = commit.dup
end

Public Instance Methods

body_without_comments() click to toggle source
# File lib/git_plus/parsers/commits/saved/entry.rb, line 47
def body_without_comments
  body_without_trailers.split("\n").reject { |line| line.start_with? "#" }
end
body_without_trailers() click to toggle source
# File lib/git_plus/parsers/commits/saved/entry.rb, line 51
def body_without_trailers
  body = commit.body
  trailers = commit.trailers

  return body if trailers.empty?

  body.sub(/#{trailers.join "\n"}.*/m, "")
end
body_without_trailing_spaces() click to toggle source
# File lib/git_plus/parsers/commits/saved/entry.rb, line 43
def body_without_trailing_spaces
  body_without_comments.reverse.drop_while(&:empty?).reverse
end
build(= private_methods.grep(/\Astep_/).sort.each { |method| __send__ method }) click to toggle source
# File lib/git_plus/parsers/commits/saved/entry.rb, line 27
      def build = private_methods.grep(/\Astep_/).sort.each { |method| __send__ method }

      def step_a_trailers = commit.trailers = commit.trailers.split("\n")

      def step_b_trailers_index
        commit.trailers_index = commit.body.split("\n").index commit.trailers.first
      end

      def step_c_body_lines = commit.body_lines = body_without_trailing_spaces

      def step_d_body_paragraphs
        commit.body_paragraphs = body_without_trailers.split("\n\n")
                                                      .map(&:chomp)
                                                      .reject { |line| line.start_with? "#" }
      end

      def body_without_trailing_spaces
        body_without_comments.reverse.drop_while(&:empty?).reverse
      end

      def body_without_comments
        body_without_trailers.split("\n").reject { |line| line.start_with? "#" }
      end

      def body_without_trailers
        body = commit.body
        trailers = commit.trailers

        return body if trailers.empty?

        body.sub(/#{trailers.join "\n"}.*/m, "")
      end
    end
  end
end
call(**attributes) click to toggle source
# File lib/git_plus/parsers/commits/saved/entry.rb, line 21
        def call(**attributes) = commit.merge!(**attributes).tap { build }

        private

        attr_reader :commit

        def build = private_methods.grep(/\Astep_/).sort.each { |method| __send__ method }

        def step_a_trailers = commit.trailers = commit.trailers.split("\n")

        def step_b_trailers_index
          commit.trailers_index = commit.body.split("\n").index commit.trailers.first
        end

        def step_c_body_lines = commit.body_lines = body_without_trailing_spaces

        def step_d_body_paragraphs
          commit.body_paragraphs = body_without_trailers.split("\n\n")
                                                        .map(&:chomp)
                                                        .reject { |line| line.start_with? "#" }
        end

        def body_without_trailing_spaces
          body_without_comments.reverse.drop_while(&:empty?).reverse
        end

        def body_without_comments
          body_without_trailers.split("\n").reject { |line| line.start_with? "#" }
        end

        def body_without_trailers
          body = commit.body
          trailers = commit.trailers

          return body if trailers.empty?

          body.sub(/#{trailers.join "\n"}.*/m, "")
        end
      end
    end
  end
end
step_a_trailers(= commit.trailers = commit.trailers.split("\n")) click to toggle source
# File lib/git_plus/parsers/commits/saved/entry.rb, line 29
    def step_a_trailers = commit.trailers = commit.trailers.split("\n")

    def step_b_trailers_index
      commit.trailers_index = commit.body.split("\n").index commit.trailers.first
    end

    def step_c_body_lines = commit.body_lines = body_without_trailing_spaces

    def step_d_body_paragraphs
      commit.body_paragraphs = body_without_trailers.split("\n\n")
                                                    .map(&:chomp)
                                                    .reject { |line| line.start_with? "#" }
    end

    def body_without_trailing_spaces
      body_without_comments.reverse.drop_while(&:empty?).reverse
    end

    def body_without_comments
      body_without_trailers.split("\n").reject { |line| line.start_with? "#" }
    end

    def body_without_trailers
      body = commit.body
      trailers = commit.trailers

      return body if trailers.empty?

      body.sub(/#{trailers.join "\n"}.*/m, "")
    end
  end
end
step_b_trailers_index() click to toggle source
# File lib/git_plus/parsers/commits/saved/entry.rb, line 31
def step_b_trailers_index
  commit.trailers_index = commit.body.split("\n").index commit.trailers.first
end
step_c_body_lines(= commit.body_lines = body_without_trailing_spaces) click to toggle source
# File lib/git_plus/parsers/commits/saved/entry.rb, line 35
  def step_c_body_lines = commit.body_lines = body_without_trailing_spaces

  def step_d_body_paragraphs
    commit.body_paragraphs = body_without_trailers.split("\n\n")
                                                  .map(&:chomp)
                                                  .reject { |line| line.start_with? "#" }
  end

  def body_without_trailing_spaces
    body_without_comments.reverse.drop_while(&:empty?).reverse
  end

  def body_without_comments
    body_without_trailers.split("\n").reject { |line| line.start_with? "#" }
  end

  def body_without_trailers
    body = commit.body
    trailers = commit.trailers

    return body if trailers.empty?

    body.sub(/#{trailers.join "\n"}.*/m, "")
  end
end
step_d_body_paragraphs() click to toggle source
# File lib/git_plus/parsers/commits/saved/entry.rb, line 37
def step_d_body_paragraphs
  commit.body_paragraphs = body_without_trailers.split("\n\n")
                                                .map(&:chomp)
                                                .reject { |line| line.start_with? "#" }
end