Created
August 30, 2012 01:32
-
-
Save juanpabloaj/3521476 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| " http://vim.wikia.com/wiki/HTML_entities | |
| " http://www.bigbaer.com/sidebars/entities/ | |
| " FIXME: you don't know how to use the -range argument! (doesn't work) | |
| command! -range HtmlEncode <line1>,<line2>call HtmlEntities('encode') | |
| command! -range HtmlDecode <line1>,<line2>call HtmlEntities('decode') | |
| " TODO: only accept full lines as a range; would be nice for arbitrary selection | |
| function! HtmlEntities(action) range | |
| " & -> & should be the first substitution | |
| let entities = [ | |
| \ ['&', '&'], | |
| \ ['"', '"'], | |
| \ ['<', '<'], | |
| \ ['>', '>'], | |
| \ ['¡', '¡'], | |
| \ ['¢', '¢'], | |
| \ ['£', '£'], | |
| \ ['¤', '¤'], | |
| \ ['Â¥', '¥'], | |
| \ ['â¬', '€'], | |
| \ ['¦', '¦'], | |
| \ ['§', '§'], | |
| \ ['¨', '¨'], | |
| \ ['©', '©'], | |
| \ ['ª', 'ª'], | |
| \ ['«', '«'], | |
| \ ['¬', '¬'], | |
| \ ['®', '®'], | |
| \ ['â¢', '™'], | |
| \ ['¯', '¯'], | |
| \ ['°', '°'], | |
| \ ['±', '±'], | |
| \ ['²', '²'], | |
| \ ['³', '³'], | |
| \ ['´', '´'], | |
| \ ['µ', 'µ'], | |
| \ ['¶', '¶'], | |
| \ ['·', '·'], | |
| \ ['¸', '¸'], | |
| \ ['¹', '¹'], | |
| \ ['º', 'º'], | |
| \ ['»', '»'], | |
| \ ['¼', '¼'], | |
| \ ['½', '½'], | |
| \ ['¾', '¾'], | |
| \ ['¿', '¿'], | |
| \ ['Ã', '×'], | |
| \ ['÷', '÷'], | |
| \ ['Ã', 'À'], | |
| \ ['Ã', 'Á'], | |
| \ ['Ã', 'Â'], | |
| \ ['Ã', 'Ã'], | |
| \ ['Ã', 'Ä'], | |
| \ ['Ã ', 'Å'], | |
| \ ['Ã', 'Æ'], | |
| \ ['Ã', 'Ç'], | |
| \ ['Ã', 'È'], | |
| \ ['Ã', 'É'], | |
| \ ['Ã', 'Ê'], | |
| \ ['Ã', 'Ë'], | |
| \ ['Ã', 'Ì'], | |
| \ ['Ã', 'Í'], | |
| \ ['Ã', 'Î'], | |
| \ ['Ã', 'Ï'], | |
| \ ['Ã', 'Ð'], | |
| \ ['Ã', 'Ñ'], | |
| \ ['Ã', 'Ò'], | |
| \ ['Ã', 'Ó'], | |
| \ ['Ã', 'Ô'], | |
| \ ['Ã', 'Õ'], | |
| \ ['Ã', 'Ö'], | |
| \ ['Ã', 'Ø'], | |
| \ ['Ã', 'Ù'], | |
| \ ['Ã', 'Ú'], | |
| \ ['Ã', 'Û'], | |
| \ ['Ã', 'Ü'], | |
| \ ['Ã', 'Ý'], | |
| \ ['Ã', 'Þ'], | |
| \ ['Ã', 'ß'], | |
| \ ['Ã ', 'à'], | |
| \ ['á', 'á'], | |
| \ ['â', 'â'], | |
| \ ['ã', 'ã'], | |
| \ ['ä', 'ä'], | |
| \ ['Ã¥', 'å'], | |
| \ ['æ', 'æ'], | |
| \ ['ç', 'ç'], | |
| \ ['è', 'è'], | |
| \ ['é', 'é'], | |
| \ ['ê', 'ê'], | |
| \ ['ë', 'ë'], | |
| \ ['ì', 'ì'], | |
| \ ['Ã', 'í'], | |
| \ ['î', 'î'], | |
| \ ['ï', 'ï'], | |
| \ ['ð', 'ð'], | |
| \ ['ñ', 'ñ'], | |
| \ ['ò', 'ò'], | |
| \ ['ó', 'ó'], | |
| \ ['ô', 'ô'], | |
| \ ['õ', 'õ'], | |
| \ ['ö', 'ö'], | |
| \ ['ø', 'ø'], | |
| \ ['ù', 'ù'], | |
| \ ['ú', 'ú'], | |
| \ ['û', 'û'], | |
| \ ['ü', 'ü'], | |
| \ ['ý', 'ý'], | |
| \ ['þ', 'þ'], | |
| \ ['ÿ', 'ÿ'], | |
| \ ['Å', 'Œ'], | |
| \ ['Å', 'œ'], | |
| \ ['Å ', 'Š'], | |
| \ ['Å¡', 'š'], | |
| \ ['Ÿ', 'Ÿ'], | |
| \ ['Ë', 'ˆ'], | |
| \ ['Ë', '&tilde'], | |
| \ ['â', '‌'], | |
| \ ['â', '‍'], | |
| \ ['â', '‎'], | |
| \ ['â', '‏'], | |
| \ ['â', '–'], | |
| \ ['â', '—'], | |
| \ ['â', '‘'], | |
| \ ['â', '’'], | |
| \ ['â', '‚'], | |
| \ ['â', '“'], | |
| \ ['â', '”'], | |
| \ ['â', '„'], | |
| \ ['â ', '†'], | |
| \ ['â¡', '‡'], | |
| \ ['â°', '‰'], | |
| \ ['â¹', '‹'], | |
| \ ['âº', '›'], | |
| \ ['Æ', 'ƒ'], | |
| \ ['â¢', '•'], | |
| \ ['â¦', '…'], | |
| \ ['â²', '′'], | |
| \ ['â³', '″'], | |
| \ ['â¾', '‾'], | |
| \ ['â', '⁄'], | |
| \ ['â', '℘'], | |
| \ ['â', 'ℑ'], | |
| \ ['â', 'ℜ'], | |
| \ ['âµ', 'ℵ'], | |
| \ ['â', '←'], | |
| \ ['â', '↑'], | |
| \ ['â', '→'], | |
| \ ['â', '↓'], | |
| \ ['â', '↔'], | |
| \ ['âµ', '↵'], | |
| \ ['â', '⇐'], | |
| \ ['â', '⇑'], | |
| \ ['â', '⇒'], | |
| \ ['â', '⇓'], | |
| \ ['â', '⇔'], | |
| \ ['â', '∀'], | |
| \ ['â', '∂'], | |
| \ ['â', '∃'], | |
| \ ['â ', '∅'], | |
| \ ['â', '∇'], | |
| \ ['â', '∈'], | |
| \ ['â', '∉'], | |
| \ ['â', '∋'], | |
| \ ['â', '∏'], | |
| \ ['â', '∑'], | |
| \ ['â', '−'], | |
| \ ['â', '∗'], | |
| \ ['â', '√'], | |
| \ ['â', '∝'], | |
| \ ['â', '∞'], | |
| \ ['â ', '∠'], | |
| \ ['â§', '∧'], | |
| \ ['â¨', '∨'], | |
| \ ['â©', '∩'], | |
| \ ['âª', '∪'], | |
| \ ['â«', '∫'], | |
| \ ['â´', '∴'], | |
| \ ['â¼', '∼'], | |
| \ ['â ', '≅'], | |
| \ ['â', '≈'], | |
| \ ['â ', '≠'], | |
| \ ['â¡', '≡'], | |
| \ ['â¤', '≤'], | |
| \ ['â¥', '≥'], | |
| \ ['â', '⊂'], | |
| \ ['â', '⊃'], | |
| \ ['â', '⊄'], | |
| \ ['â', '⊆'], | |
| \ ['â', '⊇'], | |
| \ ['â', '⊕'], | |
| \ ['â', '⊗'], | |
| \ ['â¥', '⊥'], | |
| \ ['â ', '⋅'], | |
| \ ['â', '⌈'], | |
| \ ['â', '⌉'], | |
| \ ['â', '⌊'], | |
| \ ['â', '⌋'], | |
| \ ['â¨', '⟨'], | |
| \ ['â©', '⟩'], | |
| \ ['â', '◊'], | |
| \ ['â ', '℠'], | |
| \ ['â', '℃'], | |
| \ ['â ', '℅'], | |
| \ ['â', '℉'], | |
| \ ['â', '№'], | |
| \ ['â', '℗'], | |
| \ ['â', '℞'], | |
| \ ['Ω', 'Ω'], | |
| \ ['â§', '℧'], | |
| \ ['â', '☀'], | |
| \ ['â', '☁'], | |
| \ ['â', '☂'], | |
| \ ['â', '☃'], | |
| \ ['â', '☄'], | |
| \ ['â ', '★'], | |
| \ ['â', '☆'], | |
| \ ['â', '☇'], | |
| \ ['â', '☈'], | |
| \ ['â', '☉'], | |
| \ ['â', '☊'], | |
| \ ['â', '☋'], | |
| \ ['â', '☌'], | |
| \ ['â', '☍'], | |
| \ ['â', '☎'], | |
| \ ['â', '☏'], | |
| \ ['â', '☐'], | |
| \ ['â', '☑'], | |
| \ ['â', '☒'], | |
| \ ['â', '☓'], | |
| \ ['â', '☚'], | |
| \ ['â', '☛'], | |
| \ ['â', '☜'], | |
| \ ['â', '☝'], | |
| \ ['â', '☞'], | |
| \ ['â', '☟'], | |
| \ ['â ', '☠'], | |
| \ ['â¡', '☡'], | |
| \ ['â¢', '☢'], | |
| \ ['â£', '☣'], | |
| \ ['â¤', '☤'], | |
| \ ['â¥', '☥'], | |
| \ ['â¦', '☦'], | |
| \ ['â§', '☧'], | |
| \ ['â¨', '☨'], | |
| \ ['â©', '☩'], | |
| \ ['âª', '☪'], | |
| \ ['â«', '☫'], | |
| \ ['â¬', '☬'], | |
| \ ['â', '☭'], | |
| \ ['â®', '☮'], | |
| \ ['â¯', '☯'], | |
| \ ['â°', '☰'], | |
| \ ['â±', '☱'], | |
| \ ['â²', '☲'], | |
| \ ['â³', '☳'], | |
| \ ['â´', '☴'], | |
| \ ['âµ', '☵'], | |
| \ ['â¶', '☶'], | |
| \ ['â·', '☷'], | |
| \ ['â¸', '☸'], | |
| \ ['â¹', '☹'], | |
| \ ['âº', '☺'], | |
| \ ['â»', '☻'], | |
| \ ['â½', '☽'], | |
| \ ['â¾', '☾'], | |
| \ ['â¿', '☿'], | |
| \ ['â', '♀'], | |
| \ ['â', '♁'], | |
| \ ['â', '♂'], | |
| \ ['â', '♃'], | |
| \ ['â', '♄'], | |
| \ ['â ', '♅'], | |
| \ ['â', '♆'], | |
| \ ['â', '♇'], | |
| \ ['â', '♈'], | |
| \ ['â', '♉'], | |
| \ ['â', '♊'], | |
| \ ['â', '♋'], | |
| \ ['â', '♌'], | |
| \ ['â', '♍'], | |
| \ ['â', '♎'], | |
| \ ['â', '♏'], | |
| \ ['â', '♐'], | |
| \ ['â', '♑'], | |
| \ ['â', '♒'], | |
| \ ['â', '♓'], | |
| \ ['â', '♔'], | |
| \ ['â', '♕'], | |
| \ ['â', '♖'], | |
| \ ['â', '♗'], | |
| \ ['â', '♘'], | |
| \ ['â', '♙'], | |
| \ ['â', '♚'], | |
| \ ['â', '♛'], | |
| \ ['â', '♜'], | |
| \ ['â', '♝'], | |
| \ ['â', '♞'], | |
| \ ['â', '♟'], | |
| \ ['â ', '♠'], | |
| \ ['â¡', '♡'], | |
| \ ['â¢', '♢'], | |
| \ ['â£', '♣'], | |
| \ ['â¤', '♤'], | |
| \ ['â¥', '♥'], | |
| \ ['â¦', '♦'], | |
| \ ['â§', '♧'], | |
| \ ['â¨', '♨'], | |
| \ ['â©', '♩'], | |
| \ ['âª', '♪'], | |
| \ ['â«', '♫'], | |
| \ ['â¬', '♬'], | |
| \ ['â', '♭'], | |
| \ ['â®', '♮'], | |
| \ ['â¯', '♯'], | |
| \ ['â', '✁'], | |
| \ ['â', '✂'], | |
| \ ['â', '✃'], | |
| \ ['â', '✄'], | |
| \ ['â', '✆'], | |
| \ ['â', '✇'], | |
| \ ['â', '✈'], | |
| \ ['â', '✉'], | |
| \ ['â', '✌'], | |
| \ ['â', '✍'], | |
| \ ['â', '✎'], | |
| \ ['â', '✏'], | |
| \ ['â', '✓'], | |
| \ ['â', '✔'], | |
| \ ['â', '𘚥'], | |
| \ ['â', '✖'], | |
| \ ['â', '✗'], | |
| \ ['â', '✘'], | |
| \ ['â', '✝'], | |
| \ ['â', '✞'], | |
| \ ['â', '✟'], | |
| \ ['â ', '✠'], | |
| \ ['â¡', '✡'], | |
| \ ['â', '❛'], | |
| \ ['â', '❜'], | |
| \ ['â', '❝'], | |
| \ ['â', '❞'], | |
| \ ['Î', 'Α'], | |
| \ ['Î', 'Β'], | |
| \ ['Î', 'Γ'], | |
| \ ['Î', 'Δ'], | |
| \ ['Î', 'Ε'], | |
| \ ['Î', 'Ζ'], | |
| \ ['Î', 'Η'], | |
| \ ['Î', 'Θ'], | |
| \ ['Î', 'Ι'], | |
| \ ['Î', 'Κ'], | |
| \ ['Î', 'Λ'], | |
| \ ['Î', 'Μ'], | |
| \ ['Î', 'Ν'], | |
| \ ['Î', 'Ξ'], | |
| \ ['Î', 'Ο'], | |
| \ ['Î ', 'Π'], | |
| \ ['Ρ', 'Ρ'], | |
| \ ['Σ', 'Σ'], | |
| \ ['Τ', 'Τ'], | |
| \ ['Î¥', 'Υ'], | |
| \ ['Φ', 'Φ'], | |
| \ ['Χ', 'Χ'], | |
| \ ['Ψ', 'Ψ'], | |
| \ ['Ω', 'Ω'], | |
| \ ['α', 'α'], | |
| \ ['β', 'β'], | |
| \ ['γ', 'γ'], | |
| \ ['δ', 'δ'], | |
| \ ['ε', 'ε'], | |
| \ ['ζ', 'ζ'], | |
| \ ['η', 'η'], | |
| \ ['θ', 'θ'], | |
| \ ['ι', 'ι'], | |
| \ ['κ', 'κ'], | |
| \ ['λ', 'λ'], | |
| \ ['μ', 'μ'], | |
| \ ['ν', 'ν'], | |
| \ ['ξ', 'ξ'], | |
| \ ['ο', 'ο'], | |
| \ ['Ï', 'π'], | |
| \ ['Ï', 'ρ'], | |
| \ ['Ï', 'ς'], | |
| \ ['Ï', 'σ'], | |
| \ ['Ï', 'τ'], | |
| \ ['Ï ', 'υ'], | |
| \ ['Ï', 'φ'], | |
| \ ['Ï', 'χ'], | |
| \ ['Ï', 'ψ'], | |
| \ ['Ï', 'ω'], | |
| \ ['Ï', 'ϑ'], | |
| \ ['Ï', 'ϒ'], | |
| \ ['Ï', 'ϖ'] | |
| \] | |
| if a:action == 'encode' | |
| let pat = 0 | |
| let sub = 1 | |
| elseif a:action == 'decode' | |
| let pat = 1 | |
| let sub = 0 | |
| else | |
| return | |
| endif | |
| for pair in entities | |
| let substitution = substitute(pair[sub], '&', '\\\&', 'g') | |
| execute 'silent '.a:firstline.','.a:lastline.'s/'.pair[pat].'/'.substitution.'/eg' | |
| endfor | |
| endfunction |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment