diff --git a/R/initialize.R b/R/initialize.R index 81bd8929e..6e6415668 100644 --- a/R/initialize.R +++ b/R/initialize.R @@ -9,6 +9,7 @@ initialize_attributes <- function(pd_flat) { init_pd <- initialize_newlines(pd_flat) %>% initialize_spaces() %>% + remove_line_col() %>% initialize_multi_line() %>% initialize_indention_ref_id() %>% initialize_indent() %>% @@ -37,6 +38,11 @@ initialize_spaces <- function(pd_flat) { pd_flat } +remove_line_col <- function(pd_flat) { + pd_flat[c("line1", "line2", "col1", "col2")] <- NULL + pd_flat +} + #' @describeIn initialize_attributes Initializes `multi_line`. initialize_multi_line <- function(pd_flat) { nrow <- nrow(pd_flat) diff --git a/R/nested.R b/R/nested.R index 11c71f38f..d555bc9cd 100644 --- a/R/nested.R +++ b/R/nested.R @@ -176,8 +176,8 @@ combine_children <- function(child, internal_child) { #' Get the start right #' #' On what line does the first token occur? -#' @param pd A parse table. +#' @param pd_nested A nested parse table. #' @return The line number on which the first token occurs. -start_on_line <- function(pd) { - pd$line1[1] +find_start_line <- function(pd_nested) { + pd_nested$line1[1] } diff --git a/R/serialize.R b/R/serialize.R index e0c15ad24..a588f6235 100644 --- a/R/serialize.R +++ b/R/serialize.R @@ -2,9 +2,9 @@ #' #' Collapses a flattened parse table into character vector representation. #' @param flattened_pd A flattened parse table. -serialize_parse_data_flattened <- function(flattened_pd) { - flattened_pd$lag_newlines[1] <- flattened_pd$line1[1] - 1 - +#' @param start_line The line number on which the code starts. +serialize_parse_data_flattened <- function(flattened_pd, start_line = 1) { + flattened_pd$lag_newlines[1] <- start_line - 1 res <- with(flattened_pd, paste0(collapse = "", map(lag_newlines, add_newlines), map(lag_spaces, add_spaces), text) diff --git a/R/token-create.R b/R/token-create.R index 38dfa7939..18369515c 100644 --- a/R/token-create.R +++ b/R/token-create.R @@ -45,10 +45,6 @@ create_tokens <- function(tokens, spaces = spaces, multi_line = rep(FALSE, len_text), indention_ref_id = indention_ref_ids, - line1 = rep(NA, len_text), - line2 = rep(NA, len_text), - col1 = rep(NA, len_text), - col2 = rep(NA, len_text), indent = indents, child = rep(list(NULL), len_text) ) diff --git a/R/transform.R b/R/transform.R index e675d9dd6..fbe012418 100644 --- a/R/transform.R +++ b/R/transform.R @@ -84,7 +84,7 @@ make_transformer <- function(transformers) { #' @inheritParams apply_transformers parse_transform_serialize <- function(text, transformers) { pd_nested <- compute_parse_data_nested(text) - + start_line <- find_start_line(pd_nested) if (nrow(pd_nested) == 0) { warning( "Text to style did not contain any tokens. Returning empty string.", @@ -98,7 +98,8 @@ parse_transform_serialize <- function(text, transformers) { enrich_terminals(transformers$use_raw_indention) %>% apply_ref_indention() - serialized_transformed_text <- serialize_parse_data_flattened(flattened_pd) + serialized_transformed_text <- + serialize_parse_data_flattened(flattened_pd, start_line = start_line) serialized_transformed_text } diff --git a/R/visit.R b/R/visit.R index 0bbcbdf87..c8fb34b7c 100644 --- a/R/visit.R +++ b/R/visit.R @@ -138,7 +138,7 @@ enrich_terminals <- function(flattened_pd, use_raw_indention = FALSE) { flattened_pd$spaces <- NULL # depreciate spaces flattened_pd <- choose_indention(flattened_pd, use_raw_indention) flattened_pd$line1 <- - cumsum(flattened_pd$lag_newlines) + flattened_pd$line1[1] + cumsum(flattened_pd$lag_newlines) flattened_pd$newlines <- lead(flattened_pd$lag_newlines, default = 0L) flattened_pd$nchar <- nchar(flattened_pd$text, type = "width") diff --git a/man/start_on_line.Rd b/man/find_start_line.Rd similarity index 69% rename from man/start_on_line.Rd rename to man/find_start_line.Rd index f6f32b534..ec19908e2 100644 --- a/man/start_on_line.Rd +++ b/man/find_start_line.Rd @@ -1,13 +1,13 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/nested.R -\name{start_on_line} -\alias{start_on_line} +\name{find_start_line} +\alias{find_start_line} \title{Get the start right} \usage{ -start_on_line(pd) +find_start_line(pd_nested) } \arguments{ -\item{pd}{A parse table.} +\item{pd_nested}{A nested parse table.} } \value{ The line number on which the first token occurs. diff --git a/man/serialize_parse_data_flattened.Rd b/man/serialize_parse_data_flattened.Rd index 9c74ac706..76be7f22a 100644 --- a/man/serialize_parse_data_flattened.Rd +++ b/man/serialize_parse_data_flattened.Rd @@ -4,10 +4,12 @@ \alias{serialize_parse_data_flattened} \title{Serialize flattened parse data} \usage{ -serialize_parse_data_flattened(flattened_pd) +serialize_parse_data_flattened(flattened_pd, start_line = 1) } \arguments{ \item{flattened_pd}{A flattened parse table.} + +\item{start_line}{The line number on which the code starts.} } \description{ Collapses a flattened parse table into character vector representation. diff --git a/tests/testthat/test-create_token.R b/tests/testthat/test-create_token.R index 833b94d16..2eea633a6 100644 --- a/tests/testthat/test-create_token.R +++ b/tests/testthat/test-create_token.R @@ -4,8 +4,7 @@ test_that("can create a token that has relevant columns", { pd_names <- c( "token", "text", "short", "lag_newlines", "newlines", "pos_id", "parent", "token_before", "token_after", "id", "terminal", "internal", - "spaces", "multi_line", "indention_ref_id", "line1", "line2", - "col1", "col2", "indent", "child" + "spaces", "multi_line", "indention_ref_id", "indent", "child" ) expect_equal(