diff options
| author | Philipp Gesang <phg42.2a@gmail.com> | 2013-04-15 00:57:10 +0200 | 
|---|---|---|
| committer | Philipp Gesang <phg42.2a@gmail.com> | 2013-04-15 00:57:10 +0200 | 
| commit | 5a8c4657de6b599e1897d8ac4e685264e0ac0587 (patch) | |
| tree | 4475fa4bd49a9cf5bda07c715797377d25e182eb | |
| parent | 25444ac8cd48cd5ad7ed32bfcc9a0a1314e2223a (diff) | |
| download | luaotfload-5a8c4657de6b599e1897d8ac4e685264e0ac0587.tar.gz | |
unify logging
| -rwxr-xr-x | mkluatexfontdb.lua | 3 | ||||
| -rw-r--r-- | otfl-font-nms.lua | 93 | ||||
| -rw-r--r-- | otfl-luat-ovr.lua | 52 | 
3 files changed, 75 insertions, 73 deletions
diff --git a/mkluatexfontdb.lua b/mkluatexfontdb.lua index 956fa18..0f0df9f 100755 --- a/mkluatexfontdb.lua +++ b/mkluatexfontdb.lua @@ -113,7 +113,8 @@ end  local function generate(force)      local fontnames, saved      fontnames = names.update(fontnames, force) -    logs.report("fonts in the database", "%i", #fontnames.mappings) +    logs.names_report("log", 0, "fonts in the database", +                      "%i", #fontnames.mappings)      saved = names.save(fontnames)      texiowrite_nl("")  end diff --git a/otfl-font-nms.lua b/otfl-font-nms.lua index b2b5390..0942eda 100644 --- a/otfl-font-nms.lua +++ b/otfl-font-nms.lua @@ -39,9 +39,7 @@ local gsub, match, rpadd      = string.gsub, string.match, string.rpadd  local gmatch, sub, find       = string.gmatch, string.sub, string.find  local utfgsub                 = unicode.utf8.gsub -local suppress_output = false -local trace_short     = false --tracing adapted to rebuilding of the database inside a document -local trace_search    = false --trackers.register("names.search",   function(v) trace_search   = v end) +local report = logs.names_report  local function sanitize(str)      if str then @@ -76,9 +74,10 @@ local function load_names()  	foundname = luaname      end      if data then -        logs.info("Font names database loaded", "%s", foundname) +        report("info", 0, "Font names database loaded", "%s", foundname)      else -        logs.info([[Font names database not found, generating new one. +        report("info", 0, +            [[Font names database not found, generating new one.               This can take several minutes; please be patient.]])          data = names.update(fontnames_init())          names.save(data) @@ -187,9 +186,10 @@ function names.resolve(_,_,specification) -- the 1st two parameters are used by              end              if #found == 1 then                  if kpse.lookup(found[1].filename[1]) then -                    logs.report("load font", -                                "font family='%s', subfamily='%s' found: %s", -                                name, style, found[1].filename[1]) +                    report("log", 0, "load font", +                        "font family='%s', subfamily='%s' found: %s", +                        name, style, found[1].filename[1] +                    )                      return found[1].filename[1], found[1].filename[2]                  end              elseif #found > 1 then @@ -207,9 +207,10 @@ function names.resolve(_,_,specification) -- the 1st two parameters are used by                      end                  end                  if kpse.lookup(closest.filename[1]) then -                    logs.report("load font", -                                "font family='%s', subfamily='%s' found: %s", -                                name, style, closest.filename[1]) +                    report("log", 0, "load font", +                        "font family='%s', subfamily='%s' found: %s", +                        name, style, closest.filename[1] +                    )                      return closest.filename[1], closest.filename[2]                  end              elseif found.fallback then @@ -247,7 +248,7 @@ local function font_fullinfo(filename, subfont, texmf)      local t = { }      local f = fontloader.open(filename, subfont)      if not f then -        logs.names_loading("error", "failed to open %s", filename) +        report("log", 1, "error", "failed to open %s", filename)          return      end      local m = fontloader.to_table(f) @@ -277,7 +278,7 @@ local function font_fullinfo(filename, subfont, texmf)          end      else          -- no names table, propably a broken font -        logs.names_loading("broken font rejected", "%s", basefile) +        report("log", 1, "broken font rejected", "%s", basefile)          return      end      t.fontname    = m.fontname @@ -305,9 +306,7 @@ local function load_font(filename, fontnames, newfontnames, texmf)      if filename then          if names.blacklist[filename] or             names.blacklist[basename(filename)] then -            if trace_search then -                logs.report("ignoring font", "%s", filename) -            end +            report("log", 2, "ignoring font", "%s", filename)              return          end          local timestamp, db_timestamp @@ -330,7 +329,7 @@ local function load_font(filename, fontnames, newfontnames, texmf)                  newmappings[#newmappings+1]        = mappings[v]                  newstatus[basefile].index[index+1] = #newmappings              end -            logs.names_loading("font already indexed", "%s", basefile) +            report("log", 1, "font already indexed", "%s", basefile)              return          end          local info = fontloader.info(filename) @@ -365,7 +364,7 @@ local function load_font(filename, fontnames, newfontnames, texmf)                  newstatus[basefile].index[1] = index              end          else -            logs.names_loading("failed to load", "%s", basefile) +            report("log", 1, "failed to load", "%s", basefile)          end      end  end @@ -423,10 +422,8 @@ local function read_blacklist()                      if string.sub(line,1,1) == "-" then                          whitelist[string.sub(line,2,-1)] = true                      else -                      if trace_search then -                          logs.report("blacklisted file", "%s", line) -                      end -                      blacklist[line] = true +                        report("log", 2, "blacklisted file", "%s", line) +                        blacklist[line] = true                      end                  end              end @@ -448,28 +445,24 @@ local installed_fonts_scanned = false  local function scan_installed_fonts(fontnames, newfontnames)      -- Try to query and add font list from operating system.      -- This uses the lualatex-platform module. -    logs.info("Scanning fonts known to operating system...") +    report("info", 0, "Scanning fonts known to operating system...")      local fonts = get_installed_fonts()      if fonts and #fonts > 0 then          installed_fonts_scanned = true -        if trace_search then -            logs.report("operating system fonts found", "%d", #fonts) -        end +        report("log", 2, "operating system fonts found", "%d", #fonts)          for key, value in next, fonts do              local file = value.path              if file then                  local ext = extname(file)                  if ext and font_extensions_set[ext] then                  file = path_normalize(file) -                    logs.names_loading("loading font", "%s", file) +                    report("log", 1, "loading font", "%s", file)                  load_font(file, fontnames, newfontnames, false)                  end              end          end      else -        if trace_search then -            logs.report("Could not retrieve list of installed fonts") -        end +        report("log", 2, "Could not retrieve list of installed fonts")      end  end @@ -483,28 +476,22 @@ local function scan_dir(dirname, fontnames, newfontnames, texmf)      ]]      local list, found = { }, { }      local nbfound = 0 -    if trace_search then -        logs.report("scanning", "%s", dirname) -    end +    report("log", 2, "scanning", "%s", dirname)      for _,i in next, font_extensions do          for _,ext in next, { i, upper(i) } do              found = glob(format("%s/**.%s$", dirname, ext))              -- note that glob fails silently on broken symlinks, which happens              -- sometimes in TeX Live. -            if trace_search then -                logs.report("fonts found", "%s '%s' fonts found", #found, ext) -            end +            report("log", 2, "fonts found", "%s '%s' fonts found", #found, ext)              nbfound = nbfound + #found              table.append(list, found)          end      end -    if trace_search then -        logs.report("fonts found", "%d fonts found in '%s'", nbfound, dirname) -    end +    report("log", 2, "fonts found", "%d fonts found in '%s'", nbfound, dirname)      for _,file in next, list do          file = path_normalize(file) -        logs.names_loading("loading font", "%s", file) +        report("log", 1, "loading font", "%s", file)          load_font(file, fontnames, newfontnames, texmf)      end  end @@ -515,9 +502,9 @@ local function scan_texmf_fonts(fontnames, newfontnames)      variables OPENTYPEFONTS and TTFONTS of texmf.cnf      ]]      if expandpath("$OSFONTDIR"):is_empty() then -        logs.info("Scanning TEXMF fonts...") +        report("info", 0, "Scanning TEXMF fonts...")      else -        logs.info("Scanning TEXMF and OS fonts...") +        report("info", 0, "Scanning TEXMF and OS fonts...")      end      local fontdirs = expandpath("$OPENTYPEFONTS"):gsub("^%.", "")      fontdirs = fontdirs .. expandpath("$TTFONTS"):gsub("^%.", "") @@ -548,9 +535,7 @@ local function read_fonts_conf(path, results)      ]]      local f = io.open(path)      if not f then -        if trace_search then -            logs.report("cannot open file", "%s", path) -        end +        report("log", 2, "cannot open file", "%s", path)          return results      end      local incomments = false @@ -648,10 +633,8 @@ local function scan_os_fonts(fontnames, newfontnames)        - fontcache for Unix (reads the fonts.conf file and scans the directories)        - a static set of directories for Windows and MacOSX      ]] -    logs.info("Scanning OS fonts...") -    if trace_search then -        logs.info("Searching in static system directories...") -    end +    report("info", 0, "Scanning OS fonts...") +    report("info", 2, "Searching in static system directories...")      for _,d in next, get_os_dirs() do          scan_dir(d, fontnames, newfontnames, false)      end @@ -663,7 +646,7 @@ local function update_names(fontnames, force)      - fontnames is the final table to return      - force is whether we rebuild it from scratch or not      ]] -    logs.info("Updating the font names database") +    report("info", 0, "Updating the font names database")      if force then          fontnames = fontnames_init() @@ -673,10 +656,8 @@ local function update_names(fontnames, force)          end          if fontnames.version ~= names.version then              fontnames = fontnames_init() -            if trace_search then -                logs.report("No font names database or old one found; " -                          .."generating new one") -            end +            report("log", 0, "No font names database or old one found; " +                           .."generating new one")          end      end      local newfontnames = fontnames_init() @@ -700,10 +681,10 @@ local function save_names(fontnames)          local luaname, lucname = make_name(path)          table.tofile(luaname, fontnames, true)          caches.compile(fontnames,luaname,lucname) -        logs.info("Font names database saved") +        report("info", 0, "Font names database saved")          return path      else -        logs.info("Failed to save names database") +        report("info", 0, "Failed to save names database")          return nil      end  end diff --git a/otfl-luat-ovr.lua b/otfl-luat-ovr.lua index 63ad6a7..0657bbe 100644 --- a/otfl-luat-ovr.lua +++ b/otfl-luat-ovr.lua @@ -12,8 +12,8 @@ local module_name = "luaotfload"  local texiowrite_nl = texio.write_nl  local stringformat  = string.format  local tableconcat   = table.concat -local ioflush       = io.flush  local dummyfunction = function() end +local type          = type  --[[doc--  We recreate the verbosity levels previously implemented in font-nms: @@ -47,24 +47,44 @@ function logs.report(category,fmt,...)      end  end -function logs.info(category,fmt,...) -    if fmt then -        texiowrite_nl(stringformat("%s | %s: %s",module_name,category,stringformat(fmt,...))) -    elseif category then -        texiowrite_nl(stringformat("%s | %s",module_name,category)) -    else -        texiowrite_nl(stringformat("%s |",module_name)) -    end -    ioflush() -end - -logs.names_loading = function (category, fmt, ...) -    if loglevel > 1 then +logs.names_search = function (category, fmt, ...) +    if loglevel > 2 then          local res = { module_name, " |" }          if category then res[#res+1] = " " .. category end          if fmt      then res[#res+1] = ": " .. stringformat(fmt, ...) end -        texiowrite_nl(tableconcat(res)) -        ioflush() +        texiowrite_nl("log", tableconcat(res)) +    end +end + + +local log = function (category, fmt, ...) +    local res = { module_name, " |" } +    if category then res[#res+1] = " " .. category end +    if fmt      then res[#res+1] = ": " .. stringformat(fmt, ...) end +    texiowrite_nl("log", tableconcat(res)) +end + +local stdout = function (category, fmt, ...) +    local res = { module_name, " |" } +    if category then res[#res+1] = " " .. category end +    if fmt      then res[#res+1] = ": " .. stringformat(fmt, ...) end +    texiowrite_nl(tableconcat(res)) +end + +local level_ids = { common  = 0, loading = 1, search  = 2 } + +logs.names_report = function (mode, lvl, ...) +    if type(lvl) == "string" then +        lvl = level_ids[lvl] +    end +    if not lvl then lvl = 0 end + +    if loglevel > lvl then +        if mode == "log" then +            log (...) +        else +            stdout (...) +        end      end  end  | 
