2017-06-08 18:24:29 +00:00
|
|
|
namespace :search do
|
2017-06-09 13:43:20 +00:00
|
|
|
desc 'Generate the files needed for search functionality'
|
2017-06-08 18:24:29 +00:00
|
|
|
task :init do
|
2017-06-09 13:43:20 +00:00
|
|
|
puts 'Creating search data json file...'
|
2018-10-24 20:34:11 +00:00
|
|
|
mkdir_p 'assets/js'
|
2018-10-23 16:51:11 +00:00
|
|
|
touch 'assets/js/search-data.json'
|
2019-01-16 02:19:37 +00:00
|
|
|
content = %Q[{{ page.content | markdownify | strip_html | escape_once | remove: 'Table of contents' | remove: '```' | remove: '---' | replace: '\\', ' ' | normalize_whitespace }}]
|
2018-10-23 17:09:23 +00:00
|
|
|
puts 'Done.'
|
2018-10-23 16:51:11 +00:00
|
|
|
puts 'Generating content...'
|
|
|
|
|
|
|
|
File.open('assets/js/search-data.json', 'w') do |f|
|
2017-06-09 14:58:35 +00:00
|
|
|
f.puts '---
|
|
|
|
---
|
|
|
|
{
|
2019-01-16 01:48:00 +00:00
|
|
|
{% for page in site.html_pages %}{% if page.search_exclude != true %}"{{ forloop.index0 }}": {
|
2017-06-09 14:58:35 +00:00
|
|
|
"id": "{{ forloop.index0 }}",
|
2019-01-31 18:02:06 +00:00
|
|
|
"title": "{{ page.title | replace: \'&\', \'&\' }}",
|
2019-02-02 19:46:46 +00:00
|
|
|
"content": "'+content+'",
|
2019-01-16 05:31:30 +00:00
|
|
|
"url": "{{ page.url | absolute_url }}",
|
|
|
|
"relUrl": "{{ page.url }}"
|
2019-01-16 01:48:00 +00:00
|
|
|
}{% unless forloop.last %},{% endunless %}
|
2017-06-09 14:58:35 +00:00
|
|
|
{% endif %}{% endfor %}
|
|
|
|
}'
|
2017-06-08 18:24:29 +00:00
|
|
|
end
|
2018-10-23 16:51:11 +00:00
|
|
|
puts 'Done.'
|
2017-06-04 21:49:20 +00:00
|
|
|
end
|
2017-06-08 13:43:33 +00:00
|
|
|
end
|