serbea 0.10.0 → 0.10.5
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 +4 -4
- data/lib/serbea/bridgetown_support.rb +3 -9
- data/lib/serbea/helpers.rb +6 -27
- data/lib/serbea/rails_support.rb +12 -2
- data/lib/serbea/template_engine.rb +21 -20
- data/lib/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: c0aa3994d0779dc0bada9d35a6125dafd4501070f780bd353384a1f72bd1be54
         | 
| 4 | 
            +
              data.tar.gz: 455373e852ca5f680adf28d7efe3198e34b97f84d1fb93d58ab32eac84bde61b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 9b37ea92fed79e50c3e67ee81e06dfd9daf8c969ee6b6901312b8a74295d73f7a82e7b1fa34555feccd9c877e4e6322cb27e22acd3a3fab30a0b145318bbf221
         | 
| 7 | 
            +
              data.tar.gz: 37a8dbcf0799f9cdf352bbe633d959ea6f5ec1ba082ba918d223794b0e00b5a2377f5d960f57d7d47dc5db756cb5a12636062359bfe3922878593cbf286b6299
         | 
| @@ -2,8 +2,10 @@ require "serbea/rouge_lexer" | |
| 2 2 | 
             
            require "bridgetown-core"
         | 
| 3 3 |  | 
| 4 4 | 
             
            module Bridgetown
         | 
| 5 | 
            -
              class SerbeaView <  | 
| 5 | 
            +
              class SerbeaView < ERBView
         | 
| 6 | 
            +
                alias_method :_erb_capture, :capture
         | 
| 6 7 | 
             
                include Serbea::Helpers
         | 
| 8 | 
            +
                alias_method :capture, :_erb_capture
         | 
| 7 9 |  | 
| 8 10 | 
             
                def partial(partial_name, options = {}, &block)
         | 
| 9 11 | 
             
                  options.merge!(options[:locals]) if options[:locals]
         | 
| @@ -17,14 +19,6 @@ module Bridgetown | |
| 17 19 | 
             
                    site.in_source_dir(site.config[:partials_dir], "#{partial_name}.serb")
         | 
| 18 20 | 
             
                  ).render(self, options)
         | 
| 19 21 | 
             
                end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                def markdownify(input = nil, &block)
         | 
| 22 | 
            -
                  content = Bridgetown::Utils.reindent_for_markdown(
         | 
| 23 | 
            -
                    block.nil? ? input.to_s : capture(&block)
         | 
| 24 | 
            -
                  )
         | 
| 25 | 
            -
                  converter = site.find_converter_instance(Bridgetown::Converters::Markdown)
         | 
| 26 | 
            -
                  converter.convert(content).strip
         | 
| 27 | 
            -
                end
         | 
| 28 22 | 
             
              end
         | 
| 29 23 |  | 
| 30 24 | 
             
              module Converters
         | 
    
        data/lib/serbea/helpers.rb
    CHANGED
    
    | @@ -6,52 +6,31 @@ module Serbea | |
| 6 6 | 
             
                  Serbea::Pipeline.deny_value_method %i(escape h prepend append assign_to)
         | 
| 7 7 | 
             
                end
         | 
