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/
- 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.
-
#contains(input, substr) ⇒ Object
————————————————————————– contains: 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:.
-
#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:
113 114 115 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 113 def contain_substr(input, substr) input.include?(substr) ? true : false end |
#contains(input, substr) ⇒ Object
contains: check if a string contains a substring
Example:
103 104 105 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 103 def contains(input, substr) input.include?(substr) ? 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
158 159 160 161 162 163 164 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 158 def difference(input, arr) if ( input.kind_of?(Array) ) input - arr else [] end end |
#intersection(input, arr) ⇒ Object
182 183 184 185 186 187 188 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 182 def intersection(input, arr) if ( input.kind_of?(Array) ) input & arr else [] end end |
#is_array(input) ⇒ Object
353 354 355 356 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 353 def is_array(input) input.kind_of?(Array) return type end |
#is_fixnum(input) ⇒ Object
344 345 346 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 344 def is_fixnum(input) input.kind_of?(Fixnum) end |
#is_hash(input) ⇒ Object
358 359 360 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 358 def is_hash(input) input.kind_of?(Hash) end |
#is_numeric(input) ⇒ Object
348 349 350 351 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 348 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:
340 341 342 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 340 def is_string(input) input.kind_of?(String) end |
#is_type(input) ⇒ Object
is_type:
Example:
327 328 329 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 327 def is_type(input) "#{input.class}".to_s.strip.downcase end |
#json(input) ⇒ Object
json:
Example:
317 318 319 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 317 def json(input) input.to_json end |
#merge(input, hash) ⇒ Object
merge: merge two hashes (input <- hash)
Example:
{% assign settings = options|merge:defaults %}
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 76 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:
380 381 382 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 380 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:
369 370 371 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 369 def newline_to_space(input) input.to_s.gsub(/\n/, SPACE) end |
#rand(input) ⇒ Object
rand:
Example:
306 307 308 309 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 306 def rand(input) max = input.to_i Random.new.rand(1..max) end |
#read_index(input) ⇒ Object
read_index:
Example:
297 298 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 297 def read_index(input) end |
#regex_replace(input, regex, replacement = NOTHING) ⇒ Object
regex_replace:
Example:
133 134 135 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 133 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:
123 124 125 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 123 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:
266 267 268 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 266 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:
256 257 258 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 256 def strip_all_spaces(input) input.to_s.gsub(Regexp.new(ALL_SPACES), SPACE) end |
#strip_comments(input) ⇒ Object
strip_comments:
Example:
206 207 208 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 206 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
216 217 218 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 216 def strip_doctype_html(input) input.to_s.gsub(Regexp.new(DOCTYPE_HTML), NOTHING) end |
#strip_empty_lines(input) ⇒ Object
strip_empty_lines:
Example:
196 197 198 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 196 def strip_empty_lines(input) input.to_s.gsub(Regexp.new(EMPTY_LINE), NOTHING) end |
#strip_html_comments(input) ⇒ Object
strip_html_comments:
Example:
226 227 228 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 226 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:
236 237 238 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 236 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:
276 277 278 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 276 def strip_liquid_tag(input) input.to_s.gsub(LIQUID_TAG, SPACE) end |
#strip_multiple_spaces(input) ⇒ Object
strip_multiple_spaces:
Example:
246 247 248 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 246 def strip_multiple_spaces(input) input.to_s.gsub(Regexp.new(MULTIPLE_SPACES), SPACE) end |
#strip_my_html(input) ⇒ Object
strip_my_html:
Example:
286 287 288 289 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 286 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 |
#union(input, arr) ⇒ Object
def difference_both_unique(input, arr)
if ( input.kind_of?(Array) )
input - arr | arr - input
else
[]
end
end
174 175 176 177 178 179 180 |
# File 'lib/starter_web/_plugins/filter/filters.rb', line 174 def union(input, arr) if ( input.kind_of?(Array) ) input | arr else [] end end |