Skip to content

Instantly share code, notes, and snippets.

@jennybc
Forked from muschellij2/Differ.R
Last active June 10, 2020 21:13

Revisions

  1. Jennifer (Jenny) Bryan revised this gist Nov 19, 2015. 1 changed file with 19 additions and 17 deletions.
    36 changes: 19 additions & 17 deletions Differ.R
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    rm(list=ls())
    #rm(list=ls())
    library(git2r)
    library(plyr)
    library(daff)
    @@ -7,21 +7,21 @@ differ = function(file1, file2){
    path <- tempfile(pattern="git2r-")
    dir.create(path)
    repo <- init(path)

    suppressWarnings({
    f1 = readLines(file1)
    })
    suppressWarnings({
    f2 = readLines(file2)
    })
    })
    ## Create a file, add, commit
    base = "test.txt"
    tfile = file.path(path, base)
    writeLines(f1, tfile)

    add(repo, base)
    commit(repo, "Added First File")

    ## Change the file
    writeLines(f2, tfile)
    diff_1 <- diff(repo, as_char = TRUE)
    @@ -32,32 +32,32 @@ differ = function(file1, file2){
    return(diff_1)
    }

    file1 = "~/Desktop/difftest.txt"
    file2 = "~/Desktop/difftest2.txt"

    f1 = readLines(file1)
    f2 = readLines(file2)
    file1 = "difftest.txt"
    file2 = "difftest2.txt"
    write("I am John", file1)
    file.copy(file1, file2, overwrite = TRUE)
    write("butI am not John", file2, append = TRUE)

    diff_msg = differ(file1, file2)
    cat(diff_msg)


    differ_print = function(file1, file2, ...){
    differ_print = function(file1, file2, ...) {
    diff_msg = differ(file1, file2)

    ss = strsplit(diff_msg, "\n")[[1]]
    ss = ss[-(1:4)]
    ss = grep("^( |\\+|\\-)", ss, value=TRUE)
    nc = nchar(ss)
    first = substr(ss, 1, 1)
    first = plyr::revalue(first, c("+" = "+++",
    "-" = "---"))
    first = plyr::revalue(first, c("+" = "+++",
    "-" = "---"), warn_missing = FALSE)
    start = paste("@@,diff", file1, file2)
    ss = c(start, paste0(first, ",", substr(ss, 2, nc)))
    ss = paste(ss, collapse = "\n")
    tfile = tempfile(fileext = ".csv")
    writeLines(ss, con = tfile)

    patch <- read_diff(tfile)
    render_diff(patch, ...)
    return(diff_msg)
    @@ -79,7 +79,7 @@ diff_gist = function(file1, file2, ...) {
    ss = paste(ss, collapse = "\n")
    tfile = tempfile(fileext = ".md")
    writeLines(ss, con = tfile)
    res = gist_create(files = tfile, ...)
    res = gist_create(files = tfile, ...)
    return(list(diff_msg = diff_msg, gist = res))
    }

    @@ -107,4 +107,6 @@ diff_nogist = function(file1, file2, ...) {
    # render(tfile, output_file = ofile)
    # browseURL(ofile)
    return(ofile)
    }
    }

    res = diff_nogist(file1, file2)
  2. @muschellij2 muschellij2 revised this gist Nov 19, 2015. 1 changed file with 26 additions and 4 deletions.
    30 changes: 26 additions & 4 deletions Differ.R
    Original file line number Diff line number Diff line change
    @@ -7,10 +7,10 @@ differ = function(file1, file2){
    path <- tempfile(pattern="git2r-")
    dir.create(path)
    repo <- init(path)

    suppressWarnings({
    f1 = readLines(file1)
    })
    })
    suppressWarnings({
    f2 = readLines(file2)
    })
    @@ -44,7 +44,7 @@ cat(diff_msg)

    differ_print = function(file1, file2, ...){
    diff_msg = differ(file1, file2)

    ss = strsplit(diff_msg, "\n")[[1]]
    ss = ss[-(1:4)]
    ss = grep("^( |\\+|\\-)", ss, value=TRUE)
    @@ -83,6 +83,28 @@ diff_gist = function(file1, file2, ...) {
    return(list(diff_msg = diff_msg, gist = res))
    }


    res = diff_gist(file1, file2)


    open = function(x) system(sprintf("open %s", x))

    library(markdown)
    diff_nogist = function(file1, file2, ...) {
    diff_msg = differ(file1, file2)
    ss = strsplit(diff_msg, "\n")[[1]]
    top = c(
    '<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.9.1/styles/default.min.css">',
    '<script src="https://highlightjs.org/static/highlight.pack.js"></script>',
    "<script>hljs.initHighlightingOnLoad();</script>")
    ss = c(top, "```diff", ss, "```")
    ss = paste(ss, collapse = "\n")
    tfile = tempfile(fileext = ".md")
    writeLines(ss, con = tfile)
    ofile = gsub("[.]md$", ".html", tfile)
    markdownToHTML(tfile, output = ofile)
    browseURL(ofile)
    # library(rmarkdown)
    # render(tfile, output_file = ofile)
    # browseURL(ofile)
    return(ofile)
    }
  3. @muschellij2 muschellij2 revised this gist Nov 19, 2015. 1 changed file with 5 additions and 5 deletions.
    10 changes: 5 additions & 5 deletions Differ.R
    Original file line number Diff line number Diff line change
    @@ -42,7 +42,7 @@ diff_msg = differ(file1, file2)
    cat(diff_msg)


    differ2 = function(file1, file2, ...){
    differ_print = function(file1, file2, ...){
    diff_msg = differ(file1, file2)

    ss = strsplit(diff_msg, "\n")[[1]]
    @@ -63,12 +63,12 @@ differ2 = function(file1, file2, ...){
    return(diff_msg)
    }

    diff_msg = differ2(file1, file2)
    diff_msg = differ2(file1, file2, pretty = TRUE)
    diff_msg = differ_print(file1, file2)
    diff_msg = differ_print(file1, file2, pretty = TRUE)

    library(gistr)

    differ3 = function(file1, file2, ...) {
    diff_gist = function(file1, file2, ...) {
    diff_msg = differ(file1, file2)
    ss = strsplit(diff_msg, "\n")[[1]]
    ind = grep("^@@", ss)
    @@ -84,5 +84,5 @@ differ3 = function(file1, file2, ...) {
    }


    res = differ3(file1, file2)
    res = diff_gist(file1, file2)

  4. @muschellij2 muschellij2 revised this gist Nov 19, 2015. 1 changed file with 21 additions and 0 deletions.
    21 changes: 21 additions & 0 deletions Differ.R
    Original file line number Diff line number Diff line change
    @@ -65,3 +65,24 @@ differ2 = function(file1, file2, ...){

    diff_msg = differ2(file1, file2)
    diff_msg = differ2(file1, file2, pretty = TRUE)

    library(gistr)

    differ3 = function(file1, file2, ...) {
    diff_msg = differ(file1, file2)
    ss = strsplit(diff_msg, "\n")[[1]]
    ind = grep("^@@", ss)
    start = paste("## difference between", file1, file2)
    ss = ss[seq(ind + 1, length(ss))]
    ss = gsub("^ ", "", ss)
    ss = c(start, "```diff", ss, "```")
    ss = paste(ss, collapse = "\n")
    tfile = tempfile(fileext = ".md")
    writeLines(ss, con = tfile)
    res = gist_create(files = tfile, ...)
    return(list(diff_msg = diff_msg, gist = res))
    }


    res = differ3(file1, file2)

  5. @muschellij2 muschellij2 revised this gist Nov 18, 2015. 1 changed file with 3 additions and 2 deletions.
    5 changes: 3 additions & 2 deletions Differ.R
    Original file line number Diff line number Diff line change
    @@ -42,7 +42,7 @@ diff_msg = differ(file1, file2)
    cat(diff_msg)


    differ2 = function(file1, file2){
    differ2 = function(file1, file2, ...){
    diff_msg = differ(file1, file2)

    ss = strsplit(diff_msg, "\n")[[1]]
    @@ -59,8 +59,9 @@ differ2 = function(file1, file2){
    writeLines(ss, con = tfile)

    patch <- read_diff(tfile)
    render_diff(patch)
    render_diff(patch, ...)
    return(diff_msg)
    }

    diff_msg = differ2(file1, file2)
    diff_msg = differ2(file1, file2, pretty = TRUE)
  6. @muschellij2 muschellij2 revised this gist Nov 18, 2015. 1 changed file with 20 additions and 23 deletions.
    43 changes: 20 additions & 23 deletions Differ.R
    Original file line number Diff line number Diff line change
    @@ -38,32 +38,29 @@ file2 = "~/Desktop/difftest2.txt"
    f1 = readLines(file1)
    f2 = readLines(file2)

    # df1 = data.frame(X = f1, stringsAsFactors = FALSE)
    # df2 = data.frame(X = f2, stringsAsFactors = FALSE)
    #
    # patch <- diff_data(df1, df2)
    # write_diff(patch, "patch.csv")
    # render_diff(patch)


    diff_msg = differ(file1, file2)
    cat(diff_msg)


    ss = strsplit(diff_msg, "\n")[[1]]
    ss = ss[-(1:4)]
    ss = grep("^( |\\+|\\-)", ss, value=TRUE)
    nc = nchar(ss)
    first = substr(ss, 1, 1)
    first = plyr::revalue(first, c("+" = "+++",
    "-" = "---"))
    ss = c("@@,diff", paste0(first, ",", substr(ss, 2, nc)))
    ss = paste(ss, collapse = "\n")
    tfile = tempfile(fileext = ".csv")
    writeLines(ss, con = tfile)
    differ2 = function(file1, file2){
    diff_msg = differ(file1, file2)

    patch <- read_diff(tfile)
    render_diff(patch)
    ss = strsplit(diff_msg, "\n")[[1]]
    ss = ss[-(1:4)]
    ss = grep("^( |\\+|\\-)", ss, value=TRUE)
    nc = nchar(ss)
    first = substr(ss, 1, 1)
    first = plyr::revalue(first, c("+" = "+++",
    "-" = "---"))
    start = paste("@@,diff", file1, file2)
    ss = c(start, paste0(first, ",", substr(ss, 2, nc)))
    ss = paste(ss, collapse = "\n")
    tfile = tempfile(fileext = ".csv")
    writeLines(ss, con = tfile)

    patch <- read_diff(tfile)
    render_diff(patch)
    return(diff_msg)
    }

    # write a patch to disk
    # write_diff(patch, "patch.csv")
    diff_msg = differ2(file1, file2)
  7. @muschellij2 muschellij2 revised this gist Nov 18, 2015. 1 changed file with 32 additions and 0 deletions.
    32 changes: 32 additions & 0 deletions Differ.R
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,7 @@
    rm(list=ls())
    library(git2r)
    library(plyr)
    library(daff)

    differ = function(file1, file2){
    path <- tempfile(pattern="git2r-")
    @@ -33,5 +35,35 @@ differ = function(file1, file2){
    file1 = "~/Desktop/difftest.txt"
    file2 = "~/Desktop/difftest2.txt"

    f1 = readLines(file1)
    f2 = readLines(file2)

    # df1 = data.frame(X = f1, stringsAsFactors = FALSE)
    # df2 = data.frame(X = f2, stringsAsFactors = FALSE)
    #
    # patch <- diff_data(df1, df2)
    # write_diff(patch, "patch.csv")
    # render_diff(patch)


    diff_msg = differ(file1, file2)
    cat(diff_msg)


    ss = strsplit(diff_msg, "\n")[[1]]
    ss = ss[-(1:4)]
    ss = grep("^( |\\+|\\-)", ss, value=TRUE)
    nc = nchar(ss)
    first = substr(ss, 1, 1)
    first = plyr::revalue(first, c("+" = "+++",
    "-" = "---"))
    ss = c("@@,diff", paste0(first, ",", substr(ss, 2, nc)))
    ss = paste(ss, collapse = "\n")
    tfile = tempfile(fileext = ".csv")
    writeLines(ss, con = tfile)

    patch <- read_diff(tfile)
    render_diff(patch)

    # write a patch to disk
    # write_diff(patch, "patch.csv")
  8. @muschellij2 muschellij2 created this gist Nov 18, 2015.
    37 changes: 37 additions & 0 deletions Differ.R
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,37 @@
    rm(list=ls())
    library(git2r)

    differ = function(file1, file2){
    path <- tempfile(pattern="git2r-")
    dir.create(path)
    repo <- init(path)

    suppressWarnings({
    f1 = readLines(file1)
    })
    suppressWarnings({
    f2 = readLines(file2)
    })
    ## Create a file, add, commit
    base = "test.txt"
    tfile = file.path(path, base)
    writeLines(f1, tfile)

    add(repo, base)
    commit(repo, "Added First File")

    ## Change the file
    writeLines(f2, tfile)
    diff_1 <- diff(repo, as_char = TRUE)
    diff_1 = gsub("a/test.txt", file1, diff_1, fixed = TRUE)
    diff_1 = gsub("b/test.txt", file2, diff_1, fixed = TRUE)
    # summary(diff_1)
    # cat(diff(repo, as_char=TRUE))
    return(diff_1)
    }

    file1 = "~/Desktop/difftest.txt"
    file2 = "~/Desktop/difftest2.txt"

    diff_msg = differ(file1, file2)
    cat(diff_msg)