Editing Module:D'ni Time

From Guild of Archivists
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 2: Line 2:


dnitools = require("Module:D'ni Tools")
dnitools = require("Module:D'ni Tools")
dnifunc = require("Module:D'ni Time/dni")
surfacefunc = require("Module:D'ni Time/surface")
Date = require('Module:Date')._Date


local p = {}
local p = {}
Line 197: Line 193:
   return os.date("*t",surfaceTimestamp)
   return os.date("*t",surfaceTimestamp)
end
end
-- ==Parse Functions==
local function parseSurfaceDateStr(dateStr)
-- Given a surface data string, accepts formats that #time accepts
-- Returns a surfaceDate (table)
  lang = mw.getContentLanguage()
  surfaceTimeStamp = lang:formatDate("U",dateStr)
  surfaceTime = os.date("!*t",surfaceTimeStamp)
  surfaceTime['isdst'] = nil
  return surfaceTime
end
-- ==Display Functions==
local function getVaileeName(vailee, useDniFont)
-- Return name of vailee given number (zero-indexed)
-- If useDniFont is true, return it in Dnifont text
    useDniFont = useDniFont or false
    vaileetee = {"Leefo","Leebro","Leesahn","Leetar","Leevot","Leevofo","Leevobro","Leevosahn","Leevotar","Leenovoo"}
    vaileetee_dnifont = {"lEfo","lEbro","lEsan","lEtar","lEvot","lEvofo","lEvobro","lEvosan","lEvotar","lEnovU"}
    if(useDniFont) then
      return vaileetee_dnifont[vailee+1]
    else
      return vaileetee[vailee+1]
    end
end
local function displayDniTime(dniTime)
-- Return dniTime (table) as string of table
  return '{'..'hahr = '..dniTime['hahr']..', vailee = '..dniTime['vailee']..', vaileeName = '..getVaileeName(dniTime['vailee'])..', yahr = '..dniTime['yahr']..', gahrtahvo = '..dniTime['gahrtahvo']..', tahvo = '..dniTime['tahvo']..', gorahn = '..dniTime['gorahn']..', prorahn = '..dniTime['prorahn']..'}'
end
local function displaySurfaceTime(surface)
-- Return surfaceTime (table) as string of table
  return '{'..'year = '..surface['year']..', month = '..surface['month']..', day = '..surface['day']..', hour = '..surface['hour']..', min = '..surface['min']..', sec = '..surface['sec']..', isdst = '..tostring(surface['isdst'])..'}'
end
local function formatSurfaceTime(surfaceTime,format)
  format = format or 'c'
  lang = mw.getContentLanguage()
  return lang:formatDate(format,tostring(surfaceTime['year'])..'/'..tostring(surfaceTime['month'])..'/'..tostring(surfaceTime['day'])..' '..tostring(surfaceTime['hour'])..':'..tostring(surfaceTime['min'])..':'..tostring(surfaceTime['sec']))
end
local function formatDniTime(dniTime,format,useDniFont)
-- Given a DniTime (table), returns formatted string.
-- format is a string with patterns for parts of the date, like standard dates
-- Patterns in capitals padded with zeroes
-- HHHH, hhhh = hahr (4-digits, Uppercase includes +/-)
-- hh = last two digits of the hahr
-- XX = 'era' (BE or AE)
-- VVVV = vailee by name
-- VV,vv = vailee (1 indexed)
-- YY, yy = yahr
-- GG, gg = gahrtahvo
-- TT, tt = tahvo
-- RR, rr = gorahnn
-- PP, pp = prorahn
  format = format or "VVVV yy HHHH gg:tt:rr:pp"
  useDniFont = useDniFont or false
  result = format
  if (dniTime['hahr'] < 0) then
      era = "BE"
      sign = "-"
  else
      era = "DE"
      sign = "+"
  end
