opal-haml 0.4.3 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1419033dec6d3a72ed09a3011ecc454551406271
4
- data.tar.gz: '02064278322c4b072f766465870a035cc4724ad5'
2
+ SHA256:
3
+ metadata.gz: caaa43696ff138938744b1bc2ebe269cee1db4eb9dfd786fa188434fa8a151e4
4
+ data.tar.gz: 12cea5167029244a89459504f4bc62f4ceb06ffce92d19d81a42d64b6ba0210c
5
5
  SHA512:
6
- metadata.gz: 5c66562091ba037ecbead72df0a925044e129c65a2d8d31965cd4a0293bdfa7935614630335b6f4c45577f949b3e903a4a532ff74efc139ad603cbe982866977
7
- data.tar.gz: 9c7de3fd306c703c012ee02992339cff80df33b18042aca33bc3ab535f2f43effd18cb38da334de2b1c00d68ec6f824942fdfa9129f4ef7e63690921f9669a76
6
+ metadata.gz: 488af893b673e34f9cb9cb44e4f3764addc4f18607ee63fdab08a42ea2da59c6a9628a66601ac9f4d52283eaf987304be7b196850419cdc9c912f8fd34e196f7
7
+ data.tar.gz: 4bcc5f1cab067d59cc6c8757a4c1fe3d98e875f04b36fabb1a150c35aad087b6fe891a903b8d7c0685342fa3251e5a217d035bf59a66c0242f6ee8828e942607
@@ -0,0 +1,29 @@
1
+ name: Tests
2
+ on:
3
+ push:
4
+ branches:
5
+ - master
6
+ - "*-stable"
7
+ - "*/ci-check"
8
+ pull_request:
9
+
10
+ jobs:
11
+ tests:
12
+ name: Tests
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ ruby: [2.6, 2.7, 3.0]
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - name: Checkout code
20
+ uses: actions/checkout@v2
21
+
22
+ - name: Setup Ruby
23
+ uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: ${{ matrix.ruby }}
26
+ bundler-cache: true
27
+
28
+ - name: Run tests
29
+ run: bundle exec rake
data/CHANGELOG.md CHANGED
@@ -1,37 +1,55 @@
1
+ ## 0.5.0 2021-12-01
2
+
3
+ - Compatibility for Haml v5.2
4
+
5
+ - Support Sprockets 4.0
6
+
7
+ ## 0.4.6 2019-07-13
8
+
9
+ - Add support for Opal v1.0
10
+
11
+ ## 0.4.5 2018-03-19
12
+
13
+ - Avoid warning from Opal v0.11
14
+
15
+ ## 0.4.4 2017-05-13
16
+
17
+ - Improve support for the attribute builder
18
+
1
19
  ## 0.4.3 2017-05-02
2
20
 
3
- * Add support for Haml v5.0
21
+ - Add support for Haml v5.0
4
22
 
5
23
  ## 0.4.2 2016-10-06
6
24
 
7
- * Avoid Sprockets v3.7 deprecations
25
+ - Avoid Sprockets v3.7 deprecations
8
26
 
9
27
  ## 0.4.1 2015-11-02
10
28
 
11
- * Add support for nested attribute hashes: `%div{ data: { foo: 123 } }` now becomes `<div data-foo="123"></div>`.
29
+ - Add support for nested attribute hashes: `%div{ data: { foo: 123 } }` now becomes `<div data-foo="123"></div>`.
12
30
 
13
- * Attribute values are now properly escaped.
31
+ - Attribute values are now properly escaped.
14
32
 
15
33
  ## 0.4.0 2015-08-07
16
34
 
17
- * Add support for Opal 0.8.
35
+ - Add support for Opal 0.8.
18
36
 
19
- * Update the processor to reuse the good stuff from the Opal::Processor.
37
+ - Update the processor to reuse the good stuff from the Opal::Processor.
20
38
 
21
- * Now each compiled template automatically requires `opal-haml` with the new module system.
39
+ - Now each compiled template automatically requires `opal-haml` with the new module system.
22
40
 
23
41
  ## 0.3.0 2015-02-03
24
42
 
25
- * Add support for new opal Builder processors.
43
+ - Add support for new opal Builder processors.
26
44
 
