-
Notifications
You must be signed in to change notification settings - Fork 1
Bump haml from 6.3.0 to 7.2.0 #872
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
dependabot
wants to merge
1
commit into
main
Choose a base branch
from
dependabot/bundler/haml-7.2.0
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Bumps [haml](https://github.com/haml/haml) from 6.3.0 to 7.2.0. - [Release notes](https://github.com/haml/haml/releases) - [Changelog](https://github.com/haml/haml/blob/main/CHANGELOG.md) - [Commits](haml/haml@v6.3.0...v7.2.0) --- updated-dependencies: - dependency-name: haml dependency-version: 7.2.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Contributor
4 similar comments
Contributor
Contributor
Contributor
Contributor
Contributor
gem compare haml 6.3.0 7.2.0Compared versions: ["6.3.0", "7.2.0"]
DIFFERENT date:
6.3.0: 2023-12-10 00:00:00 UTC
7.2.0: 1980-01-02 00:00:00 UTC
DIFFERENT metadata:
6.3.0: {"rubygems_mfa_required" => "true"}
7.2.0: {"rubygems_mfa_required" => "true", "changelog_uri" => "https://github.com/haml/haml/releases", "source_code_uri" => "https://github.com/haml/haml"}
DIFFERENT required_ruby_version:
6.3.0: >= 2.1.0
7.2.0: >= 3.2.0
DIFFERENT rubygems_version:
6.3.0: 3.4.10
7.2.0: 3.6.7
DIFFERENT version:
6.3.0: 6.3.0
7.2.0: 7.2.0
DIFFERENT files:
6.3.0->7.2.0:
* Added:
.github/workflows/release.yml +46/-0
* Changed:
.github/workflows/test.yml +5/-7
CHANGELOG.md +37/-1
Gemfile +4/-6
README.md +2/-1
REFERENCE.md +9/-16
bin/console +3/-4
bin/stackprof +2/-2
haml.gemspec +4/-2
lib/haml.rb +1/-5
lib/haml/attribute_builder.rb +10/-10
lib/haml/attribute_compiler.rb +2/-2
lib/haml/engine.rb +2/-2
lib/haml/filters/plain.rb +1/-1
lib/haml/filters/ruby.rb +1/-1
lib/haml/parser.rb +10/-10
lib/haml/rails_template.rb +2/-2
lib/haml/string_splitter.rb +1/-1
lib/haml/util.rb +2/-2
lib/haml/version.rb +1/-1
DIFFERENT development dependencies:
6.3.0->7.2.0:
* Deleted:
haml [">= 5"] (development)
DIFFERENT Gemfile dependencies
6.3.0->7.2.0:
* Added:
base64 [">= 0"] (runtime)
bigdecimal [">= 0"] (runtime)
mutex_m [">= 0"] (runtime)
* Deleted
pry [">= 0"] (runtime)
rake-compiler ["< 1.2.4"] (runtime) |
3 similar comments
Contributor
gem compare haml 6.3.0 7.2.0Compared versions: ["6.3.0", "7.2.0"]
DIFFERENT date:
6.3.0: 2023-12-10 00:00:00 UTC
7.2.0: 1980-01-02 00:00:00 UTC
DIFFERENT metadata:
6.3.0: {"rubygems_mfa_required" => "true"}
7.2.0: {"rubygems_mfa_required" => "true", "changelog_uri" => "https://github.com/haml/haml/releases", "source_code_uri" => "https://github.com/haml/haml"}
DIFFERENT required_ruby_version:
6.3.0: >= 2.1.0
7.2.0: >= 3.2.0
DIFFERENT rubygems_version:
6.3.0: 3.4.10
7.2.0: 3.6.7
DIFFERENT version:
6.3.0: 6.3.0
7.2.0: 7.2.0
DIFFERENT files:
6.3.0->7.2.0:
* Added:
.github/workflows/release.yml +46/-0
* Changed:
.github/workflows/test.yml +5/-7
CHANGELOG.md +37/-1
Gemfile +4/-6
README.md +2/-1
REFERENCE.md +9/-16
bin/console +3/-4
bin/stackprof +2/-2
haml.gemspec +4/-2
lib/haml.rb +1/-5
lib/haml/attribute_builder.rb +10/-10
lib/haml/attribute_compiler.rb +2/-2
lib/haml/engine.rb +2/-2
lib/haml/filters/plain.rb +1/-1
lib/haml/filters/ruby.rb +1/-1
lib/haml/parser.rb +10/-10
lib/haml/rails_template.rb +2/-2
lib/haml/string_splitter.rb +1/-1
lib/haml/util.rb +2/-2
lib/haml/version.rb +1/-1
DIFFERENT development dependencies:
6.3.0->7.2.0:
* Deleted:
haml [">= 5"] (development)
DIFFERENT Gemfile dependencies
6.3.0->7.2.0:
* Added:
base64 [">= 0"] (runtime)
bigdecimal [">= 0"] (runtime)
mutex_m [">= 0"] (runtime)
* Deleted
pry [">= 0"] (runtime)
rake-compiler ["< 1.2.4"] (runtime) |
Contributor
gem compare haml 6.3.0 7.2.0Compared versions: ["6.3.0", "7.2.0"]
DIFFERENT date:
6.3.0: 2023-12-10 00:00:00 UTC
7.2.0: 1980-01-02 00:00:00 UTC
DIFFERENT metadata:
6.3.0: {"rubygems_mfa_required" => "true"}
7.2.0: {"rubygems_mfa_required" => "true", "changelog_uri" => "https://github.com/haml/haml/releases", "source_code_uri" => "https://github.com/haml/haml"}
DIFFERENT required_ruby_version:
6.3.0: >= 2.1.0
7.2.0: >= 3.2.0
DIFFERENT rubygems_version:
6.3.0: 3.4.10
7.2.0: 3.6.7
DIFFERENT version:
6.3.0: 6.3.0
7.2.0: 7.2.0
DIFFERENT files:
6.3.0->7.2.0:
* Added:
.github/workflows/release.yml +46/-0
* Changed:
.github/workflows/test.yml +5/-7
CHANGELOG.md +37/-1
Gemfile +4/-6
README.md +2/-1
REFERENCE.md +9/-16
bin/console +3/-4
bin/stackprof +2/-2
haml.gemspec +4/-2
lib/haml.rb +1/-5
lib/haml/attribute_builder.rb +10/-10
lib/haml/attribute_compiler.rb +2/-2
lib/haml/engine.rb +2/-2
lib/haml/filters/plain.rb +1/-1
lib/haml/filters/ruby.rb +1/-1
lib/haml/parser.rb +10/-10
lib/haml/rails_template.rb +2/-2
lib/haml/string_splitter.rb +1/-1
lib/haml/util.rb +2/-2
lib/haml/version.rb +1/-1
DIFFERENT development dependencies:
6.3.0->7.2.0:
* Deleted:
haml [">= 5"] (development)
DIFFERENT Gemfile dependencies
6.3.0->7.2.0:
* Added:
base64 [">= 0"] (runtime)
bigdecimal [">= 0"] (runtime)
mutex_m [">= 0"] (runtime)
* Deleted
pry [">= 0"] (runtime)
rake-compiler ["< 1.2.4"] (runtime) |
Contributor
gem compare haml 6.3.0 7.2.0Compared versions: ["6.3.0", "7.2.0"]
DIFFERENT date:
6.3.0: 2023-12-10 00:00:00 UTC
7.2.0: 1980-01-02 00:00:00 UTC
DIFFERENT metadata:
6.3.0: {"rubygems_mfa_required" => "true"}
7.2.0: {"rubygems_mfa_required" => "true", "changelog_uri" => "https://github.com/haml/haml/releases", "source_code_uri" => "https://github.com/haml/haml"}
DIFFERENT required_ruby_version:
6.3.0: >= 2.1.0
7.2.0: >= 3.2.0
DIFFERENT rubygems_version:
6.3.0: 3.4.10
7.2.0: 3.6.7
DIFFERENT version:
6.3.0: 6.3.0
7.2.0: 7.2.0
DIFFERENT files:
6.3.0->7.2.0:
* Added:
.github/workflows/release.yml +46/-0
* Changed:
.github/workflows/test.yml +5/-7
CHANGELOG.md +37/-1
Gemfile +4/-6
README.md +2/-1
REFERENCE.md +9/-16
bin/console +3/-4
bin/stackprof +2/-2
haml.gemspec +4/-2
lib/haml.rb +1/-5
lib/haml/attribute_builder.rb +10/-10
lib/haml/attribute_compiler.rb +2/-2
lib/haml/engine.rb +2/-2
lib/haml/filters/plain.rb +1/-1
lib/haml/filters/ruby.rb +1/-1
lib/haml/parser.rb +10/-10
lib/haml/rails_template.rb +2/-2
lib/haml/string_splitter.rb +1/-1
lib/haml/util.rb +2/-2
lib/haml/version.rb +1/-1
DIFFERENT development dependencies:
6.3.0->7.2.0:
* Deleted:
haml [">= 5"] (development)
DIFFERENT Gemfile dependencies
6.3.0->7.2.0:
* Added:
base64 [">= 0"] (runtime)
bigdecimal [">= 0"] (runtime)
mutex_m [">= 0"] (runtime)
* Deleted
pry [">= 0"] (runtime)
rake-compiler ["< 1.2.4"] (runtime) |
Contributor
gem compare --diff haml 6.3.0 7.2.0Compared versions: ["6.3.0", "7.2.0"]
DIFFERENT files:
6.3.0->7.2.0:
* Added:
.github/workflows/release.yml
--- /tmp/20260114-587-r6iiog 2026-01-14 03:33:07.459756859 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/.github/workflows/release.yml 2026-01-14 03:33:07.451756899 +0000
@@ -0,0 +1,46 @@
+name: Release
+
+on:
+ push:
+ tags:
+ - 'v*'
+
+permissions:
+ contents: read
+
+jobs:
+ push:
+ if: github.repository_owner == 'haml'
+ runs-on: ubuntu-latest
+
+ environment:
+ name: rubygems.org
+ url: https://rubygems.org/gems/haml
+
+ permissions:
+ contents: write
+ id-token: write
+
+ steps:
+ - name: Harden Runner
+ uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
+ with:
+ egress-policy: audit
+
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+
+ - name: Set up Ruby
+ uses: ruby/setup-ruby@eaecf785f6a34567a6d97f686bbb7bccc1ac1e5c # v1.237.0
+ with:
+ bundler-cache: true
+ ruby-version: ruby
+
+ - name: Publish to RubyGems
+ uses: rubygems/release-gem@a25424ba2ba8b387abc8ef40807c2c85b96cbe32 # v1.1.1
+
+ - name: Create GitHub release
+ run: |
+ tag_name="$(git describe --tags --abbrev=0)"
+ gh release create "${tag_name}" --verify-tag --generate-notes
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
* Changed:
.github/workflows/test.yml
--- /tmp/d20260114-587-96pg59/haml-6.3.0/.github/workflows/test.yml 2026-01-14 03:33:07.443756940 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/.github/workflows/test.yml 2026-01-14 03:33:07.451756899 +0000
@@ -20,5 +19,0 @@
- - '2.5'
- - '2.6'
- - '2.7'
- - '3.0'
- - '3.1'
@@ -25,0 +21,3 @@
+ - '3.3'
+ - '3.4'
+ - ruby-head
@@ -27 +25 @@
- - truffleruby-head
+ - truffleruby
@@ -29 +27 @@
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
CHANGELOG.md
--- /tmp/d20260114-587-96pg59/haml-6.3.0/CHANGELOG.md 2026-01-14 03:33:07.443756940 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/CHANGELOG.md 2026-01-14 03:33:07.452756894 +0000
@@ -2,0 +3,37 @@
+## 7.2.0
+
+* Do not require rails when haml is required https://github.com/haml/haml/pull/1201
+* Point `changelog_uri` to GitHub Releases https://github.com/haml/haml/pull/1202
+
+## 7.1.0
+
+* Support xhtml format for boolean nested data attributes https://github.com/haml/haml/pull/1200
+
+## 7.0.2
+
+* Replace usages of `=~` with `.match?` where possible https://github.com/haml/haml/pull/1196
+* Add source code URI to gemspec metadata https://github.com/haml/haml/pull/1197
+
+## 7.0.1
+
+* Use `Regexp#match?` predicate where possible https://github.com/haml/haml/pull/1194
+* Fix the 'Changelog' link on rubygems.org/gems/haml https://github.com/haml/haml/pull/1192
+
+## 7.0.0
+
+* Change the default `attr_quote` from `'` to `"` https://github.com/haml/haml/issues/1188
+* Bump required Ruby version to 3.2 https://github.com/haml/haml/issues/1176
+
+## 6.4.0
+
+* Authorize characters in attribute name for vuejs https://github.com/haml/haml/pull/1172
+* Compile new-style attributes statically https://github.com/haml/haml/pull/1165
+* Remove newlines from template annotation comments https://github.com/haml/haml/pull/1186
+* Fix line numbers within a :ruby filter https://github.com/haml/haml/pull/1166
+* Fix .class + nested class array bug https://github.com/haml/haml/pull/1191
+
+## 6.3.1
+
+* Optimize string transformation using `String#tr` https://github.com/haml/haml/pull/1168
+* Provide a Changelog link on rubygems.org https://github.com/haml/haml/pull/1157
+
@@ -11 +47,0 @@
- * See [the reference](https://github.com/haml/haml/blob/v6.2.5/REFERENCE.md#turbo) for suggested alternatives.
Gemfile
--- /tmp/d20260114-587-96pg59/haml-6.3.0/Gemfile 2026-01-14 03:33:07.444756935 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/Gemfile 2026-01-14 03:33:07.452756894 +0000
@@ -13 +13,3 @@
-gem 'pry'
+gem 'base64'
+gem 'bigdecimal'
+gem 'mutex_m'
@@ -15 +17 @@
-if /java/ === RUBY_PLATFORM # JRuby
+if /java/.match?(RUBY_PLATFORM) # JRuby
@@ -23,4 +24,0 @@
-end
-
-if RUBY_VERSION < '2.6'
- gem 'rake-compiler', '< 1.2.4'
README.md
--- /tmp/d20260114-587-96pg59/haml-6.3.0/README.md 2026-01-14 03:33:07.444756935 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/README.md 2026-01-14 03:33:07.452756894 +0000
@@ -6,0 +7 @@
+[](https://discord.gg/G8dEAwvV2Y)
@@ -159 +160 @@
-Haml currently supports Ruby 2.0.0 and higher, so please make sure your changes run on 2.0+.
+Haml currently supports Ruby 3.2.0 and higher, so please make sure your changes run on 3.2+.
REFERENCE.md
--- /tmp/d20260114-587-96pg59/haml-6.3.0/REFERENCE.md 2026-01-14 03:33:07.444756935 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/REFERENCE.md 2026-01-14 03:33:07.452756894 +0000
@@ -108 +108 @@
-For the complete list of available options, please see `Haml::Engine`.
+For the complete list of available options, please see [`Haml::Engine`](https://github.com/haml/haml/blob/main/lib/haml/engine.rb).
@@ -323 +323 @@
-[`Haml::AttributeBuilder::BOOLEAN_ATTRIBUTES`](https://github.com/haml/haml/blob/main/lib/haml/attribute_builder.rb#L5),
+[`Haml::BOOLEAN_ATTRIBUTES`](https://github.com/haml/haml/blob/main/lib/haml/attribute_compiler.rb#L8),
@@ -363,7 +362,0 @@
-Notice that the underscore in `author_id` was replaced with a hyphen. If you wish
-to suppress this behavior, you can set Haml's
-{Haml::Options#hyphenate_data_attrs `:hyphenate_data_attrs` option} to `false`,
-and the output will be rendered as:
-
- <a data-author_id='123' data-category='7' href='/posts'>Posts By Author</a>
-
@@ -571 +564 @@
- @user = CrazyUser.find(15)
+ @user = FriendlyUser.find(15)
@@ -582 +575 @@
- <div class='greeting_crazy_user' id='greeting_crazy_user_15'>
+ <div class='greeting_friendly_user' id='greeting_friendly_user_15'>
@@ -590 +583 @@
- # file: app/models/crazy_user.rb
+ # file: app/models/friendly_user.rb
@@ -592 +585 @@
- class CrazyUser < ActiveRecord::Base
+ class FriendlyUser < ActiveRecord::Base
@@ -594 +587 @@
- "a_crazy_user"
+ "a_friendly_user"
@@ -605 +598 @@
- <div class='a_crazy_user' id='a_crazy_user_15'>
+ <div class='a_friendly_user' id='a_friendly_user_15'>
@@ -1301 +1294 @@
-For people using Turbo-rails and Haml 6+ need to either:
+For people using Turbo-rails need to either:
bin/console
--- /tmp/d20260114-587-96pg59/haml-6.3.0/bin/console 2026-01-14 03:33:07.444756935 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/bin/console 2026-01-14 03:33:07.453756889 +0000
@@ -4 +4 @@
-require 'hamlit'
+require 'haml'
@@ -9,3 +9,2 @@
-# (If you use this, don't forget to add pry to your Gemfile!)
-require 'pry'
-Pry.start
+require 'irb'
+IRB.start
bin/stackprof
--- /tmp/d20260114-587-96pg59/haml-6.3.0/bin/stackprof 2026-01-14 03:33:07.445756930 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/bin/stackprof 2026-01-14 03:33:07.453756889 +0000
@@ -4 +4 @@
-require 'hamlit'
+require 'haml'
@@ -23 +23 @@
-Hamlit::Engine.new.call(haml)
+Haml::Engine.new.call(haml)
haml.gemspec
--- /tmp/d20260114-587-96pg59/haml-6.3.0/haml.gemspec 2026-01-14 03:33:07.445756930 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/haml.gemspec 2026-01-14 03:33:07.453756889 +0000
@@ -24 +24,4 @@
- spec.required_ruby_version = '>= 2.1.0'
+ spec.metadata["changelog_uri"] = "https://github.com/haml/haml/releases"
+ spec.metadata["source_code_uri"] = "https://github.com/haml/haml"
+
+ spec.required_ruby_version = '>= 3.2.0'
@@ -34 +36,0 @@
- spec.add_development_dependency 'haml', '>= 5'
lib/haml.rb
--- /tmp/d20260114-587-96pg59/haml-6.3.0/lib/haml.rb 2026-01-14 03:33:07.445756930 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/lib/haml.rb 2026-01-14 03:33:07.453756889 +0000
@@ -8,5 +8 @@
- begin
- require 'rails'
- require 'haml/railtie'
- rescue LoadError
- end
+ require 'haml/railtie' if defined?(Rails::Railtie)
lib/haml/attribute_builder.rb
--- /tmp/d20260114-587-96pg59/haml-6.3.0/lib/haml/attribute_builder.rb 2026-01-14 03:33:07.446756925 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/lib/haml/attribute_builder.rb 2026-01-14 03:33:07.454756884 +0000
@@ -19 +19 @@
- buf << build_data(escape_attrs, quote, *hash[key])
+ buf << build_data(escape_attrs, quote, format, *hash[key])
@@ -21 +21 @@
- buf << build_aria(escape_attrs, quote, *hash[key])
+ buf << build_aria(escape_attrs, quote, format, *hash[key])
@@ -57 +57 @@
- classes += value.select { |v| v }
+ classes += value.flatten.select { |v| v }
@@ -65,2 +65,2 @@
- def build_data(escape_attrs, quote, *hashes)
- build_data_attribute(:data, escape_attrs, quote, *hashes)
+ def build_data(escape_attrs, quote, format, *hashes)
+ build_data_attribute(:data, escape_attrs, quote, format, *hashes)
@@ -69,2 +69,2 @@
- def build_aria(escape_attrs, quote, *hashes)
- build_data_attribute(:aria, escape_attrs, quote, *hashes)
+ def build_aria(escape_attrs, quote, format, *hashes)
+ build_data_attribute(:aria, escape_attrs, quote, format, *hashes)
@@ -75 +75 @@
- def build_data_attribute(key, escape_attrs, quote, *hashes)
+ def build_data_attribute(key, escape_attrs, quote, format, *hashes)
@@ -87 +87 @@
- attrs << " #{key}"
+ build_boolean!(escape_attrs, quote, format, attrs, key, value)
@@ -108 +108 @@
- flattened["#{key}-#{k.to_s.gsub(/_/, '-')}"] = v
+ flattened["#{key}-#{k.to_s.tr('_', '-')}"] = v
lib/haml/attribute_compiler.rb
--- /tmp/d20260114-587-96pg59/haml-6.3.0/lib/haml/attribute_compiler.rb 2026-01-14 03:33:07.446756925 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/lib/haml/attribute_compiler.rb 2026-01-14 03:33:07.454756884 +0000
@@ -88 +88 @@
- args = [@escape_attrs.inspect, "#{@quote.inspect}.freeze", values.map { |v| literal_for(v) }]
+ args = [@escape_attrs.inspect, "#{@quote.inspect}.freeze", @format.inspect, values.map { |v| literal_for(v) }]
@@ -101 +101 @@
- if Temple::StaticAnalyzer.static?(exp)
+ if values.last.first == :static || Temple::StaticAnalyzer.static?(exp)
lib/haml/engine.rb
--- /tmp/d20260114-587-96pg59/haml-6.3.0/lib/haml/engine.rb 2026-01-14 03:33:07.447756919 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/lib/haml/engine.rb 2026-01-14 03:33:07.455756879 +0000
@@ -20 +20 @@
- attr_quote: "'",
+ attr_quote: '"',
@@ -26 +26 @@
- filename: "",
+ filename: '',
lib/haml/filters/plain.rb
--- /tmp/d20260114-587-96pg59/haml-6.3.0/lib/haml/filters/plain.rb 2026-01-14 03:33:07.448756914 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/lib/haml/filters/plain.rb 2026-01-14 03:33:07.456756874 +0000
@@ -10 +10 @@
- [:multi, *compile_plain(text)]
+ [:multi, [:newline], *compile_plain(text)]
lib/haml/filters/ruby.rb
--- /tmp/d20260114-587-96pg59/haml-6.3.0/lib/haml/filters/ruby.rb 2026-01-14 03:33:07.449756909 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/lib/haml/filters/ruby.rb 2026-01-14 03:33:07.456756874 +0000
@@ -6 +6 @@
- [:code, node.value[:text]]
+ [:multi, [:newline], [:code, node.value[:text]]]
lib/haml/parser.rb
--- /tmp/d20260114-587-96pg59/haml-6.3.0/lib/haml/parser.rb 2026-01-14 03:33:07.450756904 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/lib/haml/parser.rb 2026-01-14 03:33:07.457756869 +0000
@@ -185 +185 @@
- return @template_tabs + 1 if flat? && line.whitespace =~ /^#{@flat_spaces}/
+ return @template_tabs + 1 if flat? && /^#{@flat_spaces}/.match?(line.whitespace)
@@ -239 +239 @@
- unless value =~ /\A{.*}\z/m
+ unless /\A{.*}\z/m.match?(value)
@@ -531 +531 @@
- raise Error.new(Error.message(:invalid_filter_name, name)) unless name =~ /^\w+$/
+ raise Error.new(Error.message(:invalid_filter_name, name)) unless /^\w+$/.match?(name)
@@ -633 +633 @@
- if !attributes.empty? && (attributes =~ /[.#](\.|#|\z)/)
+ if !attributes.empty? && /[.#](\.|#|\z)/.match?(attributes)
@@ -752 +752 @@
- unless (name = scanner.scan(/[-:\w]+/))
+ unless (name = scanner.scan(/[-:@#\w\.]+/))
@@ -789 +789 @@
- (line_defined && @line.text[0] == ?: && line.full =~ %r[^#{@line.full[/^\s+/]}\s])
+ (line_defined && @line.text[0] == ?: && %r[^#{@line.full[/^\s+/]}\s].match?(line.full))
@@ -799 +799 @@
- line && !line.text.empty? && line.full !~ /^#{@flat_spaces}/
+ line && !line.text.empty? && !(/^#{@flat_spaces}/.match?(line.full))
@@ -817 +817 @@
- text && text.length > 1 && text[-1] == MULTILINE_CHAR_VALUE && text[-2] == ?\s && text !~ BLOCK_WITH_SPACES
+ text && text.length > 1 && text[-1] == MULTILINE_CHAR_VALUE && text[-2] == ?\s && !BLOCK_WITH_SPACES.match?(text)
@@ -841 +841 @@
- !((text[-3, 2] =~ /\W\?/) || text[-3, 2] == "?\\")
+ !(/\W\?/.match?(text[-3, 2]) || text[-3, 2] == "?\\")
@@ -874 +874 @@
- @next_line.full =~ (@indentation ? /^#{@indentation * (@template_tabs + 1)}/ : /^\s/)
+ (@indentation ? /^#{@indentation * (@template_tabs + 1)}/ : /^\s/).match?(@next_line.full)
lib/haml/rails_template.rb
--- /tmp/d20260114-587-96pg59/haml-6.3.0/lib/haml/rails_template.rb 2026-01-14 03:33:07.450756904 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/lib/haml/rails_template.rb 2026-01-14 03:33:07.458756864 +0000
@@ -43,2 +43,2 @@
- preamble: "<!-- BEGIN #{template.short_identifier} -->\n",
- postamble: "<!-- END #{template.short_identifier} -->\n",
+ preamble: "<!-- BEGIN #{template.short_identifier} -->",
+ postamble: "<!-- END #{template.short_identifier} -->",
lib/haml/string_splitter.rb
--- /tmp/d20260114-587-96pg59/haml-6.3.0/lib/haml/string_splitter.rb 2026-01-14 03:33:07.450756904 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/lib/haml/string_splitter.rb 2026-01-14 03:33:07.458756864 +0000
@@ -10 +10 @@
- if defined?(Ripper) && RUBY_VERSION >= "2.0.0" && Ripper.respond_to?(:lex)
+ if defined?(Ripper) && Ripper.respond_to?(:lex)
lib/haml/util.rb
--- /tmp/d20260114-587-96pg59/haml-6.3.0/lib/haml/util.rb 2026-01-14 03:33:07.450756904 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/lib/haml/util.rb 2026-01-14 03:33:07.458756864 +0000
@@ -72 +72 @@
- elsif str.encoding.name =~ /^UTF-(16|32)(BE|LE)?$/
+ elsif /^UTF-(16|32)(BE|LE)?$/.match?(str.encoding.name)
@@ -255 +255 @@
- return unless name =~ /(en)?coding/in
+ return unless /(en)?coding/in.match?(name)
lib/haml/version.rb
--- /tmp/d20260114-587-96pg59/haml-6.3.0/lib/haml/version.rb 2026-01-14 03:33:07.450756904 +0000
+++ /tmp/d20260114-587-96pg59/haml-7.2.0/lib/haml/version.rb 2026-01-14 03:33:07.458756864 +0000
@@ -3 +3 @@
- VERSION = '6.3.0'
+ VERSION = '7.2.0' |
Contributor
gem compare --diff haml 6.3.0 7.2.0Compared versions: ["6.3.0", "7.2.0"]
DIFFERENT files:
6.3.0->7.2.0:
* Added:
.github/workflows/release.yml
--- /tmp/20260114-580-a7wv5g 2026-01-14 03:33:08.567662088 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/.github/workflows/release.yml 2026-01-14 03:33:08.560662126 +0000
@@ -0,0 +1,46 @@
+name: Release
+
+on:
+ push:
+ tags:
+ - 'v*'
+
+permissions:
+ contents: read
+
+jobs:
+ push:
+ if: github.repository_owner == 'haml'
+ runs-on: ubuntu-latest
+
+ environment:
+ name: rubygems.org
+ url: https://rubygems.org/gems/haml
+
+ permissions:
+ contents: write
+ id-token: write
+
+ steps:
+ - name: Harden Runner
+ uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
+ with:
+ egress-policy: audit
+
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+
+ - name: Set up Ruby
+ uses: ruby/setup-ruby@eaecf785f6a34567a6d97f686bbb7bccc1ac1e5c # v1.237.0
+ with:
+ bundler-cache: true
+ ruby-version: ruby
+
+ - name: Publish to RubyGems
+ uses: rubygems/release-gem@a25424ba2ba8b387abc8ef40807c2c85b96cbe32 # v1.1.1
+
+ - name: Create GitHub release
+ run: |
+ tag_name="$(git describe --tags --abbrev=0)"
+ gh release create "${tag_name}" --verify-tag --generate-notes
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
* Changed:
.github/workflows/test.yml
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/.github/workflows/test.yml 2026-01-14 03:33:08.552662170 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/.github/workflows/test.yml 2026-01-14 03:33:08.560662126 +0000
@@ -20,5 +19,0 @@
- - '2.5'
- - '2.6'
- - '2.7'
- - '3.0'
- - '3.1'
@@ -25,0 +21,3 @@
+ - '3.3'
+ - '3.4'
+ - ruby-head
@@ -27 +25 @@
- - truffleruby-head
+ - truffleruby
@@ -29 +27 @@
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
CHANGELOG.md
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/CHANGELOG.md 2026-01-14 03:33:08.552662170 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/CHANGELOG.md 2026-01-14 03:33:08.561662121 +0000
@@ -2,0 +3,37 @@
+## 7.2.0
+
+* Do not require rails when haml is required https://github.com/haml/haml/pull/1201
+* Point `changelog_uri` to GitHub Releases https://github.com/haml/haml/pull/1202
+
+## 7.1.0
+
+* Support xhtml format for boolean nested data attributes https://github.com/haml/haml/pull/1200
+
+## 7.0.2
+
+* Replace usages of `=~` with `.match?` where possible https://github.com/haml/haml/pull/1196
+* Add source code URI to gemspec metadata https://github.com/haml/haml/pull/1197
+
+## 7.0.1
+
+* Use `Regexp#match?` predicate where possible https://github.com/haml/haml/pull/1194
+* Fix the 'Changelog' link on rubygems.org/gems/haml https://github.com/haml/haml/pull/1192
+
+## 7.0.0
+
+* Change the default `attr_quote` from `'` to `"` https://github.com/haml/haml/issues/1188
+* Bump required Ruby version to 3.2 https://github.com/haml/haml/issues/1176
+
+## 6.4.0
+
+* Authorize characters in attribute name for vuejs https://github.com/haml/haml/pull/1172
+* Compile new-style attributes statically https://github.com/haml/haml/pull/1165
+* Remove newlines from template annotation comments https://github.com/haml/haml/pull/1186
+* Fix line numbers within a :ruby filter https://github.com/haml/haml/pull/1166
+* Fix .class + nested class array bug https://github.com/haml/haml/pull/1191
+
+## 6.3.1
+
+* Optimize string transformation using `String#tr` https://github.com/haml/haml/pull/1168
+* Provide a Changelog link on rubygems.org https://github.com/haml/haml/pull/1157
+
@@ -11 +47,0 @@
- * See [the reference](https://github.com/haml/haml/blob/v6.2.5/REFERENCE.md#turbo) for suggested alternatives.
Gemfile
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/Gemfile 2026-01-14 03:33:08.553662164 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/Gemfile 2026-01-14 03:33:08.561662121 +0000
@@ -13 +13,3 @@
-gem 'pry'
+gem 'base64'
+gem 'bigdecimal'
+gem 'mutex_m'
@@ -15 +17 @@
-if /java/ === RUBY_PLATFORM # JRuby
+if /java/.match?(RUBY_PLATFORM) # JRuby
@@ -23,4 +24,0 @@
-end
-
-if RUBY_VERSION < '2.6'
- gem 'rake-compiler', '< 1.2.4'
README.md
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/README.md 2026-01-14 03:33:08.553662164 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/README.md 2026-01-14 03:33:08.561662121 +0000
@@ -6,0 +7 @@
+[](https://discord.gg/G8dEAwvV2Y)
@@ -159 +160 @@
-Haml currently supports Ruby 2.0.0 and higher, so please make sure your changes run on 2.0+.
+Haml currently supports Ruby 3.2.0 and higher, so please make sure your changes run on 3.2+.
REFERENCE.md
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/REFERENCE.md 2026-01-14 03:33:08.553662164 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/REFERENCE.md 2026-01-14 03:33:08.562662116 +0000
@@ -108 +108 @@
-For the complete list of available options, please see `Haml::Engine`.
+For the complete list of available options, please see [`Haml::Engine`](https://github.com/haml/haml/blob/main/lib/haml/engine.rb).
@@ -323 +323 @@
-[`Haml::AttributeBuilder::BOOLEAN_ATTRIBUTES`](https://github.com/haml/haml/blob/main/lib/haml/attribute_builder.rb#L5),
+[`Haml::BOOLEAN_ATTRIBUTES`](https://github.com/haml/haml/blob/main/lib/haml/attribute_compiler.rb#L8),
@@ -363,7 +362,0 @@
-Notice that the underscore in `author_id` was replaced with a hyphen. If you wish
-to suppress this behavior, you can set Haml's
-{Haml::Options#hyphenate_data_attrs `:hyphenate_data_attrs` option} to `false`,
-and the output will be rendered as:
-
- <a data-author_id='123' data-category='7' href='/posts'>Posts By Author</a>
-
@@ -571 +564 @@
- @user = CrazyUser.find(15)
+ @user = FriendlyUser.find(15)
@@ -582 +575 @@
- <div class='greeting_crazy_user' id='greeting_crazy_user_15'>
+ <div class='greeting_friendly_user' id='greeting_friendly_user_15'>
@@ -590 +583 @@
- # file: app/models/crazy_user.rb
+ # file: app/models/friendly_user.rb
@@ -592 +585 @@
- class CrazyUser < ActiveRecord::Base
+ class FriendlyUser < ActiveRecord::Base
@@ -594 +587 @@
- "a_crazy_user"
+ "a_friendly_user"
@@ -605 +598 @@
- <div class='a_crazy_user' id='a_crazy_user_15'>
+ <div class='a_friendly_user' id='a_friendly_user_15'>
@@ -1301 +1294 @@
-For people using Turbo-rails and Haml 6+ need to either:
+For people using Turbo-rails need to either:
bin/console
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/bin/console 2026-01-14 03:33:08.553662164 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/bin/console 2026-01-14 03:33:08.562662116 +0000
@@ -4 +4 @@
-require 'hamlit'
+require 'haml'
@@ -9,3 +9,2 @@
-# (If you use this, don't forget to add pry to your Gemfile!)
-require 'pry'
-Pry.start
+require 'irb'
+IRB.start
bin/stackprof
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/bin/stackprof 2026-01-14 03:33:08.554662159 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/bin/stackprof 2026-01-14 03:33:08.562662116 +0000
@@ -4 +4 @@
-require 'hamlit'
+require 'haml'
@@ -23 +23 @@
-Hamlit::Engine.new.call(haml)
+Haml::Engine.new.call(haml)
haml.gemspec
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/haml.gemspec 2026-01-14 03:33:08.554662159 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/haml.gemspec 2026-01-14 03:33:08.562662116 +0000
@@ -24 +24,4 @@
- spec.required_ruby_version = '>= 2.1.0'
+ spec.metadata["changelog_uri"] = "https://github.com/haml/haml/releases"
+ spec.metadata["source_code_uri"] = "https://github.com/haml/haml"
+
+ spec.required_ruby_version = '>= 3.2.0'
@@ -34 +36,0 @@
- spec.add_development_dependency 'haml', '>= 5'
lib/haml.rb
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/lib/haml.rb 2026-01-14 03:33:08.554662159 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/lib/haml.rb 2026-01-14 03:33:08.563662110 +0000
@@ -8,5 +8 @@
- begin
- require 'rails'
- require 'haml/railtie'
- rescue LoadError
- end
+ require 'haml/railtie' if defined?(Rails::Railtie)
lib/haml/attribute_builder.rb
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/lib/haml/attribute_builder.rb 2026-01-14 03:33:08.554662159 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/lib/haml/attribute_builder.rb 2026-01-14 03:33:08.563662110 +0000
@@ -19 +19 @@
- buf << build_data(escape_attrs, quote, *hash[key])
+ buf << build_data(escape_attrs, quote, format, *hash[key])
@@ -21 +21 @@
- buf << build_aria(escape_attrs, quote, *hash[key])
+ buf << build_aria(escape_attrs, quote, format, *hash[key])
@@ -57 +57 @@
- classes += value.select { |v| v }
+ classes += value.flatten.select { |v| v }
@@ -65,2 +65,2 @@
- def build_data(escape_attrs, quote, *hashes)
- build_data_attribute(:data, escape_attrs, quote, *hashes)
+ def build_data(escape_attrs, quote, format, *hashes)
+ build_data_attribute(:data, escape_attrs, quote, format, *hashes)
@@ -69,2 +69,2 @@
- def build_aria(escape_attrs, quote, *hashes)
- build_data_attribute(:aria, escape_attrs, quote, *hashes)
+ def build_aria(escape_attrs, quote, format, *hashes)
+ build_data_attribute(:aria, escape_attrs, quote, format, *hashes)
@@ -75 +75 @@
- def build_data_attribute(key, escape_attrs, quote, *hashes)
+ def build_data_attribute(key, escape_attrs, quote, format, *hashes)
@@ -87 +87 @@
- attrs << " #{key}"
+ build_boolean!(escape_attrs, quote, format, attrs, key, value)
@@ -108 +108 @@
- flattened["#{key}-#{k.to_s.gsub(/_/, '-')}"] = v
+ flattened["#{key}-#{k.to_s.tr('_', '-')}"] = v
lib/haml/attribute_compiler.rb
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/lib/haml/attribute_compiler.rb 2026-01-14 03:33:08.555662154 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/lib/haml/attribute_compiler.rb 2026-01-14 03:33:08.563662110 +0000
@@ -88 +88 @@
- args = [@escape_attrs.inspect, "#{@quote.inspect}.freeze", values.map { |v| literal_for(v) }]
+ args = [@escape_attrs.inspect, "#{@quote.inspect}.freeze", @format.inspect, values.map { |v| literal_for(v) }]
@@ -101 +101 @@
- if Temple::StaticAnalyzer.static?(exp)
+ if values.last.first == :static || Temple::StaticAnalyzer.static?(exp)
lib/haml/engine.rb
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/lib/haml/engine.rb 2026-01-14 03:33:08.556662148 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/lib/haml/engine.rb 2026-01-14 03:33:08.564662104 +0000
@@ -20 +20 @@
- attr_quote: "'",
+ attr_quote: '"',
@@ -26 +26 @@
- filename: "",
+ filename: '',
lib/haml/filters/plain.rb
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/lib/haml/filters/plain.rb 2026-01-14 03:33:08.557662143 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/lib/haml/filters/plain.rb 2026-01-14 03:33:08.565662099 +0000
@@ -10 +10 @@
- [:multi, *compile_plain(text)]
+ [:multi, [:newline], *compile_plain(text)]
lib/haml/filters/ruby.rb
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/lib/haml/filters/ruby.rb 2026-01-14 03:33:08.557662143 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/lib/haml/filters/ruby.rb 2026-01-14 03:33:08.565662099 +0000
@@ -6 +6 @@
- [:code, node.value[:text]]
+ [:multi, [:newline], [:code, node.value[:text]]]
lib/haml/parser.rb
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/lib/haml/parser.rb 2026-01-14 03:33:08.558662137 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/lib/haml/parser.rb 2026-01-14 03:33:08.566662093 +0000
@@ -185 +185 @@
- return @template_tabs + 1 if flat? && line.whitespace =~ /^#{@flat_spaces}/
+ return @template_tabs + 1 if flat? && /^#{@flat_spaces}/.match?(line.whitespace)
@@ -239 +239 @@
- unless value =~ /\A{.*}\z/m
+ unless /\A{.*}\z/m.match?(value)
@@ -531 +531 @@
- raise Error.new(Error.message(:invalid_filter_name, name)) unless name =~ /^\w+$/
+ raise Error.new(Error.message(:invalid_filter_name, name)) unless /^\w+$/.match?(name)
@@ -633 +633 @@
- if !attributes.empty? && (attributes =~ /[.#](\.|#|\z)/)
+ if !attributes.empty? && /[.#](\.|#|\z)/.match?(attributes)
@@ -752 +752 @@
- unless (name = scanner.scan(/[-:\w]+/))
+ unless (name = scanner.scan(/[-:@#\w\.]+/))
@@ -789 +789 @@
- (line_defined && @line.text[0] == ?: && line.full =~ %r[^#{@line.full[/^\s+/]}\s])
+ (line_defined && @line.text[0] == ?: && %r[^#{@line.full[/^\s+/]}\s].match?(line.full))
@@ -799 +799 @@
- line && !line.text.empty? && line.full !~ /^#{@flat_spaces}/
+ line && !line.text.empty? && !(/^#{@flat_spaces}/.match?(line.full))
@@ -817 +817 @@
- text && text.length > 1 && text[-1] == MULTILINE_CHAR_VALUE && text[-2] == ?\s && text !~ BLOCK_WITH_SPACES
+ text && text.length > 1 && text[-1] == MULTILINE_CHAR_VALUE && text[-2] == ?\s && !BLOCK_WITH_SPACES.match?(text)
@@ -841 +841 @@
- !((text[-3, 2] =~ /\W\?/) || text[-3, 2] == "?\\")
+ !(/\W\?/.match?(text[-3, 2]) || text[-3, 2] == "?\\")
@@ -874 +874 @@
- @next_line.full =~ (@indentation ? /^#{@indentation * (@template_tabs + 1)}/ : /^\s/)
+ (@indentation ? /^#{@indentation * (@template_tabs + 1)}/ : /^\s/).match?(@next_line.full)
lib/haml/rails_template.rb
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/lib/haml/rails_template.rb 2026-01-14 03:33:08.559662132 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/lib/haml/rails_template.rb 2026-01-14 03:33:08.566662093 +0000
@@ -43,2 +43,2 @@
- preamble: "<!-- BEGIN #{template.short_identifier} -->\n",
- postamble: "<!-- END #{template.short_identifier} -->\n",
+ preamble: "<!-- BEGIN #{template.short_identifier} -->",
+ postamble: "<!-- END #{template.short_identifier} -->",
lib/haml/string_splitter.rb
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/lib/haml/string_splitter.rb 2026-01-14 03:33:08.559662132 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/lib/haml/string_splitter.rb 2026-01-14 03:33:08.566662093 +0000
@@ -10 +10 @@
- if defined?(Ripper) && RUBY_VERSION >= "2.0.0" && Ripper.respond_to?(:lex)
+ if defined?(Ripper) && Ripper.respond_to?(:lex)
lib/haml/util.rb
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/lib/haml/util.rb 2026-01-14 03:33:08.560662126 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/lib/haml/util.rb 2026-01-14 03:33:08.567662088 +0000
@@ -72 +72 @@
- elsif str.encoding.name =~ /^UTF-(16|32)(BE|LE)?$/
+ elsif /^UTF-(16|32)(BE|LE)?$/.match?(str.encoding.name)
@@ -255 +255 @@
- return unless name =~ /(en)?coding/in
+ return unless /(en)?coding/in.match?(name)
lib/haml/version.rb
--- /tmp/d20260114-580-6ksp05/haml-6.3.0/lib/haml/version.rb 2026-01-14 03:33:08.560662126 +0000
+++ /tmp/d20260114-580-6ksp05/haml-7.2.0/lib/haml/version.rb 2026-01-14 03:33:08.567662088 +0000
@@ -3 +3 @@
- VERSION = '6.3.0'
+ VERSION = '7.2.0' |
Contributor
gem compare --diff haml 6.3.0 7.2.0Compared versions: ["6.3.0", "7.2.0"]
DIFFERENT files:
6.3.0->7.2.0:
* Added:
.github/workflows/release.yml
--- /tmp/20260114-795-f6gt1l 2026-01-14 03:33:09.306181128 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/.github/workflows/release.yml 2026-01-14 03:33:09.299181054 +0000
@@ -0,0 +1,46 @@
+name: Release
+
+on:
+ push:
+ tags:
+ - 'v*'
+
+permissions:
+ contents: read
+
+jobs:
+ push:
+ if: github.repository_owner == 'haml'
+ runs-on: ubuntu-latest
+
+ environment:
+ name: rubygems.org
+ url: https://rubygems.org/gems/haml
+
+ permissions:
+ contents: write
+ id-token: write
+
+ steps:
+ - name: Harden Runner
+ uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
+ with:
+ egress-policy: audit
+
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+
+ - name: Set up Ruby
+ uses: ruby/setup-ruby@eaecf785f6a34567a6d97f686bbb7bccc1ac1e5c # v1.237.0
+ with:
+ bundler-cache: true
+ ruby-version: ruby
+
+ - name: Publish to RubyGems
+ uses: rubygems/release-gem@a25424ba2ba8b387abc8ef40807c2c85b96cbe32 # v1.1.1
+
+ - name: Create GitHub release
+ run: |
+ tag_name="$(git describe --tags --abbrev=0)"
+ gh release create "${tag_name}" --verify-tag --generate-notes
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
* Changed:
.github/workflows/test.yml
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/.github/workflows/test.yml 2026-01-14 03:33:09.291180968 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/.github/workflows/test.yml 2026-01-14 03:33:09.299181054 +0000
@@ -20,5 +19,0 @@
- - '2.5'
- - '2.6'
- - '2.7'
- - '3.0'
- - '3.1'
@@ -25,0 +21,3 @@
+ - '3.3'
+ - '3.4'
+ - ruby-head
@@ -27 +25 @@
- - truffleruby-head
+ - truffleruby
@@ -29 +27 @@
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
CHANGELOG.md
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/CHANGELOG.md 2026-01-14 03:33:09.292180979 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/CHANGELOG.md 2026-01-14 03:33:09.299181054 +0000
@@ -2,0 +3,37 @@
+## 7.2.0
+
+* Do not require rails when haml is required https://github.com/haml/haml/pull/1201
+* Point `changelog_uri` to GitHub Releases https://github.com/haml/haml/pull/1202
+
+## 7.1.0
+
+* Support xhtml format for boolean nested data attributes https://github.com/haml/haml/pull/1200
+
+## 7.0.2
+
+* Replace usages of `=~` with `.match?` where possible https://github.com/haml/haml/pull/1196
+* Add source code URI to gemspec metadata https://github.com/haml/haml/pull/1197
+
+## 7.0.1
+
+* Use `Regexp#match?` predicate where possible https://github.com/haml/haml/pull/1194
+* Fix the 'Changelog' link on rubygems.org/gems/haml https://github.com/haml/haml/pull/1192
+
+## 7.0.0
+
+* Change the default `attr_quote` from `'` to `"` https://github.com/haml/haml/issues/1188
+* Bump required Ruby version to 3.2 https://github.com/haml/haml/issues/1176
+
+## 6.4.0
+
+* Authorize characters in attribute name for vuejs https://github.com/haml/haml/pull/1172
+* Compile new-style attributes statically https://github.com/haml/haml/pull/1165
+* Remove newlines from template annotation comments https://github.com/haml/haml/pull/1186
+* Fix line numbers within a :ruby filter https://github.com/haml/haml/pull/1166
+* Fix .class + nested class array bug https://github.com/haml/haml/pull/1191
+
+## 6.3.1
+
+* Optimize string transformation using `String#tr` https://github.com/haml/haml/pull/1168
+* Provide a Changelog link on rubygems.org https://github.com/haml/haml/pull/1157
+
@@ -11 +47,0 @@
- * See [the reference](https://github.com/haml/haml/blob/v6.2.5/REFERENCE.md#turbo) for suggested alternatives.
Gemfile
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/Gemfile 2026-01-14 03:33:09.292180979 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/Gemfile 2026-01-14 03:33:09.300181064 +0000
@@ -13 +13,3 @@
-gem 'pry'
+gem 'base64'
+gem 'bigdecimal'
+gem 'mutex_m'
@@ -15 +17 @@
-if /java/ === RUBY_PLATFORM # JRuby
+if /java/.match?(RUBY_PLATFORM) # JRuby
@@ -23,4 +24,0 @@
-end
-
-if RUBY_VERSION < '2.6'
- gem 'rake-compiler', '< 1.2.4'
README.md
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/README.md 2026-01-14 03:33:09.292180979 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/README.md 2026-01-14 03:33:09.300181064 +0000
@@ -6,0 +7 @@
+[](https://discord.gg/G8dEAwvV2Y)
@@ -159 +160 @@
-Haml currently supports Ruby 2.0.0 and higher, so please make sure your changes run on 2.0+.
+Haml currently supports Ruby 3.2.0 and higher, so please make sure your changes run on 3.2+.
REFERENCE.md
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/REFERENCE.md 2026-01-14 03:33:09.292180979 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/REFERENCE.md 2026-01-14 03:33:09.300181064 +0000
@@ -108 +108 @@
-For the complete list of available options, please see `Haml::Engine`.
+For the complete list of available options, please see [`Haml::Engine`](https://github.com/haml/haml/blob/main/lib/haml/engine.rb).
@@ -323 +323 @@
-[`Haml::AttributeBuilder::BOOLEAN_ATTRIBUTES`](https://github.com/haml/haml/blob/main/lib/haml/attribute_builder.rb#L5),
+[`Haml::BOOLEAN_ATTRIBUTES`](https://github.com/haml/haml/blob/main/lib/haml/attribute_compiler.rb#L8),
@@ -363,7 +362,0 @@
-Notice that the underscore in `author_id` was replaced with a hyphen. If you wish
-to suppress this behavior, you can set Haml's
-{Haml::Options#hyphenate_data_attrs `:hyphenate_data_attrs` option} to `false`,
-and the output will be rendered as:
-
- <a data-author_id='123' data-category='7' href='/posts'>Posts By Author</a>
-
@@ -571 +564 @@
- @user = CrazyUser.find(15)
+ @user = FriendlyUser.find(15)
@@ -582 +575 @@
- <div class='greeting_crazy_user' id='greeting_crazy_user_15'>
+ <div class='greeting_friendly_user' id='greeting_friendly_user_15'>
@@ -590 +583 @@
- # file: app/models/crazy_user.rb
+ # file: app/models/friendly_user.rb
@@ -592 +585 @@
- class CrazyUser < ActiveRecord::Base
+ class FriendlyUser < ActiveRecord::Base
@@ -594 +587 @@
- "a_crazy_user"
+ "a_friendly_user"
@@ -605 +598 @@
- <div class='a_crazy_user' id='a_crazy_user_15'>
+ <div class='a_friendly_user' id='a_friendly_user_15'>
@@ -1301 +1294 @@
-For people using Turbo-rails and Haml 6+ need to either:
+For people using Turbo-rails need to either:
bin/console
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/bin/console 2026-01-14 03:33:09.293180990 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/bin/console 2026-01-14 03:33:09.300181064 +0000
@@ -4 +4 @@
-require 'hamlit'
+require 'haml'
@@ -9,3 +9,2 @@
-# (If you use this, don't forget to add pry to your Gemfile!)
-require 'pry'
-Pry.start
+require 'irb'
+IRB.start
bin/stackprof
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/bin/stackprof 2026-01-14 03:33:09.293180990 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/bin/stackprof 2026-01-14 03:33:09.301181075 +0000
@@ -4 +4 @@
-require 'hamlit'
+require 'haml'
@@ -23 +23 @@
-Hamlit::Engine.new.call(haml)
+Haml::Engine.new.call(haml)
haml.gemspec
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/haml.gemspec 2026-01-14 03:33:09.293180990 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/haml.gemspec 2026-01-14 03:33:09.301181075 +0000
@@ -24 +24,4 @@
- spec.required_ruby_version = '>= 2.1.0'
+ spec.metadata["changelog_uri"] = "https://github.com/haml/haml/releases"
+ spec.metadata["source_code_uri"] = "https://github.com/haml/haml"
+
+ spec.required_ruby_version = '>= 3.2.0'
@@ -34 +36,0 @@
- spec.add_development_dependency 'haml', '>= 5'
lib/haml.rb
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/lib/haml.rb 2026-01-14 03:33:09.294181000 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/lib/haml.rb 2026-01-14 03:33:09.301181075 +0000
@@ -8,5 +8 @@
- begin
- require 'rails'
- require 'haml/railtie'
- rescue LoadError
- end
+ require 'haml/railtie' if defined?(Rails::Railtie)
lib/haml/attribute_builder.rb
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/lib/haml/attribute_builder.rb 2026-01-14 03:33:09.294181000 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/lib/haml/attribute_builder.rb 2026-01-14 03:33:09.301181075 +0000
@@ -19 +19 @@
- buf << build_data(escape_attrs, quote, *hash[key])
+ buf << build_data(escape_attrs, quote, format, *hash[key])
@@ -21 +21 @@
- buf << build_aria(escape_attrs, quote, *hash[key])
+ buf << build_aria(escape_attrs, quote, format, *hash[key])
@@ -57 +57 @@
- classes += value.select { |v| v }
+ classes += value.flatten.select { |v| v }
@@ -65,2 +65,2 @@
- def build_data(escape_attrs, quote, *hashes)
- build_data_attribute(:data, escape_attrs, quote, *hashes)
+ def build_data(escape_attrs, quote, format, *hashes)
+ build_data_attribute(:data, escape_attrs, quote, format, *hashes)
@@ -69,2 +69,2 @@
- def build_aria(escape_attrs, quote, *hashes)
- build_data_attribute(:aria, escape_attrs, quote, *hashes)
+ def build_aria(escape_attrs, quote, format, *hashes)
+ build_data_attribute(:aria, escape_attrs, quote, format, *hashes)
@@ -75 +75 @@
- def build_data_attribute(key, escape_attrs, quote, *hashes)
+ def build_data_attribute(key, escape_attrs, quote, format, *hashes)
@@ -87 +87 @@
- attrs << " #{key}"
+ build_boolean!(escape_attrs, quote, format, attrs, key, value)
@@ -108 +108 @@
- flattened["#{key}-#{k.to_s.gsub(/_/, '-')}"] = v
+ flattened["#{key}-#{k.to_s.tr('_', '-')}"] = v
lib/haml/attribute_compiler.rb
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/lib/haml/attribute_compiler.rb 2026-01-14 03:33:09.294181000 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/lib/haml/attribute_compiler.rb 2026-01-14 03:33:09.301181075 +0000
@@ -88 +88 @@
- args = [@escape_attrs.inspect, "#{@quote.inspect}.freeze", values.map { |v| literal_for(v) }]
+ args = [@escape_attrs.inspect, "#{@quote.inspect}.freeze", @format.inspect, values.map { |v| literal_for(v) }]
@@ -101 +101 @@
- if Temple::StaticAnalyzer.static?(exp)
+ if values.last.first == :static || Temple::StaticAnalyzer.static?(exp)
lib/haml/engine.rb
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/lib/haml/engine.rb 2026-01-14 03:33:09.295181011 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/lib/haml/engine.rb 2026-01-14 03:33:09.302181086 +0000
@@ -20 +20 @@
- attr_quote: "'",
+ attr_quote: '"',
@@ -26 +26 @@
- filename: "",
+ filename: '',
lib/haml/filters/plain.rb
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/lib/haml/filters/plain.rb 2026-01-14 03:33:09.296181022 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/lib/haml/filters/plain.rb 2026-01-14 03:33:09.303181096 +0000
@@ -10 +10 @@
- [:multi, *compile_plain(text)]
+ [:multi, [:newline], *compile_plain(text)]
lib/haml/filters/ruby.rb
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/lib/haml/filters/ruby.rb 2026-01-14 03:33:09.297181032 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/lib/haml/filters/ruby.rb 2026-01-14 03:33:09.304181107 +0000
@@ -6 +6 @@
- [:code, node.value[:text]]
+ [:multi, [:newline], [:code, node.value[:text]]]
lib/haml/parser.rb
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/lib/haml/parser.rb 2026-01-14 03:33:09.297181032 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/lib/haml/parser.rb 2026-01-14 03:33:09.304181107 +0000
@@ -185 +185 @@
- return @template_tabs + 1 if flat? && line.whitespace =~ /^#{@flat_spaces}/
+ return @template_tabs + 1 if flat? && /^#{@flat_spaces}/.match?(line.whitespace)
@@ -239 +239 @@
- unless value =~ /\A{.*}\z/m
+ unless /\A{.*}\z/m.match?(value)
@@ -531 +531 @@
- raise Error.new(Error.message(:invalid_filter_name, name)) unless name =~ /^\w+$/
+ raise Error.new(Error.message(:invalid_filter_name, name)) unless /^\w+$/.match?(name)
@@ -633 +633 @@
- if !attributes.empty? && (attributes =~ /[.#](\.|#|\z)/)
+ if !attributes.empty? && /[.#](\.|#|\z)/.match?(attributes)
@@ -752 +752 @@
- unless (name = scanner.scan(/[-:\w]+/))
+ unless (name = scanner.scan(/[-:@#\w\.]+/))
@@ -789 +789 @@
- (line_defined && @line.text[0] == ?: && line.full =~ %r[^#{@line.full[/^\s+/]}\s])
+ (line_defined && @line.text[0] == ?: && %r[^#{@line.full[/^\s+/]}\s].match?(line.full))
@@ -799 +799 @@
- line && !line.text.empty? && line.full !~ /^#{@flat_spaces}/
+ line && !line.text.empty? && !(/^#{@flat_spaces}/.match?(line.full))
@@ -817 +817 @@
- text && text.length > 1 && text[-1] == MULTILINE_CHAR_VALUE && text[-2] == ?\s && text !~ BLOCK_WITH_SPACES
+ text && text.length > 1 && text[-1] == MULTILINE_CHAR_VALUE && text[-2] == ?\s && !BLOCK_WITH_SPACES.match?(text)
@@ -841 +841 @@
- !((text[-3, 2] =~ /\W\?/) || text[-3, 2] == "?\\")
+ !(/\W\?/.match?(text[-3, 2]) || text[-3, 2] == "?\\")
@@ -874 +874 @@
- @next_line.full =~ (@indentation ? /^#{@indentation * (@template_tabs + 1)}/ : /^\s/)
+ (@indentation ? /^#{@indentation * (@template_tabs + 1)}/ : /^\s/).match?(@next_line.full)
lib/haml/rails_template.rb
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/lib/haml/rails_template.rb 2026-01-14 03:33:09.298181043 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/lib/haml/rails_template.rb 2026-01-14 03:33:09.305181118 +0000
@@ -43,2 +43,2 @@
- preamble: "<!-- BEGIN #{template.short_identifier} -->\n",
- postamble: "<!-- END #{template.short_identifier} -->\n",
+ preamble: "<!-- BEGIN #{template.short_identifier} -->",
+ postamble: "<!-- END #{template.short_identifier} -->",
lib/haml/string_splitter.rb
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/lib/haml/string_splitter.rb 2026-01-14 03:33:09.298181043 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/lib/haml/string_splitter.rb 2026-01-14 03:33:09.305181118 +0000
@@ -10 +10 @@
- if defined?(Ripper) && RUBY_VERSION >= "2.0.0" && Ripper.respond_to?(:lex)
+ if defined?(Ripper) && Ripper.respond_to?(:lex)
lib/haml/util.rb
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/lib/haml/util.rb 2026-01-14 03:33:09.298181043 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/lib/haml/util.rb 2026-01-14 03:33:09.306181128 +0000
@@ -72 +72 @@
- elsif str.encoding.name =~ /^UTF-(16|32)(BE|LE)?$/
+ elsif /^UTF-(16|32)(BE|LE)?$/.match?(str.encoding.name)
@@ -255 +255 @@
- return unless name =~ /(en)?coding/in
+ return unless /(en)?coding/in.match?(name)
lib/haml/version.rb
--- /tmp/d20260114-795-3z8l2j/haml-6.3.0/lib/haml/version.rb 2026-01-14 03:33:09.298181043 +0000
+++ /tmp/d20260114-795-3z8l2j/haml-7.2.0/lib/haml/version.rb 2026-01-14 03:33:09.306181128 +0000
@@ -3 +3 @@
- VERSION = '6.3.0'
+ VERSION = '7.2.0' |
Contributor
gem compare --diff haml 6.3.0 7.2.0Compared versions: ["6.3.0", "7.2.0"]
DIFFERENT files:
6.3.0->7.2.0:
* Added:
.github/workflows/release.yml
--- /tmp/20260114-724-96wv3y 2026-01-14 03:33:10.315513108 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/.github/workflows/release.yml 2026-01-14 03:33:10.308513092 +0000
@@ -0,0 +1,46 @@
+name: Release
+
+on:
+ push:
+ tags:
+ - 'v*'
+
+permissions:
+ contents: read
+
+jobs:
+ push:
+ if: github.repository_owner == 'haml'
+ runs-on: ubuntu-latest
+
+ environment:
+ name: rubygems.org
+ url: https://rubygems.org/gems/haml
+
+ permissions:
+ contents: write
+ id-token: write
+
+ steps:
+ - name: Harden Runner
+ uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
+ with:
+ egress-policy: audit
+
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+
+ - name: Set up Ruby
+ uses: ruby/setup-ruby@eaecf785f6a34567a6d97f686bbb7bccc1ac1e5c # v1.237.0
+ with:
+ bundler-cache: true
+ ruby-version: ruby
+
+ - name: Publish to RubyGems
+ uses: rubygems/release-gem@a25424ba2ba8b387abc8ef40807c2c85b96cbe32 # v1.1.1
+
+ - name: Create GitHub release
+ run: |
+ tag_name="$(git describe --tags --abbrev=0)"
+ gh release create "${tag_name}" --verify-tag --generate-notes
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
* Changed:
.github/workflows/test.yml
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/.github/workflows/test.yml 2026-01-14 03:33:10.300513075 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/.github/workflows/test.yml 2026-01-14 03:33:10.308513092 +0000
@@ -20,5 +19,0 @@
- - '2.5'
- - '2.6'
- - '2.7'
- - '3.0'
- - '3.1'
@@ -25,0 +21,3 @@
+ - '3.3'
+ - '3.4'
+ - ruby-head
@@ -27 +25 @@
- - truffleruby-head
+ - truffleruby
@@ -29 +27 @@
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
CHANGELOG.md
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/CHANGELOG.md 2026-01-14 03:33:10.300513075 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/CHANGELOG.md 2026-01-14 03:33:10.308513092 +0000
@@ -2,0 +3,37 @@
+## 7.2.0
+
+* Do not require rails when haml is required https://github.com/haml/haml/pull/1201
+* Point `changelog_uri` to GitHub Releases https://github.com/haml/haml/pull/1202
+
+## 7.1.0
+
+* Support xhtml format for boolean nested data attributes https://github.com/haml/haml/pull/1200
+
+## 7.0.2
+
+* Replace usages of `=~` with `.match?` where possible https://github.com/haml/haml/pull/1196
+* Add source code URI to gemspec metadata https://github.com/haml/haml/pull/1197
+
+## 7.0.1
+
+* Use `Regexp#match?` predicate where possible https://github.com/haml/haml/pull/1194
+* Fix the 'Changelog' link on rubygems.org/gems/haml https://github.com/haml/haml/pull/1192
+
+## 7.0.0
+
+* Change the default `attr_quote` from `'` to `"` https://github.com/haml/haml/issues/1188
+* Bump required Ruby version to 3.2 https://github.com/haml/haml/issues/1176
+
+## 6.4.0
+
+* Authorize characters in attribute name for vuejs https://github.com/haml/haml/pull/1172
+* Compile new-style attributes statically https://github.com/haml/haml/pull/1165
+* Remove newlines from template annotation comments https://github.com/haml/haml/pull/1186
+* Fix line numbers within a :ruby filter https://github.com/haml/haml/pull/1166
+* Fix .class + nested class array bug https://github.com/haml/haml/pull/1191
+
+## 6.3.1
+
+* Optimize string transformation using `String#tr` https://github.com/haml/haml/pull/1168
+* Provide a Changelog link on rubygems.org https://github.com/haml/haml/pull/1157
+
@@ -11 +47,0 @@
- * See [the reference](https://github.com/haml/haml/blob/v6.2.5/REFERENCE.md#turbo) for suggested alternatives.
Gemfile
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/Gemfile 2026-01-14 03:33:10.300513075 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/Gemfile 2026-01-14 03:33:10.309513095 +0000
@@ -13 +13,3 @@
-gem 'pry'
+gem 'base64'
+gem 'bigdecimal'
+gem 'mutex_m'
@@ -15 +17 @@
-if /java/ === RUBY_PLATFORM # JRuby
+if /java/.match?(RUBY_PLATFORM) # JRuby
@@ -23,4 +24,0 @@
-end
-
-if RUBY_VERSION < '2.6'
- gem 'rake-compiler', '< 1.2.4'
README.md
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/README.md 2026-01-14 03:33:10.301513077 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/README.md 2026-01-14 03:33:10.309513095 +0000
@@ -6,0 +7 @@
+[](https://discord.gg/G8dEAwvV2Y)
@@ -159 +160 @@
-Haml currently supports Ruby 2.0.0 and higher, so please make sure your changes run on 2.0+.
+Haml currently supports Ruby 3.2.0 and higher, so please make sure your changes run on 3.2+.
REFERENCE.md
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/REFERENCE.md 2026-01-14 03:33:10.301513077 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/REFERENCE.md 2026-01-14 03:33:10.309513095 +0000
@@ -108 +108 @@
-For the complete list of available options, please see `Haml::Engine`.
+For the complete list of available options, please see [`Haml::Engine`](https://github.com/haml/haml/blob/main/lib/haml/engine.rb).
@@ -323 +323 @@
-[`Haml::AttributeBuilder::BOOLEAN_ATTRIBUTES`](https://github.com/haml/haml/blob/main/lib/haml/attribute_builder.rb#L5),
+[`Haml::BOOLEAN_ATTRIBUTES`](https://github.com/haml/haml/blob/main/lib/haml/attribute_compiler.rb#L8),
@@ -363,7 +362,0 @@
-Notice that the underscore in `author_id` was replaced with a hyphen. If you wish
-to suppress this behavior, you can set Haml's
-{Haml::Options#hyphenate_data_attrs `:hyphenate_data_attrs` option} to `false`,
-and the output will be rendered as:
-
- <a data-author_id='123' data-category='7' href='/posts'>Posts By Author</a>
-
@@ -571 +564 @@
- @user = CrazyUser.find(15)
+ @user = FriendlyUser.find(15)
@@ -582 +575 @@
- <div class='greeting_crazy_user' id='greeting_crazy_user_15'>
+ <div class='greeting_friendly_user' id='greeting_friendly_user_15'>
@@ -590 +583 @@
- # file: app/models/crazy_user.rb
+ # file: app/models/friendly_user.rb
@@ -592 +585 @@
- class CrazyUser < ActiveRecord::Base
+ class FriendlyUser < ActiveRecord::Base
@@ -594 +587 @@
- "a_crazy_user"
+ "a_friendly_user"
@@ -605 +598 @@
- <div class='a_crazy_user' id='a_crazy_user_15'>
+ <div class='a_friendly_user' id='a_friendly_user_15'>
@@ -1301 +1294 @@
-For people using Turbo-rails and Haml 6+ need to either:
+For people using Turbo-rails need to either:
bin/console
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/bin/console 2026-01-14 03:33:10.301513077 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/bin/console 2026-01-14 03:33:10.309513095 +0000
@@ -4 +4 @@
-require 'hamlit'
+require 'haml'
@@ -9,3 +9,2 @@
-# (If you use this, don't forget to add pry to your Gemfile!)
-require 'pry'
-Pry.start
+require 'irb'
+IRB.start
bin/stackprof
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/bin/stackprof 2026-01-14 03:33:10.301513077 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/bin/stackprof 2026-01-14 03:33:10.310513097 +0000
@@ -4 +4 @@
-require 'hamlit'
+require 'haml'
@@ -23 +23 @@
-Hamlit::Engine.new.call(haml)
+Haml::Engine.new.call(haml)
haml.gemspec
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/haml.gemspec 2026-01-14 03:33:10.302513080 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/haml.gemspec 2026-01-14 03:33:10.310513097 +0000
@@ -24 +24,4 @@
- spec.required_ruby_version = '>= 2.1.0'
+ spec.metadata["changelog_uri"] = "https://github.com/haml/haml/releases"
+ spec.metadata["source_code_uri"] = "https://github.com/haml/haml"
+
+ spec.required_ruby_version = '>= 3.2.0'
@@ -34 +36,0 @@
- spec.add_development_dependency 'haml', '>= 5'
lib/haml.rb
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/lib/haml.rb 2026-01-14 03:33:10.302513080 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/lib/haml.rb 2026-01-14 03:33:10.310513097 +0000
@@ -8,5 +8 @@
- begin
- require 'rails'
- require 'haml/railtie'
- rescue LoadError
- end
+ require 'haml/railtie' if defined?(Rails::Railtie)
lib/haml/attribute_builder.rb
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/lib/haml/attribute_builder.rb 2026-01-14 03:33:10.302513080 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/lib/haml/attribute_builder.rb 2026-01-14 03:33:10.310513097 +0000
@@ -19 +19 @@
- buf << build_data(escape_attrs, quote, *hash[key])
+ buf << build_data(escape_attrs, quote, format, *hash[key])
@@ -21 +21 @@
- buf << build_aria(escape_attrs, quote, *hash[key])
+ buf << build_aria(escape_attrs, quote, format, *hash[key])
@@ -57 +57 @@
- classes += value.select { |v| v }
+ classes += value.flatten.select { |v| v }
@@ -65,2 +65,2 @@
- def build_data(escape_attrs, quote, *hashes)
- build_data_attribute(:data, escape_attrs, quote, *hashes)
+ def build_data(escape_attrs, quote, format, *hashes)
+ build_data_attribute(:data, escape_attrs, quote, format, *hashes)
@@ -69,2 +69,2 @@
- def build_aria(escape_attrs, quote, *hashes)
- build_data_attribute(:aria, escape_attrs, quote, *hashes)
+ def build_aria(escape_attrs, quote, format, *hashes)
+ build_data_attribute(:aria, escape_attrs, quote, format, *hashes)
@@ -75 +75 @@
- def build_data_attribute(key, escape_attrs, quote, *hashes)
+ def build_data_attribute(key, escape_attrs, quote, format, *hashes)
@@ -87 +87 @@
- attrs << " #{key}"
+ build_boolean!(escape_attrs, quote, format, attrs, key, value)
@@ -108 +108 @@
- flattened["#{key}-#{k.to_s.gsub(/_/, '-')}"] = v
+ flattened["#{key}-#{k.to_s.tr('_', '-')}"] = v
lib/haml/attribute_compiler.rb
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/lib/haml/attribute_compiler.rb 2026-01-14 03:33:10.302513080 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/lib/haml/attribute_compiler.rb 2026-01-14 03:33:10.310513097 +0000
@@ -88 +88 @@
- args = [@escape_attrs.inspect, "#{@quote.inspect}.freeze", values.map { |v| literal_for(v) }]
+ args = [@escape_attrs.inspect, "#{@quote.inspect}.freeze", @format.inspect, values.map { |v| literal_for(v) }]
@@ -101 +101 @@
- if Temple::StaticAnalyzer.static?(exp)
+ if values.last.first == :static || Temple::StaticAnalyzer.static?(exp)
lib/haml/engine.rb
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/lib/haml/engine.rb 2026-01-14 03:33:10.304513084 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/lib/haml/engine.rb 2026-01-14 03:33:10.311513099 +0000
@@ -20 +20 @@
- attr_quote: "'",
+ attr_quote: '"',
@@ -26 +26 @@
- filename: "",
+ filename: '',
lib/haml/filters/plain.rb
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/lib/haml/filters/plain.rb 2026-01-14 03:33:10.305513086 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/lib/haml/filters/plain.rb 2026-01-14 03:33:10.313513103 +0000
@@ -10 +10 @@
- [:multi, *compile_plain(text)]
+ [:multi, [:newline], *compile_plain(text)]
lib/haml/filters/ruby.rb
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/lib/haml/filters/ruby.rb 2026-01-14 03:33:10.305513086 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/lib/haml/filters/ruby.rb 2026-01-14 03:33:10.313513103 +0000
@@ -6 +6 @@
- [:code, node.value[:text]]
+ [:multi, [:newline], [:code, node.value[:text]]]
lib/haml/parser.rb
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/lib/haml/parser.rb 2026-01-14 03:33:10.307513090 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/lib/haml/parser.rb 2026-01-14 03:33:10.314513105 +0000
@@ -185 +185 @@
- return @template_tabs + 1 if flat? && line.whitespace =~ /^#{@flat_spaces}/
+ return @template_tabs + 1 if flat? && /^#{@flat_spaces}/.match?(line.whitespace)
@@ -239 +239 @@
- unless value =~ /\A{.*}\z/m
+ unless /\A{.*}\z/m.match?(value)
@@ -531 +531 @@
- raise Error.new(Error.message(:invalid_filter_name, name)) unless name =~ /^\w+$/
+ raise Error.new(Error.message(:invalid_filter_name, name)) unless /^\w+$/.match?(name)
@@ -633 +633 @@
- if !attributes.empty? && (attributes =~ /[.#](\.|#|\z)/)
+ if !attributes.empty? && /[.#](\.|#|\z)/.match?(attributes)
@@ -752 +752 @@
- unless (name = scanner.scan(/[-:\w]+/))
+ unless (name = scanner.scan(/[-:@#\w\.]+/))
@@ -789 +789 @@
- (line_defined && @line.text[0] == ?: && line.full =~ %r[^#{@line.full[/^\s+/]}\s])
+ (line_defined && @line.text[0] == ?: && %r[^#{@line.full[/^\s+/]}\s].match?(line.full))
@@ -799 +799 @@
- line && !line.text.empty? && line.full !~ /^#{@flat_spaces}/
+ line && !line.text.empty? && !(/^#{@flat_spaces}/.match?(line.full))
@@ -817 +817 @@
- text && text.length > 1 && text[-1] == MULTILINE_CHAR_VALUE && text[-2] == ?\s && text !~ BLOCK_WITH_SPACES
+ text && text.length > 1 && text[-1] == MULTILINE_CHAR_VALUE && text[-2] == ?\s && !BLOCK_WITH_SPACES.match?(text)
@@ -841 +841 @@
- !((text[-3, 2] =~ /\W\?/) || text[-3, 2] == "?\\")
+ !(/\W\?/.match?(text[-3, 2]) || text[-3, 2] == "?\\")
@@ -874 +874 @@
- @next_line.full =~ (@indentation ? /^#{@indentation * (@template_tabs + 1)}/ : /^\s/)
+ (@indentation ? /^#{@indentation * (@template_tabs + 1)}/ : /^\s/).match?(@next_line.full)
lib/haml/rails_template.rb
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/lib/haml/rails_template.rb 2026-01-14 03:33:10.307513090 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/lib/haml/rails_template.rb 2026-01-14 03:33:10.314513105 +0000
@@ -43,2 +43,2 @@
- preamble: "<!-- BEGIN #{template.short_identifier} -->\n",
- postamble: "<!-- END #{template.short_identifier} -->\n",
+ preamble: "<!-- BEGIN #{template.short_identifier} -->",
+ postamble: "<!-- END #{template.short_identifier} -->",
lib/haml/string_splitter.rb
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/lib/haml/string_splitter.rb 2026-01-14 03:33:10.307513090 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/lib/haml/string_splitter.rb 2026-01-14 03:33:10.314513105 +0000
@@ -10 +10 @@
- if defined?(Ripper) && RUBY_VERSION >= "2.0.0" && Ripper.respond_to?(:lex)
+ if defined?(Ripper) && Ripper.respond_to?(:lex)
lib/haml/util.rb
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/lib/haml/util.rb 2026-01-14 03:33:10.307513090 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/lib/haml/util.rb 2026-01-14 03:33:10.314513105 +0000
@@ -72 +72 @@
- elsif str.encoding.name =~ /^UTF-(16|32)(BE|LE)?$/
+ elsif /^UTF-(16|32)(BE|LE)?$/.match?(str.encoding.name)
@@ -255 +255 @@
- return unless name =~ /(en)?coding/in
+ return unless /(en)?coding/in.match?(name)
lib/haml/version.rb
--- /tmp/d20260114-724-oz1kym/haml-6.3.0/lib/haml/version.rb 2026-01-14 03:33:10.307513090 +0000
+++ /tmp/d20260114-724-oz1kym/haml-7.2.0/lib/haml/version.rb 2026-01-14 03:33:10.315513108 +0000
@@ -3 +3 @@
- VERSION = '6.3.0'
+ VERSION = '7.2.0' |
Contributor
gem compare haml 6.3.0 7.2.0Compared versions: ["6.3.0", "7.2.0"]
DIFFERENT date:
6.3.0: 2023-12-10 00:00:00 UTC
7.2.0: 1980-01-02 00:00:00 UTC
DIFFERENT metadata:
6.3.0: {"rubygems_mfa_required" => "true"}
7.2.0: {"rubygems_mfa_required" => "true", "changelog_uri" => "https://github.com/haml/haml/releases", "source_code_uri" => "https://github.com/haml/haml"}
DIFFERENT required_ruby_version:
6.3.0: >= 2.1.0
7.2.0: >= 3.2.0
DIFFERENT rubygems_version:
6.3.0: 3.4.10
7.2.0: 3.6.7
DIFFERENT version:
6.3.0: 6.3.0
7.2.0: 7.2.0
DIFFERENT files:
6.3.0->7.2.0:
* Added:
.github/workflows/release.yml +46/-0
* Changed:
.github/workflows/test.yml +5/-7
CHANGELOG.md +37/-1
Gemfile +4/-6
README.md +2/-1
REFERENCE.md +9/-16
bin/console +3/-4
bin/stackprof +2/-2
haml.gemspec +4/-2
lib/haml.rb +1/-5
lib/haml/attribute_builder.rb +10/-10
lib/haml/attribute_compiler.rb +2/-2
lib/haml/engine.rb +2/-2
lib/haml/filters/plain.rb +1/-1
lib/haml/filters/ruby.rb +1/-1
lib/haml/parser.rb +10/-10
lib/haml/rails_template.rb +2/-2
lib/haml/string_splitter.rb +1/-1
lib/haml/util.rb +2/-2
lib/haml/version.rb +1/-1
DIFFERENT development dependencies:
6.3.0->7.2.0:
* Deleted:
haml [">= 5"] (development)
DIFFERENT Gemfile dependencies
6.3.0->7.2.0:
* Added:
base64 [">= 0"] (runtime)
bigdecimal [">= 0"] (runtime)
mutex_m [">= 0"] (runtime)
* Deleted
pry [">= 0"] (runtime)
rake-compiler ["< 1.2.4"] (runtime) |
Contributor
gem compare temple 0.10.3 0.10.4Compared versions: ["0.10.3", "0.10.4"]
DIFFERENT date:
0.10.3: 2023-10-03 00:00:00 UTC
0.10.4: 2025-07-24 00:00:00 UTC
DIFFERENT rubygems_version:
0.10.3: 3.4.10
0.10.4: 3.6.7
DIFFERENT version:
0.10.3: 0.10.3
0.10.4: 0.10.4
DIFFERENT files:
0.10.3->0.10.4:
* Changed:
.github/workflows/test.yml +3/-1
CHANGES +4/-0
lib/temple/filters/encoding.rb +1/-1
lib/temple/version.rb +1/-1 |
3 similar comments
Contributor
gem compare temple 0.10.3 0.10.4Compared versions: ["0.10.3", "0.10.4"]
DIFFERENT date:
0.10.3: 2023-10-03 00:00:00 UTC
0.10.4: 2025-07-24 00:00:00 UTC
DIFFERENT rubygems_version:
0.10.3: 3.4.10
0.10.4: 3.6.7
DIFFERENT version:
0.10.3: 0.10.3
0.10.4: 0.10.4
DIFFERENT files:
0.10.3->0.10.4:
* Changed:
.github/workflows/test.yml +3/-1
CHANGES +4/-0
lib/temple/filters/encoding.rb +1/-1
lib/temple/version.rb +1/-1 |
Contributor
gem compare temple 0.10.3 0.10.4Compared versions: ["0.10.3", "0.10.4"]
DIFFERENT date:
0.10.3: 2023-10-03 00:00:00 UTC
0.10.4: 2025-07-24 00:00:00 UTC
DIFFERENT rubygems_version:
0.10.3: 3.4.10
0.10.4: 3.6.7
DIFFERENT version:
0.10.3: 0.10.3
0.10.4: 0.10.4
DIFFERENT files:
0.10.3->0.10.4:
* Changed:
.github/workflows/test.yml +3/-1
CHANGES +4/-0
lib/temple/filters/encoding.rb +1/-1
lib/temple/version.rb +1/-1 |
Contributor
gem compare temple 0.10.3 0.10.4Compared versions: ["0.10.3", "0.10.4"]
DIFFERENT date:
0.10.3: 2023-10-03 00:00:00 UTC
0.10.4: 2025-07-24 00:00:00 UTC
DIFFERENT rubygems_version:
0.10.3: 3.4.10
0.10.4: 3.6.7
DIFFERENT version:
0.10.3: 0.10.3
0.10.4: 0.10.4
DIFFERENT files:
0.10.3->0.10.4:
* Changed:
.github/workflows/test.yml +3/-1
CHANGES +4/-0
lib/temple/filters/encoding.rb +1/-1
lib/temple/version.rb +1/-1 |
Contributor
gem compare --diff haml 6.3.0 7.2.0Compared versions: ["6.3.0", "7.2.0"]
DIFFERENT files:
6.3.0->7.2.0:
* Added:
.github/workflows/release.yml
--- /tmp/20260114-638-xpbcyd 2026-01-14 03:33:28.577134618 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/.github/workflows/release.yml 2026-01-14 03:33:28.564134685 +0000
@@ -0,0 +1,46 @@
+name: Release
+
+on:
+ push:
+ tags:
+ - 'v*'
+
+permissions:
+ contents: read
+
+jobs:
+ push:
+ if: github.repository_owner == 'haml'
+ runs-on: ubuntu-latest
+
+ environment:
+ name: rubygems.org
+ url: https://rubygems.org/gems/haml
+
+ permissions:
+ contents: write
+ id-token: write
+
+ steps:
+ - name: Harden Runner
+ uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
+ with:
+ egress-policy: audit
+
+ - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+
+ - name: Set up Ruby
+ uses: ruby/setup-ruby@eaecf785f6a34567a6d97f686bbb7bccc1ac1e5c # v1.237.0
+ with:
+ bundler-cache: true
+ ruby-version: ruby
+
+ - name: Publish to RubyGems
+ uses: rubygems/release-gem@a25424ba2ba8b387abc8ef40807c2c85b96cbe32 # v1.1.1
+
+ - name: Create GitHub release
+ run: |
+ tag_name="$(git describe --tags --abbrev=0)"
+ gh release create "${tag_name}" --verify-tag --generate-notes
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
* Changed:
.github/workflows/test.yml
--- /tmp/d20260114-638-97p9km/haml-6.3.0/.github/workflows/test.yml 2026-01-14 03:33:28.557134721 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/.github/workflows/test.yml 2026-01-14 03:33:28.565134680 +0000
@@ -20,5 +19,0 @@
- - '2.5'
- - '2.6'
- - '2.7'
- - '3.0'
- - '3.1'
@@ -25,0 +21,3 @@
+ - '3.3'
+ - '3.4'
+ - ruby-head
@@ -27 +25 @@
- - truffleruby-head
+ - truffleruby
@@ -29 +27 @@
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
CHANGELOG.md
--- /tmp/d20260114-638-97p9km/haml-6.3.0/CHANGELOG.md 2026-01-14 03:33:28.558134716 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/CHANGELOG.md 2026-01-14 03:33:28.565134680 +0000
@@ -2,0 +3,37 @@
+## 7.2.0
+
+* Do not require rails when haml is required https://github.com/haml/haml/pull/1201
+* Point `changelog_uri` to GitHub Releases https://github.com/haml/haml/pull/1202
+
+## 7.1.0
+
+* Support xhtml format for boolean nested data attributes https://github.com/haml/haml/pull/1200
+
+## 7.0.2
+
+* Replace usages of `=~` with `.match?` where possible https://github.com/haml/haml/pull/1196
+* Add source code URI to gemspec metadata https://github.com/haml/haml/pull/1197
+
+## 7.0.1
+
+* Use `Regexp#match?` predicate where possible https://github.com/haml/haml/pull/1194
+* Fix the 'Changelog' link on rubygems.org/gems/haml https://github.com/haml/haml/pull/1192
+
+## 7.0.0
+
+* Change the default `attr_quote` from `'` to `"` https://github.com/haml/haml/issues/1188
+* Bump required Ruby version to 3.2 https://github.com/haml/haml/issues/1176
+
+## 6.4.0
+
+* Authorize characters in attribute name for vuejs https://github.com/haml/haml/pull/1172
+* Compile new-style attributes statically https://github.com/haml/haml/pull/1165
+* Remove newlines from template annotation comments https://github.com/haml/haml/pull/1186
+* Fix line numbers within a :ruby filter https://github.com/haml/haml/pull/1166
+* Fix .class + nested class array bug https://github.com/haml/haml/pull/1191
+
+## 6.3.1
+
+* Optimize string transformation using `String#tr` https://github.com/haml/haml/pull/1168
+* Provide a Changelog link on rubygems.org https://github.com/haml/haml/pull/1157
+
@@ -11 +47,0 @@
- * See [the reference](https://github.com/haml/haml/blob/v6.2.5/REFERENCE.md#turbo) for suggested alternatives.
Gemfile
--- /tmp/d20260114-638-97p9km/haml-6.3.0/Gemfile 2026-01-14 03:33:28.558134716 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/Gemfile 2026-01-14 03:33:28.565134680 +0000
@@ -13 +13,3 @@
-gem 'pry'
+gem 'base64'
+gem 'bigdecimal'
+gem 'mutex_m'
@@ -15 +17 @@
-if /java/ === RUBY_PLATFORM # JRuby
+if /java/.match?(RUBY_PLATFORM) # JRuby
@@ -23,4 +24,0 @@
-end
-
-if RUBY_VERSION < '2.6'
- gem 'rake-compiler', '< 1.2.4'
README.md
--- /tmp/d20260114-638-97p9km/haml-6.3.0/README.md 2026-01-14 03:33:28.558134716 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/README.md 2026-01-14 03:33:28.566134674 +0000
@@ -6,0 +7 @@
+[](https://discord.gg/G8dEAwvV2Y)
@@ -159 +160 @@
-Haml currently supports Ruby 2.0.0 and higher, so please make sure your changes run on 2.0+.
+Haml currently supports Ruby 3.2.0 and higher, so please make sure your changes run on 3.2+.
REFERENCE.md
--- /tmp/d20260114-638-97p9km/haml-6.3.0/REFERENCE.md 2026-01-14 03:33:28.558134716 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/REFERENCE.md 2026-01-14 03:33:28.566134674 +0000
@@ -108 +108 @@
-For the complete list of available options, please see `Haml::Engine`.
+For the complete list of available options, please see [`Haml::Engine`](https://github.com/haml/haml/blob/main/lib/haml/engine.rb).
@@ -323 +323 @@
-[`Haml::AttributeBuilder::BOOLEAN_ATTRIBUTES`](https://github.com/haml/haml/blob/main/lib/haml/attribute_builder.rb#L5),
+[`Haml::BOOLEAN_ATTRIBUTES`](https://github.com/haml/haml/blob/main/lib/haml/attribute_compiler.rb#L8),
@@ -363,7 +362,0 @@
-Notice that the underscore in `author_id` was replaced with a hyphen. If you wish
-to suppress this behavior, you can set Haml's
-{Haml::Options#hyphenate_data_attrs `:hyphenate_data_attrs` option} to `false`,
-and the output will be rendered as:
-
- <a data-author_id='123' data-category='7' href='/posts'>Posts By Author</a>
-
@@ -571 +564 @@
- @user = CrazyUser.find(15)
+ @user = FriendlyUser.find(15)
@@ -582 +575 @@
- <div class='greeting_crazy_user' id='greeting_crazy_user_15'>
+ <div class='greeting_friendly_user' id='greeting_friendly_user_15'>
@@ -590 +583 @@
- # file: app/models/crazy_user.rb
+ # file: app/models/friendly_user.rb
@@ -592 +585 @@
- class CrazyUser < ActiveRecord::Base
+ class FriendlyUser < ActiveRecord::Base
@@ -594 +587 @@
- "a_crazy_user"
+ "a_friendly_user"
@@ -605 +598 @@
- <div class='a_crazy_user' id='a_crazy_user_15'>
+ <div class='a_friendly_user' id='a_friendly_user_15'>
@@ -1301 +1294 @@
-For people using Turbo-rails and Haml 6+ need to either:
+For people using Turbo-rails need to either:
bin/console
--- /tmp/d20260114-638-97p9km/haml-6.3.0/bin/console 2026-01-14 03:33:28.559134711 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/bin/console 2026-01-14 03:33:28.566134674 +0000
@@ -4 +4 @@
-require 'hamlit'
+require 'haml'
@@ -9,3 +9,2 @@
-# (If you use this, don't forget to add pry to your Gemfile!)
-require 'pry'
-Pry.start
+require 'irb'
+IRB.start
bin/stackprof
--- /tmp/d20260114-638-97p9km/haml-6.3.0/bin/stackprof 2026-01-14 03:33:28.559134711 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/bin/stackprof 2026-01-14 03:33:28.566134674 +0000
@@ -4 +4 @@
-require 'hamlit'
+require 'haml'
@@ -23 +23 @@
-Hamlit::Engine.new.call(haml)
+Haml::Engine.new.call(haml)
haml.gemspec
--- /tmp/d20260114-638-97p9km/haml-6.3.0/haml.gemspec 2026-01-14 03:33:28.559134711 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/haml.gemspec 2026-01-14 03:33:28.567134669 +0000
@@ -24 +24,4 @@
- spec.required_ruby_version = '>= 2.1.0'
+ spec.metadata["changelog_uri"] = "https://github.com/haml/haml/releases"
+ spec.metadata["source_code_uri"] = "https://github.com/haml/haml"
+
+ spec.required_ruby_version = '>= 3.2.0'
@@ -34 +36,0 @@
- spec.add_development_dependency 'haml', '>= 5'
lib/haml.rb
--- /tmp/d20260114-638-97p9km/haml-6.3.0/lib/haml.rb 2026-01-14 03:33:28.559134711 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/lib/haml.rb 2026-01-14 03:33:28.567134669 +0000
@@ -8,5 +8 @@
- begin
- require 'rails'
- require 'haml/railtie'
- rescue LoadError
- end
+ require 'haml/railtie' if defined?(Rails::Railtie)
lib/haml/attribute_builder.rb
--- /tmp/d20260114-638-97p9km/haml-6.3.0/lib/haml/attribute_builder.rb 2026-01-14 03:33:28.560134705 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/lib/haml/attribute_builder.rb 2026-01-14 03:33:28.567134669 +0000
@@ -19 +19 @@
- buf << build_data(escape_attrs, quote, *hash[key])
+ buf << build_data(escape_attrs, quote, format, *hash[key])
@@ -21 +21 @@
- buf << build_aria(escape_attrs, quote, *hash[key])
+ buf << build_aria(escape_attrs, quote, format, *hash[key])
@@ -57 +57 @@
- classes += value.select { |v| v }
+ classes += value.flatten.select { |v| v }
@@ -65,2 +65,2 @@
- def build_data(escape_attrs, quote, *hashes)
- build_data_attribute(:data, escape_attrs, quote, *hashes)
+ def build_data(escape_attrs, quote, format, *hashes)
+ build_data_attribute(:data, escape_attrs, quote, format, *hashes)
@@ -69,2 +69,2 @@
- def build_aria(escape_attrs, quote, *hashes)
- build_data_attribute(:aria, escape_attrs, quote, *hashes)
+ def build_aria(escape_attrs, quote, format, *hashes)
+ build_data_attribute(:aria, escape_attrs, quote, format, *hashes)
@@ -75 +75 @@
- def build_data_attribute(key, escape_attrs, quote, *hashes)
+ def build_data_attribute(key, escape_attrs, quote, format, *hashes)
@@ -87 +87 @@
- attrs << " #{key}"
+ build_boolean!(escape_attrs, quote, format, attrs, key, value)
@@ -108 +108 @@
- flattened["#{key}-#{k.to_s.gsub(/_/, '-')}"] = v
+ flattened["#{key}-#{k.to_s.tr('_', '-')}"] = v
lib/haml/attribute_compiler.rb
--- /tmp/d20260114-638-97p9km/haml-6.3.0/lib/haml/attribute_compiler.rb 2026-01-14 03:33:28.560134705 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/lib/haml/attribute_compiler.rb 2026-01-14 03:33:28.567134669 +0000
@@ -88 +88 @@
- args = [@escape_attrs.inspect, "#{@quote.inspect}.freeze", values.map { |v| literal_for(v) }]
+ args = [@escape_attrs.inspect, "#{@quote.inspect}.freeze", @format.inspect, values.map { |v| literal_for(v) }]
@@ -101 +101 @@
- if Temple::StaticAnalyzer.static?(exp)
+ if values.last.first == :static || Temple::StaticAnalyzer.static?(exp)
lib/haml/engine.rb
--- /tmp/d20260114-638-97p9km/haml-6.3.0/lib/haml/engine.rb 2026-01-14 03:33:28.561134700 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/lib/haml/engine.rb 2026-01-14 03:33:28.571134649 +0000
@@ -20 +20 @@
- attr_quote: "'",
+ attr_quote: '"',
@@ -26 +26 @@
- filename: "",
+ filename: '',
lib/haml/filters/plain.rb
--- /tmp/d20260114-638-97p9km/haml-6.3.0/lib/haml/filters/plain.rb 2026-01-14 03:33:28.562134695 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/lib/haml/filters/plain.rb 2026-01-14 03:33:28.574134633 +0000
@@ -10 +10 @@
- [:multi, *compile_plain(text)]
+ [:multi, [:newline], *compile_plain(text)]
lib/haml/filters/ruby.rb
--- /tmp/d20260114-638-97p9km/haml-6.3.0/lib/haml/filters/ruby.rb 2026-01-14 03:33:28.562134695 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/lib/haml/filters/ruby.rb 2026-01-14 03:33:28.574134633 +0000
@@ -6 +6 @@
- [:code, node.value[:text]]
+ [:multi, [:newline], [:code, node.value[:text]]]
lib/haml/parser.rb
--- /tmp/d20260114-638-97p9km/haml-6.3.0/lib/haml/parser.rb 2026-01-14 03:33:28.563134690 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/lib/haml/parser.rb 2026-01-14 03:33:28.575134628 +0000
@@ -185 +185 @@
- return @template_tabs + 1 if flat? && line.whitespace =~ /^#{@flat_spaces}/
+ return @template_tabs + 1 if flat? && /^#{@flat_spaces}/.match?(line.whitespace)
@@ -239 +239 @@
- unless value =~ /\A{.*}\z/m
+ unless /\A{.*}\z/m.match?(value)
@@ -531 +531 @@
- raise Error.new(Error.message(:invalid_filter_name, name)) unless name =~ /^\w+$/
+ raise Error.new(Error.message(:invalid_filter_name, name)) unless /^\w+$/.match?(name)
@@ -633 +633 @@
- if !attributes.empty? && (attributes =~ /[.#](\.|#|\z)/)
+ if !attributes.empty? && /[.#](\.|#|\z)/.match?(attributes)
@@ -752 +752 @@
- unless (name = scanner.scan(/[-:\w]+/))
+ unless (name = scanner.scan(/[-:@#\w\.]+/))
@@ -789 +789 @@
- (line_defined && @line.text[0] == ?: && line.full =~ %r[^#{@line.full[/^\s+/]}\s])
+ (line_defined && @line.text[0] == ?: && %r[^#{@line.full[/^\s+/]}\s].match?(line.full))
@@ -799 +799 @@
- line && !line.text.empty? && line.full !~ /^#{@flat_spaces}/
+ line && !line.text.empty? && !(/^#{@flat_spaces}/.match?(line.full))
@@ -817 +817 @@
- text && text.length > 1 && text[-1] == MULTILINE_CHAR_VALUE && text[-2] == ?\s && text !~ BLOCK_WITH_SPACES
+ text && text.length > 1 && text[-1] == MULTILINE_CHAR_VALUE && text[-2] == ?\s && !BLOCK_WITH_SPACES.match?(text)
@@ -841 +841 @@
- !((text[-3, 2] =~ /\W\?/) || text[-3, 2] == "?\\")
+ !(/\W\?/.match?(text[-3, 2]) || text[-3, 2] == "?\\")
@@ -874 +874 @@
- @next_line.full =~ (@indentation ? /^#{@indentation * (@template_tabs + 1)}/ : /^\s/)
+ (@indentation ? /^#{@indentation * (@template_tabs + 1)}/ : /^\s/).match?(@next_line.full)
lib/haml/rails_template.rb
--- /tmp/d20260114-638-97p9km/haml-6.3.0/lib/haml/rails_template.rb 2026-01-14 03:33:28.563134690 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/lib/haml/rails_template.rb 2026-01-14 03:33:28.576134623 +0000
@@ -43,2 +43,2 @@
- preamble: "<!-- BEGIN #{template.short_identifier} -->\n",
- postamble: "<!-- END #{template.short_identifier} -->\n",
+ preamble: "<!-- BEGIN #{template.short_identifier} -->",
+ postamble: "<!-- END #{template.short_identifier} -->",
lib/haml/string_splitter.rb
--- /tmp/d20260114-638-97p9km/haml-6.3.0/lib/haml/string_splitter.rb 2026-01-14 03:33:28.564134685 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/lib/haml/string_splitter.rb 2026-01-14 03:33:28.576134623 +0000
@@ -10 +10 @@
- if defined?(Ripper) && RUBY_VERSION >= "2.0.0" && Ripper.respond_to?(:lex)
+ if defined?(Ripper) && Ripper.respond_to?(:lex)
lib/haml/util.rb
--- /tmp/d20260114-638-97p9km/haml-6.3.0/lib/haml/util.rb 2026-01-14 03:33:28.564134685 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/lib/haml/util.rb 2026-01-14 03:33:28.576134623 +0000
@@ -72 +72 @@
- elsif str.encoding.name =~ /^UTF-(16|32)(BE|LE)?$/
+ elsif /^UTF-(16|32)(BE|LE)?$/.match?(str.encoding.name)
@@ -255 +255 @@
- return unless name =~ /(en)?coding/in
+ return unless /(en)?coding/in.match?(name)
lib/haml/version.rb
--- /tmp/d20260114-638-97p9km/haml-6.3.0/lib/haml/version.rb 2026-01-14 03:33:28.564134685 +0000
+++ /tmp/d20260114-638-97p9km/haml-7.2.0/lib/haml/version.rb 2026-01-14 03:33:28.576134623 +0000
@@ -3 +3 @@
- VERSION = '6.3.0'
+ VERSION = '7.2.0' |
Contributor
gem compare --diff temple 0.10.3 0.10.4Compared versions: ["0.10.3", "0.10.4"]
DIFFERENT files:
0.10.3->0.10.4:
* Changed:
.github/workflows/test.yml
--- /tmp/d20260114-1156-n1shfu/temple-0.10.3/.github/workflows/test.yml 2026-01-14 03:33:31.360630743 +0000
+++ /tmp/d20260114-1156-n1shfu/temple-0.10.4/.github/workflows/test.yml 2026-01-14 03:33:31.367630705 +0000
@@ -25,0 +26,2 @@
+ - '3.3'
+ - '3.4'
@@ -29 +31 @@
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
CHANGES
--- /tmp/d20260114-1156-n1shfu/temple-0.10.3/CHANGES 2026-01-14 03:33:31.361630738 +0000
+++ /tmp/d20260114-1156-n1shfu/temple-0.10.4/CHANGES 2026-01-14 03:33:31.367630705 +0000
@@ -0,0 +1,4 @@
+0.10.4
+
+ * Fix Ruby 3.4 compatibility (#152)
+
lib/temple/filters/encoding.rb
--- /tmp/d20260114-1156-n1shfu/temple-0.10.3/lib/temple/filters/encoding.rb 2026-01-14 03:33:31.362630733 +0000
+++ /tmp/d20260114-1156-n1shfu/temple-0.10.4/lib/temple/filters/encoding.rb 2026-01-14 03:33:31.369630695 +0000
@@ -13 +13 @@
- s = s.dup if s.frozen?
+ s = +s
lib/temple/version.rb
--- /tmp/d20260114-1156-n1shfu/temple-0.10.3/lib/temple/version.rb 2026-01-14 03:33:31.367630705 +0000
+++ /tmp/d20260114-1156-n1shfu/temple-0.10.4/lib/temple/version.rb 2026-01-14 03:33:31.373630673 +0000
@@ -3 +3 @@
- VERSION = '0.10.3'
+ VERSION = '0.10.4' |
Contributor
gem compare --diff temple 0.10.3 0.10.4Compared versions: ["0.10.3", "0.10.4"]
DIFFERENT files:
0.10.3->0.10.4:
* Changed:
.github/workflows/test.yml
--- /tmp/d20260114-1150-y4gu9c/temple-0.10.3/.github/workflows/test.yml 2026-01-14 03:33:35.886524005 +0000
+++ /tmp/d20260114-1150-y4gu9c/temple-0.10.4/.github/workflows/test.yml 2026-01-14 03:33:35.894523961 +0000
@@ -25,0 +26,2 @@
+ - '3.3'
+ - '3.4'
@@ -29 +31 @@
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
CHANGES
--- /tmp/d20260114-1150-y4gu9c/temple-0.10.3/CHANGES 2026-01-14 03:33:35.886524005 +0000
+++ /tmp/d20260114-1150-y4gu9c/temple-0.10.4/CHANGES 2026-01-14 03:33:35.894523961 +0000
@@ -0,0 +1,4 @@
+0.10.4
+
+ * Fix Ruby 3.4 compatibility (#152)
+
lib/temple/filters/encoding.rb
--- /tmp/d20260114-1150-y4gu9c/temple-0.10.3/lib/temple/filters/encoding.rb 2026-01-14 03:33:35.890523983 +0000
+++ /tmp/d20260114-1150-y4gu9c/temple-0.10.4/lib/temple/filters/encoding.rb 2026-01-14 03:33:35.896523950 +0000
@@ -13 +13 @@
- s = s.dup if s.frozen?
+ s = +s
lib/temple/version.rb
--- /tmp/d20260114-1150-y4gu9c/temple-0.10.3/lib/temple/version.rb 2026-01-14 03:33:35.893523966 +0000
+++ /tmp/d20260114-1150-y4gu9c/temple-0.10.4/lib/temple/version.rb 2026-01-14 03:33:35.900523928 +0000
@@ -3 +3 @@
- VERSION = '0.10.3'
+ VERSION = '0.10.4' |
Contributor
gem compare --diff temple 0.10.3 0.10.4Compared versions: ["0.10.3", "0.10.4"]
DIFFERENT files:
0.10.3->0.10.4:
* Changed:
.github/workflows/test.yml
--- /tmp/d20260114-1296-f41vsr/temple-0.10.3/.github/workflows/test.yml 2026-01-14 03:33:36.022555022 +0000
+++ /tmp/d20260114-1296-f41vsr/temple-0.10.4/.github/workflows/test.yml 2026-01-14 03:33:36.029555054 +0000
@@ -25,0 +26,2 @@
+ - '3.3'
+ - '3.4'
@@ -29 +31 @@
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
CHANGES
--- /tmp/d20260114-1296-f41vsr/temple-0.10.3/CHANGES 2026-01-14 03:33:36.022555022 +0000
+++ /tmp/d20260114-1296-f41vsr/temple-0.10.4/CHANGES 2026-01-14 03:33:36.029555054 +0000
@@ -0,0 +1,4 @@
+0.10.4
+
+ * Fix Ruby 3.4 compatibility (#152)
+
lib/temple/filters/encoding.rb
--- /tmp/d20260114-1296-f41vsr/temple-0.10.3/lib/temple/filters/encoding.rb 2026-01-14 03:33:36.024555031 +0000
+++ /tmp/d20260114-1296-f41vsr/temple-0.10.4/lib/temple/filters/encoding.rb 2026-01-14 03:33:36.031555064 +0000
@@ -13 +13 @@
- s = s.dup if s.frozen?
+ s = +s
lib/temple/version.rb
--- /tmp/d20260114-1296-f41vsr/temple-0.10.3/lib/temple/version.rb 2026-01-14 03:33:36.029555054 +0000
+++ /tmp/d20260114-1296-f41vsr/temple-0.10.4/lib/temple/version.rb 2026-01-14 03:33:36.035555083 +0000
@@ -3 +3 @@
- VERSION = '0.10.3'
+ VERSION = '0.10.4' |
Contributor
gem compare --diff temple 0.10.3 0.10.4Compared versions: ["0.10.3", "0.10.4"]
DIFFERENT files:
0.10.3->0.10.4:
* Changed:
.github/workflows/test.yml
--- /tmp/d20260114-1364-7g3kdd/temple-0.10.3/.github/workflows/test.yml 2026-01-14 03:33:36.233461239 +0000
+++ /tmp/d20260114-1364-7g3kdd/temple-0.10.4/.github/workflows/test.yml 2026-01-14 03:33:36.241461327 +0000
@@ -25,0 +26,2 @@
+ - '3.3'
+ - '3.4'
@@ -29 +31 @@
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
CHANGES
--- /tmp/d20260114-1364-7g3kdd/temple-0.10.3/CHANGES 2026-01-14 03:33:36.234461250 +0000
+++ /tmp/d20260114-1364-7g3kdd/temple-0.10.4/CHANGES 2026-01-14 03:33:36.241461327 +0000
@@ -0,0 +1,4 @@
+0.10.4
+
+ * Fix Ruby 3.4 compatibility (#152)
+
lib/temple/filters/encoding.rb
--- /tmp/d20260114-1364-7g3kdd/temple-0.10.3/lib/temple/filters/encoding.rb 2026-01-14 03:33:36.236461272 +0000
+++ /tmp/d20260114-1364-7g3kdd/temple-0.10.4/lib/temple/filters/encoding.rb 2026-01-14 03:33:36.243461348 +0000
@@ -13 +13 @@
- s = s.dup if s.frozen?
+ s = +s
lib/temple/version.rb
--- /tmp/d20260114-1364-7g3kdd/temple-0.10.3/lib/temple/version.rb 2026-01-14 03:33:36.240461316 +0000
+++ /tmp/d20260114-1364-7g3kdd/temple-0.10.4/lib/temple/version.rb 2026-01-14 03:33:36.246461381 +0000
@@ -3 +3 @@
- VERSION = '0.10.3'
+ VERSION = '0.10.4' |
Contributor
gem compare temple 0.10.3 0.10.4Compared versions: ["0.10.3", "0.10.4"]
DIFFERENT date:
0.10.3: 2023-10-03 00:00:00 UTC
0.10.4: 2025-07-24 00:00:00 UTC
DIFFERENT rubygems_version:
0.10.3: 3.4.10
0.10.4: 3.6.7
DIFFERENT version:
0.10.3: 0.10.3
0.10.4: 0.10.4
DIFFERENT files:
0.10.3->0.10.4:
* Changed:
.github/workflows/test.yml +3/-1
CHANGES +4/-0
lib/temple/filters/encoding.rb +1/-1
lib/temple/version.rb +1/-1 |
Contributor
gem compare thor 1.4.0 1.5.0Compared versions: ["1.4.0", "1.5.0"]
DIFFERENT homepage:
1.4.0: http://whatisthor.com/
1.5.0: https://github.com/rails/thor
DIFFERENT metadata:
1.4.0: {"bug_tracker_uri" => "https://github.com/rails/thor/issues", "changelog_uri" => "https://github.com/rails/thor/releases/tag/v1.4.0", "documentation_uri" => "http://whatisthor.com/", "source_code_uri" => "https://github.com/rails/thor/tree/v1.4.0", "wiki_uri" => "https://github.com/rails/thor/wiki", "rubygems_mfa_required" => "true"}
1.5.0: {"bug_tracker_uri" => "https://github.com/rails/thor/issues", "changelog_uri" => "https://github.com/rails/thor/releases/tag/v1.5.0", "documentation_uri" => "https://github.com/rails/thor/wiki", "source_code_uri" => "https://github.com/rails/thor/tree/v1.5.0", "wiki_uri" => "https://github.com/rails/thor/wiki", "rubygems_mfa_required" => "true"}
DIFFERENT version:
1.4.0: 1.4.0
1.5.0: 1.5.0
DIFFERENT files:
1.4.0->1.5.0:
* Changed:
CONTRIBUTING.md +17/-0
README.md +1/-2
lib/thor.rb +34/-1
lib/thor/actions/inject_into_file.rb +35/-2
lib/thor/base.rb +2/-1
lib/thor/shell/basic.rb +14/-6
lib/thor/shell/color.rb +2/-0
lib/thor/version.rb +1/-1
thor.gemspec +3/-3
DIFFERENT development dependencies:
1.4.0->1.5.0:
* Updated:
bundler from: [">= 1.0", "< 3"] to: [">= 1.0"] |
3 similar comments
Contributor
gem compare thor 1.4.0 1.5.0Compared versions: ["1.4.0", "1.5.0"]
DIFFERENT homepage:
1.4.0: http://whatisthor.com/
1.5.0: https://github.com/rails/thor
DIFFERENT metadata:
1.4.0: {"bug_tracker_uri" => "https://github.com/rails/thor/issues", "changelog_uri" => "https://github.com/rails/thor/releases/tag/v1.4.0", "documentation_uri" => "http://whatisthor.com/", "source_code_uri" => "https://github.com/rails/thor/tree/v1.4.0", "wiki_uri" => "https://github.com/rails/thor/wiki", "rubygems_mfa_required" => "true"}
1.5.0: {"bug_tracker_uri" => "https://github.com/rails/thor/issues", "changelog_uri" => "https://github.com/rails/thor/releases/tag/v1.5.0", "documentation_uri" => "https://github.com/rails/thor/wiki", "source_code_uri" => "https://github.com/rails/thor/tree/v1.5.0", "wiki_uri" => "https://github.com/rails/thor/wiki", "rubygems_mfa_required" => "true"}
DIFFERENT version:
1.4.0: 1.4.0
1.5.0: 1.5.0
DIFFERENT files:
1.4.0->1.5.0:
* Changed:
CONTRIBUTING.md +17/-0
README.md +1/-2
lib/thor.rb +34/-1
lib/thor/actions/inject_into_file.rb +35/-2
lib/thor/base.rb +2/-1
lib/thor/shell/basic.rb +14/-6
lib/thor/shell/color.rb +2/-0
lib/thor/version.rb +1/-1
thor.gemspec +3/-3
DIFFERENT development dependencies:
1.4.0->1.5.0:
* Updated:
bundler from: [">= 1.0", "< 3"] to: [">= 1.0"] |
Contributor
gem compare thor 1.4.0 1.5.0Compared versions: ["1.4.0", "1.5.0"]
DIFFERENT homepage:
1.4.0: http://whatisthor.com/
1.5.0: https://github.com/rails/thor
DIFFERENT metadata:
1.4.0: {"bug_tracker_uri" => "https://github.com/rails/thor/issues", "changelog_uri" => "https://github.com/rails/thor/releases/tag/v1.4.0", "documentation_uri" => "http://whatisthor.com/", "source_code_uri" => "https://github.com/rails/thor/tree/v1.4.0", "wiki_uri" => "https://github.com/rails/thor/wiki", "rubygems_mfa_required" => "true"}
1.5.0: {"bug_tracker_uri" => "https://github.com/rails/thor/issues", "changelog_uri" => "https://github.com/rails/thor/releases/tag/v1.5.0", "documentation_uri" => "https://github.com/rails/thor/wiki", "source_code_uri" => "https://github.com/rails/thor/tree/v1.5.0", "wiki_uri" => "https://github.com/rails/thor/wiki", "rubygems_mfa_required" => "true"}
DIFFERENT version:
1.4.0: 1.4.0
1.5.0: 1.5.0
DIFFERENT files:
1.4.0->1.5.0:
* Changed:
CONTRIBUTING.md +17/-0
README.md +1/-2
lib/thor.rb +34/-1
lib/thor/actions/inject_into_file.rb +35/-2
lib/thor/base.rb +2/-1
lib/thor/shell/basic.rb +14/-6
lib/thor/shell/color.rb +2/-0
lib/thor/version.rb +1/-1
thor.gemspec +3/-3
DIFFERENT development dependencies:
1.4.0->1.5.0:
* Updated:
bundler from: [">= 1.0", "< 3"] to: [">= 1.0"] |
Contributor
gem compare thor 1.4.0 1.5.0Compared versions: ["1.4.0", "1.5.0"]
DIFFERENT homepage:
1.4.0: http://whatisthor.com/
1.5.0: https://github.com/rails/thor
DIFFERENT metadata:
1.4.0: {"bug_tracker_uri" => "https://github.com/rails/thor/issues", "changelog_uri" => "https://github.com/rails/thor/releases/tag/v1.4.0", "documentation_uri" => "http://whatisthor.com/", "source_code_uri" => "https://github.com/rails/thor/tree/v1.4.0", "wiki_uri" => "https://github.com/rails/thor/wiki", "rubygems_mfa_required" => "true"}
1.5.0: {"bug_tracker_uri" => "https://github.com/rails/thor/issues", "changelog_uri" => "https://github.com/rails/thor/releases/tag/v1.5.0", "documentation_uri" => "https://github.com/rails/thor/wiki", "source_code_uri" => "https://github.com/rails/thor/tree/v1.5.0", "wiki_uri" => "https://github.com/rails/thor/wiki", "rubygems_mfa_required" => "true"}
DIFFERENT version:
1.4.0: 1.4.0
1.5.0: 1.5.0
DIFFERENT files:
1.4.0->1.5.0:
* Changed:
CONTRIBUTING.md +17/-0
README.md +1/-2
lib/thor.rb +34/-1
lib/thor/actions/inject_into_file.rb +35/-2
lib/thor/base.rb +2/-1
lib/thor/shell/basic.rb +14/-6
lib/thor/shell/color.rb +2/-0
lib/thor/version.rb +1/-1
thor.gemspec +3/-3
DIFFERENT development dependencies:
1.4.0->1.5.0:
* Updated:
bundler from: [">= 1.0", "< 3"] to: [">= 1.0"] |
Contributor
gem compare --diff temple 0.10.3 0.10.4Compared versions: ["0.10.3", "0.10.4"]
DIFFERENT files:
0.10.3->0.10.4:
* Changed:
.github/workflows/test.yml
--- /tmp/d20260114-1202-5wq1t3/temple-0.10.3/.github/workflows/test.yml 2026-01-14 03:33:53.414979644 +0000
+++ /tmp/d20260114-1202-5wq1t3/temple-0.10.4/.github/workflows/test.yml 2026-01-14 03:33:53.421979603 +0000
@@ -25,0 +26,2 @@
+ - '3.3'
+ - '3.4'
@@ -29 +31 @@
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
CHANGES
--- /tmp/d20260114-1202-5wq1t3/temple-0.10.3/CHANGES 2026-01-14 03:33:53.414979644 +0000
+++ /tmp/d20260114-1202-5wq1t3/temple-0.10.4/CHANGES 2026-01-14 03:33:53.421979603 +0000
@@ -0,0 +1,4 @@
+0.10.4
+
+ * Fix Ruby 3.4 compatibility (#152)
+
lib/temple/filters/encoding.rb
--- /tmp/d20260114-1202-5wq1t3/temple-0.10.3/lib/temple/filters/encoding.rb 2026-01-14 03:33:53.416979633 +0000
+++ /tmp/d20260114-1202-5wq1t3/temple-0.10.4/lib/temple/filters/encoding.rb 2026-01-14 03:33:53.424979586 +0000
@@ -13 +13 @@
- s = s.dup if s.frozen?
+ s = +s
lib/temple/version.rb
--- /tmp/d20260114-1202-5wq1t3/temple-0.10.3/lib/temple/version.rb 2026-01-14 03:33:53.421979603 +0000
+++ /tmp/d20260114-1202-5wq1t3/temple-0.10.4/lib/temple/version.rb 2026-01-14 03:33:53.427979569 +0000
@@ -3 +3 @@
- VERSION = '0.10.3'
+ VERSION = '0.10.4' |
Contributor
gem compare --diff thor 1.4.0 1.5.0Compared versions: ["1.4.0", "1.5.0"]
DIFFERENT files:
1.4.0->1.5.0:
* Changed:
CONTRIBUTING.md
--- /tmp/d20260114-1610-ynvoov/thor-1.4.0/CONTRIBUTING.md 2026-01-14 03:33:56.181503962 +0000
+++ /tmp/d20260114-1610-ynvoov/thor-1.5.0/CONTRIBUTING.md 2026-01-14 03:33:56.192503908 +0000
@@ -15,0 +16,17 @@
+
+Specs
+-----
+
+Ensure that all specs and code linting checks pass before submitting a pull request.
+
+To execute the specs locally, run:
+
+```bash
+bundle exec rspec
+```
+
+Linting checks are done with RuboCop. To run the linter, use:
+
+```bash
+bundle exec rubocop
+```
README.md
--- /tmp/d20260114-1610-ynvoov/thor-1.4.0/README.md 2026-01-14 03:33:56.182503957 +0000
+++ /tmp/d20260114-1610-ynvoov/thor-1.5.0/README.md 2026-01-14 03:33:56.192503908 +0000
@@ -30 +30 @@
-Please see the [wiki][] for basic usage and other documentation on using Thor. You can also check out the [official homepage][homepage].
+Please see the [wiki][] for basic usage and other documentation on using Thor.
@@ -33 +32,0 @@
-[homepage]: http://whatisthor.com/
lib/thor.rb
--- /tmp/d20260114-1610-ynvoov/thor-1.4.0/lib/thor.rb 2026-01-14 03:33:56.182503957 +0000
+++ /tmp/d20260114-1610-ynvoov/thor-1.5.0/lib/thor.rb 2026-01-14 03:33:56.193503903 +0000
@@ -628 +628 @@
- possibilities = all_commands.merge(map).keys.select { |n| meth == n[0, len] }.sort
+ possibilities = all_commands.reject {|k, v| v.is_a?(HiddenCommand) }.merge(map).keys.select { |n| meth == n[0, len] }.sort
@@ -671,0 +672,33 @@
+ end
+ end
+
+ map TREE_MAPPINGS => :tree
+
+ desc "tree", "Print a tree of all available commands"
+ def tree
+ build_command_tree(self.class, "")
+ end
+
+private
+
+ def build_command_tree(klass, indent)
+ # Print current class name if it's not the root Thor class
+ unless klass == Thor
+ say "#{indent}#{klass.namespace || 'default'}", :blue
+ indent = "#{indent} "
+ end
+
+ # Print all commands for this class
+ visible_commands = klass.commands.reject { |_, cmd| cmd.hidden? || cmd.name == "help" }
+ commands_count = visible_commands.count
+ visible_commands.sort.each_with_index do |(command_name, command), i|
+ description = command.description.split("\n").first || ""
+ icon = i == (commands_count - 1) ? "└─" : "├─"
+ say "#{indent}#{icon} ", nil, false
+ say command_name, :green, false
+ say " (#{description})" unless description.empty?
+ end
+
+ # Print all subcommands (from registered Thor subclasses)
+ klass.subcommand_classes.each do |_, subclass|
+ build_command_tree(subclass, indent)
lib/thor/actions/inject_into_file.rb
--- /tmp/d20260114-1610-ynvoov/thor-1.4.0/lib/thor/actions/inject_into_file.rb 2026-01-14 03:33:56.183503952 +0000
+++ /tmp/d20260114-1610-ynvoov/thor-1.5.0/lib/thor/actions/inject_into_file.rb 2026-01-14 03:33:56.194503898 +0000
@@ -4,0 +5,32 @@
+ WARNINGS = {unchanged_no_flag: "File unchanged! Either the supplied flag value not found or the content has already been inserted!"}
+
+ # Injects the given content into a file, raising an error if the contents of
+ # the file are not changed. Different from gsub_file, this method is reversible.
+ #
+ # ==== Parameters
+ # destination<String>:: Relative path to the destination root
+ # data<String>:: Data to add to the file. Can be given as a block.
+ # config<Hash>:: give :verbose => false to not log the status and the flag
+ # for injection (:after or :before) or :force => true for
+ # insert two or more times the same content.
+ #
+ # ==== Examples
+ #
+ # insert_into_file "config/environment.rb", "config.gem :thor", :after => "Rails::Initializer.run do |config|\n"
+ #
+ # insert_into_file "config/environment.rb", :after => "Rails::Initializer.run do |config|\n" do
+ # gems = ask "Which gems would you like to add?"
+ # gems.split(" ").map{ |gem| " config.gem :#{gem}" }.join("\n")
+ # end
+ #
+ def insert_into_file!(destination, *args, &block)
+ data = block_given? ? block : args.shift
+
+ config = args.shift || {}
+ config[:after] = /\z/ unless config.key?(:before) || config.key?(:after)
+ config = config.merge({error_on_no_change: true})
+
+ action InjectIntoFile.new(self, destination, data, config)
+ end
+ alias_method :inject_into_file!, :insert_into_file!
+
@@ -24,2 +55,0 @@
- WARNINGS = {unchanged_no_flag: "File unchanged! Either the supplied flag value not found or the content has already been inserted!"}
-
@@ -49,0 +80 @@
+ @error_on_no_change = @config.fetch(:error_on_no_change, false)
@@ -61,0 +93,2 @@
+ elsif @error_on_no_change
+ raise Thor::Error, "The content of #{destination} did not change"
lib/thor/base.rb
--- /tmp/d20260114-1610-ynvoov/thor-1.4.0/lib/thor/base.rb 2026-01-14 03:33:56.183503952 +0000
+++ /tmp/d20260114-1610-ynvoov/thor-1.5.0/lib/thor/base.rb 2026-01-14 03:33:56.194503898 +0000
@@ -16 +16 @@
- # Shortcuts for help.
+ # Shortcuts for help and tree commands.
@@ -17,0 +18 @@
+ TREE_MAPPINGS = %w(-t --tree)
lib/thor/shell/basic.rb
--- /tmp/d20260114-1610-ynvoov/thor-1.4.0/lib/thor/shell/basic.rb 2026-01-14 03:33:56.190503918 +0000
+++ /tmp/d20260114-1610-ynvoov/thor-1.5.0/lib/thor/shell/basic.rb 2026-01-14 03:33:56.197503883 +0000
@@ -314,2 +313,0 @@
- diff_cmd = ENV["THOR_DIFF"] || ENV["RAILS_DIFF"] || "diff -u"
-
@@ -320 +318 @@
- system %(#{diff_cmd} "#{destination}" "#{temp.path}")
+ system(*diff_tool, destination, temp.path)
@@ -372 +370 @@
- Tempfile.open([File.basename(destination), File.extname(destination)], File.dirname(destination)) do |temp|
+ Tempfile.open([File.basename(destination), File.extname(destination)], File.dirname(destination), binmode: true) do |temp|
@@ -375 +373 @@
- system(merge_tool, temp.path, destination)
+ system(*merge_tool, temp.path, destination)
@@ -380 +378,11 @@
- @merge_tool ||= ENV["THOR_MERGE"] || "git difftool --no-index"
+ @merge_tool ||= begin
+ require "shellwords"
+ Shellwords.split(ENV["THOR_MERGE"] || "git difftool --no-index")
+ end
+ end
+
+ def diff_tool #:nodoc:
+ @diff_cmd ||= begin
+ require "shellwords"
+ Shellwords.split(ENV["THOR_DIFF"] || ENV["RAILS_DIFF"] || "diff -u")
+ end
lib/thor/shell/color.rb
--- /tmp/d20260114-1610-ynvoov/thor-1.4.0/lib/thor/shell/color.rb 2026-01-14 03:33:56.190503918 +0000
+++ /tmp/d20260114-1610-ynvoov/thor-1.5.0/lib/thor/shell/color.rb 2026-01-14 03:33:56.197503883 +0000
@@ -0,0 +1,2 @@
+# frozen_string_literal: true
+
lib/thor/version.rb
--- /tmp/d20260114-1610-ynvoov/thor-1.4.0/lib/thor/version.rb 2026-01-14 03:33:56.191503913 +0000
+++ /tmp/d20260114-1610-ynvoov/thor-1.5.0/lib/thor/version.rb 2026-01-14 03:33:56.198503879 +0000
@@ -2 +2 @@
- VERSION = "1.4.0"
+ VERSION = "1.5.0"
thor.gemspec
--- /tmp/d20260114-1610-ynvoov/thor-1.4.0/thor.gemspec 2026-01-14 03:33:56.191503913 +0000
+++ /tmp/d20260114-1610-ynvoov/thor-1.5.0/thor.gemspec 2026-01-14 03:33:56.198503879 +0000
@@ -12 +12 @@
- spec.homepage = "http://whatisthor.com/"
+ spec.homepage = "https://github.com/rails/thor"
@@ -19 +19 @@
- "documentation_uri" => "http://whatisthor.com/",
+ "documentation_uri" => "https://github.com/rails/thor/wiki",
@@ -32 +32 @@
- spec.add_development_dependency "bundler", ">= 1.0", "< 3"
+ spec.add_development_dependency "bundler", ">= 1.0" |
Contributor
gem compare --diff thor 1.4.0 1.5.0Compared versions: ["1.4.0", "1.5.0"]
DIFFERENT files:
1.4.0->1.5.0:
* Changed:
CONTRIBUTING.md
--- /tmp/d20260114-1607-o49q28/thor-1.4.0/CONTRIBUTING.md 2026-01-14 03:34:00.317390671 +0000
+++ /tmp/d20260114-1607-o49q28/thor-1.5.0/CONTRIBUTING.md 2026-01-14 03:34:00.324390635 +0000
@@ -15,0 +16,17 @@
+
+Specs
+-----
+
+Ensure that all specs and code linting checks pass before submitting a pull request.
+
+To execute the specs locally, run:
+
+```bash
+bundle exec rspec
+```
+
+Linting checks are done with RuboCop. To run the linter, use:
+
+```bash
+bundle exec rubocop
+```
README.md
--- /tmp/d20260114-1607-o49q28/thor-1.4.0/README.md 2026-01-14 03:34:00.318390666 +0000
+++ /tmp/d20260114-1607-o49q28/thor-1.5.0/README.md 2026-01-14 03:34:00.324390635 +0000
@@ -30 +30 @@
-Please see the [wiki][] for basic usage and other documentation on using Thor. You can also check out the [official homepage][homepage].
+Please see the [wiki][] for basic usage and other documentation on using Thor.
@@ -33 +32,0 @@
-[homepage]: http://whatisthor.com/
lib/thor.rb
--- /tmp/d20260114-1607-o49q28/thor-1.4.0/lib/thor.rb 2026-01-14 03:34:00.318390666 +0000
+++ /tmp/d20260114-1607-o49q28/thor-1.5.0/lib/thor.rb 2026-01-14 03:34:00.324390635 +0000
@@ -628 +628 @@
- possibilities = all_commands.merge(map).keys.select { |n| meth == n[0, len] }.sort
+ possibilities = all_commands.reject {|k, v| v.is_a?(HiddenCommand) }.merge(map).keys.select { |n| meth == n[0, len] }.sort
@@ -671,0 +672,33 @@
+ end
+ end
+
+ map TREE_MAPPINGS => :tree
+
+ desc "tree", "Print a tree of all available commands"
+ def tree
+ build_command_tree(self.class, "")
+ end
+
+private
+
+ def build_command_tree(klass, indent)
+ # Print current class name if it's not the root Thor class
+ unless klass == Thor
+ say "#{indent}#{klass.namespace || 'default'}", :blue
+ indent = "#{indent} "
+ end
+
+ # Print all commands for this class
+ visible_commands = klass.commands.reject { |_, cmd| cmd.hidden? || cmd.name == "help" }
+ commands_count = visible_commands.count
+ visible_commands.sort.each_with_index do |(command_name, command), i|
+ description = command.description.split("\n").first || ""
+ icon = i == (commands_count - 1) ? "└─" : "├─"
+ say "#{indent}#{icon} ", nil, false
+ say command_name, :green, false
+ say " (#{description})" unless description.empty?
+ end
+
+ # Print all subcommands (from registered Thor subclasses)
+ klass.subcommand_classes.each do |_, subclass|
+ build_command_tree(subclass, indent)
lib/thor/actions/inject_into_file.rb
--- /tmp/d20260114-1607-o49q28/thor-1.4.0/lib/thor/actions/inject_into_file.rb 2026-01-14 03:34:00.319390661 +0000
+++ /tmp/d20260114-1607-o49q28/thor-1.5.0/lib/thor/actions/inject_into_file.rb 2026-01-14 03:34:00.325390630 +0000
@@ -4,0 +5,32 @@
+ WARNINGS = {unchanged_no_flag: "File unchanged! Either the supplied flag value not found or the content has already been inserted!"}
+
+ # Injects the given content into a file, raising an error if the contents of
+ # the file are not changed. Different from gsub_file, this method is reversible.
+ #
+ # ==== Parameters
+ # destination<String>:: Relative path to the destination root
+ # data<String>:: Data to add to the file. Can be given as a block.
+ # config<Hash>:: give :verbose => false to not log the status and the flag
+ # for injection (:after or :before) or :force => true for
+ # insert two or more times the same content.
+ #
+ # ==== Examples
+ #
+ # insert_into_file "config/environment.rb", "config.gem :thor", :after => "Rails::Initializer.run do |config|\n"
+ #
+ # insert_into_file "config/environment.rb", :after => "Rails::Initializer.run do |config|\n" do
+ # gems = ask "Which gems would you like to add?"
+ # gems.split(" ").map{ |gem| " config.gem :#{gem}" }.join("\n")
+ # end
+ #
+ def insert_into_file!(destination, *args, &block)
+ data = block_given? ? block : args.shift
+
+ config = args.shift || {}
+ config[:after] = /\z/ unless config.key?(:before) || config.key?(:after)
+ config = config.merge({error_on_no_change: true})
+
+ action InjectIntoFile.new(self, destination, data, config)
+ end
+ alias_method :inject_into_file!, :insert_into_file!
+
@@ -24,2 +55,0 @@
- WARNINGS = {unchanged_no_flag: "File unchanged! Either the supplied flag value not found or the content has already been inserted!"}
-
@@ -49,0 +80 @@
+ @error_on_no_change = @config.fetch(:error_on_no_change, false)
@@ -61,0 +93,2 @@
+ elsif @error_on_no_change
+ raise Thor::Error, "The content of #{destination} did not change"
lib/thor/base.rb
--- /tmp/d20260114-1607-o49q28/thor-1.4.0/lib/thor/base.rb 2026-01-14 03:34:00.319390661 +0000
+++ /tmp/d20260114-1607-o49q28/thor-1.5.0/lib/thor/base.rb 2026-01-14 03:34:00.326390625 +0000
@@ -16 +16 @@
- # Shortcuts for help.
+ # Shortcuts for help and tree commands.
@@ -17,0 +18 @@
+ TREE_MAPPINGS = %w(-t --tree)
lib/thor/shell/basic.rb
--- /tmp/d20260114-1607-o49q28/thor-1.4.0/lib/thor/shell/basic.rb 2026-01-14 03:34:00.322390645 +0000
+++ /tmp/d20260114-1607-o49q28/thor-1.5.0/lib/thor/shell/basic.rb 2026-01-14 03:34:00.328390614 +0000
@@ -314,2 +313,0 @@
- diff_cmd = ENV["THOR_DIFF"] || ENV["RAILS_DIFF"] || "diff -u"
-
@@ -320 +318 @@
- system %(#{diff_cmd} "#{destination}" "#{temp.path}")
+ system(*diff_tool, destination, temp.path)
@@ -372 +370 @@
- Tempfile.open([File.basename(destination), File.extname(destination)], File.dirname(destination)) do |temp|
+ Tempfile.open([File.basename(destination), File.extname(destination)], File.dirname(destination), binmode: true) do |temp|
@@ -375 +373 @@
- system(merge_tool, temp.path, destination)
+ system(*merge_tool, temp.path, destination)
@@ -380 +378,11 @@
- @merge_tool ||= ENV["THOR_MERGE"] || "git difftool --no-index"
+ @merge_tool ||= begin
+ require "shellwords"
+ Shellwords.split(ENV["THOR_MERGE"] || "git difftool --no-index")
+ end
+ end
+
+ def diff_tool #:nodoc:
+ @diff_cmd ||= begin
+ require "shellwords"
+ Shellwords.split(ENV["THOR_DIFF"] || ENV["RAILS_DIFF"] || "diff -u")
+ end
lib/thor/shell/color.rb
--- /tmp/d20260114-1607-o49q28/thor-1.4.0/lib/thor/shell/color.rb 2026-01-14 03:34:00.322390645 +0000
+++ /tmp/d20260114-1607-o49q28/thor-1.5.0/lib/thor/shell/color.rb 2026-01-14 03:34:00.328390614 +0000
@@ -0,0 +1,2 @@
+# frozen_string_literal: true
+
lib/thor/version.rb
--- /tmp/d20260114-1607-o49q28/thor-1.4.0/lib/thor/version.rb 2026-01-14 03:34:00.323390640 +0000
+++ /tmp/d20260114-1607-o49q28/thor-1.5.0/lib/thor/version.rb 2026-01-14 03:34:00.329390609 +0000
@@ -2 +2 @@
- VERSION = "1.4.0"
+ VERSION = "1.5.0"
thor.gemspec
--- /tmp/d20260114-1607-o49q28/thor-1.4.0/thor.gemspec 2026-01-14 03:34:00.323390640 +0000
+++ /tmp/d20260114-1607-o49q28/thor-1.5.0/thor.gemspec 2026-01-14 03:34:00.329390609 +0000
@@ -12 +12 @@
- spec.homepage = "http://whatisthor.com/"
+ spec.homepage = "https://github.com/rails/thor"
@@ -19 +19 @@
- "documentation_uri" => "http://whatisthor.com/",
+ "documentation_uri" => "https://github.com/rails/thor/wiki",
@@ -32 +32 @@
- spec.add_development_dependency "bundler", ">= 1.0", "< 3"
+ spec.add_development_dependency "bundler", ">= 1.0" |
Contributor
gem compare --diff thor 1.4.0 1.5.0Compared versions: ["1.4.0", "1.5.0"]
DIFFERENT files:
1.4.0->1.5.0:
* Changed:
CONTRIBUTING.md
--- /tmp/d20260114-1757-dyekgf/thor-1.4.0/CONTRIBUTING.md 2026-01-14 03:34:01.113688947 +0000
+++ /tmp/d20260114-1757-dyekgf/thor-1.5.0/CONTRIBUTING.md 2026-01-14 03:34:01.119688971 +0000
@@ -15,0 +16,17 @@
+
+Specs
+-----
+
+Ensure that all specs and code linting checks pass before submitting a pull request.
+
+To execute the specs locally, run:
+
+```bash
+bundle exec rspec
+```
+
+Linting checks are done with RuboCop. To run the linter, use:
+
+```bash
+bundle exec rubocop
+```
README.md
--- /tmp/d20260114-1757-dyekgf/thor-1.4.0/README.md 2026-01-14 03:34:01.113688947 +0000
+++ /tmp/d20260114-1757-dyekgf/thor-1.5.0/README.md 2026-01-14 03:34:01.119688971 +0000
@@ -30 +30 @@
-Please see the [wiki][] for basic usage and other documentation on using Thor. You can also check out the [official homepage][homepage].
+Please see the [wiki][] for basic usage and other documentation on using Thor.
@@ -33 +32,0 @@
-[homepage]: http://whatisthor.com/
lib/thor.rb
--- /tmp/d20260114-1757-dyekgf/thor-1.4.0/lib/thor.rb 2026-01-14 03:34:01.113688947 +0000
+++ /tmp/d20260114-1757-dyekgf/thor-1.5.0/lib/thor.rb 2026-01-14 03:34:01.119688971 +0000
@@ -628 +628 @@
- possibilities = all_commands.merge(map).keys.select { |n| meth == n[0, len] }.sort
+ possibilities = all_commands.reject {|k, v| v.is_a?(HiddenCommand) }.merge(map).keys.select { |n| meth == n[0, len] }.sort
@@ -671,0 +672,33 @@
+ end
+ end
+
+ map TREE_MAPPINGS => :tree
+
+ desc "tree", "Print a tree of all available commands"
+ def tree
+ build_command_tree(self.class, "")
+ end
+
+private
+
+ def build_command_tree(klass, indent)
+ # Print current class name if it's not the root Thor class
+ unless klass == Thor
+ say "#{indent}#{klass.namespace || 'default'}", :blue
+ indent = "#{indent} "
+ end
+
+ # Print all commands for this class
+ visible_commands = klass.commands.reject { |_, cmd| cmd.hidden? || cmd.name == "help" }
+ commands_count = visible_commands.count
+ visible_commands.sort.each_with_index do |(command_name, command), i|
+ description = command.description.split("\n").first || ""
+ icon = i == (commands_count - 1) ? "└─" : "├─"
+ say "#{indent}#{icon} ", nil, false
+ say command_name, :green, false
+ say " (#{description})" unless description.empty?
+ end
+
+ # Print all subcommands (from registered Thor subclasses)
+ klass.subcommand_classes.each do |_, subclass|
+ build_command_tree(subclass, indent)
lib/thor/actions/inject_into_file.rb
--- /tmp/d20260114-1757-dyekgf/thor-1.4.0/lib/thor/actions/inject_into_file.rb 2026-01-14 03:34:01.114688951 +0000
+++ /tmp/d20260114-1757-dyekgf/thor-1.5.0/lib/thor/actions/inject_into_file.rb 2026-01-14 03:34:01.121688979 +0000
@@ -4,0 +5,32 @@
+ WARNINGS = {unchanged_no_flag: "File unchanged! Either the supplied flag value not found or the content has already been inserted!"}
+
+ # Injects the given content into a file, raising an error if the contents of
+ # the file are not changed. Different from gsub_file, this method is reversible.
+ #
+ # ==== Parameters
+ # destination<String>:: Relative path to the destination root
+ # data<String>:: Data to add to the file. Can be given as a block.
+ # config<Hash>:: give :verbose => false to not log the status and the flag
+ # for injection (:after or :before) or :force => true for
+ # insert two or more times the same content.
+ #
+ # ==== Examples
+ #
+ # insert_into_file "config/environment.rb", "config.gem :thor", :after => "Rails::Initializer.run do |config|\n"
+ #
+ # insert_into_file "config/environment.rb", :after => "Rails::Initializer.run do |config|\n" do
+ # gems = ask "Which gems would you like to add?"
+ # gems.split(" ").map{ |gem| " config.gem :#{gem}" }.join("\n")
+ # end
+ #
+ def insert_into_file!(destination, *args, &block)
+ data = block_given? ? block : args.shift
+
+ config = args.shift || {}
+ config[:after] = /\z/ unless config.key?(:before) || config.key?(:after)
+ config = config.merge({error_on_no_change: true})
+
+ action InjectIntoFile.new(self, destination, data, config)
+ end
+ alias_method :inject_into_file!, :insert_into_file!
+
@@ -24,2 +55,0 @@
- WARNINGS = {unchanged_no_flag: "File unchanged! Either the supplied flag value not found or the content has already been inserted!"}
-
@@ -49,0 +80 @@
+ @error_on_no_change = @config.fetch(:error_on_no_change, false)
@@ -61,0 +93,2 @@
+ elsif @error_on_no_change
+ raise Thor::Error, "The content of #{destination} did not change"
lib/thor/base.rb
--- /tmp/d20260114-1757-dyekgf/thor-1.4.0/lib/thor/base.rb 2026-01-14 03:34:01.114688951 +0000
+++ /tmp/d20260114-1757-dyekgf/thor-1.5.0/lib/thor/base.rb 2026-01-14 03:34:01.121688979 +0000
@@ -16 +16 @@
- # Shortcuts for help.
+ # Shortcuts for help and tree commands.
@@ -17,0 +18 @@
+ TREE_MAPPINGS = %w(-t --tree)
lib/thor/shell/basic.rb
--- /tmp/d20260114-1757-dyekgf/thor-1.4.0/lib/thor/shell/basic.rb 2026-01-14 03:34:01.117688963 +0000
+++ /tmp/d20260114-1757-dyekgf/thor-1.5.0/lib/thor/shell/basic.rb 2026-01-14 03:34:01.123688987 +0000
@@ -314,2 +313,0 @@
- diff_cmd = ENV["THOR_DIFF"] || ENV["RAILS_DIFF"] || "diff -u"
-
@@ -320 +318 @@
- system %(#{diff_cmd} "#{destination}" "#{temp.path}")
+ system(*diff_tool, destination, temp.path)
@@ -372 +370 @@
- Tempfile.open([File.basename(destination), File.extname(destination)], File.dirname(destination)) do |temp|
+ Tempfile.open([File.basename(destination), File.extname(destination)], File.dirname(destination), binmode: true) do |temp|
@@ -375 +373 @@
- system(merge_tool, temp.path, destination)
+ system(*merge_tool, temp.path, destination)
@@ -380 +378,11 @@
- @merge_tool ||= ENV["THOR_MERGE"] || "git difftool --no-index"
+ @merge_tool ||= begin
+ require "shellwords"
+ Shellwords.split(ENV["THOR_MERGE"] || "git difftool --no-index")
+ end
+ end
+
+ def diff_tool #:nodoc:
+ @diff_cmd ||= begin
+ require "shellwords"
+ Shellwords.split(ENV["THOR_DIFF"] || ENV["RAILS_DIFF"] || "diff -u")
+ end
lib/thor/shell/color.rb
--- /tmp/d20260114-1757-dyekgf/thor-1.4.0/lib/thor/shell/color.rb 2026-01-14 03:34:01.117688963 +0000
+++ /tmp/d20260114-1757-dyekgf/thor-1.5.0/lib/thor/shell/color.rb 2026-01-14 03:34:01.123688987 +0000
@@ -0,0 +1,2 @@
+# frozen_string_literal: true
+
lib/thor/version.rb
--- /tmp/d20260114-1757-dyekgf/thor-1.4.0/lib/thor/version.rb 2026-01-14 03:34:01.118688967 +0000
+++ /tmp/d20260114-1757-dyekgf/thor-1.5.0/lib/thor/version.rb 2026-01-14 03:34:01.124688991 +0000
@@ -2 +2 @@
- VERSION = "1.4.0"
+ VERSION = "1.5.0"
thor.gemspec
--- /tmp/d20260114-1757-dyekgf/thor-1.4.0/thor.gemspec 2026-01-14 03:34:01.118688967 +0000
+++ /tmp/d20260114-1757-dyekgf/thor-1.5.0/thor.gemspec 2026-01-14 03:34:01.124688991 +0000
@@ -12 +12 @@
- spec.homepage = "http://whatisthor.com/"
+ spec.homepage = "https://github.com/rails/thor"
@@ -19 +19 @@
- "documentation_uri" => "http://whatisthor.com/",
+ "documentation_uri" => "https://github.com/rails/thor/wiki",
@@ -32 +32 @@
- spec.add_development_dependency "bundler", ">= 1.0", "< 3"
+ spec.add_development_dependency "bundler", ">= 1.0" |
Contributor
gem compare --diff thor 1.4.0 1.5.0Compared versions: ["1.4.0", "1.5.0"]
DIFFERENT files:
1.4.0->1.5.0:
* Changed:
CONTRIBUTING.md
--- /tmp/d20260114-1822-vzndi4/thor-1.4.0/CONTRIBUTING.md 2026-01-14 03:34:01.571734943 +0000
+++ /tmp/d20260114-1822-vzndi4/thor-1.5.0/CONTRIBUTING.md 2026-01-14 03:34:01.577735008 +0000
@@ -15,0 +16,17 @@
+
+Specs
+-----
+
+Ensure that all specs and code linting checks pass before submitting a pull request.
+
+To execute the specs locally, run:
+
+```bash
+bundle exec rspec
+```
+
+Linting checks are done with RuboCop. To run the linter, use:
+
+```bash
+bundle exec rubocop
+```
README.md
--- /tmp/d20260114-1822-vzndi4/thor-1.4.0/README.md 2026-01-14 03:34:01.571734943 +0000
+++ /tmp/d20260114-1822-vzndi4/thor-1.5.0/README.md 2026-01-14 03:34:01.577735008 +0000
@@ -30 +30 @@
-Please see the [wiki][] for basic usage and other documentation on using Thor. You can also check out the [official homepage][homepage].
+Please see the [wiki][] for basic usage and other documentation on using Thor.
@@ -33 +32,0 @@
-[homepage]: http://whatisthor.com/
lib/thor.rb
--- /tmp/d20260114-1822-vzndi4/thor-1.4.0/lib/thor.rb 2026-01-14 03:34:01.571734943 +0000
+++ /tmp/d20260114-1822-vzndi4/thor-1.5.0/lib/thor.rb 2026-01-14 03:34:01.578735019 +0000
@@ -628 +628 @@
- possibilities = all_commands.merge(map).keys.select { |n| meth == n[0, len] }.sort
+ possibilities = all_commands.reject {|k, v| v.is_a?(HiddenCommand) }.merge(map).keys.select { |n| meth == n[0, len] }.sort
@@ -671,0 +672,33 @@
+ end
+ end
+
+ map TREE_MAPPINGS => :tree
+
+ desc "tree", "Print a tree of all available commands"
+ def tree
+ build_command_tree(self.class, "")
+ end
+
+private
+
+ def build_command_tree(klass, indent)
+ # Print current class name if it's not the root Thor class
+ unless klass == Thor
+ say "#{indent}#{klass.namespace || 'default'}", :blue
+ indent = "#{indent} "
+ end
+
+ # Print all commands for this class
+ visible_commands = klass.commands.reject { |_, cmd| cmd.hidden? || cmd.name == "help" }
+ commands_count = visible_commands.count
+ visible_commands.sort.each_with_index do |(command_name, command), i|
+ description = command.description.split("\n").first || ""
+ icon = i == (commands_count - 1) ? "└─" : "├─"
+ say "#{indent}#{icon} ", nil, false
+ say command_name, :green, false
+ say " (#{description})" unless description.empty?
+ end
+
+ # Print all subcommands (from registered Thor subclasses)
+ klass.subcommand_classes.each do |_, subclass|
+ build_command_tree(subclass, indent)
lib/thor/actions/inject_into_file.rb
--- /tmp/d20260114-1822-vzndi4/thor-1.4.0/lib/thor/actions/inject_into_file.rb 2026-01-14 03:34:01.572734954 +0000
+++ /tmp/d20260114-1822-vzndi4/thor-1.5.0/lib/thor/actions/inject_into_file.rb 2026-01-14 03:34:01.579735030 +0000
@@ -4,0 +5,32 @@
+ WARNINGS = {unchanged_no_flag: "File unchanged! Either the supplied flag value not found or the content has already been inserted!"}
+
+ # Injects the given content into a file, raising an error if the contents of
+ # the file are not changed. Different from gsub_file, this method is reversible.
+ #
+ # ==== Parameters
+ # destination<String>:: Relative path to the destination root
+ # data<String>:: Data to add to the file. Can be given as a block.
+ # config<Hash>:: give :verbose => false to not log the status and the flag
+ # for injection (:after or :before) or :force => true for
+ # insert two or more times the same content.
+ #
+ # ==== Examples
+ #
+ # insert_into_file "config/environment.rb", "config.gem :thor", :after => "Rails::Initializer.run do |config|\n"
+ #
+ # insert_into_file "config/environment.rb", :after => "Rails::Initializer.run do |config|\n" do
+ # gems = ask "Which gems would you like to add?"
+ # gems.split(" ").map{ |gem| " config.gem :#{gem}" }.join("\n")
+ # end
+ #
+ def insert_into_file!(destination, *args, &block)
+ data = block_given? ? block : args.shift
+
+ config = args.shift || {}
+ config[:after] = /\z/ unless config.key?(:before) || config.key?(:after)
+ config = config.merge({error_on_no_change: true})
+
+ action InjectIntoFile.new(self, destination, data, config)
+ end
+ alias_method :inject_into_file!, :insert_into_file!
+
@@ -24,2 +55,0 @@
- WARNINGS = {unchanged_no_flag: "File unchanged! Either the supplied flag value not found or the content has already been inserted!"}
-
@@ -49,0 +80 @@
+ @error_on_no_change = @config.fetch(:error_on_no_change, false)
@@ -61,0 +93,2 @@
+ elsif @error_on_no_change
+ raise Thor::Error, "The content of #{destination} did not change"
lib/thor/base.rb
--- /tmp/d20260114-1822-vzndi4/thor-1.4.0/lib/thor/base.rb 2026-01-14 03:34:01.573734964 +0000
+++ /tmp/d20260114-1822-vzndi4/thor-1.5.0/lib/thor/base.rb 2026-01-14 03:34:01.579735030 +0000
@@ -16 +16 @@
- # Shortcuts for help.
+ # Shortcuts for help and tree commands.
@@ -17,0 +18 @@
+ TREE_MAPPINGS = %w(-t --tree)
lib/thor/shell/basic.rb
--- /tmp/d20260114-1822-vzndi4/thor-1.4.0/lib/thor/shell/basic.rb 2026-01-14 03:34:01.576734997 +0000
+++ /tmp/d20260114-1822-vzndi4/thor-1.5.0/lib/thor/shell/basic.rb 2026-01-14 03:34:01.581735051 +0000
@@ -314,2 +313,0 @@
- diff_cmd = ENV["THOR_DIFF"] || ENV["RAILS_DIFF"] || "diff -u"
-
@@ -320 +318 @@
- system %(#{diff_cmd} "#{destination}" "#{temp.path}")
+ system(*diff_tool, destination, temp.path)
@@ -372 +370 @@
- Tempfile.open([File.basename(destination), File.extname(destination)], File.dirname(destination)) do |temp|
+ Tempfile.open([File.basename(destination), File.extname(destination)], File.dirname(destination), binmode: true) do |temp|
@@ -375 +373 @@
- system(merge_tool, temp.path, destination)
+ system(*merge_tool, temp.path, destination)
@@ -380 +378,11 @@
- @merge_tool ||= ENV["THOR_MERGE"] || "git difftool --no-index"
+ @merge_tool ||= begin
+ require "shellwords"
+ Shellwords.split(ENV["THOR_MERGE"] || "git difftool --no-index")
+ end
+ end
+
+ def diff_tool #:nodoc:
+ @diff_cmd ||= begin
+ require "shellwords"
+ Shellwords.split(ENV["THOR_DIFF"] || ENV["RAILS_DIFF"] || "diff -u")
+ end
lib/thor/shell/color.rb
--- /tmp/d20260114-1822-vzndi4/thor-1.4.0/lib/thor/shell/color.rb 2026-01-14 03:34:01.576734997 +0000
+++ /tmp/d20260114-1822-vzndi4/thor-1.5.0/lib/thor/shell/color.rb 2026-01-14 03:34:01.581735051 +0000
@@ -0,0 +1,2 @@
+# frozen_string_literal: true
+
lib/thor/version.rb
--- /tmp/d20260114-1822-vzndi4/thor-1.4.0/lib/thor/version.rb 2026-01-14 03:34:01.577735008 +0000
+++ /tmp/d20260114-1822-vzndi4/thor-1.5.0/lib/thor/version.rb 2026-01-14 03:34:01.582735062 +0000
@@ -2 +2 @@
- VERSION = "1.4.0"
+ VERSION = "1.5.0"
thor.gemspec
--- /tmp/d20260114-1822-vzndi4/thor-1.4.0/thor.gemspec 2026-01-14 03:34:01.577735008 +0000
+++ /tmp/d20260114-1822-vzndi4/thor-1.5.0/thor.gemspec 2026-01-14 03:34:01.582735062 +0000
@@ -12 +12 @@
- spec.homepage = "http://whatisthor.com/"
+ spec.homepage = "https://github.com/rails/thor"
@@ -19 +19 @@
- "documentation_uri" => "http://whatisthor.com/",
+ "documentation_uri" => "https://github.com/rails/thor/wiki",
@@ -32 +32 @@
- spec.add_development_dependency "bundler", ">= 1.0", "< 3"
+ spec.add_development_dependency "bundler", ">= 1.0" |
Contributor
gem compare thor 1.4.0 1.5.0Compared versions: ["1.4.0", "1.5.0"]
DIFFERENT homepage:
1.4.0: http://whatisthor.com/
1.5.0: https://github.com/rails/thor
DIFFERENT metadata:
1.4.0: {"bug_tracker_uri" => "https://github.com/rails/thor/issues", "changelog_uri" => "https://github.com/rails/thor/releases/tag/v1.4.0", "documentation_uri" => "http://whatisthor.com/", "source_code_uri" => "https://github.com/rails/thor/tree/v1.4.0", "wiki_uri" => "https://github.com/rails/thor/wiki", "rubygems_mfa_required" => "true"}
1.5.0: {"bug_tracker_uri" => "https://github.com/rails/thor/issues", "changelog_uri" => "https://github.com/rails/thor/releases/tag/v1.5.0", "documentation_uri" => "https://github.com/rails/thor/wiki", "source_code_uri" => "https://github.com/rails/thor/tree/v1.5.0", "wiki_uri" => "https://github.com/rails/thor/wiki", "rubygems_mfa_required" => "true"}
DIFFERENT version:
1.4.0: 1.4.0
1.5.0: 1.5.0
DIFFERENT files:
1.4.0->1.5.0:
* Changed:
CONTRIBUTING.md +17/-0
README.md +1/-2
lib/thor.rb +34/-1
lib/thor/actions/inject_into_file.rb +35/-2
lib/thor/base.rb +2/-1
lib/thor/shell/basic.rb +14/-6
lib/thor/shell/color.rb +2/-0
lib/thor/version.rb +1/-1
thor.gemspec +3/-3
DIFFERENT development dependencies:
1.4.0->1.5.0:
* Updated:
bundler from: [">= 1.0", "< 3"] to: [">= 1.0"] |
Contributor
gem compare tilt 2.4.0 2.7.0Compared versions: ["2.4.0", "2.7.0"]
DIFFERENT date:
2.4.0: 2024-06-27 00:00:00 UTC
2.7.0: 1980-01-02 00:00:00 UTC
DIFFERENT metadata:
2.4.0: {"bug_tracker_uri" => "https://github.com/jeremyevans/tilt/issues", "changelog_uri" => "https://github.com/jeremyevans/tilt/blob/master/CHANGELOG.md", "mailing_list_uri" => "https://github.com/jeremyevans/tilt/discussions", "source_code_uri" => "https://github.com/jeremyevans/tilt"}
2.7.0: {"bug_tracker_uri" => "https://github.com/jeremyevans/tilt/issues", "changelog_uri" => "https://github.com/jeremyevans/tilt/blob/master/CHANGELOG.md", "mailing_list_uri" => "https://github.com/jeremyevans/tilt/discussions", "source_code_uri" => "https://github.com/jeremyevans/tilt", "documentation_uri" => "https://tilt.jeremyevans.net"}
DIFFERENT rubygems_version:
2.4.0: 3.5.9
2.7.0: 4.0.3
DIFFERENT version:
2.4.0: 2.4.0
2.7.0: 2.7.0
DIFFERENT files:
2.4.0->2.7.0:
* Deleted:
lib/tilt/creole.rb
lib/tilt/erubis.rb
lib/tilt/maruku.rb
lib/tilt/wikicloth.rb
* Changed:
lib/tilt.rb +9/-5
lib/tilt/asciidoc.rb +12/-5
lib/tilt/babel.rb +5/-0
lib/tilt/builder.rb +4/-0
lib/tilt/coffee.rb +14/-4
lib/tilt/commonmarker.rb +41/-0
lib/tilt/csv.rb +35/-25
lib/tilt/erb.rb +67/-2
lib/tilt/erubi.rb +41/-8
lib/tilt/etanni.rb +7/-0
lib/tilt/haml.rb +67/-1
lib/tilt/kramdown.rb +47/-1
lib/tilt/liquid.rb +66/-13
lib/tilt/livescript.rb +11/-4
lib/tilt/mapping.rb +9/-9
lib/tilt/markaby.rb +11/-2
lib/tilt/nokogiri.rb +13/-2
lib/tilt/pandoc.rb +43/-1
lib/tilt/pipeline.rb +6/-1
lib/tilt/plain.rb +5/-1
lib/tilt/prawn.rb +17/-6
lib/tilt/radius.rb +55/-0
lib/tilt/rdiscount.rb +65/-6
lib/tilt/rdoc.rb +23/-9
lib/tilt/redcarpet.rb +42/-0
lib/tilt/redcloth.rb +28/-1
lib/tilt/rst-pandoc.rb +24/-1
lib/tilt/sass.rb +16/-3
lib/tilt/slim.rb +13/-0
lib/tilt/string.rb +10/-2
lib/tilt/template.rb +189/-33
lib/tilt/typescript.rb +5/-0
lib/tilt/yajl.rb +46/-36 |
3 similar comments
Contributor
gem compare tilt 2.4.0 2.7.0Compared versions: ["2.4.0", "2.7.0"]
DIFFERENT date:
2.4.0: 2024-06-27 00:00:00 UTC
2.7.0: 1980-01-02 00:00:00 UTC
DIFFERENT metadata:
2.4.0: {"bug_tracker_uri" => "https://github.com/jeremyevans/tilt/issues", "changelog_uri" => "https://github.com/jeremyevans/tilt/blob/master/CHANGELOG.md", "mailing_list_uri" => "https://github.com/jeremyevans/tilt/discussions", "source_code_uri" => "https://github.com/jeremyevans/tilt"}
2.7.0: {"bug_tracker_uri" => "https://github.com/jeremyevans/tilt/issues", "changelog_uri" => "https://github.com/jeremyevans/tilt/blob/master/CHANGELOG.md", "mailing_list_uri" => "https://github.com/jeremyevans/tilt/discussions", "source_code_uri" => "https://github.com/jeremyevans/tilt", "documentation_uri" => "https://tilt.jeremyevans.net"}
DIFFERENT rubygems_version:
2.4.0: 3.5.9
2.7.0: 4.0.3
DIFFERENT version:
2.4.0: 2.4.0
2.7.0: 2.7.0
DIFFERENT files:
2.4.0->2.7.0:
* Deleted:
lib/tilt/creole.rb
lib/tilt/erubis.rb
lib/tilt/maruku.rb
lib/tilt/wikicloth.rb
* Changed:
lib/tilt.rb +9/-5
lib/tilt/asciidoc.rb +12/-5
lib/tilt/babel.rb +5/-0
lib/tilt/builder.rb +4/-0
lib/tilt/coffee.rb +14/-4
lib/tilt/commonmarker.rb +41/-0
lib/tilt/csv.rb +35/-25
lib/tilt/erb.rb +67/-2
lib/tilt/erubi.rb +41/-8
lib/tilt/etanni.rb +7/-0
lib/tilt/haml.rb +67/-1
lib/tilt/kramdown.rb +47/-1
lib/tilt/liquid.rb +66/-13
lib/tilt/livescript.rb +11/-4
lib/tilt/mapping.rb +9/-9
lib/tilt/markaby.rb +11/-2
lib/tilt/nokogiri.rb +13/-2
lib/tilt/pandoc.rb +43/-1
lib/tilt/pipeline.rb +6/-1
lib/tilt/plain.rb +5/-1
lib/tilt/prawn.rb +17/-6
lib/tilt/radius.rb +55/-0
lib/tilt/rdiscount.rb +65/-6
lib/tilt/rdoc.rb +23/-9
lib/tilt/redcarpet.rb +42/-0
lib/tilt/redcloth.rb +28/-1
lib/tilt/rst-pandoc.rb +24/-1
lib/tilt/sass.rb +16/-3
lib/tilt/slim.rb +13/-0
lib/tilt/string.rb +10/-2
lib/tilt/template.rb +189/-33
lib/tilt/typescript.rb +5/-0
lib/tilt/yajl.rb +46/-36 |
Contributor
gem compare tilt 2.4.0 2.7.0Compared versions: ["2.4.0", "2.7.0"]
DIFFERENT date:
2.4.0: 2024-06-27 00:00:00 UTC
2.7.0: 1980-01-02 00:00:00 UTC
DIFFERENT metadata:
2.4.0: {"bug_tracker_uri" => "https://github.com/jeremyevans/tilt/issues", "changelog_uri" => "https://github.com/jeremyevans/tilt/blob/master/CHANGELOG.md", "mailing_list_uri" => "https://github.com/jeremyevans/tilt/discussions", "source_code_uri" => "https://github.com/jeremyevans/tilt"}
2.7.0: {"bug_tracker_uri" => "https://github.com/jeremyevans/tilt/issues", "changelog_uri" => "https://github.com/jeremyevans/tilt/blob/master/CHANGELOG.md", "mailing_list_uri" => "https://github.com/jeremyevans/tilt/discussions", "source_code_uri" => "https://github.com/jeremyevans/tilt", "documentation_uri" => "https://tilt.jeremyevans.net"}
DIFFERENT rubygems_version:
2.4.0: 3.5.9
2.7.0: 4.0.3
DIFFERENT version:
2.4.0: 2.4.0
2.7.0: 2.7.0
DIFFERENT files:
2.4.0->2.7.0:
* Deleted:
lib/tilt/creole.rb
lib/tilt/erubis.rb
lib/tilt/maruku.rb
lib/tilt/wikicloth.rb
* Changed:
lib/tilt.rb +9/-5
lib/tilt/asciidoc.rb +12/-5
lib/tilt/babel.rb +5/-0
lib/tilt/builder.rb +4/-0
lib/tilt/coffee.rb +14/-4
lib/tilt/commonmarker.rb +41/-0
lib/tilt/csv.rb +35/-25
lib/tilt/erb.rb +67/-2
lib/tilt/erubi.rb +41/-8
lib/tilt/etanni.rb +7/-0
lib/tilt/haml.rb +67/-1
lib/tilt/kramdown.rb +47/-1
lib/tilt/liquid.rb +66/-13
lib/tilt/livescript.rb +11/-4
lib/tilt/mapping.rb +9/-9
lib/tilt/markaby.rb +11/-2
lib/tilt/nokogiri.rb +13/-2
lib/tilt/pandoc.rb +43/-1
lib/tilt/pipeline.rb +6/-1
lib/tilt/plain.rb +5/-1
lib/tilt/prawn.rb +17/-6
lib/tilt/radius.rb +55/-0
lib/tilt/rdiscount.rb +65/-6
lib/tilt/rdoc.rb +23/-9
lib/tilt/redcarpet.rb +42/-0
lib/tilt/redcloth.rb +28/-1
lib/tilt/rst-pandoc.rb +24/-1
lib/tilt/sass.rb +16/-3
lib/tilt/slim.rb +13/-0
lib/tilt/string.rb +10/-2
lib/tilt/template.rb +189/-33
lib/tilt/typescript.rb +5/-0
lib/tilt/yajl.rb +46/-36 |
Contributor
gem compare tilt 2.4.0 2.7.0Compared versions: ["2.4.0", "2.7.0"]
DIFFERENT date:
2.4.0: 2024-06-27 00:00:00 UTC
2.7.0: 1980-01-02 00:00:00 UTC
DIFFERENT metadata:
2.4.0: {"bug_tracker_uri" => "https://github.com/jeremyevans/tilt/issues", "changelog_uri" => "https://github.com/jeremyevans/tilt/blob/master/CHANGELOG.md", "mailing_list_uri" => "https://github.com/jeremyevans/tilt/discussions", "source_code_uri" => "https://github.com/jeremyevans/tilt"}
2.7.0: {"bug_tracker_uri" => "https://github.com/jeremyevans/tilt/issues", "changelog_uri" => "https://github.com/jeremyevans/tilt/blob/master/CHANGELOG.md", "mailing_list_uri" => "https://github.com/jeremyevans/tilt/discussions", "source_code_uri" => "https://github.com/jeremyevans/tilt", "documentation_uri" => "https://tilt.jeremyevans.net"}
DIFFERENT rubygems_version:
2.4.0: 3.5.9
2.7.0: 4.0.3
DIFFERENT version:
2.4.0: 2.4.0
2.7.0: 2.7.0
DIFFERENT files:
2.4.0->2.7.0:
* Deleted:
lib/tilt/creole.rb
lib/tilt/erubis.rb
lib/tilt/maruku.rb
lib/tilt/wikicloth.rb
* Changed:
lib/tilt.rb +9/-5
lib/tilt/asciidoc.rb +12/-5
lib/tilt/babel.rb +5/-0
lib/tilt/builder.rb +4/-0
lib/tilt/coffee.rb +14/-4
lib/tilt/commonmarker.rb +41/-0
lib/tilt/csv.rb +35/-25
lib/tilt/erb.rb +67/-2
lib/tilt/erubi.rb +41/-8
lib/tilt/etanni.rb +7/-0
lib/tilt/haml.rb +67/-1
lib/tilt/kramdown.rb +47/-1
lib/tilt/liquid.rb +66/-13
lib/tilt/livescript.rb +11/-4
lib/tilt/mapping.rb +9/-9
lib/tilt/markaby.rb +11/-2
lib/tilt/nokogiri.rb +13/-2
lib/tilt/pandoc.rb +43/-1
lib/tilt/pipeline.rb +6/-1
lib/tilt/plain.rb +5/-1
lib/tilt/prawn.rb +17/-6
lib/tilt/radius.rb +55/-0
lib/tilt/rdiscount.rb +65/-6
lib/tilt/rdoc.rb +23/-9
lib/tilt/redcarpet.rb +42/-0
lib/tilt/redcloth.rb +28/-1
lib/tilt/rst-pandoc.rb +24/-1
lib/tilt/sass.rb +16/-3
lib/tilt/slim.rb +13/-0
lib/tilt/string.rb +10/-2
lib/tilt/template.rb +189/-33
lib/tilt/typescript.rb +5/-0
lib/tilt/yajl.rb +46/-36 |
Contributor
gem compare --diff thor 1.4.0 1.5.0Compared versions: ["1.4.0", "1.5.0"]
DIFFERENT files:
1.4.0->1.5.0:
* Changed:
CONTRIBUTING.md
--- /tmp/d20260114-1667-fn0z67/thor-1.4.0/CONTRIBUTING.md 2026-01-14 03:34:17.904840982 +0000
+++ /tmp/d20260114-1667-fn0z67/thor-1.5.0/CONTRIBUTING.md 2026-01-14 03:34:17.910840948 +0000
@@ -15,0 +16,17 @@
+
+Specs
+-----
+
+Ensure that all specs and code linting checks pass before submitting a pull request.
+
+To execute the specs locally, run:
+
+```bash
+bundle exec rspec
+```
+
+Linting checks are done with RuboCop. To run the linter, use:
+
+```bash
+bundle exec rubocop
+```
README.md
--- /tmp/d20260114-1667-fn0z67/thor-1.4.0/README.md 2026-01-14 03:34:17.904840982 +0000
+++ /tmp/d20260114-1667-fn0z67/thor-1.5.0/README.md 2026-01-14 03:34:17.910840948 +0000
@@ -30 +30 @@
-Please see the [wiki][] for basic usage and other documentation on using Thor. You can also check out the [official homepage][homepage].
+Please see the [wiki][] for basic usage and other documentation on using Thor.
@@ -33 +32,0 @@
-[homepage]: http://whatisthor.com/
lib/thor.rb
--- /tmp/d20260114-1667-fn0z67/thor-1.4.0/lib/thor.rb 2026-01-14 03:34:17.904840982 +0000
+++ /tmp/d20260114-1667-fn0z67/thor-1.5.0/lib/thor.rb 2026-01-14 03:34:17.910840948 +0000
@@ -628 +628 @@
- possibilities = all_commands.merge(map).keys.select { |n| meth == n[0, len] }.sort
+ possibilities = all_commands.reject {|k, v| v.is_a?(HiddenCommand) }.merge(map).keys.select { |n| meth == n[0, len] }.sort
@@ -671,0 +672,33 @@
+ end
+ end
+
+ map TREE_MAPPINGS => :tree
+
+ desc "tree", "Print a tree of all available commands"
+ def tree
+ build_command_tree(self.class, "")
+ end
+
+private
+
+ def build_command_tree(klass, indent)
+ # Print current class name if it's not the root Thor class
+ unless klass == Thor
+ say "#{indent}#{klass.namespace || 'default'}", :blue
+ indent = "#{indent} "
+ end
+
+ # Print all commands for this class
+ visible_commands = klass.commands.reject { |_, cmd| cmd.hidden? || cmd.name == "help" }
+ commands_count = visible_commands.count
+ visible_commands.sort.each_with_index do |(command_name, command), i|
+ description = command.description.split("\n").first || ""
+ icon = i == (commands_count - 1) ? "└─" : "├─"
+ say "#{indent}#{icon} ", nil, false
+ say command_name, :green, false
+ say " (#{description})" unless description.empty?
+ end
+
+ # Print all subcommands (from registered Thor subclasses)
+ klass.subcommand_classes.each do |_, subclass|
+ build_command_tree(subclass, indent)
lib/thor/actions/inject_into_file.rb
--- /tmp/d20260114-1667-fn0z67/thor-1.4.0/lib/thor/actions/inject_into_file.rb 2026-01-14 03:34:17.905840977 +0000
+++ /tmp/d20260114-1667-fn0z67/thor-1.5.0/lib/thor/actions/inject_into_file.rb 2026-01-14 03:34:17.911840943 +0000
@@ -4,0 +5,32 @@
+ WARNINGS = {unchanged_no_flag: "File unchanged! Either the supplied flag value not found or the content has already been inserted!"}
+
+ # Injects the given content into a file, raising an error if the contents of
+ # the file are not changed. Different from gsub_file, this method is reversible.
+ #
+ # ==== Parameters
+ # destination<String>:: Relative path to the destination root
+ # data<String>:: Data to add to the file. Can be given as a block.
+ # config<Hash>:: give :verbose => false to not log the status and the flag
+ # for injection (:after or :before) or :force => true for
+ # insert two or more times the same content.
+ #
+ # ==== Examples
+ #
+ # insert_into_file "config/environment.rb", "config.gem :thor", :after => "Rails::Initializer.run do |config|\n"
+ #
+ # insert_into_file "config/environment.rb", :after => "Rails::Initializer.run do |config|\n" do
+ # gems = ask "Which gems would you like to add?"
+ # gems.split(" ").map{ |gem| " config.gem :#{gem}" }.join("\n")
+ # end
+ #
+ def insert_into_file!(destination, *args, &block)
+ data = block_given? ? block : args.shift
+
+ config = args.shift || {}
+ config[:after] = /\z/ unless config.key?(:before) || config.key?(:after)
+ config = config.merge({error_on_no_change: true})
+
+ action InjectIntoFile.new(self, destination, data, config)
+ end
+ alias_method :inject_into_file!, :insert_into_file!
+
@@ -24,2 +55,0 @@
- WARNINGS = {unchanged_no_flag: "File unchanged! Either the supplied flag value not found or the content has already been inserted!"}
-
@@ -49,0 +80 @@
+ @error_on_no_change = @config.fetch(:error_on_no_change, false)
@@ -61,0 +93,2 @@
+ elsif @error_on_no_change
+ raise Thor::Error, "The content of #{destination} did not change"
lib/thor/base.rb
--- /tmp/d20260114-1667-fn0z67/thor-1.4.0/lib/thor/base.rb 2026-01-14 03:34:17.905840977 +0000
+++ /tmp/d20260114-1667-fn0z67/thor-1.5.0/lib/thor/base.rb 2026-01-14 03:34:17.912840937 +0000
@@ -16 +16 @@
- # Shortcuts for help.
+ # Shortcuts for help and tree commands.
@@ -17,0 +18 @@
+ TREE_MAPPINGS = %w(-t --tree)
lib/thor/shell/basic.rb
--- /tmp/d20260114-1667-fn0z67/thor-1.4.0/lib/thor/shell/basic.rb 2026-01-14 03:34:17.908840960 +0000
+++ /tmp/d20260114-1667-fn0z67/thor-1.5.0/lib/thor/shell/basic.rb 2026-01-14 03:34:17.914840926 +0000
@@ -314,2 +313,0 @@
- diff_cmd = ENV["THOR_DIFF"] || ENV["RAILS_DIFF"] || "diff -u"
-
@@ -320 +318 @@
- system %(#{diff_cmd} "#{destination}" "#{temp.path}")
+ system(*diff_tool, destination, temp.path)
@@ -372 +370 @@
- Tempfile.open([File.basename(destination), File.extname(destination)], File.dirname(destination)) do |temp|
+ Tempfile.open([File.basename(destination), File.extname(destination)], File.dirname(destination), binmode: true) do |temp|
@@ -375 +373 @@
- system(merge_tool, temp.path, destination)
+ system(*merge_tool, temp.path, destination)
@@ -380 +378,11 @@
- @merge_tool ||= ENV["THOR_MERGE"] || "git difftool --no-index"
+ @merge_tool ||= begin
+ require "shellwords"
+ Shellwords.split(ENV["THOR_MERGE"] || "git difftool --no-index")
+ end
+ end
+
+ def diff_tool #:nodoc:
+ @diff_cmd ||= begin
+ require "shellwords"
+ Shellwords.split(ENV["THOR_DIFF"] || ENV["RAILS_DIFF"] || "diff -u")
+ end
lib/thor/shell/color.rb
--- /tmp/d20260114-1667-fn0z67/thor-1.4.0/lib/thor/shell/color.rb 2026-01-14 03:34:17.908840960 +0000
+++ /tmp/d20260114-1667-fn0z67/thor-1.5.0/lib/thor/shell/color.rb 2026-01-14 03:34:17.914840926 +0000
@@ -0,0 +1,2 @@
+# frozen_string_literal: true
+
lib/thor/version.rb
--- /tmp/d20260114-1667-fn0z67/thor-1.4.0/lib/thor/version.rb 2026-01-14 03:34:17.909840954 +0000
+++ /tmp/d20260114-1667-fn0z67/thor-1.5.0/lib/thor/version.rb 2026-01-14 03:34:17.915840920 +0000
@@ -2 +2 @@
- VERSION = "1.4.0"
+ VERSION = "1.5.0"
thor.gemspec
--- /tmp/d20260114-1667-fn0z67/thor-1.4.0/thor.gemspec 2026-01-14 03:34:17.909840954 +0000
+++ /tmp/d20260114-1667-fn0z67/thor-1.5.0/thor.gemspec 2026-01-14 03:34:17.915840920 +0000
@@ -12 +12 @@
- spec.homepage = "http://whatisthor.com/"
+ spec.homepage = "https://github.com/rails/thor"
@@ -19 +19 @@
- "documentation_uri" => "http://whatisthor.com/",
+ "documentation_uri" => "https://github.com/rails/thor/wiki",
@@ -32 +32 @@
- spec.add_development_dependency "bundler", ">= 1.0", "< 3"
+ spec.add_development_dependency "bundler", ">= 1.0" |
Contributor
|
3 similar comments
Contributor
|
Contributor
|
Contributor
|
Contributor
gem compare tilt 2.4.0 2.7.0Compared versions: ["2.4.0", "2.7.0"]
DIFFERENT date:
2.4.0: 2024-06-27 00:00:00 UTC
2.7.0: 1980-01-02 00:00:00 UTC
DIFFERENT metadata:
2.4.0: {"bug_tracker_uri" => "https://github.com/jeremyevans/tilt/issues", "changelog_uri" => "https://github.com/jeremyevans/tilt/blob/master/CHANGELOG.md", "mailing_list_uri" => "https://github.com/jeremyevans/tilt/discussions", "source_code_uri" => "https://github.com/jeremyevans/tilt"}
2.7.0: {"bug_tracker_uri" => "https://github.com/jeremyevans/tilt/issues", "changelog_uri" => "https://github.com/jeremyevans/tilt/blob/master/CHANGELOG.md", "mailing_list_uri" => "https://github.com/jeremyevans/tilt/discussions", "source_code_uri" => "https://github.com/jeremyevans/tilt", "documentation_uri" => "https://tilt.jeremyevans.net"}
DIFFERENT rubygems_version:
2.4.0: 3.5.9
2.7.0: 4.0.3
DIFFERENT version:
2.4.0: 2.4.0
2.7.0: 2.7.0
DIFFERENT files:
2.4.0->2.7.0:
* Deleted:
lib/tilt/creole.rb
lib/tilt/erubis.rb
lib/tilt/maruku.rb
lib/tilt/wikicloth.rb
* Changed:
lib/tilt.rb +9/-5
lib/tilt/asciidoc.rb +12/-5
lib/tilt/babel.rb +5/-0
lib/tilt/builder.rb +4/-0
lib/tilt/coffee.rb +14/-4
lib/tilt/commonmarker.rb +41/-0
lib/tilt/csv.rb +35/-25
lib/tilt/erb.rb +67/-2
lib/tilt/erubi.rb +41/-8
lib/tilt/etanni.rb +7/-0
lib/tilt/haml.rb +67/-1
lib/tilt/kramdown.rb +47/-1
lib/tilt/liquid.rb +66/-13
lib/tilt/livescript.rb +11/-4
lib/tilt/mapping.rb +9/-9
lib/tilt/markaby.rb +11/-2
lib/tilt/nokogiri.rb +13/-2
lib/tilt/pandoc.rb +43/-1
lib/tilt/pipeline.rb +6/-1
lib/tilt/plain.rb +5/-1
lib/tilt/prawn.rb +17/-6
lib/tilt/radius.rb +55/-0
lib/tilt/rdiscount.rb +65/-6
lib/tilt/rdoc.rb +23/-9
lib/tilt/redcarpet.rb +42/-0
lib/tilt/redcloth.rb +28/-1
lib/tilt/rst-pandoc.rb +24/-1
lib/tilt/sass.rb +16/-3
lib/tilt/slim.rb +13/-0
lib/tilt/string.rb +10/-2
lib/tilt/template.rb +189/-33
lib/tilt/typescript.rb +5/-0
lib/tilt/yajl.rb +46/-36 |
Contributor
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Bumps haml from 6.3.0 to 7.2.0.
Release notes
Sourced from haml's releases.
... (truncated)
Changelog
Sourced from haml's changelog.
Commits
97a4865Version 7.2.0220624cPoint changelog_uri to github releases (#1202)8c0d0b5Do not require rails when haml is required (#1201)2417298Version 7.1.016ea650Support xhtml format for boolean nested data attributes (#1198) (#1200)9c3e6afVersion 7.0.2f230d01Add source code URI to gemspec metadata (#1197)c251880Replace usages of =~ with.match?where possible (#1196)9e429d6Remove references to Hamlit (#1195)6ac290dVersion 7.0.1Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot mergewill merge this PR after your CI passes on it@dependabot squash and mergewill squash and merge this PR after your CI passes on it@dependabot cancel mergewill cancel a previously requested merge and block automerging@dependabot reopenwill reopen this PR if it is closed@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)