sigmund_liquid 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NTIwZmM0NzA4NmMzMWM4OWY4MWUzZGFhYjZlNjVlM2E4ZGJlZTljNQ==
5
+ data.tar.gz: !binary |-
6
+ N2U5NDc4MmIwODM2NmVhYjIzN2EzOTFmZWQyMjZiYzc5MTM0NmM2Yg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ OTkxOGQ3N2E3ZGEyY2U2YjFmMzViM2M5ODY1OGI1NmNiNWViODU4MTk5M2E1
10
+ ZGZjZTI5MzRlMDQ2YzRlZjA3ZWU4OWMwYTYxNTljNGIzMWY5NmE5YWYyODIx
11
+ NWQ0ZmYwMjk4YWQwZjBlYmViZTUyNmJkNjFiM2NjNzNmMTY0YTM=
12
+ data.tar.gz: !binary |-
13
+ ZmEzYmUxMjc1NmRlMWJkNjBlYjFiYzk3ODM1ZDZkOGY2OTM0NDNiNDJiZTI1
14
+ NzE0ZTUzNjU1NzM3OTc2ZGE0NmFiZjZjNjBiODRkOGNkMDgyN2ZmNDgwMjRi
15
+ Y2Y3ODU1NDkxZTY5ZjYzMWQ4YWU0NDhjNGJiYTdjMjRlNmRjN2Q=
data/lib/sigmund.rb ADDED
@@ -0,0 +1,5 @@
1
+
2
+ require 'sigmund/liquid'
3
+
4
+ module Sigmund
5
+ end
@@ -0,0 +1,6 @@
1
+ %w{. tags drops filters}.each do |dir|
2
+ Dir[File.join(File.dirname(__FILE__), 'liquid', dir, '*.rb')].each { |lib| require lib }
3
+ end
4
+
5
+ module Liquid
6
+ end
@@ -0,0 +1,101 @@
1
+ module Sigmund
2
+ module Liquid
3
+ module Tags
4
+ class ChildrenNav < ::Liquid::Tag
5
+
6
+ Syntax = /(#{::Liquid::Expression}+)?/
7
+
8
+ def initialize(tag_name, markup, tokens, context)
9
+ if markup =~ Syntax
10
+ @options = { id: 'nav', depth: 1, class: '', active_class: 'active'}
11
+ markup.scan(::Liquid::TagAttributes) { |key, value| @options[key.to_sym] = value.gsub(/"|'/, '') }
12
+ @options[:exclude] = Regexp.new(@options[:exclude]) if @options[:exclude]
13
+ else
14
+ raise ::Liquid::SyntaxError.new("Syntax Error in 'children_nav ' - Valid syntax: children_nav <options>")
15
+ end
16
+ super
17
+ end
18
+
19
+ def render(context)
20
+ @site = context.registers[:site]
21
+ @page = context.registers[:page] #current page for active class
22
+ page = get_page_by_slug()
23
+ render_entry_children(context, page, 1)
24
+ end
25
+
26
+ private
27
+
28
+ # Determines root node for the list with the page slug
29
+ def get_page_by_slug()
30
+ return [] unless @options[:page_slug]
31
+ page = @site.pages.where( slug: @options[:page_slug] ).first
32
+ if page.nil?
33
+ raise ::Liquid::SyntaxError.new("Slug '#{@options[:page_slug]}'' doesn't exists")
34
+ end
35
+ page
36
+ end
37
+
38
+ # Returns a list element, a link to the page and its children
39
+ def render_entry_link(context, page, css, depth)
40
+ selected = @page.fullpath =~ /^#{page.fullpath}(\/.*)?$/ ? " #{@options[:active_class]}" : ''
41
+
42
+ icon = @options[:icon] ? '<span></span>' : ''
43
+ title = render_title(context, page)
44
+ label = %{#{icon if @options[:icon] != 'after' }#{title}#{icon if @options[:icon] == 'after' }}
45
+
46
+ href = File.join('/', @site.localized_page_fullpath(page))
47
+
48
+ output = %{<li id="#{page.slug.to_s.dasherize}-link" class="link#{selected} #{css}">}
49
+ output << %{<a href="#{href}">#{label}</a>}
50
+ output << render_entry_children(context, page, depth.succ) if (depth.succ <= @options[:depth].to_i)
51
+ output << %{</li>}
52
+
53
+ output.strip
54
+ end
55
+
56
+ # Recursively creates a nested unordered list for the depth specified
57
+ def render_entry_children(context, page, depth)
58
+ output = %{}
59
+ children = page.children_with_minimal_attributes.reject { |c| !include_page?(c) }
60
+ if children.present?
61
+ output = %{<ul id="#{@options[:id]}-#{page.slug.to_s.dasherize}" >}
62
+ children.each do |c, page|
63
+ css = []
64
+ css << 'first' if children.first == c
65
+ css << 'last' if children.last == c
66
+ output << render_entry_link(context, c, css.join(' '), depth)
67
+ end
68
+ output << %{</ul>}
69
+ end
70
+
71
+ output
72
+ end
73
+
74
+ def render_title(context, page)
75
+ if @options[:liquid_render]
76
+ context.stack do
77
+ context['page'] = page
78
+ @options[:liquid_render].render(context)
79
+ end
80
+ else
81
+ page.title
82
+ end
83
+ end
84
+
85
+ # Determines whether or not a page should be a part of the menu
86
+ def include_page?(page)
87
+ if !page.listed? || page.templatized? || !page.published?
88
+ false
89
+ elsif @options[:exclude]
90
+ (page.fullpath =~ @options[:exclude]).nil?
91
+ else
92
+ true
93
+ end
94
+ end
95
+
96
+ end
97
+
98
+ ::Liquid::Template.register_tag('children_nav', ChildrenNav)
99
+ end
100
+ end
101
+ end
File without changes
@@ -0,0 +1,5 @@
1
+ module Sigmund
2
+ module Liquid
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sigmund_liquid
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - amainguy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '3'
55
+ description: Overrides or add functionalities to locomotive_liquid gem
56
+ email:
57
+ - amainguy@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - lib/sigmund/liquid/tags/children_nav.rb
63
+ - lib/sigmund/liquid/tags/custom_nav.rb
64
+ - lib/sigmund/liquid/version.rb
65
+ - lib/sigmund/liquid.rb
66
+ - lib/sigmund.rb
67
+ homepage: ''
68
+ licenses:
69
+ - MIT
70
+ metadata: {}
71
+ post_install_message:
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubyforge_project:
87
+ rubygems_version: 2.0.2
88
+ signing_key:
89
+ specification_version: 4
90
+ summary: Custom liquid elements
91
+ test_files: []