hamlit 2.9.3 → 2.9.4
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/.travis.yml +3 -1
- data/CHANGELOG.md +12 -0
- data/Gemfile +5 -3
- data/REFERENCE.md +7 -1
- data/ext/hamlit/hamlit.c +2 -0
- data/hamlit.gemspec +1 -1
- data/lib/hamlit/attribute_builder.rb +3 -1
- data/lib/hamlit/attribute_compiler.rb +3 -1
- data/lib/hamlit/compiler/script_compiler.rb +4 -0
- data/lib/hamlit/compiler/tag_compiler.rb +8 -2
- data/lib/hamlit/engine.rb +4 -2
- data/lib/hamlit/filters/plain.rb +3 -0
- data/lib/hamlit/hamlit.su +0 -0
- data/lib/hamlit/utils.rb +3 -1
- data/lib/hamlit/version.rb +1 -1
- metadata +8 -8
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ff5c08623e133d33678ed09abfa8aeb752ff6fe48a203d6d22000430335e0ced
         | 
| 4 | 
            +
              data.tar.gz: caa9eb9872690fc5ae45432c5c8487be7fafe51f2e65f484e6f9602f5afdf4d2
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 0d1241f1a8d1fea6d4528649047d5830197b84e3c2bc01c17f8dd07d59f9cc02023b9c28140817f8aeee92ea26bd67ca3bbf864fa3ffeaff83f271d365b87a23
         | 
| 7 | 
            +
              data.tar.gz: 97fcaa8d8b03f6fc84c27927c9a1b73f871211b3d109b32258786a897d54ccb5f3b68c2e42c7e2175dda04073f1dc2aaecb3d3479df34806a5119b035b773968
         | 
    
        data/.travis.yml
    CHANGED
    
    | @@ -17,7 +17,9 @@ matrix: | |
| 17 17 | 
             
                  env: TASK=test
         | 
| 18 18 | 
             
                - rvm: ruby-head
         | 
| 19 19 | 
             
                  env: TASK=test
         | 
| 20 | 
            -
                - rvm: jruby-9. | 
| 20 | 
            +
                - rvm: jruby-9.2.8.0
         | 
| 21 | 
            +
                  env: TASK=test
         | 
| 22 | 
            +
                - rvm: truffleruby
         | 
| 21 23 | 
             
                  env: TASK=test
         | 
| 22 24 | 
             
                - rvm: 2.6.0
         | 
