Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

61
LINES

< > BotCompany Repo | #538 // Duplicator, attempt 2

Lua code

get("#537") -- printShortenedReferenceTree
get("#534") -- parseQuestionnaire
get("#532") -- getBridgeMap
get("#533") -- replaceSnippetIDs
get("#539") -- tableToLine

parseQuestionnaire("#2000291")
_, _, masterSourceID, masterDestID = getSnippetTitle(masterBridgeID):find("A master bridge from (#%d+) to (#%d+)")
idmap = getBridgeMap(masterBridgeID)

-- walk the reference tree

refTree = {}
printShortenedReferenceTree(masterSourceID, "", {}, refTree)
for line in all(refTree) do
  _, _, id = line:find("^ *(#%d+) %- ")
  if id then
    -- ref tree part found. identify type & action
    
    dest = idmap[id]
    if dest ~= nil and dest:find("^#") then
      -- type: already bridged
      verdict = 'bridged. '..dest
    else
      verdict = verdicts[id]
      if id == masterSourceID then
        -- type: is master source (thus already bridged)
        verdict = 'done (is master source)'
      end
    end
    print(id..": "..(verdict or "no verdict"))
        
    if verdict == 'copy verbatim' then
      -- assume source type is nt
      -- we interpret 'copy verbatim' as bridge-translate all IDs
      -- we find in the original snippet (in title or text)
      sourceID = id
      sourceTitle = getSnippetTitle(sourceID)
      sourceText = getSnippet(sourceID)
      destTitle = replaceSnippetIDs(sourceTitle, idmap)
      destText = replaceSnippetIDs(sourceText, idmap)
      if (destTitle..destText):find("<unbridged #") then
        print("Snippet contains unbridged elements, skipping node")
        goto nextNode
      end
      snippet = {type='nt', title=destTitle, text=destText}
      print("lua [[ ")
      print("  destID = create "..tableToLine(snippet))
      print("  create {type='nt', title='Bridge from "..sourceID.." to '..destID..' following master bridge "..masterBridgeID.."', text=destID}")
      print("]]")
      
      -- end after first node processed
      goto done
    else
      print("Unknown verdict, skipping node")
    end
  end
  ::nextNode::
end

::done::

test run  test run with input  download  show line numbers   

Travelled to 12 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt

No comments. add comment

Snippet ID: #538
Snippet name: Duplicator, attempt 2
Eternal ID of this version: #538/1
Text MD5: 64ed724fe652a814a3dac05de090c221
Author: stefan
Category:
Type: Lua code
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2015-03-16 23:15:30
Source code size: 2062 bytes / 61 lines
Pitched / IR pitched: No / Yes
Views / Downloads: 734 / 167
Referenced in: [show references]