Based on great work from @gadenbuie shared in https://github.com/posit-dev/r-shinylive/issues/70 that used original JS implementation via V8. This PR switches over to lzstring package, updates url_encode_dir(), and adds url_decode() based on the Python implementation here and here. Nearly there, just seems to add an empty line at the end of scripts on the URL decode. Not complete but aims to get work started again.
Example to try out:
shinylive:::url_decode(encoded_url = "https://shinylive.io/r/editor/#code=NobwRAdghgtgpmAXAAjFADugdAJTAGlQGMB7CAFzgqVQBsBLAIwCcpmBPACgGcALeiOwCUAHQhiAxMgAicAGYC4yAKoBJZHJLNkGdMnK8o5ZABNWAd247k-buRIBzVjGQBad67EBXesgA8rhq0PiYAClAOcJxiyMgxyFIAgpj69OS0Sh6eELHkaRnhEHC00WAAEsW0JMgAyvyCAIQiYEL48fFSNfQmcIxsyLRQ7CRexuZpvMgC6KM6ECbII+Qzxj0KEGn0ZFZZ8dzdvWwAMkNL0TmxcRexnQd92uhQRbQaWlMQKzse8bH7PfeFYrnS6XH6XKSqD6jFA1Bg9bSabQGJQQLwwRhwbQkOTIRgCL7uMG-OGYyErTjTUaqBYAXjiYDxEG4zTa1xB7I5gwxLzpzQAcmiMVicYzuIgWUSOVKYAJkHSAIysqXKy4wKAADzlyAArAAGJUq5UANygwSUdIAzLrRGzYmDWmCwVIALJQWWPZ6vbQmejcdCDdgCByLUafNzfNlqgSAkqSyVSADyoehyDKvvsTlg4cJtuQ-pI5CTy1GnCWK2pWuaPrsoSq5GaNo59viNptkhk8kUyG4mKNmIGjnoRGQzDgAEcfKOFvZTBZrLYM85s9ke8w+9oAhovBAiHkyBSoeRCGXRkJkCB2hcpGm7I4l9j9LwlAnaAsAGJugxyLwvADicHYVcZCMKBlw6ZBxgMEdxy8OA7DgBZUXRfsH1FcCABVbGQOB1XQUduH2MhHyMZBIiKVhKCsUCFzvLNfQg1hMAQ95rCIU1aHAmdR3mTFawLfRqgEH02MoYjyHFK9wPlLBkFUYx6OaUcoF3eg+2aOZpyfUdESUPgRlfXElCgUYSDVPI2NoWh2HAy5R1cHC4CIUZmPMJ8ckpcgrAPFYABJRTPIhDAgSJwIAJhkuSrBPYxyHYdAlHo0D83rC5op86tyD44xN24+Ess4C82TBTVLk3ORP14b9aB88xPyDMFRX8QIezHTgZQgTh1VaZA1XVTruoyYKDCwJYtQ8vz8WQABqZB5UbUE2QXTrCBYOAoAAaysOlRUIUgeXpCQAHZtUSRJpAAIRZXEtHhSswFctI4AlXNLnVLk7oAdTq4LUngATkCKdVjExLx0D3HIDx6-FRAISVVTdHJeXKdNaJcB9as2H68ngZkWkdC4AF95rEAmxHbABhJTRLqAR2B0FJdiZep2GSdBOB8LUfEIVd1y1HnMRtAhUFi+KaDASggbAAmAF0gA", dir = "shinylive_test_code")
Based on great work from @gadenbuie shared in https://github.com/posit-dev/r-shinylive/issues/70 that used original JS implementation via V8. This PR switches over to lzstring package, updates
url_encode_dir()
, and addsurl_decode()
based on the Python implementation here and here. Nearly there, just seems to add an empty line at the end of scripts on the URL decode. Not complete but aims to get work started again.Example to try out:
shinylive:::url_decode(encoded_url = "https://shinylive.io/r/editor/#code=NobwRAdghgtgpmAXAAjFADugdAJTAGlQGMB7CAFzgqVQBsBLAIwCcpmBPACgGcALeiOwCUAHQhiAxMgAicAGYC4yAKoBJZHJLNkGdMnK8o5ZABNWAd247k-buRIBzVjGQBad67EBXesgA8rhq0PiYAClAOcJxiyMgxyFIAgpj69OS0Sh6eELHkaRnhEHC00WAAEsW0JMgAyvyCAIQiYEL48fFSNfQmcIxsyLRQ7CRexuZpvMgC6KM6ECbII+Qzxj0KEGn0ZFZZ8dzdvWwAMkNL0TmxcRexnQd92uhQRbQaWlMQKzse8bH7PfeFYrnS6XH6XKSqD6jFA1Bg9bSabQGJQQLwwRhwbQkOTIRgCL7uMG-OGYyErTjTUaqBYAXjiYDxEG4zTa1xB7I5gwxLzpzQAcmiMVicYzuIgWUSOVKYAJkHSAIysqXKy4wKAADzlyAArAAGJUq5UANygwSUdIAzLrRGzYmDWmCwVIALJQWWPZ6vbQmejcdCDdgCByLUafNzfNlqgSAkqSyVSADyoehyDKvvsTlg4cJtuQ-pI5CTy1GnCWK2pWuaPrsoSq5GaNo59viNptkhk8kUyG4mKNmIGjnoRGQzDgAEcfKOFvZTBZrLYM85s9ke8w+9oAhovBAiHkyBSoeRCGXRkJkCB2hcpGm7I4l9j9LwlAnaAsAGJugxyLwvADicHYVcZCMKBlw6ZBxgMEdxy8OA7DgBZUXRfsH1FcCABVbGQOB1XQUduH2MhHyMZBIiKVhKCsUCFzvLNfQg1hMAQ95rCIU1aHAmdR3mTFawLfRqgEH02MoYjyHFK9wPlLBkFUYx6OaUcoF3eg+2aOZpyfUdESUPgRlfXElCgUYSDVPI2NoWh2HAy5R1cHC4CIUZmPMJ8ckpcgrAPFYABJRTPIhDAgSJwIAJhkuSrBPYxyHYdAlHo0D83rC5op86tyD44xN24+Ess4C82TBTVLk3ORP14b9aB88xPyDMFRX8QIezHTgZQgTh1VaZA1XVTruoyYKDCwJYtQ8vz8WQABqZB5UbUE2QXTrCBYOAoAAaysOlRUIUgeXpCQAHZtUSRJpAAIRZXEtHhSswFctI4AlXNLnVLk7oAdTq4LUngATkCKdVjExLx0D3HIDx6-FRAISVVTdHJeXKdNaJcB9as2H68ngZkWkdC4AF95rEAmxHbABhJTRLqAR2B0FJdiZep2GSdBOB8LUfEIVd1y1HnMRtAhUFi+KaDASggbAAmAF0gA", dir = "shinylive_test_code")
shinylive:::url_encode_dir("shinylive_test_code")