Skip to content

Commit

Permalink
Denotes dupe keys in package.json to textual feedback instead of erro…
Browse files Browse the repository at this point in the history
…ring out (#156)
  • Loading branch information
nhomble authored Aug 6, 2024
1 parent 018bc10 commit c218e48
Showing 1 changed file with 35 additions and 4 deletions.
39 changes: 35 additions & 4 deletions lua/package-info/parser.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,50 @@ local clean_version = require("package-info.helpers.clean_version")

local M = {}

local function createKeySet(tbl)
local keySet = {}
for key in pairs(tbl) do
keySet[key] = true
end
return keySet
end

local function intersectKeySets(set1, set2)
local intersection = {}
for key in pairs(set1) do
if set2[key] then
intersection[key] = true
end
end
return intersection
end

local function intersect(t1, t2)
local s1 = createKeySet(t1)
local s2 = createKeySet(t2)
return intersectKeySets(s1, s2)
end

M.parse_buffer = function()
local buffer_lines = vim.api.nvim_buf_get_lines(state.buffer.id, 0, -1, false)
local buffer_json_value = json_parser.decode(table.concat(buffer_lines))

local intersection = intersect(buffer_json_value["devDependencies"] or {}, buffer_json_value["dependencies"] or {})
local all_dependencies_json =
vim.tbl_extend("error", {}, buffer_json_value["devDependencies"] or {}, buffer_json_value["dependencies"] or {})
vim.tbl_extend("force", {}, buffer_json_value["devDependencies"] or {}, buffer_json_value["dependencies"] or {})

local installed_dependencies = {}

for name, version in pairs(all_dependencies_json) do
installed_dependencies[name] = {
current = clean_version(version),
}
if intersection[name] ~= nil then
installed_dependencies[name] = {
current = "[ERROR] DEPENDENCY IS DUPLICATED",
}
else
installed_dependencies[name] = {
current = clean_version(version),
}
end
end

state.buffer.lines = buffer_lines
Expand Down

0 comments on commit c218e48

Please sign in to comment.