Bläddra i källkod

Reuse RDF generator fn; switch to ftcsv.

scossu 3 veckor sedan
förälder
incheckning
91a5932e2a
5 ändrade filer med 19 tillägg och 14 borttagningar
  1. 5 3
      README.md
  2. 1 2
      pkar.lua
  3. 1 1
      pocket_archive-scm-1.rockspec
  4. 10 4
      src/html_generator.lua
  5. 2 4
      src/submission.lua

+ 5 - 3
README.md

@@ -161,15 +161,14 @@ foundational library, Volksdata, has been developed as a spare-time project for
   - ✓ Static assets
 - ⚒ Non-HTML generators
   - ✓ RDF (turtle)
-  - ⎊ LL
   - ✓ Transformers
   - ✓ JS search engine index
 - ⚒ CLI
   - ✓ Init archive
   - ✓ Deposit
   - ✓ Generate site
-  - ⎊ Generate LL (multi)
-  - ⎊ Generate RDF (multi)
+  - ⎊ Generate LL (single resource)
+  - ✓ Generate RDF (single resource)
 - ⚒ Front end
   - ⚒ JS search engine
   - ⎊ Styling
@@ -189,3 +188,6 @@ foundational library, Volksdata, has been developed as a spare-time project for
   - Local overrides
   - Relatioships inference
 - htmlgen option for local file or webserver URL generation
+- CLI
+  - Generate LL (multi)
+  - Generate RDF (multi)

+ 1 - 2
pkar.lua

@@ -66,8 +66,7 @@ gen_rdf = cli.command {
 
     function(args)
         local s = term.new_iriref_ns(args.id)
-        local res_gr = hgen.get_graph(s)
-        print(res_gr:encode(args.format))
+        print(hgen.generate_rdf(s, args.format))
     end,
 }
 

+ 1 - 1
pocket_archive-scm-1.rockspec

@@ -21,9 +21,9 @@ dependencies = {
    "lua >= 5.4",
 
    "cli",
-   "csv",
    "datafile",
    "etlua",
+   "ftcsv",
    "lua-cjson",
    "lua-vips",
    "penlight",

+ 10 - 4
src/html_generator.lua

@@ -338,8 +338,16 @@ M.generate_res_idx = function(s, mconf)
 end
 
 
-M.generate_ll = function(s)
+M.generate_rdf = function(s, format)
+    local res_gr = M.get_graph(s)
+    logger:debug("Serializing graph: ", s.data)
+
+    return res_gr:encode(format or "ttl")
+end
 
+
+M.generate_ll = function(s)
+    local res_gr = M.get_graph(s)
 end
 
 
@@ -349,11 +357,9 @@ M.generate_resource = function(s)
     local mconf = model.models[res_type.data]
 
     -- Generate RDF/Turtle doc.
-    local res_gr = M.get_graph(s)
-    logger:debug("Serializing graph: ", s.data)
     local res_path = pkar.gen_pairtree(M.res_dir, s.data, ".ttl")
     local ofh = assert(io.open(res_path, "w"))
-    ofh:write(res_gr:encode("ttl"))
+    ofh:write(M.generate_rdf(s, "ttl"))
     ofh:close()
 
     -- Generate HTML doc.

+ 2 - 4
src/submission.lua

@@ -1,6 +1,6 @@
 local io = io
 
-local csv = require "csv"
+local csv = require "ftcsv"
 local dir = require "pl.dir"
 local libmagic = require "libmagic"
 local plpath = require "pl.path"
@@ -100,7 +100,6 @@ end
 
 
 M.generate_sip = function(path)
-    local sub_data = assert(csv.open(path, {header = true}))
     local sip = {root_path = path:match("(.*/)")}
 
     local tn_dir = plpath.join(sip.root_path, "proc", "tn")
@@ -109,8 +108,7 @@ M.generate_sip = function(path)
     local prev_path
 
     local i = 0
-    local row_n = 2  -- Skipping header row.
-    for row in sub_data:lines() do
+    for row_n, row in csv.parseLine(path) do
         logger:debug("Row path: ", row["pas:sourcePath"])
         logger:debug("Parsing row:", pp.write(row))
         if #row["pas:sourcePath"] > 0 then