Sha256: c0ddf769ef621ffa905dc99d0b2de09acb3eaeb9ca774b423cc26e4a81630e8d

Contents?: true

Size: 1.06 KB

Versions: 9

Compression:

Stored size: 1.06 KB

Contents

module Liquid
  class Raw < Block
    Syntax = /\A\s*\z/
    FullTokenPossiblyInvalid = /\A(.*)#{TagStart}\s*(\w+)\s*(.*)?#{TagEnd}\z/om

    def initialize(tag_name, markup, parse_context)
      super

      ensure_valid_markup(tag_name, markup, parse_context)
    end

    def parse(tokens)
      @body = ''
      while token = tokens.shift
        if token =~ FullTokenPossiblyInvalid
          @body << $1 if $1 != "".freeze
          return if block_delimiter == $2
        end
        @body << token unless token.empty?
      end

      raise SyntaxError.new(parse_context.locale.t("errors.syntax.tag_never_closed".freeze, block_name: block_name))
    end

    def render(_context)
      @body
    end

    def nodelist
      [@body]
    end

    def blank?
      @body.empty?
    end

    protected

    def ensure_valid_markup(tag_name, markup, parse_context)
      unless markup =~ Syntax
        raise SyntaxError.new(parse_context.locale.t("errors.syntax.tag_unexpected_args".freeze, tag: tag_name))
      end
    end
  end

  Template.register_tag('raw'.freeze, Raw)
end

Version data entries

9 entries across 9 versions & 3 rubygems

Version Path
liquid-4.0.4 lib/liquid/tags/raw.rb
metanorma-cli-1.3.4 gems/ruby/2.6.0/gems/liquid-4.0.3/lib/liquid/tags/raw.rb
metanorma-cli-1.3.3.1 gems/ruby/2.6.0/gems/liquid-4.0.3/lib/liquid/tags/raw.rb
liquid-4.0.3 lib/liquid/tags/raw.rb
liquid-4.0.2 lib/liquid/tags/raw.rb
liquid-4-0-2-4.0.2 lib/liquid/tags/raw.rb
liquid-4.0.1 lib/liquid/tags/raw.rb
liquid-4.0.0 lib/liquid/tags/raw.rb
liquid-4.0.0.rc3 lib/liquid/tags/raw.rb