videlais / extwee

Extwee is a story compiler supporting Twine formats

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Double colons in passage text at the start of a line aren't escaped in Twee output

klembot opened this issue · comments

new Passage('test', ':: nefarious').toTwee()

This isn't covered by the spec, but FWIW Twine escapes them like so:

:: test
\:: nefarious

Okay, so, I've done lots of work on this and it's not an easy fix, it turns out. I can escape Twee special characters easy enough, but trying to un-escape them is much harder.

I've come up with a particularly cursed -- literally called "Cursed" -- example output from Twine's export into Twee:

:: StoryTitle
Cursed


:: StoryData
{
  "ifid": "22F25A58-7062-4927-95B6-F424DDB2EC65",
  "format": "Harlowe",
  "format-version": "3.3.8",
  "start": "[Hello] {world} \\\\",
  "zoom": 1
}


:: \[Hello\] \{world\} \\\\ {"position":"400,200","size":"100,100"}
\:: Extra header

Would be happy to talk this one through together!

I still haven't solved this, @klembot, but here is another cursed example generated by Twine that will not currently re-import correctly in either Extwee or Twine.

:: StoryTitle
Round-trip Twine Crash


:: StoryData
{
  "ifid": "B1470EDA-E62A-43EF-8BAC-6FCD4D2A4D55",
  "format": "Harlowe",
  "format-version": "3.3.8",
  "start": "{\"position\":\"400,200\",\"size\":\"100,100\"}",
  "zoom": 1
}


:: \{"position":"400,200","size":"100,100"\} {"position":"700,325","size":"100,100"}