Liquid::Tag::AttributeParser
Liquid::Tag::AttributeParser
allows you to send familiar html
-like attributes along with your Liquid tags to receive back a more manageable Ruby hash with all the given information.
Installation
Add this line to your application's Gemfile:
gem 'liquid-tag-attribute_parser'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install liquid-tag-attribute_parser
Usage
Three easy steps:
- Take the raw argument data you get from the Liquid Tag
- Use
Liquid::Tag::AttributeParser
to parse the raw data - Get back the data on a Hash format
Working example for Jekyll tags:
require "liquid/tag/attribute_parser"
module Jekyll
class GreetingTag < Liquid::Tag
def initialize(_tag_name, text, _tokens)
super
@attributes = Liquid::Tag::AttributeParser.new(text).attributes
end
def render(_context)
"Hello! My name is #{@attributes[:name]} and I'm #{@attributes[:age]}"
end
end
end
Liquid::Template.register_tag('greeting', Jekyll::GreetingTag)
{% greeting name="Jekyll" age=13 %}
Supported data types
String
Liquid::Tag::AttributeParser.new('string="This is a string"').attributes
# => {:string=>"This is a string"}
Boolean
Liquid::Tag::AttributeParser.new('boolean=true').attributes
# => {:boolean=>true}
Liquid::Tag::AttributeParser.new('boolean=false').attributes
# => {:boolean=>false}
Integer
Liquid::Tag::AttributeParser.new('integer=123').attributes
# => {:integer=>123}
Liquid::Tag::AttributeParser.new('integer=+123').attributes
# => {:integer=>123}
Liquid::Tag::AttributeParser.new('integer=-123').attributes
# => {:integer=>-123}
Float
Liquid::Tag::AttributeParser.new('float=1.23').attributes
# => {:float=>1.23}
Liquid::Tag::AttributeParser.new('float=+1.23').attributes
# => {:float=>1.23}
Liquid::Tag::AttributeParser.new('float=-1.23').attributes
# => {:float=>-1.23}
Liquid::Tag::AttributeParser.new('float=123.0').attributes
# => {:float=>123.0}
Liquid::Tag::AttributeParser.new('float=+123.0').attributes
# => {:float=>123.0}
Liquid::Tag::AttributeParser.new('float=-123.0').attributes
# => {:float=>-123.0}
Liquid::Tag::AttributeParser.new('float=.123').attributes
# => {:float=>0.123}
Liquid::Tag::AttributeParser.new('float=+.123').attributes
# => {:float=>0.123}
Liquid::Tag::AttributeParser.new('float=-.123').attributes
# => {:float=>-0.123}
Combination of different data types
Liquid::Tag::AttributeParser.new('string="This is a string" boolean=true integer=-123 float=.123').attributes
# => {:string=>"This is a string", :boolean=>true, :integer=>-123, :float=>0.123}
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/unabris/liquid-tag-attribute_parser.
License
The gem is available as open source under the terms of the MIT License.