comparison lib/js/urweb.js @ 1755:e9587120831a

Run-time CSS style validation
author Adam Chlipala <adam@chlipala.net>
date Sun, 06 May 2012 16:08:48 -0400
parents acadf9d1214a
children 22858505bb2d
comparison
equal deleted inserted replaced
1754:a1380fc15cb5 1755:e9587120831a
1746 er("Disallowed URL: " + s); 1746 er("Disallowed URL: " + s);
1747 return u; 1747 return u;
1748 } 1748 }
1749 1749
1750 1750
1751 // CSS validation
1752
1753 function atom(s) {
1754 for (var i = 0; i < s.length; ++i) {
1755 var c = s[i];
1756 if (!isAlnum(c) && c != '+' && c != '-' && c != '.' && c != '%' && c != '#')
1757 er("Disallowed character in CSS atom");
1758 }
1759
1760 return s;
1761 }
1762
1763 function css_url(s) {
1764 for (var i = 0; i < s.length; ++i) {
1765 var c = s[i];
1766 if (!isAlnum(c) && c != ':' && c != '/' && c != '.' && c != '_' && c != '+'
1767 && c != '-' && c != '%' && c != '?' && c != '&' && c != '=' && c != '#')
1768 er("Disallowed character in CSS URL");
1769 }
1770
1771 return s;
1772 }
1773
1774 function property(s) {
1775 if (s.length <= 0)
1776 er("Empty CSS property");
1777
1778 if (!isLower(s[0]) && s[0] != '_')
1779 er("Bad initial character in CSS property");
1780
1781 for (var i = 0; i < s.length; ++i) {
1782 var c = s[i];
1783 if (!isLower(c) && !isDigit(c) && c != '_' && c != '-')
1784 er("Disallowed character in CSS property");
1785 }
1786
1787 return s;
1788 }
1789
1790
1751 // ID generation 1791 // ID generation
1752 1792
1753 var nextId = 0; 1793 var nextId = 0;
1754 1794
1755 function fresh() { 1795 function fresh() {