rstudio / reactlog

Shiny Reactivity Visualizer
http://rstudio.github.io/reactlog
Other
121 stars 9 forks source link

UTF-8 support when parsing JSON #64

Closed schloerke closed 4 years ago

schloerke commented 4 years ago

Fixes https://github.com/rstudio/reactlog/issues/57

Test App:

library(tibble)
library(DT)
library(shiny)
reactlog::reactlog_enable()

datasets <- list(iris = iris, mtcars = mtcars)

ui <- fluidPage(
  fluidRow(
    column(
      width = 5,
      selectInput("select",
                  label = h3("Select dataset"),
                  choices = list("iris" = "iris", "mtcars" = "mtcars"),
                  selected = "iris"
      ),
      DTOutput("dt")
    )
  )
)

server <- function(input, output, session) {
  output$dt <- renderDT(
    datatable(rv$dt, rownames = TRUE),
    server = TRUE
  )

  rv <- reactiveValues()

  observeEvent(input$select, {
    rv$dt <<- datasets[[input$select]] %>%
      head() %>%
      {
        a <- .
        class(a) <- c("barret", class(a))
        a
      }
  })
}

shinyApp(ui, server)

Before PR:

> shiny::runApp('reactlog-utf8')
Loading required package: shiny
Warning: package ‘tibble’ was built under R version 3.6.3
Warning: package ‘DT’ was built under R version 3.6.3

Attaching package: ‘DT’

The following objects are masked from ‘package:shiny’:

    dataTableOutput, renderDataTable

Listening on http://127.0.0.1:6427

> shiny::reactlogShow()
Error in sub(..., fixed = TRUE) : 'replacement' is invalid UTF-8

With PR:

> shiny::runApp('reactlog-utf8')
Loading required package: shiny
Warning: package ‘tibble’ was built under R version 3.6.3
Warning: package ‘DT’ was built under R version 3.6.3

Attaching package: ‘DT’

The following objects are masked from ‘package:shiny’:

    dataTableOutput, renderDataTable

Listening on http://127.0.0.1:6346

> shiny::reactlogShow()
## no error