notes/lib/tasks/search.rake

28 lines
1.2 KiB
Ruby
Raw Normal View History

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-09-10 15:29:10 +00:00
content = %Q[{{ page.content | markdownify | replace: '</h', ' . </h' | replace: '<hr', ' . <hr' | replace: '</p', ' . </p' | replace: '</ul', ' . </ul' | replace: '</tr', ' . </tr' | replace: '</li', ' | </li' | replace: '</td', ' | </td' | strip_html | escape_once | remove: 'Table of contents' | remove: '```' | remove: '---' | replace: '\', ' ' | replace: ' . . . ', ' . ' | 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-09-10 15:29:10 +00:00
{% assign comma = false %}
{% for page in site.html_pages %}{% if page.search_exclude != true %}{% if comma == true%},{% endif %}"{{ forloop.index0 }}": {
"title": "{{ page.title | replace: \'&amp;\', \'&\' }}",
"content": "\'+content+\'",
"url": "{{ page.url | absolute_url }}",
"relUrl": "{{ page.url }}"
2019-09-10 15:29:10 +00:00
}{% assign comma = true %}
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