parse_status

in lib/between_meals/repo/git.rb [146:223]


      def parse_status(changes)
        
        
        
        
        
        
        
        
        
        
        
        

        
        changes.lines.map do |line|
          parts = line.chomp.split("\t")
          case parts[0]
          when 'A'
            
            {
              :status => :modified,
              :path => parts[1],
            }
          when /^C(?:\d*)/
            
            {
              :status => :modified,
              :path => parts[2],
            }
          when 'D'
            
            {
              :status => :deleted,
              :path => parts[1],
            }
          when /^M(?:\d*)/
            
            {
              :status => :modified,
              :path => parts[1],
            }
          when /^R(?:\d*)/
            
            [
              {
                :status => :deleted,
                :path => parts[1],
              },
              {
                :status => :modified,
                :path => parts[2],
              },
            ]
          when 'T'
            
            [
              {
                :status => :deleted,
                :path => parts[1],
              },
              {
                :status => :modified,
                :path => parts[1],
              },
            ]
          else
            fail 'Failed to parse repo diff line.'
          end
        end.flatten.map do |x|
          {
            :status => x[:status],
            :path => x[:path].sub("#{@repo_path}/", ''),
          }
        end
        
      end