re-organize filters + drop unused tags
This commit is contained in:
parent
21c5e8a627
commit
f0e41205fd
@ -1,5 +1,6 @@
|
|||||||
require 'locomotive/liquid/drops/base'
|
require 'locomotive/liquid/drops/base'
|
||||||
require 'locomotive/liquid/drops/proxy_collection'
|
require 'locomotive/liquid/drops/proxy_collection'
|
||||||
|
require 'locomotive/liquid/filters/base'
|
||||||
|
|
||||||
%w{. tags drops filters}.each do |dir|
|
%w{. tags drops filters}.each do |dir|
|
||||||
Dir[File.join(File.dirname(__FILE__), 'liquid', dir, '*.rb')].each { |lib| require lib }
|
Dir[File.join(File.dirname(__FILE__), 'liquid', dir, '*.rb')].each { |lib| require lib }
|
||||||
|
@ -6,7 +6,7 @@ module Locomotive
|
|||||||
# Returns a link tag that browsers and news readers can use to auto-detect an RSS or ATOM feed.
|
# Returns a link tag that browsers and news readers can use to auto-detect an RSS or ATOM feed.
|
||||||
# input: url of the feed
|
# input: url of the feed
|
||||||
# example:
|
# example:
|
||||||
# {{ '/foo/bar' | auto_discovery_link_tag: 'rel:alternate', 'type:atom', 'title:A title' }}
|
# {{ '/foo/bar' | auto_discovery_link_tag: 'rel:alternate', 'type:application/atom+xml', 'title:A title' }}
|
||||||
def auto_discovery_link_tag(input, *args)
|
def auto_discovery_link_tag(input, *args)
|
||||||
options = args_to_options(args)
|
options = args_to_options(args)
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ module Locomotive
|
|||||||
%{<link rel="#{rel}" type="#{type}" title="#{title}" href="#{input}" />}
|
%{<link rel="#{rel}" type="#{type}" title="#{title}" href="#{input}" />}
|
||||||
end
|
end
|
||||||
|
|
||||||
# Write the url to a stylesheet resource
|
# Write the url of a theme stylesheet
|
||||||
# input: name of the css file
|
# input: name of the css file
|
||||||
def stylesheet_url(input)
|
def stylesheet_url(input)
|
||||||
return '' if input.nil?
|
return '' if input.nil?
|
||||||
@ -31,7 +31,7 @@ module Locomotive
|
|||||||
input
|
input
|
||||||
end
|
end
|
||||||
|
|
||||||
# Write the link to a stylesheet resource
|
# Write the link tag of a theme stylesheet
|
||||||
# input: url of the css file
|
# input: url of the css file
|
||||||
def stylesheet_tag(input, media = 'screen')
|
def stylesheet_tag(input, media = 'screen')
|
||||||
return '' if input.nil?
|
return '' if input.nil?
|
||||||
@ -106,80 +106,6 @@ module Locomotive
|
|||||||
}.gsub(/ >/, '>').strip
|
}.gsub(/ >/, '>').strip
|
||||||
end
|
end
|
||||||
|
|
||||||
# Render the navigation for a paginated collection
|
|
||||||
def default_pagination(paginate, *args)
|
|
||||||
return '' if paginate['parts'].empty?
|
|
||||||
|
|
||||||
options = args_to_options(args)
|
|
||||||
|
|
||||||
previous_label = options[:previous_label] || I18n.t('pagination.previous')
|
|
||||||
next_label = options[:next_label] || I18n.t('pagination.next')
|
|
||||||
|
|
||||||
previous_link = (if paginate['previous'].blank?
|
|
||||||
"<span class=\"disabled prev_page\">#{previous_label}</span>"
|
|
||||||
else
|
|
||||||
"<a href=\"#{absolute_url(paginate['previous']['url'])}\" class=\"prev_page\">#{previous_label}</a>"
|
|
||||||
end)
|
|
||||||
|
|
||||||
links = ""
|
|
||||||
paginate['parts'].each do |part|
|
|
||||||
links << (if part['is_link']
|
|
||||||
"<a href=\"#{absolute_url(part['url'])}\">#{part['title']}</a>"
|
|
||||||
elsif part['hellip_break']
|
|
||||||
"<span class=\"gap\">#{part['title']}</span>"
|
|
||||||
else
|
|
||||||
"<span class=\"current\">#{part['title']}</span>"
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
next_link = (if paginate['next'].blank?
|
|
||||||
"<span class=\"disabled next_page\">#{next_label}</span>"
|
|
||||||
else
|
|
||||||
"<a href=\"#{absolute_url(paginate['next']['url'])}\" class=\"next_page\">#{next_label}</a>"
|
|
||||||
end)
|
|
||||||
|
|
||||||
%{<div class="pagination #{options[:css]}">
|
|
||||||
#{previous_link}
|
|
||||||
#{links}
|
|
||||||
#{next_link}
|
|
||||||
</div>}
|
|
||||||
end
|
|
||||||
|
|
||||||
protected
|
|
||||||
|
|
||||||
# Convert an array of properties ('key:value') into a hash
|
|
||||||
# Ex: ['width:50', 'height:100'] => { :width => '50', :height => '100' }
|
|
||||||
def args_to_options(*args)
|
|
||||||
options = {}
|
|
||||||
args.flatten.each do |a|
|
|
||||||
if (a =~ /^(.*):(.*)$/)
|
|
||||||
options[$1.to_sym] = $2
|
|
||||||
end
|
|
||||||
end
|
|
||||||
options
|
|
||||||
end
|
|
||||||
|
|
||||||
# Write options (Hash) into a string according to the following pattern:
|
|
||||||
# <key1>="<value1>", <key2>="<value2", ...etc
|
|
||||||
def inline_options(options = {})
|
|
||||||
return '' if options.empty?
|
|
||||||
(options.stringify_keys.sort.to_a.collect { |a, b| "#{a}=\"#{b}\"" }).join(' ') << ' '
|
|
||||||
end
|
|
||||||
|
|
||||||
# Get the url to be used in html tags such as image_tag, flash_tag, ...etc
|
|
||||||
# input: url (String) OR asset drop
|
|
||||||
def get_url_from_asset(input)
|
|
||||||
input.respond_to?(:url) ? input.url : input
|
|
||||||
end
|
|
||||||
|
|
||||||
def asset_url(path)
|
|
||||||
ThemeAssetUploader.url_for(@context.registers[:site], path)
|
|
||||||
end
|
|
||||||
|
|
||||||
def absolute_url(url)
|
|
||||||
url.starts_with?('/') ? url : "/#{url}"
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
::Liquid::Template.register_filter(Html)
|
::Liquid::Template.register_filter(Html)
|
||||||
|
@ -3,24 +3,6 @@ module Locomotive
|
|||||||
module Filters
|
module Filters
|
||||||
module Misc
|
module Misc
|
||||||
|
|
||||||
def underscore(input)
|
|
||||||
input.to_s.gsub(' ', '_').gsub('/', '_').underscore
|
|
||||||
end
|
|
||||||
|
|
||||||
def dasherize(input)
|
|
||||||
input.to_s.gsub(' ', '-').gsub('/', '-').dasherize
|
|
||||||
end
|
|
||||||
|
|
||||||
def multi_line(input)
|
|
||||||
input.to_s.gsub("\n", '<br/>')
|
|
||||||
end
|
|
||||||
|
|
||||||
def concat(input, *args)
|
|
||||||
result = input.to_s
|
|
||||||
args.flatten.each { |a| result << a.to_s }
|
|
||||||
result
|
|
||||||
end
|
|
||||||
|
|
||||||
def modulo(word, index, modulo)
|
def modulo(word, index, modulo)
|
||||||
(index.to_i + 1) % modulo == 0 ? word : ''
|
(index.to_i + 1) % modulo == 0 ? word : ''
|
||||||
end
|
end
|
||||||
@ -37,6 +19,45 @@ module Locomotive
|
|||||||
input.blank? ? value : input
|
input.blank? ? value : input
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Render the navigation for a paginated collection
|
||||||
|
def default_pagination(paginate, *args)
|
||||||
|
return '' if paginate['parts'].empty?
|
||||||
|
|
||||||
|
options = args_to_options(args)
|
||||||
|
|
||||||
|
previous_label = options[:previous_label] || I18n.t('pagination.previous')
|
||||||
|
next_label = options[:next_label] || I18n.t('pagination.next')
|
||||||
|
|
||||||
|
previous_link = (if paginate['previous'].blank?
|
||||||
|
"<span class=\"disabled prev_page\">#{previous_label}</span>"
|
||||||
|
else
|
||||||
|
"<a href=\"#{absolute_url(paginate['previous']['url'])}\" class=\"prev_page\">#{previous_label}</a>"
|
||||||
|
end)
|
||||||
|
|
||||||
|
links = ""
|
||||||
|
paginate['parts'].each do |part|
|
||||||
|
links << (if part['is_link']
|
||||||
|
"<a href=\"#{absolute_url(part['url'])}\">#{part['title']}</a>"
|
||||||
|
elsif part['hellip_break']
|
||||||
|
"<span class=\"gap\">#{part['title']}</span>"
|
||||||
|
else
|
||||||
|
"<span class=\"current\">#{part['title']}</span>"
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
next_link = (if paginate['next'].blank?
|
||||||
|
"<span class=\"disabled next_page\">#{next_label}</span>"
|
||||||
|
else
|
||||||
|
"<a href=\"#{absolute_url(paginate['next']['url'])}\" class=\"next_page\">#{next_label}</a>"
|
||||||
|
end)
|
||||||
|
|
||||||
|
%{<div class="pagination #{options[:css]}">
|
||||||
|
#{previous_link}
|
||||||
|
#{links}
|
||||||
|
#{next_link}
|
||||||
|
</div>}
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
::Liquid::Template.register_filter(Misc)
|
::Liquid::Template.register_filter(Misc)
|
||||||
|
@ -3,6 +3,24 @@ module Locomotive
|
|||||||
module Filters
|
module Filters
|
||||||
module Text
|
module Text
|
||||||
|
|
||||||
|
def underscore(input)
|
||||||
|
input.to_s.gsub(' ', '_').gsub('/', '_').underscore
|
||||||
|
end
|
||||||
|
|
||||||
|
def dasherize(input)
|
||||||
|
input.to_s.gsub(' ', '-').gsub('/', '-').dasherize
|
||||||
|
end
|
||||||
|
|
||||||
|
def multi_line(input)
|
||||||
|
input.to_s.gsub("\n", '<br/>')
|
||||||
|
end
|
||||||
|
|
||||||
|
def concat(input, *args)
|
||||||
|
result = input.to_s
|
||||||
|
args.flatten.each { |a| result << a.to_s }
|
||||||
|
result
|
||||||
|
end
|
||||||
|
|
||||||
def textile(input)
|
def textile(input)
|
||||||
::RedCloth.new(input).to_html
|
::RedCloth.new(input).to_html
|
||||||
end
|
end
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
module Locomotive
|
|
||||||
module Liquid
|
|
||||||
module Tags
|
|
||||||
class Blueprint < ::Liquid::Tag
|
|
||||||
|
|
||||||
def render(context)
|
|
||||||
%{
|
|
||||||
<link href="/stylesheets/admin/blueprint/screen.css" media="screen, projection" rel="stylesheet" type="text/css" />
|
|
||||||
<link href="/stylesheets/admin/blueprint/print.css" media="print" rel="stylesheet" type="text/css" />
|
|
||||||
<!--[if IE]>
|
|
||||||
<link href="/stylesheets/admin/blueprint/ie.css" media="screen, projection" rel="stylesheet" type="text/css" />
|
|
||||||
<![endif]-->
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
::Liquid::Template.register_tag('blueprint_stylesheets', Blueprint)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,17 +0,0 @@
|
|||||||
module Liquid
|
|
||||||
module Locomotive
|
|
||||||
module Tags
|
|
||||||
class Jquery < ::Liquid::Tag
|
|
||||||
|
|
||||||
def render(context)
|
|
||||||
%{
|
|
||||||
<script src="/javascripts/jquery.js" type="text/javascript"></script>
|
|
||||||
<script src="/javascripts/jquery.ui.js" type="text/javascript"></script>
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
::Liquid::Template.register_tag('jQuery', Jquery)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@ -11,11 +11,11 @@ module Locomotive
|
|||||||
#
|
#
|
||||||
# options:
|
# options:
|
||||||
# - label: iso (de, fr, en, ...etc), locale (Deutsch, Français, English, ...etc), title (page title)
|
# - label: iso (de, fr, en, ...etc), locale (Deutsch, Français, English, ...etc), title (page title)
|
||||||
# - sep: piece of html code seperating 2 locales
|
# - sep: piece of html code separating 2 locales
|
||||||
#
|
#
|
||||||
# notes:
|
# notes:
|
||||||
# - "iso" is the default choice for label
|
# - "iso" is the default choice for label
|
||||||
# - " | " is the default seperating code
|
# - " | " is the default separating code
|
||||||
#
|
#
|
||||||
class LocaleSwitcher < ::Liquid::Tag
|
class LocaleSwitcher < ::Liquid::Tag
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ require 'spec_helper'
|
|||||||
|
|
||||||
describe Locomotive::Liquid::Filters::Html do
|
describe Locomotive::Liquid::Filters::Html do
|
||||||
|
|
||||||
|
include Locomotive::Liquid::Filters::Base
|
||||||
include Locomotive::Liquid::Filters::Html
|
include Locomotive::Liquid::Filters::Html
|
||||||
|
|
||||||
before(:each) do
|
before(:each) do
|
||||||
@ -206,39 +207,6 @@ describe Locomotive::Liquid::Filters::Html do
|
|||||||
}.strip
|
}.strip
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should return a navigation block for the pagination' do
|
|
||||||
pagination = {
|
|
||||||
"previous" => nil,
|
|
||||||
"parts" => [
|
|
||||||
{ 'title' => '1', 'is_link' => false },
|
|
||||||
{ 'title' => '2', 'is_link' => true, 'url' => '/?page=2' },
|
|
||||||
{ 'title' => '…', 'is_link' => false, 'hellip_break' => true },
|
|
||||||
{ 'title' => '5', 'is_link' => true, 'url' => '/?page=5' }
|
|
||||||
],
|
|
||||||
"next" => { 'title' => 'next', 'is_link' => true, 'url' => '/?page=2' }
|
|
||||||
}
|
|
||||||
html = default_pagination(pagination, 'css:flickr_pagination')
|
|
||||||
html.should match(/<div class="pagination flickr_pagination">/)
|
|
||||||
html.should match(/<span class="disabled prev_page">« Previous<\/span>/)
|
|
||||||
html.should match(/<a href="\/\?page=2">2<\/a>/)
|
|
||||||
html.should match(/<span class=\"gap\">\…<\/span>/)
|
|
||||||
html.should match(/<a href="\/\?page=2" class="next_page">Next »<\/a>/)
|
|
||||||
|
|
||||||
pagination.merge!({
|
|
||||||
'previous' => { 'title' => 'previous', 'is_link' => true, 'url' => '/?page=4' },
|
|
||||||
'next' => nil
|
|
||||||
})
|
|
||||||
|
|
||||||
html = default_pagination(pagination, 'css:flickr_pagination')
|
|
||||||
html.should_not match(/<span class="disabled prev_page">« Previous<\/span>/)
|
|
||||||
html.should match(/<a href="\/\?page=4" class="prev_page">« Previous<\/a>/)
|
|
||||||
html.should match(/<span class="disabled next_page">Next »<\/span>/)
|
|
||||||
|
|
||||||
pagination.merge!({ 'parts' => [] })
|
|
||||||
html = default_pagination(pagination, 'css:flickr_pagination')
|
|
||||||
html.should == ''
|
|
||||||
end
|
|
||||||
|
|
||||||
def build_context
|
def build_context
|
||||||
klass = Class.new
|
klass = Class.new
|
||||||
klass.class_eval do
|
klass.class_eval do
|
||||||
|
@ -2,28 +2,9 @@ require 'spec_helper'
|
|||||||
|
|
||||||
describe Locomotive::Liquid::Filters::Misc do
|
describe Locomotive::Liquid::Filters::Misc do
|
||||||
|
|
||||||
|
include Locomotive::Liquid::Filters::Base
|
||||||
include Locomotive::Liquid::Filters::Misc
|
include Locomotive::Liquid::Filters::Misc
|
||||||
|
|
||||||
it 'underscores an input' do
|
|
||||||
underscore('foo').should == 'foo'
|
|
||||||
underscore('home page').should == 'home_page'
|
|
||||||
underscore('My foo Bar').should == 'my_foo_bar'
|
|
||||||
underscore('foo/bar').should == 'foo_bar'
|
|
||||||
underscore('foo/bar/index').should == 'foo_bar_index'
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'dasherizes an input' do
|
|
||||||
dasherize('foo').should == 'foo'
|
|
||||||
dasherize('foo_bar').should == 'foo-bar'
|
|
||||||
dasherize('foo/bar').should == 'foo-bar'
|
|
||||||
dasherize('foo/bar/index').should == 'foo-bar-index'
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'concats strings' do
|
|
||||||
concat('foo', 'bar').should == 'foobar'
|
|
||||||
concat('hello', 'foo', 'bar').should == 'hellofoobar'
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'returns the input string every n occurences' do
|
it 'returns the input string every n occurences' do
|
||||||
modulo('foo', 0, 3).should == ''
|
modulo('foo', 0, 3).should == ''
|
||||||
modulo('foo', 1, 3).should == ''
|
modulo('foo', 1, 3).should == ''
|
||||||
@ -39,4 +20,37 @@ describe Locomotive::Liquid::Filters::Misc do
|
|||||||
default(nil, 42).should == 42
|
default(nil, 42).should == 42
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'should return a navigation block for the pagination' do
|
||||||
|
pagination = {
|
||||||
|
"previous" => nil,
|
||||||
|
"parts" => [
|
||||||
|
{ 'title' => '1', 'is_link' => false },
|
||||||
|
{ 'title' => '2', 'is_link' => true, 'url' => '/?page=2' },
|
||||||
|
{ 'title' => '…', 'is_link' => false, 'hellip_break' => true },
|
||||||
|
{ 'title' => '5', 'is_link' => true, 'url' => '/?page=5' }
|
||||||
|
],
|
||||||
|
"next" => { 'title' => 'next', 'is_link' => true, 'url' => '/?page=2' }
|
||||||
|
}
|
||||||
|
html = default_pagination(pagination, 'css:flickr_pagination')
|
||||||
|
html.should match(/<div class="pagination flickr_pagination">/)
|
||||||
|
html.should match(/<span class="disabled prev_page">« Previous<\/span>/)
|
||||||
|
html.should match(/<a href="\/\?page=2">2<\/a>/)
|
||||||
|
html.should match(/<span class=\"gap\">\…<\/span>/)
|
||||||
|
html.should match(/<a href="\/\?page=2" class="next_page">Next »<\/a>/)
|
||||||
|
|
||||||
|
pagination.merge!({
|
||||||
|
'previous' => { 'title' => 'previous', 'is_link' => true, 'url' => '/?page=4' },
|
||||||
|
'next' => nil
|
||||||
|
})
|
||||||
|
|
||||||
|
html = default_pagination(pagination, 'css:flickr_pagination')
|
||||||
|
html.should_not match(/<span class="disabled prev_page">« Previous<\/span>/)
|
||||||
|
html.should match(/<a href="\/\?page=4" class="prev_page">« Previous<\/a>/)
|
||||||
|
html.should match(/<span class="disabled next_page">Next »<\/span>/)
|
||||||
|
|
||||||
|
pagination.merge!({ 'parts' => [] })
|
||||||
|
html = default_pagination(pagination, 'css:flickr_pagination')
|
||||||
|
html.should == ''
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -8,4 +8,25 @@ describe Locomotive::Liquid::Filters::Text do
|
|||||||
textile('This is *my* text.').should == "<p>This is <strong>my</strong> text.</p>"
|
textile('This is *my* text.').should == "<p>This is <strong>my</strong> text.</p>"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'underscores an input' do
|
||||||
|
underscore('foo').should == 'foo'
|
||||||
|
underscore('home page').should == 'home_page'
|
||||||
|
underscore('My foo Bar').should == 'my_foo_bar'
|
||||||
|
underscore('foo/bar').should == 'foo_bar'
|
||||||
|
underscore('foo/bar/index').should == 'foo_bar_index'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'dasherizes an input' do
|
||||||
|
dasherize('foo').should == 'foo'
|
||||||
|
dasherize('foo_bar').should == 'foo-bar'
|
||||||
|
dasherize('foo/bar').should == 'foo-bar'
|
||||||
|
dasherize('foo/bar/index').should == 'foo-bar-index'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'concats strings' do
|
||||||
|
concat('foo', 'bar').should == 'foobar'
|
||||||
|
concat('hello', 'foo', 'bar').should == 'hellofoobar'
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user