| 8 8 |  | 
| 9 | 
            -
                def capture( | 
| 9 | 
            +
                def capture(*args)
         | 
| 10 10 | 
             
                  previous_buffer_state = @_erbout
         | 
| 11 11 | 
             
                  @_erbout = Serbea::OutputBuffer.new
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                  # For compatibility with ActionView, not used by Bridgetown normally
         | 
| 14 | 
            -
                  previous_ob_state = @output_buffer
         | 
| 15 | 
            -
                  @output_buffer = Serbea::OutputBuffer.new
         | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
                  result = instance_exec(obj, &block)
         | 
| 19 | 
            -
                  if @output_buffer != ""
         | 
| 20 | 
            -
                    # use Rails' ActionView buffer if present
         | 
| 21 | 
            -
                    result = @output_buffer
         | 
| 22 | 
            -
                  end
         | 
| 12 | 
            +
                  result = yield(*args)
         | 
| 23 13 | 
             
                  @_erbout = previous_buffer_state
         | 
| 24 | 
            -
                  @output_buffer = previous_ob_state
         | 
| 25 14 |  | 
| 26 15 | 
             
                  result&.html_safe
         | 
| 27 16 | 
             
                end
         | 
| 28 | 
            -
             | 
| 17 | 
            +
             | 
| 29 18 | 
             
                def pipeline(context, value)
         | 
| 30 19 | 
             
                  Pipeline.new(context, value)
         | 
| 31 20 | 
             
                end
         | 
| 32 | 
            -
             | 
| 21 | 
            +
             | 
| 33 22 | 
             
                def helper(name, &helper_block)
         | 
| 34 23 | 
             
                  self.class.define_method(name) do |*args, &block|
         | 
| 35 24 | 
             
                    previous_buffer_state = @_erbout
         | 
| 36 25 | 
             
                    @_erbout = Serbea::OutputBuffer.new
         | 
| 37 | 
            -
              
         | 
| 38 | 
            -
                    # For compatibility with ActionView, not used by Bridgetown normally
         | 
| 39 | 
            -
                    previous_ob_state = @output_buffer
         | 
| 40 | 
            -
                    @output_buffer = Serbea::OutputBuffer.new
         | 
| 41 | 
            -
              
         | 
| 42 26 | 
             
                    result = helper_block.call(*args, &block)
         | 
| 43 | 
            -
                    if @output_buffer != ""
         | 
| 44 | 
            -
                      # use Rails' ActionView buffer if present
         | 
| 45 | 
            -
                      result = @output_buffer
         | 
| 46 | 
            -
                    end
         | 
| 47 27 | 
             
                    @_erbout = previous_buffer_state
         | 
| 48 | 
            -
             | 
| 49 | 
            -
              
         | 
| 28 | 
            +
             | 
| 50 29 | 
             
                    result.is_a?(String) ? result.html_safe : result
         | 
| 51 30 | 
             
                  end
         | 
| 52 31 | 
             
                end
         | 
| 53 32 | 
             
                alias_method :macro, :helper
         | 
| 54 | 
            -
             | 
| 33 | 
            +
             | 
| 55 34 | 
             
                def h(input)
         | 
| 56 35 | 
             
                  ERB::Util.h(input.to_s)
         | 
| 57 36 | 
             
                end
         | 
    
        data/lib/serbea/rails_support.rb
    CHANGED
    
    | @@ -1,5 +1,7 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            +
            require "hash_with_dot_access"
         | 
| 4 | 
            +
             | 
| 3 5 | 
             
            module Serbea
         | 
| 4 6 | 
             
              module Rails
         | 
| 5 7 | 
             
                module FrontmatterHelpers
         | 
| @@ -42,9 +44,17 @@ Serbea::TemplateEngine.directive :form, ->(code, buffer) do | |
| 42 44 | 
             
              buffer << code
         | 
| 43 45 | 
             
              buffer << " %}"
         | 
| 44 46 | 
             
            end
         | 
| 47 | 
            +
             | 
| 45 48 | 
             
            Serbea::TemplateEngine.directive :_, ->(code, buffer) do
         | 
| 46 | 
            -
               | 
| 47 | 
            -
             | 
| 49 | 
            +
              tag_name, space, params = code.lstrip.partition(%r(\s)m)
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              if tag_name.end_with?(":")
         | 
| 52 | 
            +
                tag_name.chomp!(":")
         | 
| 53 | 
            +
                tag_name = ":#{tag_name}" unless tag_name.start_with?(":")
         | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
              buffer << "{%= tag.tag_string "
         | 
| 57 | 
            +
              buffer << tag_name << ", " << params
         | 
| 48 58 | 
             
              buffer << " %}"
         | 
| 49 59 | 
             
            end
         | 
| 50 60 |  | 
| @@ -17,11 +17,10 @@ module Serbea | |
| 17 17 | 
             
                def self.directive(new_directive, directive_resolution)
         | 
| 18 18 | 
             
                  directives[new_directive.to_s] = directive_resolution
         | 
| 19 19 | 
             
                end
         | 
| 20 | 
            +
             | 
| 20 21 | 
             
                def self.directives
         | 
| 21 22 | 
             
                  @directives ||= {
         | 
| 22 23 | 
             
                    "@" => ->(code, buffer) do
         | 
| 23 | 
            -
                      original_line_length = code.lines.size
         | 
| 24 | 
            -
             | 
| 25 24 | 
             
                      pieces = code.split(" ")
         | 
| 26 25 | 
             
                      if pieces[0].start_with?(/[A-Z]/) # Ruby class name
         | 
| 27 26 | 
             
                        pieces[0].prepend " "
         | 
| @@ -45,9 +44,6 @@ module Serbea | |
| 45 44 | 
             
                        pieces.last << ")"
         | 
| 46 45 | 
             
                        buffer << "{%= render#{pieces.join(" ")} %}"
         | 
| 47 46 | 
             
                      end
         | 
| 48 | 
            -
                      (original_line_length - 1).times do
         | 
| 49 | 
            -
                        buffer << "\n{% %}" # preserve original directive line length
         | 
| 50 | 
            -
                      end
         | 
| 51 47 | 
             
                    end
         | 
| 52 48 | 
             
                  }
         | 
| 53 49 | 
             
                end
         | 
| @@ -55,30 +51,21 @@ module Serbea | |
| 55 51 | 
             
                def self.front_matter_preamble=(varname)
         | 
| 56 52 | 
             
                  @front_matter_preamble = varname
         | 
| 57 53 | 
             
                end
         | 
| 54 | 
            +
             | 
| 58 55 | 
             
                def self.front_matter_preamble
         | 
| 59 56 | 
             
                  @front_matter_preamble ||= "frontmatter = YAML.load"
         | 
| 60 57 | 
             
                end
         | 
| 61 | 
            -
             | 
| 58 | 
            +
             | 
| 62 59 | 
             
                def self.has_yaml_header?(template)
         | 
| 63 60 | 
             
                  template.lines.first&.match? %r!\A---\s*\r?\n!
         | 
| 64 61 | 
             
                end
         | 
| 65 | 
            -
             | 
| 62 | 
            +
             | 
| 66 63 | 
             
                def initialize(input, properties={})
         | 
| 67 64 | 
             
                  properties[:regexp] = /{%(={1,2}|-|\#|%)?(.*?)([-=])?%}([ \t]*\r?\n)?/m
         | 
| 68 65 | 
             
                  properties[:strip_front_matter] = true unless properties.key?(:strip_front_matter)
         | 
| 69 66 | 
             
                  super process_serbea_input(input, properties), properties
         | 
| 70 67 | 
             
                end
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                def add_postamble(postamble)
         | 
| 73 | 
            -
                  src << postamble
         | 
| 74 | 
            -
                  src << "#{@bufvar}.html_safe"
         | 
| 75 | 
            -
              
         | 
| 76 | 
            -
                  src.gsub!("__RAW_START_PRINT__", "{{")
         | 
| 77 | 
            -
                  src.gsub!("__RAW_END_PRINT__", "}}")
         | 
| 78 | 
            -
                  src.gsub!("__RAW_START_EVAL__", "{%")
         | 
| 79 | 
            -
                  src.gsub!("__RAW_END_EVAL__", "%}")
         | 
| 80 | 
            -
                end
         | 
| 81 | 
            -
              
         | 
| 68 | 
            +
             | 
| 82 69 | 
             
                def process_serbea_input(template, properties)
         | 
| 83 70 | 
             
                  buff = ""
         | 
| 84 71 |  | 
| @@ -190,7 +177,11 @@ module Serbea | |
| 190 177 | 
             
                        directive = $1 ? self.class.directives[$1] : self.class.directives["@"]
         | 
| 191 178 |  | 
| 192 179 | 
             
                        if directive
         | 
| 180 | 
            +
                          additional_length = "#{buff}#{code}".lines.size
         | 
| 193 181 | 
             
                          directive.(code, buff)
         | 
| 182 | 
            +
                          (additional_length - buff.lines.size).times do
         | 
| 183 | 
            +
                            buff << "{% %}\n" # preserve original directive line length
         | 
| 184 | 
            +
                          end
         | 
| 194 185 | 
             
                        else
         | 
| 195 186 | 
             
                          raise "Handler for Serbea template directive `#{$1}' not found"
         | 
| 196 187 | 
             
                        end
         | 
| @@ -202,7 +193,7 @@ module Serbea | |
| 202 193 |  | 
| 203 194 | 
             
                  buff
         | 
| 204 195 | 
             
                end
         | 
| 205 | 
            -
             | 
| 196 | 
            +
             | 
| 206 197 | 
             
                private
         | 
| 207 198 |  | 
| 208 199 | 
             
                def add_code(code)
         | 
| @@ -226,5 +217,15 @@ module Serbea | |
| 226 217 | 
             
                def add_expression_result_escaped(code)
         | 
| 227 218 | 
             
                  add_expression_result(code)
         | 
| 228 219 | 
             
                end
         | 
| 229 | 
            -
             | 
| 220 | 
            +
             | 
| 221 | 
            +
                def add_postamble(postamble)
         | 
| 222 | 
            +
                  src << postamble
         | 
| 223 | 
            +
                  src << "#{@bufvar}.html_safe"
         | 
| 224 | 
            +
              
         | 
| 225 | 
            +
                  src.gsub!("__RAW_START_PRINT__", "{{")
         | 
| 226 | 
            +
                  src.gsub!("__RAW_END_PRINT__", "}}")
         | 
| 227 | 
            +
                  src.gsub!("__RAW_START_EVAL__", "{%")
         | 
| 228 | 
            +
                  src.gsub!("__RAW_END_EVAL__", "%}")
         | 
| 229 | 
            +
                end
         | 
| 230 | 
            +
              end
         | 
| 230 231 | 
             
            end
         | 
    
        data/lib/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: serbea
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.10. | 
| 4 | 
            +
              version: 0.10.5
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Bridgetown Team
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020-12- | 
| 11 | 
            +
            date: 2020-12-09 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activesupport
         |