R/generate_cv.R

#' Generate CV part with jobs
#' @import purrr
#' @import tibble
#' @import dplyr
#' @export

generate_jobs_md <- function(jobs, tags) {
  
  # Add position from item title
  jobs <- map2(jobs, names(jobs), 
               function(position, name) {
                 position["position"] <- name
                 position
               })
 
  
  # Filter jobs by tags
  
  selected_jobs <- jobs %>% 
    filter_positions(tags) %>%
    map(function(position, tags) {
      position$results <- filter_results(position$results, tags)
      position
    }, tags = tags) %>% 
    map(function(position, tags) {
      position$results <- map(position$results,
                              filter_tags, tags = tags)
      position
    }, tags = tags)
  
  
  # Calculate position value
  selected_jobs <- selected_jobs %>% 
    map(function(position) {
      position$value <- position_total_value(position)
      position
    }) 
  
  jobs_value <- selected_jobs %>% 
    map_dbl(pluck("value")) 
  
  time_dist <- selected_jobs %>%
    map(pluck("period")) %>%
    map_dbl(~ year(today()) - year(ymd(.x[2])) + 1) 
  
  jobs_order <- tibble(job = names(jobs_value), 
                       value = jobs_value) %>% 
    left_join(tibble(job = names(time_dist),
                     years = time_dist), 
              by = "job") %>% 
    mutate(order = value / (years * 4)) %>% 
    arrange(desc(order)) %>% 
    pluck("job")
  
  selected_jobs <- selected_jobs[jobs_order]
  
  # Calculate each result value
  
  selected_jobs <- selected_jobs %>% 
    map(function(position) {
      results <- map_dfr(position$results, 
                         function(rez) tibble(
                           result = names(rez),
                           value = result_total_value(rez)))
      
      results_order <- results %>% 
        arrange(desc(value)) %>% 
        pluck("result")
      
      position$results_ord <- results_order
      position
    }) 
  
 cv_file <- tempfile("jobs", fileext = ".md") 
   
 selected_jobs %>% 
  walk(function(p) {
    add_elem(p$position, 
             nafter = 0,
             symbefore = "#### ", 
             symafter = " at ", file = cv_file)
    add_elem(p$org, nbefore = 0, nafter = 2, file = cv_file)
    add_elem(pluck(p, "period", 1) %>% 
               lubridate::ymd() %>% 
               format("%Y %B"), 
             symafter = " - ", 
             nafter = 0, file = cv_file)
    add_elem(pluck(p, "period", 2) %>% 
               lubridate::ymd() %>% 
               format("%Y %B"), 
             symafter = ". ",
             nbefore = 0,
             nafter = 0, file = cv_file)
    add_elem(p$desc, nbefore = 0, nafter = 2, symafter = ". ", file = cv_file)
    # walk(pluck(p, "results"), 
    #      ~ add_elem(names(.x),
    #                 nbefore = 0,
    #                 symbefore = "  * ", 
    #                 symafter = ". "))
    walk(pluck(p, "results_ord"),
         ~ walk(.x, 
                ~ add_elem(.x, symbefore = "  * ", symafter = ".", 
         nafter = 1,
         nbefore = 0, file = cv_file)))
    })
 
 cv_file
 
}
rresults/resumetailor documentation built on May 28, 2019, 7:49 a.m.