Very simple helper for parsing tags in HTML
Ruby
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.document
.gitignore
.rspec
Gemfile
Gemfile.lock
LICENSE.txt
README.md
Rakefile
VERSION
xan_markup.gemspec

README.md

XanMarkup

Very simple tag parser

Install & Example

Add to your Gemfile

gem "xan_markup"

Create helper (call it like you want)

module MarkupHelper
  include XanMarkup::Helper

  def markup_favorite_movie
    "Matrix"
  end
end

In views use:

<%= markupize("My favorite movie is {{ favorite_movie }}") %>

Atributes

You can pass attributes to tags

{{ favorite_movie genre="sf-fi" }}

def markup_favorite_movie(hash_of_args)
  ....
end

Block

{{block}}This is my favorite movie{{/block}}

def markup_block(content: "")
  content.upcase
end

Nesting is supported only for unique tags.

You can:

{{block}} this {{normal_tag}} {{/block}}
{{block}} and {{block2}} nesting {{/block2}} {{/block}}

You can't (currently):

{{block}}{{block}}{{/block}}{{/block}}

Customization

You can write own class that will be called when tag is found. For example using instance variables not helper methods:

class MyCustomCaller
  def initialize(context)
    @context = context
  end

  def call
    ->(tag) do
        @context.instance_variable_get("@tag.name") || "missing tag: #{tag.name}"
      end
    end
  end
end

def markupize(content)
  Markupizer.new(content).markupize &MyCustomCaller.new(self).call
end

You can change also syntax (See MarkupSyntax and BlockMarkupSyntax in markupizer.rb)

def markupize(content)
  Markupizer.new(content, /\[ ?(.*?) ?\]/).markupize &MyCustomCaller.new(self).call
end

@favorite_movie = "Matrix"
markupize("My favorite movie is [favorite_movie]") #=> My favorite movie is Matrix

Copyright (c) 2009-2018 Grzegorz Derebecki, released under the MIT license