27
- * Implicitly require `opal-haml` when any haml template is required
45
+ - Implicitly require `opal-haml` when any haml template is required
28
46
 
29
- * Cleanup generated code to be use Opal ERB runtime directly.
47
+ - Cleanup generated code to be use Opal ERB runtime directly.
30
48
 
31
49
  ## 0.2.0 2013-12-17
32
50
 
33
- * Remove opal-sprockets dependency
51
+ - Remove opal-sprockets dependency
34
52
 
35
53
  ## 0.1.0 2013-12-17
36
54
 
37
- * Initial release
55
+ - Initial release
data/Gemfile CHANGED
@@ -1,3 +1,28 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
- gem 'haml', ENV['HAML_VERSION'] || '> 0'
3
+
4
+ github = -> repo { "https://github.com/#{repo}" }
5
+ version = -> rs { -> vs { Gem::Requirement.new(rs) === Gem::Version.new(vs) } }
6
+ haml_version = ENV['HAML_VERSION'] ? "~> #{ENV['HAML_VERSION']}" : ">= 0"
7
+
8
+ gem 'haml', haml_version
9
+
10
+ case ENV['OPAL_VERSION']
11
+
12
+ when 'local'
13
+ gem 'opal', path: '../opal'
14
+ gem 'opal-sprockets', path: '../opal-sprockets'
15
+ gem 'opal-rspec', path: '../opal-rspec'
16
+
17
+ when 'master'
18
+ gem 'opal', git: github['opal/opal'], branch: :master
19
+ gem 'opal-sprockets', git: github['opal/opal-sprockets']
20
+ gem 'opal-rspec', git: github['opal/opal-rspec'], branch: 'master', submodules: true
21
+
22
+ when version['~> 1.0.0']
23
+ gem 'opal-rspec', '~> 0.8.0.alpha1'
24
+
25
+ when version['~> 0.10.0']
26
+ gem 'opal', '~> 0.10.5'
27
+
28
+ end
data/README.md CHANGED
@@ -1,4 +1,6 @@
1
- # opal-haml: Haml templates for opal
1
+ # Opal Haml
2
+
3
+ *Haml templates for Opal*
2
4
 
