Skip to content
Snippets Groups Projects
search.rake 1.17 KiB
Newer Older
Patrick Marsceill's avatar
Patrick Marsceill committed
namespace :search do
Patrick Marsceill's avatar
Patrick Marsceill committed
  desc 'Generate the files needed for search functionality'
Patrick Marsceill's avatar
Patrick Marsceill committed
  task :init do
Patrick Marsceill's avatar
Patrick Marsceill committed
    puts 'Creating search data json file...'
    mkdir_p 'assets/js'
    touch 'assets/js/search-data.json'
    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 }}]
    puts 'Done.'
    puts 'Generating content...'

    File.open('assets/js/search-data.json', 'w') do |f|
Patrick Marsceill's avatar
Patrick Marsceill committed
      f.puts '---
---
{
Patrick Marsceill's avatar
Patrick Marsceill committed
  {% assign comma = false %}
  {% for page in site.html_pages %}{% if page.search_exclude != true %}{% if comma == true%},{% endif %}"{{ forloop.index0 }}": {
websTTer's avatar
websTTer committed
    "title": "{{ page.title | replace: \'&amp;\', \'&\' }}",
    "content": "'+content+'",
    "url": "{{ page.url | absolute_url }}",
    "relUrl": "{{ page.url }}"
Patrick Marsceill's avatar
Patrick Marsceill committed
  }{% assign comma = true %}
Patrick Marsceill's avatar
Patrick Marsceill committed
  {% endif %}{% endfor %}
}'
Patrick Marsceill's avatar
Patrick Marsceill committed
    end
    puts 'Done.'
Patrick Marsceill's avatar
Patrick Marsceill committed
end