# rvm_css v0.3 # Static CSS caching # # License: GNU GPLv2 or later # # Ruud van Melick # http://vanmelick.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjc6InZlcnNpb24iO3M6MzoiMC4zIjtzOjY6ImF1dGhvciI7czoxNToiUnV1ZCB2 YW4gTWVsaWNrIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIxOiJodHRwOi8vdmFubWVsaWNrLmNv bS8iO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjE4OiJTdGF0aWMgQ1NTIGNhY2hpbmciO3M6NDoi dHlwZSI7aToxO3M6NDoibmFtZSI7czo3OiJydm1fY3NzIjtzOjQ6ImhlbHAiO3M6MTQ0NToi CTxwPlRoaXMgcGx1Z2luIGF1dG9tYXRpY2FsbHkgc3RvcmVzIGEgY29weSBvZiB5b3VyIHN0 eWxlIHNoZWV0KHMpIGFzIGEgc3RhdGljIGZpbGUuIFN0YXRpYyBmaWxlcyBhcmUgc2VydmVk IHNldmVyYWwgb3JkZXJzIG9mIG1hZ25pdHVkZSBmYXN0ZXIgdGhhbiA8c3BhbiBjbGFzcz0i Y2FwcyI+UEhQPC9zcGFuPiBmaWxlcyAoMjAwIHRpbWVzIGZhc3RlciwgaW4gbXkgb3duIHRl c3RzIG9uIGEgRmFzdENHSS1iYXNlZCBzZXJ2ZXIpLjwvcD4KCgk8cD5Qb3N0LWluc3RhbGxh dGlvbiBzdGVwczoKCTxvbD4KCQk8bGk+QWN0aXZhdGUgdGhlIHBsdWdpbi48L2xpPgoJCTxs aT5DcmVhdGUgYSBkaXJlY3RvcnkgZm9yIHRoZSBzdGF0aWMgc3R5bGUgc2hlZXQgZmlsZXMg aW4gdGhlIHJvb3Qgb2YgeW91ciB0ZXh0cGF0dGVybiBpbnN0YWxsYXRpb24uIFlvdSBzaG91 bGQgbWFrZSBzdXJlIHRoYXQgPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBz Ij5QSFA8L3NwYW4+PC9zcGFuPiBpcyBhYmxlIHRvIHdyaXRlIHRvIHRoYXQgZGlyZWN0b3J5 LjwvbGk+CgkJPGxpPlZpc2l0IHRoZSA8YSBocmVmPSJpbmRleC5waHA/ZXZlbnQ9cHJlZnMm IzM4O3N0ZXA9YWR2YW5jZWRfcHJlZnMiPmFkdmFuY2VkIHByZWZlcmVuY2VzPC9hPiBhbmQg bWFrZSBzdXJlIHRoZSAmIzgyMjA7U3R5bGUgZGlyZWN0b3J5JiM4MjIxOyBwcmVmZXJlbmNl IGNvbnRhaW5zIHRoZSBkaXJlY3RvcnkgeW91IGNyZWF0ZWQgaW4gc3RlcCAyLiBUaGlzIHBh dGggaXMgYWx3YXlzIGEgcmVsYXRpdmUgcGF0aCAodG8gdGhlIGRpcmVjdG9yeSBvZiB5b3Vy IHJvb3QgdGV4dHBhdHRlcm4gaW5zdGFsbGF0aW9uKS48L2xpPgoJCTxsaT5WaXNpdCB0aGUg PGEgaHJlZj0iaW5kZXgucGhwP2V2ZW50PWNzcyI+c3R5bGU8L2E+IHRhYiBhbmQgc2F2ZSBl YWNoIG9mIHlvdXIgc3R5bGUgc2hlZXRzIGFnYWluIChzYXZpbmcgY3JlYXRlcyB0aGUgc3Rh dGljIGZpbGUpLjwvbGk+CgkJPGxpPlJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIG9mIDxjb2Rl PiYjNjA7dHhwOmNzcyAvJiM2Mjs8L2NvZGU+IHdpdGggPGNvZGU+JiM2MDt0eHA6cnZtX2Nz cyAvJiM2Mjs8L2NvZGU+LjwvbGk+Cgk8L29sPjwvcD4KCgk8cD5UaGUgPGNvZGU+JiM2MDt0 eHA6cnZtX2NzcyAvJiM2Mjs8L2NvZGU+IHRhZyBzdXBwbGllZCBieSB0aGlzIHBsdWdpbiBo YXMgdGhlIGV4YWN0IHNhbWUgYXR0cmlidXRlcyBhcyB0aGUgYnVpbHQtaW4gPGNvZGU+JiM2 MDt0eHA6Y3NzIC8mIzYyOzwvY29kZT4gdGFnIGFuZCBjYW4gYmUgdXNlZCBhcyBhIGRyb3At aW4gcmVwbGFjZW1lbnQuPC9wPgoKCTxwPk5vdGU6IGJlY2F1c2Ugbm90IGFsbCBjaGFyYWN0 ZXJzIGFyZSBhbGxvd2VkIGluIGZpbGVuYW1lcywgYXZvaWQgdXNpbmcgbm9uLWFscGhhbnVt ZXJpYyBjaGFyYWN0ZXJzIGluIHN0eWxlIHNoZWV0IG5hbWVzLjwvcD4iO3M6NDoiY29kZSI7 czoyMjU5OiIKaWYgKHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKQp7CiAgcmVnaXN0ZXJfY2Fs bGJhY2soJ3J2bV9jc3Nfc2F2ZScsICdjc3MnLCAnY3NzX3NhdmUnKTsKICByZWdpc3Rlcl9j YWxsYmFjaygncnZtX2Nzc19zYXZlJywgJ2NzcycsICdjc3Nfc2F2ZV9wb3N0ZWQnKTsKICBy ZWdpc3Rlcl9jYWxsYmFjaygncnZtX2Nzc19zYXZlJywgJ2NzcycsICdkZWxfZGVjJyk7CiAg cmVnaXN0ZXJfY2FsbGJhY2soJ3J2bV9jc3NfZGVsZXRlJywgJ2NzcycsICdjc3NfZGVsZXRl Jyk7CiAgcmVnaXN0ZXJfY2FsbGJhY2soJ3J2bV9jc3NfcHJlZnMnLCAncHJlZnMnLCAnJywg MSk7Cn0KCgpmdW5jdGlvbiBydm1fY3NzKCRhdHRzKQp7CiAgZ2xvYmFsICR0eHBfZXJyb3Jf Y29kZSwgJHMsICRwYXRoX3RvX3NpdGUsICRydm1fY3NzX2RpcjsKCiAgZXh0cmFjdChsQXR0 cyhhcnJheSgKICAgICdmb3JtYXQnID0+ICd1cmwnLAogICAgJ21lZGlhJyAgPT4gJ3NjcmVl bicsCiAgICAnbicgICAgICA9PiAnJywKICAgICdyZWwnICAgID0+ICdzdHlsZXNoZWV0JywK ICAgICd0aXRsZScgID0+ICcnLAogICksICRhdHRzKSk7CgogIGlmICghJG4pCiAgewogICAg aWYgKCRzKQogICAgewogICAgICAkbiA9IHNhZmVfZmllbGQoJ2NzcycsICd0eHBfc2VjdGlv bicsICJuYW1lPSciLmRvU2xhc2goJHMpLiInIik7CiAgICB9CiAgICBlbHNlCiAgICB7CiAg ICAgICRuID0gJ2RlZmF1bHQnOwogICAgfQogIH0KCiAgJGZpbGUgPSAkcnZtX2Nzc19kaXIu Jy8nLnN0cnRvbG93ZXIoc2FuaXRpemVGb3JVcmwoJG4pKS4nLmNzcyc7CgogIGlmIChlbXB0 eSgkcnZtX2Nzc19kaXIpIG9yICFpc19yZWFkYWJsZSgkcGF0aF90b19zaXRlLicvJy4kZmls ZSkpCiAgewogICAgcmV0dXJuIGNzcygkYXR0cyk7CiAgfQoKICBpZiAoJGZvcm1hdCA9PSAn bGluaycpCiAgewogICAgcmV0dXJuICc8bGluayByZWw9IicuJHJlbC4nIiB0eXBlPSJ0ZXh0 L2NzcyInLgogICAgICAoJG1lZGlhID8gJyBtZWRpYT0iJy4kbWVkaWEuJyInIDogJycpLgog ICAgICAoJHRpdGxlID8gJyB0aXRsZT0iJy4kdGl0bGUuJyInIDogJycpLgogICAgICAnIGhy ZWY9IicuaHUuJGZpbGUuJyIgLz4nOwogIH0KCiAgcmV0dXJuIGh1LiRmaWxlOwp9CgoKZnVu Y3Rpb24gcnZtX2Nzc19zYXZlKCkKewogIGdsb2JhbCAkcGF0aF90b19zaXRlLCAkcnZtX2Nz c19kaXI7CgogICRuYW1lID0gKHBzKCdjb3B5Jykgb3IgcHMoJ3NhdmVuZXcnKSkgPyBwcygn bmV3bmFtZScpIDogcHMoJ25hbWUnKTsKICAkbmFtZSA9IHN0cnRvbG93ZXIoc2FuaXRpemVG b3JVcmwoJG5hbWUpKTsKCiAgaWYgKGVtcHR5KCRydm1fY3NzX2Rpcikgb3IgISRuYW1lKQog IHsKICAgIHJldHVybjsKICB9CgogICRjc3MgPSBzYWZlX2ZpZWxkKCdjc3MnLCAndHhwX2Nz cycsICJuYW1lPSciLmRvU2xhc2gocHMoJ25hbWUnKSkuIiciKTsKCiAgaWYgKCRjc3MpCiAg ewogICAgJGZpbGUgICA9ICRwYXRoX3RvX3NpdGUuJy8nLiRydm1fY3NzX2Rpci4nLycuJG5h bWUuJy5jc3MnOwogICAgJGhhbmRsZSA9IGZvcGVuKCRmaWxlLCAnd2InKTsKICAgIGZ3cml0 ZSgkaGFuZGxlLCBiYXNlNjRfZGVjb2RlKCRjc3MpKTsKICAgIGZjbG9zZSgkaGFuZGxlKTsK ICB9Cn0KCgpmdW5jdGlvbiBydm1fY3NzX2RlbGV0ZSgpCnsKICBnbG9iYWwgJHBhdGhfdG9f c2l0ZSwgJHJ2bV9jc3NfZGlyOwoKICBpZiAoc2FmZV9maWVsZCgnY3NzJywgJ3R4cF9jc3Mn LCAibmFtZT0nIi5kb1NsYXNoKHBzKCduYW1lJykpLiInIikpCiAgewogICAgcmV0dXJuOwog IH0KCiAgJG5hbWUgPSBzdHJ0b2xvd2VyKHNhbml0aXplRm9yVXJsKHBzKCduYW1lJykpKTsK ICAkZmlsZSA9ICRwYXRoX3RvX3NpdGUuJy8nLiRydm1fY3NzX2Rpci4nLycuJG5hbWUuJy5j c3MnOwoKICBpZiAoIWVtcHR5KCRydm1fY3NzX2RpcikgYW5kICRuYW1lKQogIHsKICAgIHVu bGluaygkZmlsZSk7CiAgfQp9CgoKZnVuY3Rpb24gcnZtX2Nzc19wcmVmcygpCnsKICBnbG9i YWwgJHRleHRhcnJheTsKCiAgJHRleHRhcnJheVsncnZtX2Nzc19kaXInXSA9ICdTdHlsZSBk aXJlY3RvcnknOwoKICBpZiAoIXNhZmVfZmllbGQgKCduYW1lJywgJ3R4cF9wcmVmcycsICJu YW1lPSdydm1fY3NzX2RpciciKSkKICB7CiAgICBzYWZlX2luc2VydCgndHhwX3ByZWZzJywg InByZWZzX2lkPTEsIG5hbWU9J3J2bV9jc3NfZGlyJywgdmFsPSdjc3MnLCB0eXBlPTEsIGV2 ZW50PSdhZG1pbicsIGh0bWw9J3RleHRfaW5wdXQnLCBwb3NpdGlvbj0yMCIpOwogIH0KfQoi O3M6MzoibWQ1IjtzOjMyOiI3MGJkNjkzYjI4ZjMxYzRhNWI3NmYyNzYxZjNlZjM0NyI7fQ==