| 23 25 | 
             
                  env: TASK=bench TEMPLATE=benchmark/boolean_attribute.haml,benchmark/class_attribute.haml,benchmark/id_attribute.haml,benchmark/data_attribute.haml,benchmark/common_attribute.haml
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -4,18 +4,30 @@ All notable changes to this project will be documented in this file. This | |
| 4 4 | 
             
            project adheres to [Semantic Versioning](http://semver.org/). This change log is based upon
         | 
| 5 5 | 
             
            [keep-a-changelog](https://github.com/olivierlacan/keep-a-changelog).
         | 
| 6 6 |  | 
| 7 | 
            +
            ## [2.9.4](https://github.com/k0kubun/hamlit/compare/v2.9.3...v2.9.4) - 2019-09-08
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            ### Added
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            - Experimental support of truffleruby [#145](https://github.com/k0kubun/hamlit/issues/145).
         | 
| 12 | 
            +
             | 
| 7 13 | 
             
            ## [2.9.3](https://github.com/k0kubun/hamlit/compare/v2.9.2...v2.9.3) - 2019-04-09
         | 
| 8 14 |  | 
| 15 | 
            +
            ### Fixed
         | 
| 16 | 
            +
             | 
| 9 17 | 
             
            - Fix deprecation warning on Rails 6 [#138](https://github.com/k0kubun/hamlit/issues/138).
         | 
| 10 18 | 
             
              *Thanks to @r7kamura*
         | 
| 11 19 |  | 
| 12 20 | 
             
            ## [2.9.2](https://github.com/k0kubun/hamlit/compare/v2.9.1...v2.9.2) - 2018-11-30
         | 
| 13 21 |  | 
| 22 | 
            +
            ### Fixed
         | 
| 23 | 
            +
             | 
| 14 24 | 
             
            - Fix possible `autoload` failure of dependency [#131](https://github.com/k0kubun/hamlit/issues/131).
         | 
| 15 25 | 
             
              *Thanks to @wimrijnders*
         | 
| 16 26 |  | 
| 17 27 | 
             
            ## [2.9.1](https://github.com/k0kubun/hamlit/compare/v2.9.0...v2.9.1) - 2018-11-01
         | 
| 18 28 |  | 
| 29 | 
            +
            ### Added
         | 
| 30 | 
            +
             | 
| 19 31 | 
             
            - Start supporting JRuby [#100](https://github.com/k0kubun/hamlit/issues/100).
         | 
| 20 32 |  | 
| 21 33 | 
             
            ## [2.9.0](https://github.com/k0kubun/hamlit/compare/v2.8.10...v2.9.0) - 2018-10-16
         | 
    
        data/Gemfile
    CHANGED
    
    | @@ -19,10 +19,12 @@ if /java/ === RUBY_PLATFORM # JRuby | |
| 19 19 | 
             
              gem 'pandoc-ruby'
         | 
| 20 20 | 
             
            else
         | 
| 21 21 | 
             
              gem 'pry-byebug'
         | 
| 22 | 
            -
              gem 'redcarpet' | 
| 22 | 
            +
              gem 'redcarpet'
         | 
| 23 23 |  | 
| 24 | 
            -
              if RUBY_PLATFORM !~ /mswin|mingw/
         | 
| 25 | 
            -
                 | 
| 24 | 
            +
              if RUBY_PLATFORM !~ /mswin|mingw/ && RUBY_ENGINE != 'truffleruby'
         | 
| 25 | 
            +
                if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.7.0') # Travis cannot compile ruby.h with C++
         | 
| 26 | 
            +
                  gem 'faml'
         | 
| 27 | 
            +
                end
         | 
| 26 28 | 
             
                gem 'stackprof'
         | 
| 27 29 | 
             
              end
         | 
| 28 30 | 
             
            end
         | 
    
        data/REFERENCE.md
    CHANGED
    
    | 99 99 | 
             
            (`foo` is not removed). This design allows us to reduce string concatenation and
         | 
| 100 100 | 
             
            is the only difference between Faml and Hamlit.
         | 
| 101 101 |  | 
| 102 | 
            +
            You may be also interested in
         | 
| 103 | 
            +
            [hamlit/hamlit-boolean\_attributes](https://github.com/hamlit/hamlit-boolean_attributes).
         | 
| 104 | 
            +
             | 
| 102 105 | 
             
            ## 5 Types of Attributes
         | 
| 103 106 |  | 
| 104 107 | 
             
            Haml has 3 types of attributes: id, class and others.
         | 
| @@ -181,7 +184,10 @@ defer reversed ismap seamless muted required autofocus novalidate formnovalidate | |
| 181 184 | 
             
            itemscope allowfullscreen default inert sortable truespeed typemustmatch
         | 
| 182 185 | 
             
            ```
         | 
| 183 186 |  | 
| 184 | 
            -
             | 
| 187 | 
            +
            If you want to customize the list of boolean attributes, you can use
         | 
| 188 | 
            +
            [hamlit/hamlit-boolean\_attributes](https://github.com/hamlit/hamlit-boolean_attributes).
         | 
| 189 | 
            +
             | 
| 190 | 
            +
            "aria-\*" and "data-\*" are also regarded as boolean.
         | 
| 185 191 |  | 
| 186 192 | 
             
            ### other attributes
         | 
| 187 193 | 
             
            No hyphenation and boolean support. `false` is rendered as "false" (like Rails helpers).
         | 
    
        data/ext/hamlit/hamlit.c
    CHANGED
    
    | @@ -1,5 +1,6 @@ | |
| 1 1 | 
             
            #include <ruby.h>
         | 
| 2 2 | 
             
            #include <ruby/encoding.h>
         | 
| 3 | 
            +
            #ifndef TRUFFLERUBY
         | 
| 3 4 | 
             
            #include "hescape.h"
         | 
| 4 5 | 
             
            #include "string.h"
         | 
| 5 6 |  | 
| @@ -551,3 +552,4 @@ Init_hamlit(void) | |
| 551 552 | 
             
              rb_const_set(mAttributeBuilder, id_space,      rb_obj_freeze(rb_str_new_cstr(" ")));
         | 
| 552 553 | 
             
              rb_const_set(mAttributeBuilder, id_underscore, rb_obj_freeze(rb_str_new_cstr("_")));
         | 
| 553 554 | 
             
            }
         | 
| 555 | 
            +
            #endif
         | 
    
        data/hamlit.gemspec
    CHANGED
    
    | @@ -37,7 +37,7 @@ Gem::Specification.new do |spec| | |
| 37 37 | 
             
              spec.add_development_dependency 'less'
         | 
| 38 38 | 
             
              spec.add_development_dependency 'minitest-reporters', '~> 1.1'
         | 
| 39 39 | 
             
              spec.add_development_dependency 'rails', '>= 4.0.0'
         | 
| 40 | 
            -
              spec.add_development_dependency 'rake' | 
| 40 | 
            +
              spec.add_development_dependency 'rake'
         | 
| 41 41 | 
             
              spec.add_development_dependency 'rake-compiler'
         | 
| 42 42 | 
             
              spec.add_development_dependency 'sass'
         | 
| 43 43 | 
             
              spec.add_development_dependency 'slim'
         | 
| @@ -9,7 +9,9 @@ module Hamlit::AttributeBuilder | |
| 9 9 | 
             
                                   itemscope allowfullscreen default inert sortable
         | 
| 10 10 | 
             
                                   truespeed typemustmatch download].freeze
         | 
| 11 11 |  | 
| 12 | 
            -
               | 
| 12 | 
            +
              # Java extension is not implemented for JRuby yet.
         | 
| 13 | 
            +
              # TruffleRuby does not implement `rb_ary_sort_bang`, etc.
         | 
| 14 | 
            +
              if /java/ === RUBY_PLATFORM || RUBY_ENGINE == 'truffleruby'
         | 
| 13 15 | 
             
                class << self
         | 
| 14 16 | 
             
                  def build(escape_attrs, quote, format, object_ref, *hashes)
         | 
| 15 17 | 
             
                    hashes << Hamlit::ObjectRef.parse(object_ref) if object_ref
         | 
| @@ -14,7 +14,9 @@ module Hamlit | |
| 14 14 |  | 
| 15 15 | 
             
                def compile(node)
         | 
| 16 16 | 
             
                  hashes = []
         | 
| 17 | 
            -
                   | 
| 17 | 
            +
                  if node.value[:object_ref] != :nil || !Ripper.respond_to?(:lex) # No Ripper.lex in truffleruby
         | 
| 18 | 
            +
                    return runtime_compile(node)
         | 
| 19 | 
            +
                  end
         | 
| 18 20 | 
             
                  node.value[:attributes_hashes].each do |attribute_str|
         | 
| 19 21 | 
             
                    hash = AttributeParser.parse(attribute_str)
         | 
| 20 22 | 
             
                    return runtime_compile(node) unless hash
         | 
| @@ -11,6 +11,10 @@ module Hamlit | |
| 11 11 | 
             
                  end
         | 
| 12 12 |  | 
| 13 13 | 
             
                  def compile(node, &block)
         | 
| 14 | 
            +
                    unless Ripper.respond_to?(:lex) # No Ripper.lex in truffleruby
         | 
| 15 | 
            +
                      return dynamic_compile(node, &block)
         | 
| 16 | 
            +
                    end
         | 
| 17 | 
            +
             | 
| 14 18 | 
             
                    no_children = node.children.empty?
         | 
| 15 19 | 
             
                    case
         | 
| 16 20 | 
             
                    when no_children && node.value[:escape_interpolation]
         | 
| @@ -28,8 +28,10 @@ module Hamlit | |
| 28 28 | 
             
                      nil
         | 
| 29 29 | 
             
                    when node.value[:parse]
         | 
| 30 30 | 
             
                      return compile_interpolated_plain(node) if node.value[:escape_interpolation]
         | 
| 31 | 
            -
                       | 
| 32 | 
            -
             | 
| 31 | 
            +
                      if Ripper.respond_to?(:lex) # No Ripper.lex in truffleruby
         | 
| 32 | 
            +
                        return delegate_optimization(node) if RubyExpression.string_literal?(node.value[:value])
         | 
| 33 | 
            +
                        return delegate_optimization(node) if Temple::StaticAnalyzer.static?(node.value[:value])
         | 
| 34 | 
            +
                      end
         | 
| 33 35 |  | 
| 34 36 | 
             
                      var = @identity.generate
         | 
| 35 37 | 
             
                      [:multi,
         | 
| @@ -53,6 +55,10 @@ module Hamlit | |
| 53 55 |  | 
| 54 56 | 
             
                  # We should handle interpolation here to escape only interpolated values.
         | 
| 55 57 | 
             
                  def compile_interpolated_plain(node)
         | 
| 58 | 
            +
                    unless Ripper.respond_to?(:lex) # No Ripper.lex in truffleruby
         | 
| 59 | 
            +
                      return [:multi, [:escape, node.value[:escape_interpolation], [:dynamic, "%Q[#{node.value[:value]}]"]], [:newline]]
         | 
| 60 | 
            +
                    end
         | 
| 61 | 
            +
             | 
| 56 62 | 
             
                    temple = [:multi]
         | 
| 57 63 | 
             
                    StringSplitter.compile(node.value[:value]).each do |type, value|
         | 
| 58 64 | 
             
                      case type
         | 
    
        data/lib/hamlit/engine.rb
    CHANGED
    
    | @@ -25,8 +25,10 @@ module Hamlit | |
| 25 25 | 
             
                use Parser
         | 
| 26 26 | 
             
                use Compiler
         | 
| 27 27 | 
             
                use HTML
         | 
| 28 | 
            -
                 | 
| 29 | 
            -
             | 
| 28 | 
            +
                if Ripper.respond_to?(:lex) # No Ripper.lex in truffleruby
         | 
| 29 | 
            +
                  use StringSplitter
         | 
| 30 | 
            +
                  filter :StaticAnalyzer
         | 
| 31 | 
            +
                end
         | 
| 30 32 | 
             
                use Escapable
         | 
| 31 33 | 
             
                use ForceEscapable
         | 
| 32 34 | 
             
                filter :ControlFlow
         | 
    
        data/lib/hamlit/filters/plain.rb
    CHANGED
    
    | @@ -5,6 +5,9 @@ module Hamlit | |
| 5 5 | 
             
              class Filters
         | 
| 6 6 | 
             
                class Plain < Base
         | 
| 7 7 | 
             
                  def compile(node)
         | 
| 8 | 
            +
                    unless Ripper.respond_to?(:lex)
         | 
| 9 | 
            +
                      raise NotImplementedError.new('This platform does not have Ripper.lex required for :plain filter')
         | 
| 10 | 
            +
                    end
         | 
| 8 11 | 
             
                    text = node.value[:text]
         | 
| 9 12 | 
             
                    text = text.rstrip unless ::Hamlit::HamlUtil.contains_interpolation?(text) # for compatibility
         | 
| 10 13 | 
             
                    [:multi, *compile_plain(text)]
         | 
| Binary file | 
    
        data/lib/hamlit/utils.rb
    CHANGED
    
    | @@ -1,7 +1,9 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 | 
             
            module Hamlit
         | 
| 3 3 | 
             
              module Utils
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                # Java extension is not implemented for JRuby yet.
         | 
| 5 | 
            +
                # TruffleRuby does not implement `rb_ary_sort_bang`, etc.
         | 
| 6 | 
            +
                if /java/ === RUBY_PLATFORM || RUBY_ENGINE == 'truffleruby'
         | 
| 5 7 | 
             
                  require 'cgi/escape'
         | 
| 6 8 |  | 
| 7 9 | 
             
                  def self.escape_html(html)
         | 
    
        data/lib/hamlit/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: hamlit
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.9. | 
| 4 | 
            +
              version: 2.9.4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Takashi Kokubun
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019- | 
| 11 | 
            +
            date: 2019-09-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: temple
         | 
| @@ -154,16 +154,16 @@ dependencies: | |
| 154 154 | 
             
              name: rake
         | 
| 155 155 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 156 156 | 
             
                requirements:
         | 
| 157 | 
            -
                - - " | 
| 157 | 
            +
                - - ">="
         | 
| 158 158 | 
             
                  - !ruby/object:Gem::Version
         | 
| 159 | 
            -
                    version: ' | 
| 159 | 
            +
                    version: '0'
         | 
| 160 160 | 
             
              type: :development
         | 
| 161 161 | 
             
              prerelease: false
         | 
| 162 162 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 163 163 | 
             
                requirements:
         | 
| 164 | 
            -
                - - " | 
| 164 | 
            +
                - - ">="
         | 
| 165 165 | 
             
                  - !ruby/object:Gem::Version
         | 
| 166 | 
            -
                    version: ' | 
| 166 | 
            +
                    version: '0'
         | 
| 167 167 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 168 168 | 
             
              name: rake-compiler
         | 
| 169 169 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -311,6 +311,7 @@ files: | |
| 311 311 | 
             
            - lib/hamlit/filters/text_base.rb
         | 
| 312 312 | 
             
            - lib/hamlit/filters/tilt_base.rb
         | 
| 313 313 | 
             
            - lib/hamlit/force_escapable.rb
         | 
| 314 | 
            +
            - lib/hamlit/hamlit.su
         | 
| 314 315 | 
             
            - lib/hamlit/helpers.rb
         | 
| 315 316 | 
             
            - lib/hamlit/html.rb
         | 
| 316 317 | 
             
            - lib/hamlit/identity.rb
         | 
| @@ -353,8 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 353 354 | 
             
                - !ruby/object:Gem::Version
         | 
| 354 355 | 
             
                  version: '0'
         | 
| 355 356 | 
             
            requirements: []
         | 
| 356 | 
            -
             | 
| 357 | 
            -
            rubygems_version: 2.7.6
         | 
| 357 | 
            +
            rubygems_version: 3.0.3
         | 
| 358 358 | 
             
            signing_key: 
         | 
| 359 359 | 
             
            specification_version: 4
         | 
| 360 360 | 
             
            summary: High Performance Haml Implementation
         |