result = string.gsub(result,"%a+", {
                              ["dHHHH"] = dnitools._num2dnifont(math.abs(dniTime['hahr']),4),
                              ["HHHH"] = string.format("%04d",tostring(dniTime['hahr'])),
                              ["dhhhh"] = dnitools._num2dnifont(math.abs(dniTime['hahr'])),
                              ["hhhh"] = math.abs(dniTime['hahr']),
                              ["dhh"] = dnitools._num2dnifont(string.sub(dniTime['hahr'],-2)),
                              ["hh"] = string.sub(dniTime['hahr'],-2),
                              ["dYY"] = dnitools._num2dnifont(dniTime['yahr'],2),
                              ["YY"] = string.format("%02d",tostring(dniTime['yahr'])),
                              ["dyy"] = dnitools._num2dnifont(dniTime['yahr']),
                              ["yy"] = dniTime['yahr'],
                              ["dVVVV"] = getVaileeName(dniTime['vailee'],true),
                              ["VVVV"] = getVaileeName(dniTime['vailee']),
                              ["VV"] = string.format("%02d",tostring(dniTime['vailee']+1)),
                              ["dvv"] = dnitools._num2dnifont(dniTime['vailee'] + 1),
                              ["vv"] = dniTime['vailee'] + 1,
                              ["GG"] = string.format("%02d",tostring(dniTime['gahrtahvo'])),
                              ["dgg"] = dnitools._num2dnifont(dniTime['gahrtahvo']),
                              ["gg"] = dniTime['gahrtahvo'],
                              ["TT"] = string.format("%02d",tostring(dniTime['tahvo'])),
                              ["dtt"] = dnitools._num2dnifont(dniTime['tahvo']),
                              ["tt"] = dniTime['tahvo'],
                              ["RR"] = string.format("%02d",tostring(dniTime['gorahn'])),
                              ["drr"] = dnitools._num2dnifont(dniTime['gorahn']),
                              ["rr"] = dniTime['gorahn'],
                              ["PP"] = string.format("%02d",tostring(dniTime['prorahn'])),
                              ["pp"] = dniTime['prorahn'],
                              ["dpp"] = dnitools._num2dnifont(dniTime['prorahn']),
                              ["XX"] = era,
                              ["X"] = sign,
})
  return result
end


-- =============================================================================
-- =============================================================================
Line 221: Line 336:
     preprocessSingleArg('datetime')
     preprocessSingleArg('datetime')
     preprocessSingleArg('format')
     preprocessSingleArg('format')
    preprocessSingleArg('input')
      
      
     if args['datetime'] then
     if args['datetime'] then
       surfaceTime = surfacefunc.parseSurfaceDateStr(args['datetime'],args['input'])
       output = formatDniTime(surface2DniTime(makeSurfaceTimeStamp(parseSurfaceDateStr(args['datetime']))),args['format'])
      output = dnifunc.formatDniTime(surface2DniTime(makeSurfaceTimeStamp(surfaceTime)),args['format'])
     else  
     else  
       preprocessSingleArg('year')
       preprocessSingleArg('year')
Line 235: Line 348:


       -- Parse the data parameters
       -- Parse the data parameters
       surface = {year = args['year'], month = args['month'] or 1, day = args['day'] or 1, hour = args['hour'] or 0, min = args['minute'] or 0, sec = args['second'] or 0}
       surface = {year = args['year'], month = args['month'], day = args['day'], hour = args['hour'], min = args['minute'], sec = args['second']}


---      output =  dnifunc.displayDniTime(surface2DniTime(makeSurfaceTimeStamp(surface)),args['format'])
--      return displaySurfaceTime(surface)
      output = dnifunc.formatDniTime(surface2DniTime(makeSurfaceTimeStamp(surface)),args['format'])
      output = formatDniTime(surface2DniTime(makeSurfaceTimeStamp(surface)),args['format'])
     end
     end
     return output
     return output
