Created
June 24, 2020 23:09
-
-
Save gencer/3b57136be7fe4a831e3e173b60e5ecaf to your computer and use it in GitHub Desktop.
This file contains 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
# encoding: utf-8 | |
require 'sanitize' | |
class Sanitize | |
module Config | |
MORE_RELAXED = freeze_config( | |
:elements => Sanitize::Config::BASIC[:elements] + %w[ | |
address article aside bdi bdo body caption col colgroup data del div | |
figcaption figure footer h1 h2 h3 h4 h5 h6 head header hgroup hr html | |
img ins main nav rp rt section span style summary sup table tbody | |
td tfoot th thead title tr wbr | |
], | |
:allow_doctype => false, | |
:attributes => merge(Sanitize::Config::BASIC[:attributes], | |
:all => %w[class dir hidden id lang style tabindex title translate], | |
'a' => %w[href hreflang name rel], | |
'col' => %w[span width], | |
'colgroup' => %w[span width], | |
'data' => %w[value], | |
'del' => %w[cite datetime], | |
'img' => %w[align alt border height src srcset width], | |
'ins' => %w[cite datetime], | |
'li' => %w[value], | |
'ol' => %w[reversed start type], | |
'style' => %w[media scoped type], | |
'table' => %w[align bgcolor border cellpadding cellspacing frame rules sortable summary width], | |
'td' => %w[abbr align axis colspan headers rowspan valign width], | |
'th' => %w[abbr align axis colspan headers rowspan scope sorted valign width], | |
'ul' => %w[type] | |
), | |
:protocols => merge(Sanitize::Config::BASIC[:protocols], | |
'del' => {'cite' => ['http', 'https', :relative]}, | |
'img' => {'src' => ['http', 'https', 'cid', :relative]}, | |
'ins' => {'cite' => ['http', 'https', :relative]} | |
), | |
:css => { | |
:allow_comments => false, | |
:allow_hacks => false, | |
:at_rules_with_properties => %w[ | |
bottom-center | |
bottom-left | |
bottom-left-corner | |
bottom-right | |
bottom-right-corner | |
font-face | |
left-bottom | |
left-middle | |
left-top | |
page | |
right-bottom | |
right-middle | |
right-top | |
top-center | |
top-left | |
top-left-corner | |
top-right | |
top-right-corner | |
], | |
:at_rules_with_styles => %w[ | |
-moz-keyframes | |
-o-keyframes | |
-webkit-keyframes | |
document | |
keyframes | |
media | |
supports | |
], | |
:protocols => ['http', 'https', :relative], | |
:properties => %w[ | |
-moz-appearance | |
-moz-background-inline-policy | |
-moz-box-sizing | |
-moz-column-count | |
-moz-column-fill | |
-moz-column-gap | |
-moz-column-rule | |
-moz-column-rule-color | |
-moz-column-rule-style | |
-moz-column-rule-width | |
-moz-column-width | |
-moz-font-feature-settings | |
-moz-font-language-override | |
-moz-hyphens | |
-moz-text-align-last | |
-moz-text-decoration-color | |
-moz-text-decoration-line | |
-moz-text-decoration-style | |
-moz-text-size-adjust | |
-ms-background-position-x | |
-ms-background-position-y | |
-ms-block-progression | |
-ms-content-zoom-chaining | |
-ms-content-zoom-limit | |
-ms-content-zoom-limit-max | |
-ms-content-zoom-limit-min | |
-ms-content-zoom-snap | |
-ms-content-zoom-snap-points | |
-ms-content-zoom-snap-type | |
-ms-content-zooming | |
-ms-filter | |
-ms-flex | |
-ms-flex-align | |
-ms-flex-direction | |
-ms-flex-order | |
-ms-flex-pack | |
-ms-flex-wrap | |
-ms-flow-from | |
-ms-flow-into | |
-ms-grid-column | |
-ms-grid-column-align | |
-ms-grid-column-span | |
-ms-grid-columns | |
-ms-grid-row | |
-ms-grid-row-align | |
-ms-grid-row-span | |
-ms-grid-rows | |
-ms-high-contrast-adjust | |
-ms-hyphenate-limit-chars | |
-ms-hyphenate-limit-lines | |
-ms-hyphenate-limit-zone | |
-ms-hyphens | |
-ms-ime-mode | |
-ms-interpolation-mode | |
-ms-layout-flow | |
-ms-layout-grid | |
-ms-layout-grid-char | |
-ms-layout-grid-line | |
-ms-layout-grid-mode | |
-ms-layout-grid-type | |
-ms-overflow-style | |
-ms-overflow-x | |
-ms-overflow-y | |
-ms-progress-appearance | |
-ms-scroll-chaining | |
-ms-scroll-limit | |
-ms-scroll-limit-x-max | |
-ms-scroll-limit-x-min | |
-ms-scroll-limit-y-max | |
-ms-scroll-limit-y-min | |
-ms-scroll-rails | |
-ms-scroll-snap-points-x | |
-ms-scroll-snap-points-y | |
-ms-scroll-snap-type | |
-ms-scroll-snap-x | |
-ms-scroll-snap-y | |
-ms-scroll-translation | |
-ms-scrollbar-arrow-color | |
-ms-scrollbar-base-color | |
-ms-scrollbar-darkshadow-color | |
-ms-scrollbar-face-color | |
-ms-scrollbar-highlight-color | |
-ms-scrollbar-shadow-color | |
-ms-scrollbar-track-color | |
-ms-text-align-last | |
-ms-text-autospace | |
-ms-text-justify | |
-ms-text-kashida-space | |
-ms-text-overflow | |
-ms-text-size-adjust | |
-ms-text-underline-position | |
-ms-touch-action | |
-ms-user-select | |
-ms-word-break | |
-ms-word-wrap | |
-ms-wrap-flow | |
-ms-wrap-margin | |
-ms-wrap-through | |
-ms-writing-mode | |
-ms-zoom | |
-webkit-align-content | |
-webkit-align-items | |
-webkit-align-self | |
-webkit-animation | |
-webkit-animation-delay | |
-webkit-animation-direction | |
-webkit-animation-duration | |
-webkit-animation-fill-mode | |
-webkit-animation-iteration-count | |
-webkit-animation-name | |
-webkit-animation-play-state | |
-webkit-animation-timing-function | |
-webkit-appearance | |
-webkit-backface-visibility | |
-webkit-background-blend-mode | |
-webkit-background-clip | |
-webkit-background-composite | |
-webkit-background-origin | |
-webkit-background-size | |
-webkit-blend-mode | |
-webkit-border-after | |
-webkit-border-after-color | |
-webkit-border-after-style | |
-webkit-border-after-width | |
-webkit-border-before | |
-webkit-border-before-color | |
-webkit-border-before-style | |
-webkit-border-before-width | |
-webkit-border-bottom-left-radius | |
-webkit-border-bottom-right-radius | |
-webkit-border-end | |
-webkit-border-end-color | |
-webkit-border-end-style | |
-webkit-border-end-width | |
-webkit-border-fit | |
-webkit-border-image | |
-webkit-border-radius | |
-webkit-border-start | |
-webkit-border-start-color | |
-webkit-border-start-style | |
-webkit-border-start-width | |
-webkit-border-top-left-radius | |
-webkit-border-top-right-radius | |
-webkit-box-align | |
-webkit-box-decoration-break | |
-webkit-box-flex | |
-webkit-box-flex-group | |
-webkit-box-lines | |
-webkit-box-ordinal-group | |
-webkit-box-orient | |
-webkit-box-pack | |
-webkit-box-reflect | |
-webkit-box-shadow | |
-webkit-box-sizing | |
-webkit-clip-path | |
-webkit-column-axis | |
-webkit-column-break-after | |
-webkit-column-break-before | |
-webkit-column-break-inside | |
-webkit-column-count | |
-webkit-column-gap | |
-webkit-column-progression | |
-webkit-column-rule | |
-webkit-column-rule-color | |
-webkit-column-rule-style | |
-webkit-column-rule-width | |
-webkit-column-span | |
-webkit-column-width | |
-webkit-columns | |
-webkit-filter | |
-webkit-flex | |
-webkit-flex-basis | |
-webkit-flex-direction | |
-webkit-flex-flow | |
-webkit-flex-grow | |
-webkit-flex-shrink | |
-webkit-flex-wrap | |
-webkit-flow-from | |
-webkit-flow-into | |
-webkit-font-size-delta | |
-webkit-font-smoothing | |
-webkit-grid-area | |
-webkit-grid-auto-columns | |
-webkit-grid-auto-flow | |
-webkit-grid-auto-rows | |
-webkit-grid-column | |
-webkit-grid-column-end | |
-webkit-grid-column-start | |
-webkit-grid-definition-columns | |
-webkit-grid-definition-rows | |
-webkit-grid-row | |
-webkit-grid-row-end | |
-webkit-grid-row-start | |
-webkit-justify-content | |
-webkit-line-clamp | |
-webkit-logical-height | |
-webkit-logical-width | |
-webkit-margin-after | |
-webkit-margin-after-collapse | |
-webkit-margin-before | |
-webkit-margin-before-collapse | |
-webkit-margin-bottom-collapse | |
-webkit-margin-collapse | |
-webkit-margin-end | |
-webkit-margin-start | |
-webkit-margin-top-collapse | |
-webkit-marquee | |
-webkit-marquee-direction | |
-webkit-marquee-increment | |
-webkit-marquee-repetition | |
-webkit-marquee-speed | |
-webkit-marquee-style | |
-webkit-mask | |
-webkit-mask-box-image | |
-webkit-mask-box-image-outset | |
-webkit-mask-box-image-repeat | |
-webkit-mask-box-image-slice | |
-webkit-mask-box-image-source | |
-webkit-mask-box-image-width | |
-webkit-mask-clip | |
-webkit-mask-composite | |
-webkit-mask-image | |
-webkit-mask-origin | |
-webkit-mask-position | |
-webkit-mask-position-x | |
-webkit-mask-position-y | |
-webkit-mask-repeat | |
-webkit-mask-repeat-x | |
-webkit-mask-repeat-y | |
-webkit-mask-size | |
-webkit-mask-source-type | |
-webkit-max-logical-height | |
-webkit-max-logical-width | |
-webkit-min-logical-height | |
-webkit-min-logical-width | |
-webkit-opacity | |
-webkit-order | |
-webkit-padding-after | |
-webkit-padding-before | |
-webkit-padding-end | |
-webkit-padding-start | |
-webkit-perspective | |
-webkit-perspective-origin | |
-webkit-perspective-origin-x | |
-webkit-perspective-origin-y | |
-webkit-region-break-after | |
-webkit-region-break-before | |
-webkit-region-break-inside | |
-webkit-region-fragment | |
-webkit-shape-inside | |
-webkit-shape-margin | |
-webkit-shape-outside | |
-webkit-shape-padding | |
-webkit-svg-shadow | |
-webkit-tap-highlight-color | |
-webkit-text-decoration | |
-webkit-text-decoration-color | |
-webkit-text-decoration-line | |
-webkit-text-decoration-style | |
-webkit-text-size-adjust | |
-webkit-touch-callout | |
-webkit-transform | |
-webkit-transform-origin | |
-webkit-transform-origin-x | |
-webkit-transform-origin-y | |
-webkit-transform-origin-z | |
-webkit-transform-style | |
-webkit-transition | |
-webkit-transition-delay | |
-webkit-transition-duration | |
-webkit-transition-property | |
-webkit-transition-timing-function | |
-webkit-user-drag | |
-webkit-wrap-flow | |
-webkit-wrap-through | |
align-content | |
align-items | |
align-self | |
alignment-adjust | |
alignment-baseline | |
all | |
anchor-point | |
animation | |
animation-delay | |
animation-direction | |
animation-duration | |
animation-fill-mode | |
animation-iteration-count | |
animation-name | |
animation-play-state | |
animation-timing-function | |
azimuth | |
backface-visibility | |
background | |
background-attachment | |
background-clip | |
background-color | |
background-image | |
background-origin | |
background-position | |
background-repeat | |
background-size | |
baseline-shift | |
binding | |
bleed | |
bookmark-label | |
bookmark-level | |
bookmark-state | |
border | |
border-bottom | |
border-bottom-color | |
border-bottom-left-radius | |
border-bottom-right-radius | |
border-bottom-style | |
border-bottom-width | |
border-collapse | |
border-color | |
border-image | |
border-image-outset | |
border-image-repeat | |
border-image-slice | |
border-image-source | |
border-image-width | |
border-left | |
border-left-color | |
border-left-style | |
border-left-width | |
border-radius | |
border-right | |
border-right-color | |
border-right-style | |
border-right-width | |
border-spacing | |
border-style | |
border-top | |
border-top-color | |
border-top-left-radius | |
border-top-right-radius | |
border-top-style | |
border-top-width | |
border-width | |
bottom | |
box-decoration-break | |
box-shadow | |
box-sizing | |
box-snap | |
box-suppress | |
break-after | |
break-before | |
break-inside | |
caption-side | |
chains | |
clear | |
clip | |
clip-path | |
clip-rule | |
color | |
color-interpolation | |
color-interpolation-filters | |
color-profile | |
color-rendering | |
column-count | |
column-fill | |
column-gap | |
column-rule | |
column-rule-color | |
column-rule-style | |
column-rule-width | |
column-span | |
column-width | |
columns | |
contain | |
content | |
counter-increment | |
counter-reset | |
counter-set | |
crop | |
cue | |
cue-after | |
cue-before | |
cursor | |
direction | |
display | |
display-inside | |
display-list | |
display-outside | |
dominant-baseline | |
elevation | |
empty-cells | |
enable-background | |
fill | |
fill-opacity | |
fill-rule | |
filter | |
flex | |
flex-basis | |
flex-direction | |
flex-flow | |
flex-grow | |
flex-shrink | |
flex-wrap | |
float | |
float-offset | |
flood-color | |
flood-opacity | |
flow-from | |
flow-into | |
font | |
font-family | |
font-feature-settings | |
font-kerning | |
font-language-override | |
font-size | |
font-size-adjust | |
font-stretch | |
font-style | |
font-synthesis | |
font-variant | |
font-variant-alternates | |
font-variant-caps | |
font-variant-east-asian | |
font-variant-ligatures | |
font-variant-numeric | |
font-variant-position | |
font-weight | |
glyph-orientation-horizontal | |
glyph-orientation-vertical | |
grid | |
grid-area | |
grid-auto-columns | |
grid-auto-flow | |
grid-auto-rows | |
grid-column | |
grid-column-end | |
grid-column-start | |
grid-row | |
grid-row-end | |
grid-row-start | |
grid-template | |
grid-template-areas | |
grid-template-columns | |
grid-template-rows | |
hanging-punctuation | |
height | |
hyphens | |
icon | |
image-orientation | |
image-rendering | |
image-resolution | |
ime-mode | |
initial-letters | |
inline-box-align | |
justify-content | |
justify-items | |
justify-self | |
kerning | |
left | |
letter-spacing | |
lighting-color | |
line-box-contain | |
line-break | |
line-grid | |
line-height | |
line-snap | |
line-stacking | |
line-stacking-ruby | |
line-stacking-shift | |
line-stacking-strategy | |
list-style | |
list-style-image | |
list-style-position | |
list-style-type | |
margin | |
margin-bottom | |
margin-left | |
margin-right | |
margin-top | |
marker | |
marker-end | |
marker-mid | |
marker-offset | |
marker-side | |
marker-start | |
marks | |
mask | |
mask-box | |
mask-box-outset | |
mask-box-repeat | |
mask-box-slice | |
mask-box-source | |
mask-box-width | |
mask-clip | |
mask-image | |
mask-origin | |
mask-position | |
mask-repeat | |
mask-size | |
mask-source-type | |
mask-type | |
max-height | |
max-lines | |
max-width | |
min-height | |
min-width | |
move-to | |
nav-down | |
nav-index | |
nav-left | |
nav-right | |
nav-up | |
object-fit | |
object-position | |
opacity | |
order | |
orphans | |
outline | |
outline-color | |
outline-offset | |
outline-style | |
outline-width | |
overflow | |
overflow-wrap | |
overflow-x | |
overflow-y | |
padding | |
padding-bottom | |
padding-left | |
padding-right | |
padding-top | |
page | |
page-break-after | |
page-break-before | |
page-break-inside | |
page-policy | |
pause | |
pause-after | |
pause-before | |
perspective | |
perspective-origin | |
pitch | |
pitch-range | |
play-during | |
pointer-events | |
position | |
presentation-level | |
quotes | |
region-fragment | |
resize | |
rest | |
rest-after | |
rest-before | |
richness | |
right | |
rotation | |
rotation-point | |
ruby-align | |
ruby-merge | |
ruby-position | |
shape-image-threshold | |
shape-margin | |
shape-outside | |
shape-rendering | |
size | |
speak | |
speak-as | |
speak-header | |
speak-numeral | |
speak-punctuation | |
speech-rate | |
stop-color | |
stop-opacity | |
stress | |
string-set | |
stroke | |
stroke-dasharray | |
stroke-dashoffset | |
stroke-linecap | |
stroke-linejoin | |
stroke-miterlimit | |
stroke-opacity | |
stroke-width | |
tab-size | |
table-layout | |
text-align | |
text-align-last | |
text-anchor | |
text-combine-horizontal | |
text-combine-upright | |
text-decoration | |
text-decoration-color | |
text-decoration-line | |
text-decoration-skip | |
text-decoration-style | |
text-emphasis | |
text-emphasis-color | |
text-emphasis-position | |
text-emphasis-style | |
text-height | |
text-indent | |
text-justify | |
text-orientation | |
text-overflow | |
text-rendering | |
text-shadow | |
text-size-adjust | |
text-space-collapse | |
text-transform | |
text-underline-position | |
text-wrap | |
top | |
touch-action | |
transform | |
transform-origin | |
transform-style | |
transition | |
transition-delay | |
transition-duration | |
transition-property | |
transition-timing-function | |
unicode-bidi | |
unicode-range | |
vertical-align | |
visibility | |
voice-balance | |
voice-duration | |
voice-family | |
voice-pitch | |
voice-range | |
voice-rate | |
voice-stress | |
voice-volume | |
volume | |
white-space | |
widows | |
width | |
will-change | |
word-break | |
word-spacing | |
word-wrap | |
wrap-flow | |
wrap-through | |
writing-mode | |
z-index | |
] | |
} | |
) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment