markets / jekyll-timeago

โŒ› Ruby library to compute distance of dates in words. Originally built for Jekyll.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Filters {{ page.date | timeago }} become invalid date

diazsepta opened this issue ยท comments

Plugin is worked, but jekyll get an invalid date when use filter like this:

<time datetime="{{ post.date | date_to_xmlschema }}">
        {{ page.date | timeago }}
</time>

or other use like post.date. but is work when used standard filter {{ site.time | timeago }} so i think that wrong format my date Front Matter, but it was not. the output page.date is 2019-07-27 19:05:49 +0700 my jekyll version is 3.8.6 and this my _config.yml

timezone: Asia/Jakarta
plugins:
  - jekyll-timeago

jekyll_timeago:
  depth: 4
  translations_path: '/path_to_your_translations/*.yaml'
  default_locale: 'en'
  fallbacks: true
  available_locales:
    - 'en'
    - 'es'
    - 'fr'

this is --trace output:

Liquid Exception: Liquid error (line 8): invalid date in /_layouts/home.html
bundler: failed to load command: jekyll (/home/diaz/gems/bin/jekyll)
Liquid::ArgumentError: Liquid error (line 8): invalid date
  /home/diaz/gems/gems/jekyll-timeago-0.13.1/lib/jekyll-timeago/core.rb:36:in `parse'
  /home/diaz/gems/gems/jekyll-timeago-0.13.1/lib/jekyll-timeago/core.rb:36:in `validate_date'
  /home/diaz/gems/gems/jekyll-timeago-0.13.1/lib/jekyll-timeago/core.rb:25:in `timeago'
  /home/diaz/gems/gems/jekyll-timeago-0.13.1/lib/jekyll-timeago/jekyll_integration.rb:37:in `timeago'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/strainer.rb:56:in `invoke'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/context.rb:86:in `invoke'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/variable.rb:84:in `block in render'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/variable.rb:82:in `each'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/variable.rb:82:in `inject'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/variable.rb:82:in `render'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/block_body.rb:103:in `render_node_to_output'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/block_body.rb:80:in `render'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/tags/for.rb:160:in `block (2 levels) in render_segment'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/tags/for.rb:158:in `each'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/tags/for.rb:158:in `block in render_segment'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/context.rb:123:in `stack'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/tags/for.rb:150:in `render_segment'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/tags/for.rb:79:in `render'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/block_body.rb:103:in `render_node_to_output'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/block_body.rb:82:in `render'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/template.rb:208:in `block in render'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/template.rb:242:in `with_profiling'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/template.rb:207:in `render'
  /home/diaz/gems/gems/liquid-4.0.3/lib/liquid/template.rb:220:in `render!'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/liquid_renderer/file.rb:30:in `block (2 levels) in render!'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/liquid_renderer/file.rb:42:in `measure_bytes'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/liquid_renderer/file.rb:29:in `block in render!'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/liquid_renderer/file.rb:49:in `measure_time'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/liquid_renderer/file.rb:28:in `render!'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/renderer.rb:126:in `render_liquid'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/renderer.rb:195:in `render_layout'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/renderer.rb:158:in `place_in_layouts'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/renderer.rb:88:in `render_document'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/renderer.rb:62:in `run'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/site.rb:479:in `render_regenerated'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/site.rb:472:in `block in render_pages'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/site.rb:471:in `each'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/site.rb:471:in `render_pages'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/site.rb:192:in `render'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/site.rb:71:in `process'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/command.rb:28:in `process_site'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/commands/build.rb:65:in `build'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/commands/build.rb:36:in `process'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/commands/serve.rb:93:in `block in start'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/commands/serve.rb:93:in `each'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/commands/serve.rb:93:in `start'
  /home/diaz/gems/gems/jekyll-3.8.6/lib/jekyll/commands/serve.rb:75:in `block (2 levels) in init_with_program'
  /home/diaz/gems/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `block in execute'
  /home/diaz/gems/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `each'
  /home/diaz/gems/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
  /home/diaz/gems/gems/mercenary-0.3.6/lib/mercenary/program.rb:42:in `go'
  /home/diaz/gems/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
  /home/diaz/gems/gems/jekyll-3.8.6/exe/jekyll:15:in `<top (required)>'
  /home/diaz/gems/bin/jekyll:23:in `load'
  /home/diaz/gems/bin/jekyll:23:in `<top (required)>'

Hi @diazsepta ๐Ÿ‘‹

First weird thing I see ๐Ÿ‘€ => in your _config.yml you copy-pasted the example from the docs, to customize the plugin options:

jekyll_timeago:
  depth: 4
  translations_path: '/path_to_your_translations/*.yaml'
  default_locale: 'en'
  fallbacks: true
  available_locales:
    - 'en'
    - 'es'
    - 'fr'

You only need to override those entries in case you want to change defaults, and of course with "valid" options: /path_to_your_translations/*.yaml is just an example, that path probably doesn't exist in your repo... You can just โœ‚๏ธ the entire section from the _config.yml, if defaults are fine for you.

@markets thanks for reply, you right, its work now. but i have new problem. i think your plugin not work on _includes statement (maybe, if I not wrong ๐Ÿ˜‚), so i want to make my header post with timeago, but the header is was includes on _includes/header.html which will be called on _layouts/default.html. now the is problem, when i puts {{ page.date | timeago }} on _includes/header.html it will be get error:

Liquid Exception: Liquid error (_includes/header.html line 2): invalid date included in /_layouts/default.html

i try puts on any place in _includes/header.html or any file on _includes folder and it's still error. but {{ page.date | timeago }} work perfectly on _layouts\post.html & _layouts\home.html maybe you can explain to me, what is my problem now?

I'm not 100% sure (I have no access to code, so this is just intuition...), but I think the last problem is due to: you can't access the page object in "includes" files (cause they are generic to the whole site, and not page specific like page.date).

Maybe this guide will be helpful: https://jekyllrb.com/docs/includes/#using-variables-names-for-the-include-file. The whole section explains really well how "includes" works in Jekyll. I recommend you to read it to understand better how this Jekyll feature works.

Please re-open in case you suspect this is really a jekyll-timeago bug and not a Jekyll misuse.