Line 254: Line 367:
     preprocessSingleArg('datetime')
     preprocessSingleArg('datetime')
     preprocessSingleArg('format')
     preprocessSingleArg('format')
    preprocessSingleArg('input')


     if args['datetime'] then
     if args['datetime'] then
       output = surfacefunc.formatSurfaceTime(dni2SurfaceTime(dnifunc.parseDniDateStr(args['datetime'],args['input'])),args['format'])
       output = displaySurfaceTime(dni2SurfaceTime(dni))
     else  
     else  
       preprocessSingleArg('hahr')
       preprocessSingleArg('hahr')
Line 270: Line 382:
       dni = {hahr = tonumber(args['hahr']), vailee = tonumber(args['vailee']), yahr = tonumber(args['yahr']), gahrtahvo = tonumber(args['gahrtahvo']), tahvo = tonumber(args['tahvo']), gorahn = tonumber(args['gorahn']), prorahn = tonumber(args['prorahn'])}
       dni = {hahr = tonumber(args['hahr']), vailee = tonumber(args['vailee']), yahr = tonumber(args['yahr']), gahrtahvo = tonumber(args['gahrtahvo']), tahvo = tonumber(args['tahvo']), gorahn = tonumber(args['gorahn']), prorahn = tonumber(args['prorahn'])}


--      output = surfacefunc.displaySurfaceTime(dni2SurfaceTime(dni),args['format'])
--      return displaySurfaceTime(surface)
       output = surfacefunc.formatSurfaceTime(dni2SurfaceTime(dni),args['format'])
       output = formatSurfaceTime(dni2SurfaceTime(dni),args['format'])
     end
     end
      
      
Line 291: Line 403:
     lang = mw.getContentLanguage()
     lang = mw.getContentLanguage()


     surface = {year = -7658, month = 5, day = 31, hour = 6, min = 56, sec = 58, isdst = true}
     timeStr = "1991-04-21 16:54:00 +0000"
    dni = {hahr = -1, vailee = 1, yahr = 1, gahrtahvo = 1, tahvo = 1, gorahn = 1, prorahn = 1}


     output = ""
     output = timeStr .. "<br/>"..lang:formatDate("U",timeStr)
    output = output .. "<br/>"..surfacefunc.displaySurfaceTime(surface)
    output = output .. "<br/>"..displaySurfaceTime(parseSurfaceDateStr(timeStr))
--    output = output .. "<br/>"..dnifunc.displayDniTime(surface2DniTime(makeSurfaceTimeStamp(surface)))
     output = output .. "<br/>"..displaySurfaceTime({year = 1991, month = 4, day = 21, hour = 16, min = 54, sec = 0})
--    output = output .. "<br/>"..dnifunc.formatDniTime(surface2DniTime(makeSurfaceTimeStamp(surface)))
     output = output .. "<br/>"..makeSurfaceTimeStamp(parseSurfaceDateStr(timeStr))
     output = output .. "<br/>"..dnifunc.displayDniTime(dni)
     output = output .. "<br/>"..makeSurfaceTimeStamp({year = 1991, month = 4, day = 21, hour = 16, min = 54, sec = 0})
     output = output .. "<br/>"..surfacefunc.displaySurfaceTime(dni2SurfaceTime(dni))
    output = output .. "<br/>"..displayDniTime(surface2DniTime(makeSurfaceTimeStamp(parseSurfaceDateStr(timeStr))))
     output = output .. "<br/>"..os.date("ghdd",makeSurfaceTimeStamp(surface))
    output = output .. "<br/>"..displayDniTime(surface2DniTime(makeSurfaceTimeStamp({year = 1991, month = 4, day = 21, hour = 16, min = 54, sec = 0})))
--    output = output .. "<br/>"..surfacefunc.formatSurfaceTime(surface,args['format'])
--    output = output .. "<br/>"..makeSurfaceTimeStamp(surface)
--    output = output .. "<br/>"..lang:formatDate("c","@"..makeSurfaceTimeStamp(surface))




Please note that all contributions to Guild of Archivists may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see GoArch:Copyrights for details). Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)

Template used on this page: