Module: Jekyll::J1_Filters
- Defined in:
- lib/starter_web/_plugins/filter/filters.rb
Constant Summary collapse
- EMPTY =
''
- DOCTYPE_HTML =
'<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">'
- EMPTY_LINE =
EMPTY_LINE = /^s*n/
/^\s*$\n/
- SURRUNDING_QUOTES =
/^\h*\K"|"(?=\h*$)/
- MULTIPLE_SPACES =
/ +/
- ALL_SPACES =
/\s+/
- COMMENT_LINE =
/^\s*#.*\n|\s*#.*\n/
- HTML_COMMENT_LINE =
HTML_COMMENT_LINE = /^s*<!–.*–>|s*<!–.*–>/
/<!--[\d\D]*?-->/
- JS_COMMENT_LINE =
/^\s*\/\/[\d\D]*?\s*$/
- NOTHING =
''.freeze
- SPACE =
' '.freeze
- ADOC_TAG_LINE =
/^\s*(:\S+\:.*$)/
- JBX_INDEX_TAG =
/\s+!!(\S+)!!\s+/
- ADOC_HEAD_LINE =
/^\s*(=+\s+\S+.*$)/
- LIQUID_TAG =
/({%\s*\S+\s*%})/
- ADOC_INLINE_COMMENT =
/^\s*(\/\/.*$)/
Instance Method Summary collapse
-
#contain_substr(input, substr) ⇒ Object
————————————————————————– contain_substr: check if a string contains a substring.
-
#difference(input, arr) ⇒ Object
————————————————————————– Managing Arrays input - arr: returns any elements from input that are NOT in arr arr - input: returns any elements from arr that are not in a arr | input: returns the unique set from input AND arr arr & input: returns the intersection elements of input AND arr pipe (|): returns the unique set of elements for BOTH arrays.
- #intersection(input, arr) ⇒ Object
- #is_array(input) ⇒ Object
- #is_fixnum(input) ⇒ Object
- #is_hash(input) ⇒ Object
- #is_numeric(input) ⇒ Object
-
#is_string(input) ⇒ Object
————————————————————————– is_XXXX:.
-
#is_type(input) ⇒ Object
————————————————————————– is_type:.
-
#json(input) ⇒ Object
————————————————————————– json:.
-
#merge(input, hash) ⇒ Object
————————————————————————– merge: merge two hashes (input <- hash).
-
#newline_to_nothing(input) ⇒ Object
————————————————————————– newline_to_space: Replace all newlines by space.
-
#newline_to_space(input) ⇒ Object
————————————————————————– newline_to_space: Replace all newlines by space.
-
#rand(input) ⇒ Object
————————————————————————– rand:.
-
#read_index(input) ⇒ Object
————————————————————————– read_index:.
-
#regex_replace(input, regex, replacement = NOTHING) ⇒ Object
————————————————————————– regex_replace:.
-
#regex_replace_first(input, regex, replacement = NOTHING) ⇒ Object
————————————————————————– regex_replace_first: replace the FIRST occurence.
-
#strip_adoc(input) ⇒ Object
————————————————————————– strip_adoc:.
-
#strip_all_spaces(input) ⇒ Object
————————————————————————– strip_all_spaces:.
-
#strip_comments(input) ⇒ Object
————————————————————————– strip_comments:.
-
#strip_doctype_html(input) ⇒ Object
————————————————————————– strip_doctype_html:.
-
#strip_empty_lines(input) ⇒ Object
————————————————————————– strip_empty_lines:.
-
#strip_html_comments(input) ⇒ Object
————————————————————————– strip_html_comments:.
-
#strip_js_comments(input) ⇒ Object
————————————————————————– strip_js_comments:.
-
#strip_liquid_tag(input) ⇒ Object
————————————————————————– strip_liquid_tag:.
-
#strip_multiple_spaces(input) ⇒ Object
————————————————————————– strip_multiple_spaces:.
-
#strip_my_html(input) ⇒ Object
————————————————————————– strip_my_html:.
-
#strip_surrounding_quotes(input) ⇒ Object
————————————————————————– strip_surrounding_quotes:.
-
#union(input, arr) ⇒ Object
def difference_both_unique(input, arr) if ( input.kind_of?(Array) ) input - arr | arr - input else [] end end.
Instance Method Details
#contain_substr(input, substr) ⇒ Object
contain_substr: check if a string contains a substring
Example:
105 106 107 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 105 def contain_substr(input, substr) input.include?(substr.to_s) ? true : false end |
#difference(input, arr) ⇒ Object
Managing Arrays
input - arr: returns any elements from input that are NOT in arr
arr - input: returns any elements from arr that are not in a
arr | input: returns the unique set from input AND arr
arr & input: returns the intersection elements of input AND arr
pipe (|): returns the unique set of elements for BOTH arrays
Example|s:
{% assign input = '1,2,3,4,5' | split: ',' %}
{% assign arr = '1,2,3' | split: ',' %}
{% assign difference = input | difference: arr %}
{% assign union = input | union: arr %}
{% assign intersection = input | intersection: arr %}
NOTE
See: https://stackoverflow.com/questions/5678108/how-can-i-get-the-intersection-union-and-subset-of-arrays-in-ruby
150 151 152 153 154 155 156 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 150 def difference(input, arr) if ( input.kind_of?(Array) ) input - arr else [] end end |
#intersection(input, arr) ⇒ Object
174 175 176 177 178 179 180 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 174 def intersection(input, arr) if ( input.kind_of?(Array) ) input & arr else [] end end |
#is_array(input) ⇒ Object
374 375 376 377 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 374 def is_array(input) input.kind_of?(Array) return type end |
#is_fixnum(input) ⇒ Object
365 366 367 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 365 def is_fixnum(input) input.kind_of?(Fixnum) end |
#is_hash(input) ⇒ Object
379 380 381 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 379 def is_hash(input) input.kind_of?(Hash) end |
#is_numeric(input) ⇒ Object
369 370 371 372 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 369 def is_numeric(input) return true if input =~ /\A\d+\Z/ true if Float(input) rescue false end |
#is_string(input) ⇒ Object
is_XXXX:
"Duck typing" methods to determine the object (base) class
returns true|false
Example:
361 362 363 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 361 def is_string(input) input.kind_of?(String) end |
#is_type(input) ⇒ Object
is_type:
Example:
348 349 350 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 348 def is_type(input) "#{input.class}".to_s.strip.downcase end |
#json(input) ⇒ Object
json:
Example:
319 320 321 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 319 def json(input) input.to_json end |
#merge(input, hash) ⇒ Object
merge: merge two hashes (input <- hash)
Example:
{% assign settings = options|merge:defaults %}
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 78 def merge(input, hash) unless input.respond_to?(:to_hash) # value = input == EMPTY ? 'empty' : input is_caller = caller[0][/`([^']*)'/, 1] raise ArgumentError.new('merge filter requires at least a hash for 1st arg, found caller|args: ' + "#{is_caller}|#{input}:#{hash}") end # if hash to merge is NOT a hash or empty return first hash (input) unless hash.respond_to?(:to_hash) input end if hash.nil? || hash.empty? input else merged = input.dup hash.each do |k, v| merged[k] = v end merged end end |
#newline_to_nothing(input) ⇒ Object
newline_to_space:
Replace all newlines by space
Example:
401 402 403 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 401 def newline_to_nothing(input) input.to_s.gsub(/\n/, NOTHING) end |
#newline_to_space(input) ⇒ Object
newline_to_space:
Replace all newlines by space
Example:
390 391 392 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 390 def newline_to_space(input) input.to_s.gsub(/\n/, SPACE) end |
#rand(input) ⇒ Object
rand:
Example:
308 309 310 311 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 308 def rand(input) max = input.to_i Random.new.rand(1..max) end |
#read_index(input) ⇒ Object
read_index:
Example:
299 300 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 299 def read_index(input) end |
#regex_replace(input, regex, replacement = NOTHING) ⇒ Object
regex_replace:
Example:
125 126 127 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 125 def regex_replace(input, regex, replacement = NOTHING) input.to_s.gsub(Regexp.new(regex), replacement.to_s) end |
#regex_replace_first(input, regex, replacement = NOTHING) ⇒ Object
regex_replace_first: replace the FIRST occurence
Example:
115 116 117 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 115 def regex_replace_first(input, regex, replacement = NOTHING) input.to_s.sub(Regexp.new(regex), replacement.to_s) end |
#strip_adoc(input) ⇒ Object
strip_adoc:
Example:
268 269 270 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 268 def strip_adoc(input) input.to_s.gsub(ADOC_TAG_LINE, SPACE).gsub(ADOC_INLINE_COMMENT, SPACE).gsub(ADOC_HEAD_LINE, SPACE) end |
#strip_all_spaces(input) ⇒ Object
strip_all_spaces:
Example:
258 259 260 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 258 def strip_all_spaces(input) input.to_s.gsub(Regexp.new(ALL_SPACES), SPACE) end |
#strip_comments(input) ⇒ Object
strip_comments:
Example:
208 209 210 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 208 def strip_comments(input) input.to_s.gsub(Regexp.new(COMMENT_LINE), NOTHING) end |
#strip_doctype_html(input) ⇒ Object
strip_doctype_html:
Example: stribg_var | strip_doctype_html
218 219 220 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 218 def strip_doctype_html(input) input.to_s.gsub(Regexp.new(DOCTYPE_HTML), NOTHING) end |
#strip_empty_lines(input) ⇒ Object
strip_empty_lines:
Example:
198 199 200 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 198 def strip_empty_lines(input) input.to_s.gsub(Regexp.new(EMPTY_LINE), NOTHING) end |
#strip_html_comments(input) ⇒ Object
strip_html_comments:
Example:
228 229 230 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 228 def strip_html_comments(input) input.to_s.gsub(Regexp.new(HTML_COMMENT_LINE), NOTHING) end |
#strip_js_comments(input) ⇒ Object
strip_js_comments:
Example:
238 239 240 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 238 def strip_js_comments(input) input.to_s.gsub(Regexp.new(JS_COMMENT_LINE), NOTHING) end |
#strip_liquid_tag(input) ⇒ Object
strip_liquid_tag:
Example:
278 279 280 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 278 def strip_liquid_tag(input) input.to_s.gsub(LIQUID_TAG, SPACE) end |
#strip_multiple_spaces(input) ⇒ Object
strip_multiple_spaces:
Example:
248 249 250 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 248 def strip_multiple_spaces(input) input.to_s.gsub(Regexp.new(MULTIPLE_SPACES), SPACE) end |
#strip_my_html(input) ⇒ Object
strip_my_html:
Example:
288 289 290 291 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 288 def strip_my_html(input) space = ' '.freeze input.to_s.gsub(/<script.*?<\/script>/m, space).gsub(/<!--.*?-->/m, space).gsub(/<style.*?<\/style>/m, space).gsub(/<.*?>/m, space) end |
#strip_surrounding_quotes(input) ⇒ Object
strip_surrounding_quotes:
Example:
188 189 190 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 188 def strip_surrounding_quotes(input) input.to_s.gsub(Regexp.new(SURRUNDING_QUOTES), NOTHING) end |
#union(input, arr) ⇒ Object
def difference_both_unique(input, arr)
if ( input.kind_of?(Array) )
input - arr | arr - input
else
[]
end
end
166 167 168 169 170 171 172 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 166 def union(input, arr) if ( input.kind_of?(Array) ) input | arr else [] end end |