3
5
  [![Build Status](https://travis-ci.org/opal/opal-haml.svg?branch=master)](https://travis-ci.org/opal/opal-haml)
4
6
 
@@ -79,7 +81,7 @@ $ bundle exec rackup
79
81
 
80
82
  (The MIT License)
81
83
 
82
- Copyright (C) 2013 by Adam Beynon
84
+ Copyright (C) 2013 by Adam Beynon, 2015 Elia Schito
83
85
 
84
86
  Permission is hereby granted, free of charge, to any person obtaining a copy
85
87
  of this software and associated documentation files (the "Software"), to deal
data/Rakefile CHANGED
@@ -3,4 +3,7 @@ Bundler.require
3
3
  Bundler::GemHelper.install_tasks
4
4
 
5
5
  require 'opal/rspec/rake_task'
6
- Opal::RSpec::RakeTask.new(:default)
6
+ Opal::RSpec::RakeTask.new(:default) do |server, task|
7
+ task.pattern = 'spec-opal/**/*_spec.rb'
8
+ task.default_path = 'spec-opal'
9
+ end
data/config.ru CHANGED
@@ -1,10 +1,19 @@
1
1
  require 'bundler'
2
2
  Bundler.require
3
3
 
4
+ require 'opal-sprockets'
4
5
  require 'opal-rspec'
5
6
 
6
- run Opal::Server.new { |s|
7
+ OPAL_SPROCKETS_SERVER = defined?(Opal::Sprockets::Server) ? Opal::Sprockets::Server : Opal::Server
8
+
9
+ sprockets_env = Opal::RSpec::SprocketsEnvironment.new(
10
+ spec_pattern = 'spec-opal/**/*_spec.{rb,opal}',
11
+ spec_exclude_pattern = nil,
12
+ spec_files = nil,
13
+ default_path = 'spec-opal')
14
+
15
+ run OPAL_SPROCKETS_SERVER.new(sprockets: sprockets_env) { |s|
7
16
  s.main = 'opal/rspec/sprockets_runner'
8
- s.append_path 'spec'
17
+ s.append_path 'spec-opal'
9
18
  s.debug = true
10
19
  }
@@ -7,6 +7,7 @@ module Opal
7
7
 
8
8
  def initialize(*args)
9
9
  super
10
+ @filename = ::Opal::Compiler.module_name(@filename)
10
11
  @source = prepare(@source, @filename)
11
12
  end
12
13
 
@@ -1,28 +1,17 @@
1
1
  require 'haml'
2
- require 'sprockets'
2
+ require 'opal-sprockets'
3
3
 
4
4
  module Opal
5
5
  module Haml
6
- class Processor < ::Opal::Processor
7
- self.default_mime_type = 'application/javascript'
8
-
9
- def evaluate(context, locals, &block)
10
- @data = Opal::Haml.compile_haml @data, context.logical_path.sub(/^templates\//, '')
6
+ class Processor < ::Opal::Sprockets::Processor
7
+ def call
8
+ @data = Opal::Haml.compile_haml @data, context.logical_path.sub(/#{Opal::REGEXP_START}templates\//, '')
11
9
  super
12
10
  end
13
-
14
- def self.compiler_options
15
- # otherwise would check current class `attr_accessor`s
16
- ::Opal::Processor.compiler_options
17
- end
18
11
  end
19
12
  end
20
13
  end
21
14
 
22
- if Sprockets.respond_to? :register_transformer
23
- extra_args = [{mime_type: 'application/javascript', silence_deprecation: true}]
24
- else
25
- extra_args = []
26
- end
27
-
28
- Sprockets.register_engine '.haml', Opal::Haml::Processor, *extra_args
15
+ Sprockets.register_mime_type 'application/html+haml', extensions: ['.haml', '.html.haml']
16
+ Sprockets.register_transformer 'application/html+haml', 'application/javascript', Opal::Haml::Processor
17
+ Opal::Sprockets.register_mime_type 'application/html+haml'
@@ -1,5 +1,5 @@
1
1
  module Opal
2
2
  module Haml
3
- VERSION = '0.4.3'
3
+ VERSION = '0.5.0'
4
4
  end
5
5
  end
data/lib/opal/haml.rb CHANGED
@@ -35,4 +35,4 @@ module Opal
35
35
  end
36
36
  end
37
37
 
38
- Opal.append_path File.expand_path('../../../opal', __FILE__).untaint
38
+ Opal.append_path File.expand_path('../../../lib-opal', __FILE__).untaint
@@ -0,0 +1,184 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (c) 2006-2009 Hampton Catlin and Natalie Weizenbaum
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining
6
+ # a copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish,
9
+ # distribute, sublicense, and/or sell copies of the Software, and to
10
+ # permit persons to whom the Software is furnished to do so, subject to
11
+ # the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ module Haml
24
+ module AttributeBuilder
25
+ # https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
26
+ INVALID_ATTRIBUTE_NAME_REGEX = /[ \0"'>\/=]/
27
+
28
+ class << self
29
+ def build_attributes(is_html, attr_wrapper, escape_attrs, hyphenate_data_attrs, attributes = {})
30
+ # @TODO this is an absolutely ridiculous amount of arguments. At least
31
+ # some of this needs to be moved into an instance method.
32
+ join_char = hyphenate_data_attrs ? '-' : '_'
33
+
34
+ attributes.each do |key, value|
35
+ if value.is_a?(Hash)
36
+ data_attributes = attributes.delete(key)
37
+ data_attributes = flatten_data_attributes(data_attributes, '', join_char)
38
+ data_attributes = build_data_keys(data_attributes, hyphenate_data_attrs, key)
39
+ verify_attribute_names!(data_attributes.keys)
40
+ attributes = data_attributes.merge(attributes)
41
+ end
42
+ end
43
+
44
+ result = attributes.collect do |attr, value|
45
+ next if value.nil?
46
+
47
+ value = filter_and_join(value, ' ') if attr == 'class'
48
+ value = filter_and_join(value, '_') if attr == 'id'
49
+
50
+ if value == true
51
+ next " #{attr}" if is_html
52
+ next " #{attr}=#{attr_wrapper}#{attr}#{attr_wrapper}"
53
+ elsif value == false
54
+ next
55
+ end
56
+
57
+ value =
58
+ if escape_attrs == :once
59
+ Haml::Helpers.escape_once(value.to_s)
60
+ elsif escape_attrs
61
+ Haml::Helpers.html_escape(value.to_s)
62
+ else
63
+ value.to_s
64
+ end
65
+ " #{attr}=#{attr_wrapper}#{value}#{attr_wrapper}"
66
+ end
67
+ result.compact!
68
+ result.sort!
69
+ result.join
70
+ end
71
+
72
+ # @return [String, nil]
73
+ def filter_and_join(value, separator)
74
+ return '' if (value.respond_to?(:empty?) && value.empty?)
75
+
76
+ if value.is_a?(Array)
77
+ value = value.flatten
78
+ value.map! {|item| item ? item.to_s : nil}
79
+ value.compact!
80
+ value = value.join(separator)
81
+ else
82
+ value = value ? value.to_s : nil
83
+ end
84
+ !value.nil? && !value.empty? && value
85
+ end
86
+
87
+ # Merges two attribute hashes.
88
+ # This is the same as `to.merge!(from)`,
89
+ # except that it merges id, class, and data attributes.
90
+ #
91
+ # ids are concatenated with `"_"`,
92
+ # and classes are concatenated with `" "`.
93
+ # data hashes are simply merged.
94
+ #
95
+ # Destructively modifies `to`.
96
+ #
97
+ # @param to [{String => String,Hash}] The attribute hash to merge into
98
+ # @param from [{String => Object}] The attribute hash to merge from
99
+ # @return [{String => String,Hash}] `to`, after being merged
100
+ def merge_attributes!(to, from)
101
+ from.keys.each do |key|
102
+ to[key] = merge_value(key, to[key], from[key])
103
+ end
104
+ to
105
+ end
106
+
107
+ # Merge multiple values to one attribute value. No destructive operation.
108
+ #
109
+ # @param key [String]
110
+ # @param values [Array<Object>]
111
+ # @return [String,Hash]
112
+ def merge_values(key, *values)
113
+ values.inject(nil) do |to, from|
114
+ merge_value(key, to, from)
115
+ end
116
+ end
117
+
118
+ def verify_attribute_names!(attribute_names)
119
+ attribute_names.each do |attribute_name|
120
+ if attribute_name =~ INVALID_ATTRIBUTE_NAME_REGEX
121
+ raise InvalidAttributeNameError.new("Invalid attribute name '#{attribute_name}' was rendered")
122
+ end
123
+ end
124
+ end
125
+
126
+ private
127
+
128
+ # Merge a couple of values to one attribute value. No destructive operation.
129
+ #
130
+ # @param to [String,Hash,nil]
131
+ # @param from [Object]
132
+ # @return [String,Hash]
133
+ def merge_value(key, to, from)
134
+ if from.kind_of?(Hash) || to.kind_of?(Hash)
135
+ from = { nil => from } if !from.is_a?(Hash)
136
+ to = { nil => to } if !to.is_a?(Hash)
137
+ to.merge(from)
138
+ elsif key == 'id'
139
+ merged_id = filter_and_join(from, '_')
140
+ if to && merged_id
141
+ merged_id = "#{to}_#{merged_id}"
142
+ elsif to || merged_id
143
+ merged_id ||= to
144
+ end
145
+ merged_id
146
+ elsif key == 'class'
147
+ merged_class = filter_and_join(from, ' ')
148
+ if to && merged_class
149
+ merged_class = (merged_class.split(' ') | to.split(' ')).sort.join(' ')
150
+ elsif to || merged_class
151
+ merged_class ||= to
152
+ end
153
+ merged_class
154
+ else
155
+ from
156
+ end
157
+ end
158
+
159
+ def build_data_keys(data_hash, hyphenate, attr_name="data")
160
+ Hash[data_hash.map do |name, value|
161
+ if name == nil
162
+ [attr_name, value]
163
+ elsif hyphenate
164
+ ["#{attr_name}-#{name.to_s.tr('_', '-')}", value]
165
+ else
166
+ ["#{attr_name}-#{name}", value]
167
+ end
168
+ end]
169
+ end
170
+
171
+ def flatten_data_attributes(data, key, join_char, seen = [])
172
+ return {key => data} unless data.is_a?(Hash)
173
+
174
+ return {key => nil} if seen.include? data.object_id
175
+ seen << data.object_id
176
+
177
+ data.sort {|x, y| x[0].to_s <=> y[0].to_s}.inject({}) do |hash, (k, v)|
178
+ joined = key == '' ? k : [key, k].join(join_char)
179
+ hash.merge! flatten_data_attributes(v, joined, join_char, seen)
180
+ end
181
+ end
182
+ end
183
+ end
184
+ end
@@ -1,4 +1,5 @@
1
1
  require 'template'
2
+ require 'haml/attribute_builder'
2
3
 
3
4
  module Haml
4
5
  module Buffer
@@ -26,6 +27,8 @@ module Haml
26
27
  .replace(/[\r\n]/g, '&#13;');
27
28
  }
28
29
  end
30
+
31
+ singleton_class.alias_method :html_escape_without_haml_xss, :html_escape
29
32
  end
30
33
  end
31
34
 
@@ -67,7 +70,7 @@ class Template
67
70
  end
68
71
 
69
72
  def _attribute_escape(value)
70
- value.to_s.gsub /['"&<>]/, '"' => '&quot;', "'" => '&apos;', '&' => '&amp;', '<' => '&lt;', '>' => '&gt;'
73
+ value.to_s.gsub(/['"&<>]/, '"' => '&quot;', "'" => '&apos;', '&' => '&amp;', '<' => '&lt;', '>' => '&gt;')
71
74
  end
72
75
  end
73
76
  end
data/opal-haml.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = Opal::Haml::VERSION
8
8
  s.author = 'Adam Beynon'
9
9
  s.email = 'adam@adambeynon.com'
10
- s.homepage = 'http://opalrb.org'
10
+ s.homepage = 'https://github.com/opal/opal-haml#readme'
11
11
  s.summary = 'Run Haml templates client-side with Opal'
12
12
  s.description = 'Run Haml templates client-side with Opal.'
13
13
  s.license = 'MIT'
@@ -17,9 +17,10 @@ Gem::Specification.new do |s|
17
17
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
18
  s.require_paths = ['lib']
19
19
 
20
- s.add_dependency 'opal', '~> 0.10.0'
20
+ s.add_dependency 'opal', ['>= 0.10', '< 2']
21
+ s.add_dependency 'opal-sprockets', '>= 0.5.0'
21
22
  s.add_dependency 'haml'
22
23
 
23
- s.add_development_dependency 'opal-rspec', '~> 0.6.0'
24
+ s.add_development_dependency 'opal-rspec'
24
25
  s.add_development_dependency 'rake'
25
26
  end
File without changes
@@ -0,0 +1,7 @@
1
+ .keyboard
2
+ -2.times do
3
+ .octave
4
+ -@keyboard.notes.each do |note|
5
+ %a.key(class="#{2+2}")
6
+ .key{class: "#{note.note_class}"}
7
+ .name= note.name
File without changes
File without changes
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+ require 'fixtures/simple'
3
+ require 'fixtures/advanced'
4
+ require 'fixtures/html_content'
5
+ require 'fixtures/attributes_helper'
6
+
7
+ describe "Haml files" do
8
+ let(:simple) { Template['fixtures/simple'] }
9
+ let(:advanced) { Template['fixtures/advanced'] }
10
+ let(:html_content) { Template['fixtures/html_content'] }
11
+ let(:attributes_helper) { Template['fixtures/attributes_helper'] }
12
+
13
+ it "should be defined by filename on Template namespace" do
14
+ expect(simple).to be_kind_of(Template)
15
+ end
16
+
17
+ it "should render using #render" do
18
+ expect(simple.render(self)).to include('lol')
19
+ end
20
+
21
+ it "accepts a context to render template with" do
22
+ @haml_message = "hello world"
23
+ expect(advanced.render(self)).to include('hello world')
24
+ expect([
25
+ %{hello world<a bar='baz' href='#' foo='123' quz='1134'>foofoofoo</a>}, # haml 4
26
+ %{hello world<a bar='baz' foo='123' href='#' quz='1134'>foofoofoo</a>}, # haml 5
27
+ ]).to include(advanced.render(self))
28
+ end
29
+
30
+ it "generates html with a given context" do
31
+ @h1_content = 'Ford Perfect'
32
+ expect(html_content.render(self)).to include('<h1>Ford Perfect</h1>')
33
+ end
34
+
35
+ it 'can generates attributes' do
36
+ require 'ostruct'
37
+ note = Struct.new(:name, :note_class)
38
+ @keyboard = OpenStruct.new(notes: [note.new(:C, :sharp), note.new(:F, :sharp)])
39
+ expect([
40
+ "<div class='keyboard'>"+
41
+ "<div class='octave'>"+
42
+ "<a class='4 key'></a><div class='key sharp'><div class='name'>C</div></div>"+
43
+ "<a class='4 key'></a><div class='key sharp'><div class='name'>F</div></div>"+
44
+ "</div><div class='octave'>"+
45
+ "<a class='4 key'></a><div class='key sharp'><div class='name'>C</div></div>"+
46
+ "<a class='4 key'></a><div class='key sharp'><div class='name'>F</div></div>"+
47
+ "</div>"+
48
+ "</div>",
49
+ "<div class='keyboard'>"+
50
+ "<div class='octave'>"+
51
+ "<a class='key 4'></a><div class='key sharp'><div class='name'>C</div></div>"+
52
+ "<a class='key 4'></a><div class='key sharp'><div class='name'>F</div></div>"+
53
+ "</div><div class='octave'>"+
54
+ "<a class='key 4'></a><div class='key sharp'><div class='name'>C</div></div>"+
55
+ "<a class='key 4'></a><div class='key sharp'><div class='name'>F</div></div>"+
56
+ "</div>"+
57
+ "</div>"
58
+ ]).to include(attributes_helper.render(self))
59
+ end
60
+ end
File without changes
@@ -0,0 +1,6 @@
1
+ require 'opal'
2
+ require 'opal-haml'
3
+
4
+ RSpec.configure do |c|
5
+ c.color = true
6
+ end
metadata CHANGED
@@ -1,29 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-haml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Beynon
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-02 00:00:00.000000000 Z
11
+ date: 2021-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0.10'
20
+ - - "<"
18
21
  - !ruby/object:Gem::Version
19
- version: 0.10.0
22
+ version: '2'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: 0.10.0
29
+ version: '0.10'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '2'
33
+ - !ruby/object:Gem::Dependency
34
+ name: opal-sprockets
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 0.5.0
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 0.5.0
27
47
  - !ruby/object:Gem::Dependency
28
48
  name: haml
29
49
  requirement: !ruby/object:Gem::Requirement
@@ -42,16 +62,16 @@ dependencies:
42
62
  name: opal-rspec
43
63
  requirement: !ruby/object:Gem::Requirement
44
64
  requirements:
45
- - - "~>"
65
+ - - ">="
46
66
  - !ruby/object:Gem::Version
47
- version: 0.6.0
67
+ version: '0'
48
68
  type: :development
49
69
  prerelease: false
50
70
  version_requirements: !ruby/object:Gem::Requirement
51
71
  requirements:
52
- - - "~>"
72
+ - - ">="
53
73
  - !ruby/object:Gem::Version
54
- version: 0.6.0
74
+ version: '0'
55
75
  - !ruby/object:Gem::Dependency
56
76
  name: rake
57
77
  requirement: !ruby/object:Gem::Requirement
@@ -72,32 +92,34 @@ executables: []
72
92
  extensions: []
73
93
  extra_rdoc_files: []
74
94
  files:
95
+ - ".github/workflows/build.yml"
75
96
  - ".gitignore"
76
- - ".travis.yml"
77
97
  - CHANGELOG.md
78
98
  - Gemfile
79
99
  - LICENSE
80
100
  - README.md
81
101
  - Rakefile
82
102
  - config.ru
103
+ - lib-opal/haml/attribute_builder.rb
104
+ - lib-opal/opal-haml.rb
83
105
  - lib/opal-haml.rb
84
106
  - lib/opal/haml.rb
85
107
  - lib/opal/haml/builder.rb
86
108
  - lib/opal/haml/processor.rb
87
109
  - lib/opal/haml/version.rb
88
110
  - opal-haml.gemspec
89
- - opal/opal-haml.rb
90
- - spec/advanced.haml
91
- - spec/haml_spec.rb
92
- - spec/html_content.haml
93
- - spec/output_buffer_spec.rb
94
- - spec/simple.haml
95
- - spec/spec_helper.rb
96
- homepage: http://opalrb.org
111
+ - spec-opal/fixtures/advanced.haml
112
+ - spec-opal/fixtures/attributes_helper.haml
113
+ - spec-opal/fixtures/html_content.haml
114
+ - spec-opal/fixtures/simple.haml
115
+ - spec-opal/haml_spec.rb
116
+ - spec-opal/output_buffer_spec.rb
117
+ - spec-opal/spec_helper.rb
118
+ homepage: https://github.com/opal/opal-haml#readme
97
119
  licenses:
98
120
  - MIT
99
121
  metadata: {}
100
- post_install_message:
122
+ post_install_message:
101
123
  rdoc_options: []
102
124
  require_paths:
103
125
  - lib
@@ -112,15 +134,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
134
  - !ruby/object:Gem::Version
113
135
  version: '0'
114
136
  requirements: []
115
- rubyforge_project:
116
- rubygems_version: 2.6.8
117
- signing_key:
137
+ rubygems_version: 3.2.22
138
+ signing_key:
118
139
  specification_version: 4
119
140
  summary: Run Haml templates client-side with Opal
120
- test_files:
121
- - spec/advanced.haml
122
- - spec/haml_spec.rb
123
- - spec/html_content.haml
124
- - spec/output_buffer_spec.rb
125
- - spec/simple.haml
126
- - spec/spec_helper.rb
141
+ test_files: []
data/.travis.yml DELETED
@@ -1,30 +0,0 @@
1
- language: ruby
2
- sudo: false
3
- rvm: 2.3.4
4
-
5
-
6
- env:
7
- - HAML_VERSION="~> 4.0" OPAL_VERSION='~> 0.10.0'
8
- - HAML_VERSION="~> 5.0" OPAL_VERSION='~> 0.10.0'
9
- - HAML_VERSION="~> 4.0" OPAL_VERSION='~> 0.11.0.rc1'
10
- - HAML_VERSION="~> 5.0" OPAL_VERSION='~> 0.11.0.rc1'
11
-
12
- cache:
13
- bundler: true
14
- directories:
15
- - node_modules
16
- - phantom20
17
-
18
- before_install:
19
- # Attempt to work around Travis issues and Ruby 2.3 - https://github.com/vcr/vcr/issues/582
20
- - gem update --system
21
- - "mkdir -p phantom20"
22
- - "export PATH=`pwd`/phantom20:$PATH"
23
- - "echo $PATH"
24
- - "pushd phantom20"
25
- - "ls phantomjs || curl -L -O https://s3.amazonaws.com/travis-phantomjs/phantomjs-2.0.0-ubuntu-12.04.tar.bz2"
26
- - "ls phantomjs || tar xjvf phantomjs-2.0.0-ubuntu-12.04.tar.bz2"
27
- - "rm -rf phantomjs-2.0.0-ubuntu-12.04.tar.bz2"
28
- - "popd"
29
-
30
-
data/spec/haml_spec.rb DELETED
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
- require File.expand_path('../simple', __FILE__)
3
- require File.expand_path('../advanced', __FILE__)
4
- require File.expand_path('../html_content', __FILE__)
5
-
6
- describe "Haml files" do
7
- let(:simple) { Template['simple'] }
8
- let(:advanced) { Template['advanced'] }
9
- let(:html_content) { Template['html_content'] }
10
-
11
- it "should be defined by filename on Template namespace" do
12
- expect(simple).to be_kind_of(Template)
13
- end
14
-
15
- it "should render using #render" do
16
- expect(simple.render(self)).to include('lol')
17
- end
18
-
19
- it "accepts a context to render template with" do
20
- @haml_message = "hello world"
21
- expect(advanced.render(self)).to include('hello world')
22
- expect([
23
- %{hello world<a bar='baz' href='#' foo='123' quz='1134'>foofoofoo</a>}, # haml 4
24
- %{hello world<a bar='baz' foo='123' href='#' quz='1134'>foofoofoo</a>}, # haml 5
25
- ]).to include(advanced.render(self))
26
- end
27
-
28
- it "generates html with a given context" do
29
- @h1_content = 'Ford Perfect'
30
- expect(html_content.render(self)).to include('<h1>Ford Perfect</h1>')
31
- end
32
- end
data/spec/spec_helper.rb DELETED
@@ -1,2 +0,0 @@
1
- require 'opal'
2
- require 'opal-haml'