úÎYy3      !"#$%&'()*+,-./012None 34      34None'7The Coffeescript language compiles down to Javascript. ^ Previously we waited until the very end, at the rendering stage to perform this compilation.  Lets call is a post-conversion E This had the advantage that all Haskell values were inserted first: X for example a value could be inserted that Coffeescript would compile into Javascript. P While that is perhaps a safer approach, the advantage is not used in practice: 4 it was that way mainly for ease of implementation. Y The down-side is the template must be compiled down to Javascript during every request. B If instead we do a pre-conversion to compile down to Javascript, / we only need to perform the compilation once. B During the pre-conversion we first modify all Haskell insertions H so that they will be ignored by the Coffeescript compiler (backticks).  So %{var} is change to `%{var}`, using the preEscapeBegin and preEscapeEnd. k preEscapeIgnoreBalanced is used to not insert backtacks for variable already inside strings or backticks. v coffeescript will happily ignore the interpolations, and backticks would not be treated as escaping in that context. V preEscapeIgnoreLine was added to ignore comments (which in Coffeescript begin with a '#')  !"#$%&'()*+,-./012567 !"#$%&'()*+,-./012 !"#'()*+,-$&%./120   !"#$&%'()*+,-./0125678       !"#$%&'(()*+,-./012345678shakespeare-0.11Text.Shakespeare.BaseText.ShakespeareDeref DerefList DerefBranch DerefString DerefRational DerefIntegral DerefIdentDerefModulesIdentScopeIdent parseDeref derefToExp flattenDeref parseHashparseVarparseAtparseUrlparseVarStringparseUrlStringparseIntString parseCaretparseInt parseUnder readUtf8File RenderUrlShakespeareSettingsvarCharurlCharintChar toBuilderwrapunwrapjustVarInterpolation preConversion PreConversionId ReadProcess PreConvert preConvertpreEscapeBegin preEscapeEndpreEscapeIgnoreBalancedpreEscapeIgnoreLinedefaultShakespeareSettings shakespeareshakespeareFromStringshakespeareFileshakespeareFileReload $fLiftDeref $fLiftIdent$fLiftShakespeareSettings$fLiftPreConversion$fLiftPreConvert